From 958ae99298de4f1c92ae311ce21df79ed3a58b93 Mon Sep 17 00:00:00 2001 From: Gamunu Balagalla Date: Sun, 11 Feb 2024 22:47:15 +0530 Subject: [PATCH] feat: update commands, assets and views (#7) * chore: update readme file * feat: update command and views * chore: add a warning extension conflict * chore: update assests and configs * feat: enable init command :fire: * fix: adding more fixes * docs: update readme warning --- .github/workflows/add-copyright-headers.yml | 41 - CHANGELOG.md | 964 ------------------ DEVELOPMENT.md | 2 +- README.md | 227 ++--- assets/icons/opentofu.svg | 8 + assets/icons/opentofu_logo_universal.png | Bin 0 -> 19122 bytes assets/icons/terraform.svg | 13 - .../terraform_logo_mark_light_universal.png | Bin 20163 -> 0 bytes assets/icons/vs_code_opentofu.svg | 1 + assets/icons/vs_code_terraform.svg | 14 - assets/icons/vs_code_terraform_cloud.svg | 15 - docs/settings-migration.md | 137 --- package-lock.json | 917 +++++++++-------- package.json | 172 ++-- snippets/{terraform.json => opentofu.json} | 0 src/commands/generateBugReport.ts | 6 +- src/commands/terraform.ts | 10 +- src/commands/terraformls.ts | 18 +- src/extension.ts | 19 +- src/features/moduleCalls.ts | 2 +- src/features/moduleProviders.ts | 2 +- src/features/showReferences.ts | 2 +- src/providers/moduleCalls.ts | 6 +- src/providers/moduleProviders.ts | 4 +- src/settings.ts | 30 +- src/status/installedVersion.ts | 6 +- src/status/language.ts | 4 +- src/status/requiredVersion.ts | 6 +- src/terraform.ts | 12 +- src/test/integration/codeAction.test.ts | 4 +- src/utils/clientHelpers.ts | 8 +- src/utils/serverPath.ts | 4 +- src/utils/vscode.ts | 8 +- 33 files changed, 742 insertions(+), 1920 deletions(-) delete mode 100644 .github/workflows/add-copyright-headers.yml create mode 100644 assets/icons/opentofu.svg create mode 100644 assets/icons/opentofu_logo_universal.png delete mode 100644 assets/icons/terraform.svg delete mode 100644 assets/icons/terraform_logo_mark_light_universal.png create mode 100644 assets/icons/vs_code_opentofu.svg delete mode 100644 assets/icons/vs_code_terraform.svg delete mode 100644 assets/icons/vs_code_terraform_cloud.svg delete mode 100644 docs/settings-migration.md rename snippets/{terraform.json => opentofu.json} (100%) diff --git a/.github/workflows/add-copyright-headers.yml b/.github/workflows/add-copyright-headers.yml deleted file mode 100644 index 397e4a41..00000000 --- a/.github/workflows/add-copyright-headers.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: "Add Copyright Headers" - -on: - pull_request_target: - types: - - opened - - reopened - - synchronize - - ready_for_review - workflow_dispatch: {} - -jobs: - add-copyright-headers: - runs-on: ubuntu-latest - env: - HEAD_REF: ${{ github.event.pull_request.head.ref }} - permissions: - contents: write - steps: - - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - with: - ref: ${{ github.event.pull_request.head.ref }} - repository: ${{ github.event.pull_request.head.repo.full_name }} - - name: Set git identity - run: |- - git config user.name "hashicorp-copywrite[bot]" - git config user.email "110428419+hashicorp-copywrite[bot]@users.noreply.github.com" - - name: Setup Copywrite tool - uses: hashicorp/setup-copywrite@867a1a2a064a0626db322392806428f7dc59cb3e # v1.1.2 - - name: Add headers using Copywrite tool - run: copywrite headers - - name: Check if there are any changes - id: get_changes - run: echo "changed=$(git status --porcelain | wc -l)" >> $GITHUB_OUTPUT - - name: Push changes - if: steps.get_changes.outputs.changed != 0 - run: |- - git add . - git commit -s -m "[COMPLIANCE] Add required copyright headers" - git push origin HEAD:$HEAD_REF diff --git a/CHANGELOG.md b/CHANGELOG.md index 896634a1..e69de29b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,964 +0,0 @@ -## [2.29.3] (2024-01-23) - -ENHANCEMENTS: - -* Remove authentication provider registration to allow disabling the extension ([#1670](https://github.com/hashicorp/vscode-terraform/pull/1670)) -* Enable interpolated map keys and object attribute names ([terraform-schema#316](https://github.com/hashicorp/terraform-schema/pull/316)) -* Add support for complex index expressions ([hcl-lang#365](https://github.com/hashicorp/hcl-lang/pull/365)) -* Add support for parenthesis on RHS ([hcl-lang#366](https://github.com/hashicorp/hcl-lang/pull/366)) -* Add support for parenthesis on LHS (map keys & attribute names) ([hcl-lang#367](https://github.com/hashicorp/hcl-lang/pull/367)) - -BUG FIXES: - -* Revert "Alert on `wsl.localhost` Path ([#1522](https://github.com/hashicorp/terraform-ls/pull/1522))" ([#1597](https://github.com/hashicorp/terraform-ls/pull/1597)) - -INTERNAL: - -* build(deps): Bump workflows to latest trusted versions ([#1675](https://github.com/hashicorp/vscode-terraform/pull/1675)) - -## [2.29.2] (2024-01-16) - -BREAKING CHANGES: - -* Bump minimal engine version to `1.82.3` ([#1660](https://github.com/hashicorp/vscode-terraform/pull/1660)) - -ENHANCEMENTS: - -* Configure command enablement ([#1643](https://github.com/hashicorp/vscode-terraform/pull/1643)) -* Alert on `wsl.localhost` Path ([#1522](https://github.com/hashicorp/terraform-ls/pull/1522)) -* Enable `for_each` for `import` blocks (Terraform 1.7) ([terraform-schema#315](https://github.com/hashicorp/terraform-schema/pull/315)) -* Add `removed` block (Terraform 1.7) ([terraform-schema#313](https://github.com/hashicorp/terraform-schema/pull/313)) -* Deprecate `use_legacy_workflow` in S3 Backend (Terraform 1.7) ([terraform-schema#314](https://github.com/hashicorp/terraform-schema/pull/314)) - -BUG FIXES: - -* Fix test failures on main ([#1659](https://github.com/hashicorp/vscode-terraform/pull/1659)) - -INTERNAL: - -* Rename `hcl-typeCapsule` to `hcl-typeComplex` ([#1656](https://github.com/hashicorp/vscode-terraform/pull/1656)) -* Rename `hcl-traversalStep` to `hcl-referenceStep` ([#1664](https://github.com/hashicorp/vscode-terraform/pull/1664)) -* build(deps): Bump workflows to latest trusted versions ([#1655](https://github.com/hashicorp/vscode-terraform/pull/1655), [#1661](https://github.com/hashicorp/vscode-terraform/pull/1661)) -* Remove `terraform init` from integration tests ([#1645](https://github.com/hashicorp/vscode-terraform/pull/1645)) -* Upgrade `@vscode/test-web` and `js-releases` ([#1662](https://github.com/hashicorp/vscode-terraform/pull/1662)) - -## [2.29.1] (2023-12-13) - -BREAKING CHANGES: - -* Publishing extensions for the `win32-ia32` target has been disabled, so we can no longer provide builds for Windows 32bit. (see [microsoft/vscode-vsce#908](https://github.com/microsoft/vscode-vsce/pull/908) and [microsoft/vscode#195559](https://github.com/microsoft/vscode/pull/195559)) - -ENHANCEMENTS: - -* Add new panel for Terraform Cloud structured plans ([#1590](https://github.com/hashicorp/vscode-terraform/pull/1590)) -* Add new panel for Terraform Cloud structured applies ([#1647](https://github.com/hashicorp/vscode-terraform/pull/1647)) -* Document TFC account log out ([#1642](https://github.com/hashicorp/vscode-terraform/pull/1642)) -* Add support for conditional expression ([hcl-lang#326](https://github.com/hashicorp/hcl-lang/pull/326)) -* Add support for template expressions ([hcl-lang#322](https://github.com/hashicorp/hcl-lang/pull/322)) -* Reflect new SSO endpoint override in S3 backend ([terraform-schema#302](https://github.com/hashicorp/terraform-schema/pull/302)) -* Reflect new proxy settings in S3 backend ([terraform-schema#301](https://github.com/hashicorp/terraform-schema/pull/301)) -* Reflect new `skip_s3_checksum` attribute in S3 backend ([terraform-schema#295](https://github.com/hashicorp/terraform-schema/pull/295)) - -BUG FIXES: - -* Improve traversal completion for lists, tuples, and sets ([hcl-lang#344](https://github.com/hashicorp/hcl-lang/pull/344)) -* Update version resolution for empty constraints ([terraform-schema#296](https://github.com/hashicorp/terraform-schema/pull/296)) - -INTERNAL: - -* Update Node to v18 ([#1625](https://github.com/hashicorp/vscode-terraform/pull/1625)) - -## [2.29.0] (2023-11-08) - -ENHANCEMENTS: - -* Login to Terraform Cloud using an Authentication Token -* View Terraform Cloud Workspaces and status detail inside VS Code -* View Terraform Cloud Runs and status detail inside VS Code -* Filter Terraform Cloud Workspaces by Project -* Switch Terraform Cloud Organizations to view different workspaces -* View Plan and Apply logs directly in the editor - -BUG FIXES: - -* Validate required attributes more selectively to relax `provider` validation ([#1485](https://github.com/hashicorp/terraform-ls/pull/1485)) -* Skip inferring variable type from default values ([hcl-lang#338](https://github.com/hashicorp/hcl-lang/pull/338)) -* Ensure partially unknown dependent body is handled ([hcl-lang#339](https://github.com/hashicorp/hcl-lang/pull/339)) -* Fix type-unaware target collection ([hcl-lang#340](https://github.com/hashicorp/hcl-lang/pull/340)) -* Allow variable references in `depends_on` ([terraform-schema#290](https://github.com/hashicorp/terraform-schema/pull/290)) -* Fix provider attribute to block conversion ([terraform-schema#288](https://github.com/hashicorp/terraform-schema/pull/288)) -* Skip inferring module inputs for default values ([terraform-schema#289](https://github.com/hashicorp/terraform-schema/pull/289)) -* Allow local references in `depends_on` ([terraform-schema#292](https://github.com/hashicorp/terraform-schema/pull/292)) - -## [2.28.2] (2023-10-16) - -ENHANCEMENTS: - -* Add `skip_requesting_account_id` to `s3` backend ([terraform-schema#279](https://github.com/hashicorp/terraform-schema/pull/279)) - -BUG FIXES: - -* Work around 'unreliable' input data for Registry modules ([terraform-ls#1456](https://github.com/hashicorp/terraform-ls/pull/1456)) -* Resolve version correctly for backend schema ([terraform-ls#1453](https://github.com/hashicorp/terraform-ls/pull/1453)) -* Allow objects in `for_each` ([hcl-lang#333](https://github.com/hashicorp/hcl-lang/pull/333)) -* Fix `output` block `precondition` in 1.2 schema ([terraform-schema#282](https://github.com/hashicorp/terraform-schema/pull/282)) - -## [2.28.1] (2023-10-06) - -ENHANCEMENTS: - -* decoder: Add support for binary & unary operators ([hcl-lang#320](https://github.com/hashicorp/hcl-lang/pull/320)) - -BUG FIXES: - -* Fix incorrect schema for `terraform_remote_state` data source ([terraform-schema#272](https://github.com/hashicorp/terraform-schema/pull/272)) -* Make `cloud` `organization` optional ([terraform-schema#271](https://github.com/hashicorp/terraform-schema/pull/271)) -* Ensure empty objects & tuples still get recognised ([hcl-lang#330](https://github.com/hashicorp/hcl-lang/pull/330)) -* Introduce default value `"ssh"` for `type` under `connection` block to enable recognition of attributes such as `bastion_host` even when `type` is not declared ([hcl-lang#327 ([terraform-schema#270](https://github.com/hashicorp/terraform-schema/pull/270)) -* Introduce v1.3 proxy related fields for provisioner `connection` block ([terraform-schema#269](https://github.com/hashicorp/terraform-schema/pull/269)) -* Ensure `target_platform` is recognised in nested `connection` block ([terraform-schema#268](https://github.com/hashicorp/terraform-schema/pull/268)) - -## [2.28.0] (2023-10-04) - -ENHANCEMENTS: - -* Enhanced validation provides additional diagnostics for [selected invalid Terraform language constructs](https://github.com/hashicorp/terraform-ls/blob/v0.32.0/docs/validation.md#enhanced-validation) based on detected Terraform version and provider versions are provided. ([#1368](https://github.com/hashicorp/terraform-ls/pull/1368)) -* Improve performance by parsing changed `*.tf` file (as opposed to all files in the module) ([#1404](https://github.com/hashicorp/terraform-ls/pull/1404)) -* Improve performance by parsing changed `*.tfvars` file (as opposed to all files in the directory) ([#1422](https://github.com/hashicorp/terraform-ls/pull/1422)) -* Add `project` attribute to workspaces block ([terraform-schema#257](https://github.com/hashicorp/terraform-schema/pull/257)) -* Update `import` ID to be interpolatable ([terraform-schema#260](https://github.com/hashicorp/terraform-schema/pull/260)) -* Add `nullable` to `variable` blocks for `v1.1+` ([terraform-schema#261](https://github.com/hashicorp/terraform-schema/pull/261)) -* Add `endpoint` and `domain` to `cos` backend ([terraform-schema#262](https://github.com/hashicorp/terraform-schema/pull/262)) -* Add `proxy_url` to `kubernetes` backend ([terraform-schema#263](https://github.com/hashicorp/terraform-schema/pull/263)) -* Update `s3` backend with `v1.6` changes ([terraform-schema#265](https://github.com/hashicorp/terraform-schema/pull/265)) - -BUG FIXES: - -* Allow `list(any)` to be passed into `dynamic` block's `for_each` ([hcl-lang#313](https://github.com/hashicorp/hcl-lang/pull/313)) -* Make `dynamic` `content` block required ([hcl-lang#314](https://github.com/hashicorp/hcl-lang/pull/314)) -* indexer: Ensure declared module calls get decoded ([#1395](https://github.com/hashicorp/terraform-ls/pull/1395)) - -INTERNAL: - -* Bump actions/upload-artifact from 3.1.2 to 3.1.3 ([#1562](https://github.com/hashicorp/vscode-terraform/pull/1562)) -* Add sleep to code action test ([#1565](https://github.com/hashicorp/vscode-terraform/pull/1565)) -* Bump Terraform version in CI ([#1564](https://github.com/hashicorp/vscode-terraform/pull/1564)) -* deps: Bump js-releases to 1.7.0 ([#1563](https://github.com/hashicorp/vscode-terraform/pull/1563)) -* Bump actions/checkout from 4.0.0 to 4.1.0 ([#1569](https://github.com/hashicorp/vscode-terraform/pull/1569)) - -## [2.27.2] (2023-09-06) - -ENHANCEMENTS: - -* Improve `PreloadEmbeddedSchema` job performance in terraform-ls ([terraform-ls#1369](https://github.com/hashicorp/terraform-ls/pull/1369)) -* Avoid re-processing open files in terraform-ls after file saving to improve performance ([terraform-ls#1372](https://github.com/hashicorp/terraform-ls/pull/1372)) - - -INTERNAL: - -* Bump actions/setup-node from 3.7.0 to 3.8.1 by ([#1558](https://github.com/hashicorp/vscode-terraform/pull/1558)) -* Bump actions/checkout from 3.5.3 to 4.0.0 by ([#1559](https://github.com/hashicorp/vscode-terraform/pull/1559), [#1560](https://github.com/hashicorp/vscode-terraform/pull/1560)) - -## [2.27.1] (2023-08-02) - -ENHANCEMENTS: - -* Language Status progress indicator ([#1547](https://github.com/hashicorp/vscode-terraform/pull/1547)) -* Explicitly set diagnosticCollectionName to help avoid conflicts with other extensions generating diagnostics ([#1548](https://github.com/hashicorp/vscode-terraform/pull/1548)) -* Don't wait for `GetModuleDataFromRegistry` job in terraform-ls to improve performance ([terraform-ls#1332](https://github.com/hashicorp/terraform-ls/pull/1332)) - -INTERNAL: - -* Bump eslint from 8.43.0 to 8.45.0 ([#1529](https://github.com/hashicorp/vscode-terraform/pull/1529), [#1537](https://github.com/hashicorp/vscode-terraform/pull/1537) -* Bump jest from 29.5.0 to 29.6.0 ([#1528](https://github.com/hashicorp/vscode-terraform/pull/1528)) -* Bump actions/setup-node from 3.6.0 to 3.7.0 ([#1530](https://github.com/hashicorp/vscode-terraform/pull/1530)) -* Bump jest from 29.6.0 to 29.6.1 ([#1531](https://github.com/hashicorp/vscode-terraform/pull/1531)) -* Correct invalid json in README.md ([#1477](https://github.com/hashicorp/vscode-terraform/pull/1477)) -* Bump glob from 10.3.1 to 10.3.3 ([#1533](https://github.com/hashicorp/vscode-terraform/pull/1533)) -* Streamline extension publishing ([#1532](https://github.com/hashicorp/vscode-terraform/pull/1532)) -* Bump webpack from 5.88.1 to 5.88.2 ([#1538](https://github.com/hashicorp/vscode-terraform/pull/1538)) - -## [2.27.0] (2023-07-04) - -ENHANCEMENTS: - -* Introduce v1.5 `check` block ([terraform-schema#229](https://github.com/hashicorp/terraform-schema/pull/229)) -* Introduce v1.5 `import` block ([terraform-schema#228](https://github.com/hashicorp/terraform-schema/pull/228)) -* Re-generate function signatures for v1.5 ([terraform-schema#213](https://github.com/hashicorp/terraform-schema/pull/213)) -* Add v1.4 `local-exec` provisioner `quiet` attribute ([terraform-schema#218](https://github.com/hashicorp/terraform-schema/pull/218)) -* Reflect 1.4 changes in `gcs` backend ([terraform-schema#227](https://github.com/hashicorp/terraform-schema/pull/227)) -* Reflect 1.4 changes in `http` backend ([terraform-schema#226](https://github.com/hashicorp/terraform-schema/pull/226)) -* Reflect 1.3 & 1.4 changes in `cos` backend ([terraform-schema#217](https://github.com/hashicorp/terraform-schema/pull/217)) -* Reflect 1.2 & 1.3 changes in `azurerm` backend ([terraform-schema#225](https://github.com/hashicorp/terraform-schema/pull/225)) -* Reflect Terraform 1.4 and 1.5 language changes in the highlighting grammar ([syntax#78](https://github.com/hashicorp/syntax/pull/78)) - -INTERNAL: - -* Add copyright headers automagically instead of failing a check on PRs ([#1456](https://github.com/hashicorp/vscode-terraform/pull/1456)) -* Bump @vscode/test-electron from 2.3.0 to 2.3.3 ([#1429](https://github.com/hashicorp/vscode-terraform/pull/1429), [#1479](https://github.com/hashicorp/vscode-terraform/pull/1479)) -* Bump actions/checkout from 3.5.2 to 3.5.3 ([#1480](https://github.com/hashicorp/vscode-terraform/pull/1480)) -* Bump dessant/lock-threads from 4.0.0 to 4.0.1 ([#1485](https://github.com/hashicorp/vscode-terraform/pull/1485)) -* Bump eslint from 8.40.0 to 8.43.0 ([#1439](https://github.com/hashicorp/vscode-terraform/pull/1439), [#1465](https://github.com/hashicorp/vscode-terraform/pull/1465), [#1497](https://github.com/hashicorp/vscode-terraform/pull/1497)) -* Bump glob from 10.2.3 to 10.3.1 ([#1433](https://github.com/hashicorp/vscode-terraform/pull/1433), [#1437](https://github.com/hashicorp/vscode-terraform/pull/1437), [#1438](https://github.com/hashicorp/vscode-terraform/pull/1438), [#1471](https://github.com/hashicorp/vscode-terraform/pull/1471), [#1512](https://github.com/hashicorp/vscode-terraform/pull/1512), [#1519](https://github.com/hashicorp/vscode-terraform/pull/1519)) -* Bump ts-jest from 29.1.0 to 29.1.1 ([#1527](https://github.com/hashicorp/vscode-terraform/pull/1527)) -* Bump ts-loader from 9.4.2 to 9.4.4 ([#1442](https://github.com/hashicorp/vscode-terraform/pull/1442), [#1522](https://github.com/hashicorp/vscode-terraform/pull/1522)) -* Bump typescript from 5.0.4 to 5.1.6 ([#1462](https://github.com/hashicorp/vscode-terraform/pull/1462), [#1523](https://github.com/hashicorp/vscode-terraform/pull/1523)) -* Bump webpack from 5.82.1 to 5.88.1 ([#1436](https://github.com/hashicorp/vscode-terraform/pull/1436), [#1446](https://github.com/hashicorp/vscode-terraform/pull/1446), [#1450](https://github.com/hashicorp/vscode-terraform/pull/1450), [#1461](https://github.com/hashicorp/vscode-terraform/pull/1461), [#1469](https://github.com/hashicorp/vscode-terraform/pull/1469), [#1474](https://github.com/hashicorp/vscode-terraform/pull/1474), [#1492](https://github.com/hashicorp/vscode-terraform/pull/1492), [#1513](https://github.com/hashicorp/vscode-terraform/pull/1513), [#1521](https://github.com/hashicorp/vscode-terraform/pull/1521)) -* Bump webpack-cli from 5.1.1 to 5.1.4 ([#1464](https://github.com/hashicorp/vscode-terraform/pull/1464), [#1473](https://github.com/hashicorp/vscode-terraform/pull/1473)) -* deps: bump semver to 7.5.3 ([#1515](https://github.com/hashicorp/vscode-terraform/pull/1515)) -* Switch to GitHub issue form templates ([#1463](https://github.com/hashicorp/vscode-terraform/pull/1463)) - -## [2.26.1] (2023-05-11) - -BUG FIXES: - -* Fix crash on prefix completion ([hcl-lang#275](https://github.com/hashicorp/hcl-lang/pull/275)) - -INTERNAL: - -* Update vscode-languageclient to `8.1.0` ([#1408](https://github.com/hashicorp/vscode-terraform/pull/1408)) -* Bump VS Code from `1.67.2` to `1.75.1` ([#1409](https://github.com/hashicorp/vscode-terraform/pull/1409)) -* Onboard to pre-release extensions ([#1412](https://github.com/hashicorp/vscode-terraform/pull/1412)) -* Remove default activation events ([#1419](https://github.com/hashicorp/vscode-terraform/pull/1419)) -* Remove legacy settings ([#1414](https://github.com/hashicorp/vscode-terraform/pull/1414)) - -## [2.26.0] (2023-04-27) - -BUG FIXES: - -* When completing `LiteralValue` do not ignore `Description` & `IsDeprecated` fields ([hcl-lang#253](https://github.com/hashicorp/hcl-lang/pull/253)) -* Provide completion for `Tuple` attribute types and values ([hcl-lang#255](https://github.com/hashicorp/hcl-lang/pull/255)) -* Display `Tuple` hover data on invalid elements ([hcl-lang#254](https://github.com/hashicorp/hcl-lang/pull/254)) -* Display fully inferred type of List, Set, Tuple, Map and Object complex types ([hcl-lang#259](https://github.com/hashicorp/hcl-lang/pull/259)) -* Collect targets w/ interpolation for `Any` correctly ([hcl-lang#257](https://github.com/hashicorp/hcl-lang/pull/257)) -* Fix remote backend usage in ([terraform-ls#1218](https://github.com/hashicorp/terraform-ls/pull/1218)) -* Display completion label details even if empty by updating to gopls v0.10.0 tsprotocol.go to ([#1256](https://github.com/hashicorp/terraform-ls/pull/1256)) - -ENHANCEMENTS: - -* Improve editor performance in cases where Terraform module information is unavailable due to private registries, submodules, no network, or other similiar situations ([terraform-ls#1258](https://github.com/hashicorp/terraform-ls/pull/1258)) -* Add completion, hover, semantic highlighting and go-to-* support for nested expressions within objects, maps, lists, sets and tuples ([terraform-ls#1237](https://github.com/hashicorp/terraform-ls/pull/1237), [hcl-lang#232](https://github.com/hashicorp/hcl-lang/pull/232), [hcl-lang#203](https://github.com/hashicorp/hcl-lang/pull/203), [hcl-lang#199](https://github.com/hashicorp/hcl-lang/pull/199), [hcl-lang#186](https://github.com/hashicorp/hcl-lang/pull/186), [hcl-lang#185](https://github.com/hashicorp/hcl-lang/pull/185), [hcl-lang#184](https://github.com/hashicorp/hcl-lang/pull/184)) -* Add completion, hover and semantic highlighting for nested types in type declarations within `variable` `type` ([hcl-lang#183](https://github.com/hashicorp/hcl-lang/pull/183)) -* Add support for function signature completion, hover and more ([terraform-ls#1077](https://github.com/hashicorp/terraform-ls/pull/1077)) -* Recognise new semantic token types for function names ([#1371](https://github.com/hashicorp/vscode-terraform/pull/1371), [terraform-ls#1233](https://github.com/hashicorp/terraform-ls/pull/1233)) - -INTERNAL: - -* Add copywrite GHA ([#1347](https://github.com/hashicorp/vscode-terraform/pull/1347)) -* Add TFC usage detection ([#1208](https://github.com/hashicorp/terraform-ls/pull/1208)) - -## [2.25.4] (2023-02-22) - -BUG FIXES: - - - Bundle static builds of Linux binaries (again) ([terraform-ls#1193](https://github.com/hashicorp/terraform-ls/issues/1193)) - -## [2.25.3] (2023-02-22) - -BUG FIXES: - - - Ignore inaccessible files (such as emacs backup files) ([terraform-ls#1172](https://github.com/hashicorp/terraform-ls/issues/1067)) - - Fix crash when parsing JSON files (introduced in 2.25.0) ([hcl-lang#202](https://github.com/hashicorp/hcl-lang/pull/202)) - - Fix spelling of preview in readme ([#1329](https://github.com/hashicorp/vscode-terraform/pull/1329)) - -ENHANCEMENTS: - - - Show detected Terraform Version in status bar ([#1325](https://github.com/hashicorp/vscode-terraform/pull/1325)) - - Improve error handling on initialization ([#1327](https://github.com/hashicorp/vscode-terraform/pull/1327)) - - Parse `optional()` object attribute _default values_ correctly, as introduced in Terraform v1.3 ([terraform-schema#184](https://github.com/hashicorp/terraform-schema/pull/184)) - -## [2.25.2] (2022-12-15) - -BUG FIXES: - - - Improve attribute name matching ([syntax#49](https://github.com/hashicorp/syntax/pull/49)) - -## [2.25.1] (2022-12-01) - -ENHANCEMENTS: - - - All past versions of the extension were backfilled into [OpenVSX Registry](https://open-vsx.org) and future versions will become available automatically ([#1064](https://github.com/hashicorp/vscode-terraform/pull/1064)) - - - Support `count.index` references in blocks with `count` for completion, hover documentation and semantic tokens highlighting ([terraform-ls#860](https://github.com/hashicorp/terraform-ls/issues/860), [hcl-lang#160](https://github.com/hashicorp/hcl-lang/pull/160)) - - Support `each.*` references in blocks with `for_each` for completion, hover documentation and semantic tokens highlighting ([terraform-ls#861](https://github.com/hashicorp/terraform-ls/issues/861), [hcl-lang#162](https://github.com/hashicorp/hcl-lang/pull/162)) - - Support `self.*` references in `provisioner`, `connection` and `postcondition` blocks for completion, hover documentation and semantic tokens highlighting ([terraform-ls#859](https://github.com/hashicorp/terraform-ls/issues/859), [hcl-lang#163](https://github.com/hashicorp/hcl-lang/pull/163)) - - `dynamic` block support, including label and content completion ([terraform-ls#530](https://github.com/hashicorp/terraform-ls/issues/530), [hcl-lang#154](https://github.com/hashicorp/hcl-lang/pull/154)) - - Go-to-definition/go-to-references for `count.index`/`count` ([terraform-ls#1093](https://github.com/hashicorp/terraform-ls/issues/1093)) - - Go-to-definition/go-to-references for `each.*`/`for_each` ([terraform-ls#1095](https://github.com/hashicorp/terraform-ls/issues/1095)) - - Go-to-definition/go-to-references for `self.*` in `provisioner`, `connection` and `postcondition` blocks ([terraform-ls#1096](https://github.com/hashicorp/terraform-ls/issues/1096)) - - Remove deprecated backends in Terraform 1.3.0 ([terraform-schema#159](https://github.com/hashicorp/terraform-schema/pull/159)) - -## [2.25.0] (2022-11-14) - -ENHANCEMENTS: - - - Publish Terrafor Web Extension by [#1210](https://github.com/hashicorp/vscode-terraform/pull/1210) - -INTERNAL: - - - Use `npm ci` for installing dependencies inside CI [#1257](https://github.com/hashicorp/vscode-terraform/pull/1257) - - Enable publishing web extensions [#1262](https://github.com/hashicorp/vscode-terraform/pull/1262) - - [COMPLIANCE] Update MPL 2.0 LICENSE [#1247](https://github.com/hashicorp/vscode-terraform/pull/1247) - -## [2.24.3] (2022-10-13) - -ENHANCEMENTS: - - - Significantly reduce the memory footprint of the language server by 85% to 98% for most users ([terraform-ls#1071](https://github.com/hashicorp/terraform-ls/pull/1071)) - -BUG FIXES: - - - Fix enable terraform-ls after disabling [#1238](https://github.com/hashicorp/vscode-terraform/pull/1238) - - fix: Enable IntelliSense for resources & data sources whose name match the provider (e.g. `data`) ([terraform-ls#1072](https://github.com/hashicorp/terraform-ls/pull/1072)) - - fix: avoid infinite recursion (surfaced as crash with "goroutine stack exceeds 1000000000-byte limit" message) ([terraform-ls#1084](https://github.com/hashicorp/terraform-ls/pull/1084)) - - fix: race condition in terraform-schema (surfaced as crash with "fatal error: concurrent map read and map write" message) ([terraform-ls#1086](https://github.com/hashicorp/terraform-ls/pull/1086)) - -INTERNAL: - - - Reduce duplicate error telemetry [#1230](https://github.com/hashicorp/vscode-terraform/pull/1230) - - -## [2.24.2] (2022-09-07) - -ENHANCEMENTS: - - - Ask user to use Remote WSL Extension when using WSL UNC Paths [#1219](https://github.com/hashicorp/vscode-terraform/pull/1219) - -BUG FIXES: - - - fix: Improve IntelliSense accuracy by tracking provider schema versions (bug introduced in 2.24.0) ([terraform-ls#1060](https://github.com/hashicorp/terraform-ls/pull/1060)) - - Don't query the Terraform Registry for module sources starting with `.` in completion ([terraform-ls#1062](https://github.com/hashicorp/terraform-ls/pull/1062)) - - fix race condition (panic) in schema merging ([terraform-schema#137](https://github.com/hashicorp/terraform-schema/pull/137)) - -INTERNAL: - -- Improve error telemetry [#1215](https://github.com/hashicorp/vscode-terraform/pull/1215) - -## [2.24.1] (2022-08-24) - -ENHANCEMENTS: - - - Add link to post explaining vim plugin installation ([terraform-ls#1044](https://github.com/hashicorp/terraform-ls/pull/1044)) - -BUG FIXES: - - - Fix panic on obtaining provider schemas ([terraform-ls#1048](https://github.com/hashicorp/terraform-ls/pull/1048)) - - Use correct ldflag (versionPrerelease) when compiling LS ([terraform-ls#1043](https://github.com/hashicorp/terraform-ls/pull/1043)) - -## [2.24.0] (2022-08-23) - -BREAKING CHANGES: - - - Raise minimum VS Code version from 1.61.1 to 1.65.2 ([#1176](https://github.com/hashicorp/vscode-terraform/pull/1176)) - - Add migration wizard to aid migrating [extension settings](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) to follow VS Code setting naming conventions and align better with the naming convention of language server settings ([#1156](https://github.com/hashicorp/vscode-terraform/pull/1156), [#1193](https://github.com/hashicorp/vscode-terraform/pull/1193)) - - Setting [`terraform.languageServer`](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) block has been extracted out to individual settings ([#1156](https://github.com/hashicorp/vscode-terraform/pull/1156), [#1193](https://github.com/hashicorp/vscode-terraform/pull/1193)) - - Setting [`terraform.languageServer.external`](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) has been renamed to `terraform.languageServer.enable` ([#1156](https://github.com/hashicorp/vscode-terraform/pull/1156), [#1193](https://github.com/hashicorp/vscode-terraform/pull/1193)) - - Setting [`terraform.languageServer.pathToBinary`](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) has been renamed to `terraform.languageServer.path` ([#1156](https://github.com/hashicorp/vscode-terraform/pull/1156), [#1193](https://github.com/hashicorp/vscode-terraform/pull/1193)) - - Setting [`terraform-ls.terraformExecPath`](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) has been renamed to `terraform.languageServer.terraform.path` ([#1156](https://github.com/hashicorp/vscode-terraform/pull/1156), [#1193](https://github.com/hashicorp/vscode-terraform/pull/1193)) - - Setting [`terraform-ls.terraformExecTimeout`](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) has been renamed to `terraform.languageServer.terraform.timeout` ([#1156](https://github.com/hashicorp/vscode-terraform/pull/1156), [#1193](https://github.com/hashicorp/vscode-terraform/pull/1193)) - - Setting [`terraform-ls.terraformExecLogFilePath`](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) has been renamed to `terraform.languageServer.terraform.logFilePath` ([#1156](https://github.com/hashicorp/vscode-terraform/pull/1156), [#1193](https://github.com/hashicorp/vscode-terraform/pull/1193)) - - Setting [`terraform-ls.rootModules`](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) has been deprecated and is ignored. Users should instead leverage the VS Code workspace functionality and add the folder to a workspace to be indexed ([#1003](https://github.com/hashicorp/terraform-ls/pull/1003)) - - Setting [`terraform-ls.excludeModulePaths`](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) has been renamed to `terraform.languageServer.indexing.ignorePaths` ([#1003](https://github.com/hashicorp/terraform-ls/pull/1003)) - - Setting [`terraform-ls.ignoreDirectoryNames`](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) has been renamed to `terraform.languageServer.indexing.ignoreDirectoryNames` ([#1156](https://github.com/hashicorp/vscode-terraform/pull/1156), [#1193](https://github.com/hashicorp/vscode-terraform/pull/1193)) - - Setting [`terraform.experimentalFeatures`](https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/docs/settings-migration.md) setting block has been extracted out to individual settings ([#1156](https://github.com/hashicorp/vscode-terraform/pull/1156), [#1193](https://github.com/hashicorp/vscode-terraform/pull/1193)) - - Set proper scope for machine based extension settings ([#1164](https://github.com/hashicorp/vscode-terraform/pull/1164)) - -ENHANCEMENTS: - - - Use dark extension icon for preview extension ([#1143](https://github.com/hashicorp/vscode-terraform/pull/1143)) - - Introduce support for extension connecting to LSP over TCP, with port configurable via `terraform.languageServer.tcp.port` ([#755](https://github.com/hashicorp/vscode-terraform/pull/755)) - - New Terraform View side bar ([#1171](https://github.com/hashicorp/vscode-terraform/pull/1171)) - - Only show language server related commands when they're relevant ([#1178](https://github.com/hashicorp/vscode-terraform/pull/1178)) - - Replace internal watcher (used for watching changes in installed plugins and modules) with LSP dynamic capability registration & `workspace/didChangeWatchedFiles`. This should lead to improved performance in most cases. ([terraform-ls#953](https://github.com/hashicorp/terraform-ls/pull/953)) - - Provide completion, hover and docs links for uninitialized Registry modules ([terraform-ls#924](https://github.com/hashicorp/terraform-ls/pull/924)) - - Provide basic IntelliSense (except for diagnostics) for hidden `*.tf` files ([terraform-ls#971](https://github.com/hashicorp/terraform-ls/pull/971)) - - Introduce v1.1 `terraform` `cloud` block ([terraform-schema#117](https://github.com/hashicorp/terraform-schema/pull/117)) - - Introduce v1.1 `moved` block ([terraform-schema#121](https://github.com/hashicorp/terraform-schema/pull/121)) - - Introduce v1.2 `lifecycle` conditions ([terraform-schema#115](https://github.com/hashicorp/terraform-schema/pull/115)) - - Introduce v1.2 `lifecycle` `replace_triggered_by` ([terraform-schema#123](https://github.com/hashicorp/terraform-schema/pull/123)) - - Use `module` declarations from parsed configuration as source of truth for `module.calls` ([terraform-ls#987](https://github.com/hashicorp/terraform-ls/pull/987)) - - Index uninitialized modules ([terraform-ls#997](https://github.com/hashicorp/terraform-ls/pull/997)) - - Recognize inputs and outputs of uninitialized local modules ([terraform-ls#598](https://github.com/hashicorp/terraform-ls/issues/598)) - - Enable go to module output declaration from reference ([terraform-ls#1007](https://github.com/hashicorp/terraform-ls/issues/1007)) - - New option [`indexing.ignorePaths`](https://github.com/hashicorp/terraform-ls/blob/v0.29.0/docs/SETTINGS.md#ignorepaths-string) was introduced ([terraform-ls#1003](https://github.com/hashicorp/terraform-ls/pull/1003), [terraform-ls#1010](https://github.com/hashicorp/terraform-ls/pull/1010)) - - Introduce `module.terraform` custom LSP command to expose Terraform requirements & version ([terraform-ls#1016](https://github.com/hashicorp/terraform-ls/pull/1016)) - - Avoid obtaining schema via Terraform CLI if the same version is already cached (based on plugin lock file) ([terraform-ls#1014](https://github.com/hashicorp/terraform-ls/pull/1014)) - - Complete module source and version attributes for local and registry modules ([#1024](https://github.com/hashicorp/terraform-ls/pull/1024)) - -BUG FIXES: - - - Ensure extension is installed in remote contexts automatically ([#1163](https://github.com/hashicorp/vscode-terraform/pull/1163)) - - Return partially parsed metadata from `module.providers` ([terraform-ls#951](https://github.com/hashicorp/terraform-ls/pull/951)) - - Avoid ignoring hidden `*.tfvars` files ([terraform-ls#968](https://github.com/hashicorp/terraform-ls/pull/968)) - - Avoid crash on invalid URIs ([terraform-ls#969](https://github.com/hashicorp/terraform-ls/pull/969)) - - Avoid crash on invalid provider name ([terraform-ls#1030](https://github.com/hashicorp/terraform-ls/pull/1030)) - -INTERNAL: - - - Refactor Terraform Execution API [#1185](https://github.com/hashicorp/vscode-terraform/pull/1185)) - - Bump @hashicorp/js-releases from 1.5.1 to 1.6.0 ([#1144](https://github.com/hashicorp/vscode-terraform/pull/1144)) - - indexer: refactor & improve/cleanup error handling ([terraform-ls#988](https://github.com/hashicorp/terraform-ls/pull/988)) - - indexer/walker: Avoid running jobs where not needed ([terraform-ls#1006](https://github.com/hashicorp/terraform-ls/pull/1006)) - - job: introduce explicit priority for jobs ([terraform-ls#977](https://github.com/hashicorp/terraform-ls/pull/977)) - -## [2.23.0] (2022-06-09) - -NOTES: - - - Remove `terraform.languageServer.maxNumberOfProblems`. This setting is not used by the extension as of v2.0.0. ([#1062](https://github.com/hashicorp/vscode-terraform/pull/1062)) - -ENHANCEMENTS: - - - Link to documentation from module source for Registry modules ([#673](https://github.com/hashicorp/vscode-terraform/issues/673) / [terraform-ls#874](https://github.com/hashicorp/terraform-ls/pull/874)) - - Improve performance by reducing amount of notifications sent for any single module changes ([terraform-ls#931](https://github.com/hashicorp/terraform-ls/pull/931)) - - Automatically refresh Providers view when providers change in open document ([#1084](https://github.com/hashicorp/vscode-terraform/pull/1084)) / [terraform-ls#902](https://github.com/hashicorp/terraform-ls/pull/902)) - - Automatically refresh Module Calls view when module calls change in open document ([#1088](https://github.com/hashicorp/vscode-terraform/pull/1088) / [terraform-ls#909](https://github.com/hashicorp/terraform-ls/pull/909)) - - Add Module Providers view refresh button ([#1065](https://github.com/hashicorp/vscode-terraform/pull/1065)) - - Use theme-universal icon with solid background ([#1119](https://github.com/hashicorp/vscode-terraform/pull/1119)) - - Watch `**/*.tf` & `**/*.tfvars` by default such that changes outside the editor (e.g. when changing git branch) can be reflected ([#1095](https://github.com/hashicorp/vscode-terraform/pull/1095) / [terraform-ls#790](https://github.com/hashicorp/terraform-ls/pull/790)) - -BUG FIXES: - - - Variables with no space between them break syntax highlighting ([syntax#34](https://github.com/hashicorp/syntax/pull/34)) - - Fix parsing block with dash in name ([syntax#42](https://github.com/hashicorp/syntax/pull/42)) - - Fix highlighting of `.0`, `.*` attribute access and `[*]` brackets ([syntax#44](https://github.com/hashicorp/syntax/pull/44)) - -INTERNAL: - - - Organize Static Features ([#1073](https://github.com/hashicorp/vscode-terraform/pull/1073)) - - Move utility functions to dedicated space ([#1074](https://github.com/hashicorp/vscode-terraform/pull/1074)) - - Remove command prefix ([#1075](https://github.com/hashicorp/vscode-terraform/pull/1075)) - - Optimize main entry point execution path ([#1079](https://github.com/hashicorp/vscode-terraform/pull/1079)) - - Extract LanguageClient from ClientHandler ([#1082](https://github.com/hashicorp/vscode-terraform/pull/1082)) - -## [2.22.0] (2022-04-19) - -BREAKING CHANGES: - - - Remove terraform.languageServer.requiredVersion ([#1021](https://github.com/hashicorp/vscode-terraform/pull/1021)) - - Remove terraform.languageServer.trace.server ([#1048](https://github.com/hashicorp/vscode-terraform/pull/1048)) - -NOTES: - - - Deprecate maxNumberOfProblems ([#1010](https://github.com/hashicorp/vscode-terraform/pull/1010)) - - Deprecate terraform-ls.rootmodule and terraform-ls.excludeRootModules ([#1049](https://github.com/hashicorp/vscode-terraform/pull/1049)) - -ENHANCEMENTS: - - - Support custom semantic tokens & modifiers ([#958](https://github.com/hashicorp/vscode-terraform/pull/958)) / [terraform-ls#833](https://github.com/hashicorp/terraform-ls/pull/833)) - - Enable 'go to module source' for local modules ([terraform-ls#849](https://github.com/hashicorp/terraform-ls/pull/849)) - - Enable opening a single Terraform file ([terraform-ls#843](https://github.com/hashicorp/terraform-ls/pull/843))/ ([#1031](https://github.com/hashicorp/vscode-terraform/pull/1031)) - - Organize extension settings into Sections ([#1024](https://github.com/hashicorp/vscode-terraform/pull/1024)) - - Prevent preview from activating when stable is enabled ([#1032](https://github.com/hashicorp/vscode-terraform/pull/1032)) - -BUG FIXES: - - - Add missing descriptions to semantic token types & modifiers ([#1039](https://github.com/hashicorp/vscode-terraform/pull/1039)) - - Avoid hanging when workspace contains >50 folders ([terraform-ls#839](https://github.com/hashicorp/terraform-ls/pull/839)) - - Make loading of parent directory after lower level directories work ([terraform-ls#851](https://github.com/hashicorp/terraform-ls/pull/851)) - - Fix corrupted diffs in formatting responses ([terraform-ls#876](https://github.com/hashicorp/terraform-ls/pull/876)) - - Fix Module View for Registry modules installed by Terraform v1.1+ ([terraform-ls#872](https://github.com/hashicorp/terraform-ls/pull/872)) - -INTERNAL: - - - Format semantic token settings ([#1019](https://github.com/hashicorp/vscode-terraform/pull/1019)) - - Disable naming convention warning for Code Action identifier ([#1036](https://github.com/hashicorp/vscode-terraform/pull/1036)) - - Add CODEOWNERS file ([#1038](https://github.com/hashicorp/vscode-terraform/pull/1038)) - - Fix LANGUAGE_SERVER_VERSION test in preview script ([#1034](https://github.com/hashicorp/vscode-terraform/pull/1034)) - - Github Release Notes Generator file ([#1051](https://github.com/hashicorp/vscode-terraform/pull/1051)) - - Bump terraform-ls from 0.26.0 to 0.27.0 ([#1060](https://github.com/hashicorp/vscode-terraform/pull/1060)) - -## [2.21.0] (2022-03-21) - -ENHANCEMENTS: - - - Introduce go-to-variable from `tfvars` files ([terraform-ls#727](https://github.com/hashicorp/terraform-ls/pull/727)) - - Automatically refresh semantic tokens for more reliable highlighting ([terraform-ls#630](https://github.com/hashicorp/terraform-ls/pull/630)) - - Enhance semantic highlighting of block labels ([terraform-ls#802](https://github.com/hashicorp/terraform-ls/pull/802)) - - Enable completion, hover, go-to-definition/reference etc. for Terraform Registry modules ([terraform-ls#808](https://github.com/hashicorp/terraform-ls/pull/808)) - - Report dependent semantic highlighting modifiers as `defaultLibrary` (instead of `modification`) ([terraform-ls#817](https://github.com/hashicorp/terraform-ls/pull/817)) - - Semantically highlight type declarations in variable `type` ([terraform-ls#827](https://github.com/hashicorp/terraform-ls/pull/827)) - - Decouple highlighting Terraform grammar to `hashicorp/syntax` [`v0.1.0`](https://github.com/hashicorp/syntax/releases/tag/v0.1.0) & [`v0.2.0`](https://github.com/hashicorp/syntax/releases/tag/v0.2.0) ([#1004](https://github.com/hashicorp/vscode-terraform/pull/1004)) - -BUG FIXES: - - - Address race conditions typically surfaced as "out of range" errors, lack of completion/hover/etc. data or data associated with wrong position within the document ([terraform-ls#782](https://github.com/hashicorp/terraform-ls/pull/782)) - - Fix broken validate on save ([terraform-ls#799](https://github.com/hashicorp/terraform-ls/pull/799)) - - Fix encoding of unknown semantic token types ([terraform-ls#815](https://github.com/hashicorp/terraform-ls/pull/815)) - - Fix missing references for some blocks in a separate config file ([terraform-ls#829](https://github.com/hashicorp/terraform-ls/pull/829)) - -INTERNAL: - - - Bump terraform-ls to [`v0.26.0`](https://github.com/hashicorp/terraform-ls/releases/tag/v0.26.0) ([#1002](https://github.com/hashicorp/vscode-terraform/pull/1002)) - - Bump @hashicorp/js-releases from 1.4.0 to 1.5.1 ([#1001](https://github.com/hashicorp/vscode-terraform/pull/1001)) - - Bump @vscode/extension-telemetry from 0.4.9 to 0.4.10 ([#1003](https://github.com/hashicorp/vscode-terraform/pull/1003)) - -## [2.20.1] (2022-03-17) - -BUG FIXES: - - - Advertise proper execution location [#989](https://github.com/hashicorp/vscode-terraform/pull/989) - -INTERNAL: - - - deps: Bump jest from 27.4.7 to 27.5.1 [#951](https://github.com/hashicorp/vscode-terraform/pull/951) - - deps: Bump @types/node from 16.11.22 to 16.11.26 [#948](https://github.com/hashicorp/vscode-terraform/pull/948) - - deps: Bump eslint-config-prettier from 8.3.0 to 8.5.0 [#957](https://github.com/hashicorp/vscode-terraform/pull/957) - - deps: Bump esbuild from 0.14.17 to 0.14.25 [#967](https://github.com/hashicorp/vscode-terraform/pull/967) - - deps: Bump @types/jest from 27.4.0 to 27.4.1 [#970](https://github.com/hashicorp/vscode-terraform/pull/970) - - deps: Bump mocha from 9.2.0 to 9.2.1 [#969](https://github.com/hashicorp/vscode-terraform/pull/969) - - deps: Bump @typescript-eslint/parser from 5.10.2 to 5.13.0 [#971](https://github.com/hashicorp/vscode-terraform/pull/971) - - deps: Bump @vscode/test-electron from 2.1.1 to 2.1.2 [#972](https://github.com/hashicorp/vscode-terraform/pull/972) - - deps: Bump vsce from 2.6.6 to 2.6.7 [#976](https://github.com/hashicorp/vscode-terraform/pull/976) - - deps: Bump @types/vscode from 1.63.2 to 1.65.0 [#959](https://github.com/hashicorp/vscode-terraform/pull/959) - - deps: Bump @typescript-eslint/eslint-plugin from 5.10.2 to 5.13.0 [#977](https://github.com/hashicorp/vscode-terraform/pull/977) - - deps: Bump ts-node from 10.4.0 to 10.7.0 [#981](https://github.com/hashicorp/vscode-terraform/pull/981) - - deps: Bump eslint from 8.8.0 to 8.10.0 [#974](https://github.com/hashicorp/vscode-terraform/pull/974) - - deps: Bump @vscode/test-electron from 2.1.2 to 2.1.3 [#984](https://github.com/hashicorp/vscode-terraform/pull/984) - - deps: Bump typescript from 4.5.5 to 4.6.2 [#973](https://github.com/hashicorp/vscode-terraform/pull/973) - - deps: Bump @typescript-eslint/eslint-plugin from 5.13.0 to 5.14.0 [#986](https://github.com/hashicorp/vscode-terraform/pull/986) - - deps: Bump @typescript-eslint/parser from 5.13.0 to 5.14.0 [#985](https://github.com/hashicorp/vscode-terraform/pull/985) - - deps: Bump eslint from 8.10.0 to 8.11.0 [#991](https://github.com/hashicorp/vscode-terraform/pull/991) - - deps: Bump vsce from 2.6.7 to 2.7.0 [#992](https://github.com/hashicorp/vscode-terraform/pull/992) - - deps: Bump mocha from 9.2.1 to 9.2.2 [#993](https://github.com/hashicorp/vscode-terraform/pull/993) - - deps: Bump esbuild from 0.14.25 to 0.14.27 [#995](https://github.com/hashicorp/vscode-terraform/pull/995) - - deps: Bump @typescript-eslint/eslint-plugin from 5.14.0 to 5.15.0 [#994](https://github.com/hashicorp/vscode-terraform/pull/994) - - deps: Bump @typescript-eslint/parser from 5.14.0 to 5.15.0 [#996](https://github.com/hashicorp/vscode-terraform/pull/996) - -## [2.20.0] (2022-03-01) - -ENHANCEMENTS: - - - Publish Platform Specific Extension [#905](https://github.com/hashicorp/vscode-terraform/pull/905) - - Update list/map syntax highlighting [#918](https://github.com/hashicorp/vscode-terraform/pull/918) - - Improve comment detection [#935](https://github.com/hashicorp/vscode-terraform/pull/935) - - Highlight block label as "enumMember" & highlight unquoted labels [#943](https://github.com/hashicorp/vscode-terraform/pull/943) - - Add new scope for block type and name [#934](https://github.com/hashicorp/vscode-terraform/pull/934) - - Resolve issue with tfvars comment toggling [#937](https://github.com/hashicorp/vscode-terraform/pull/937) - - Improve Extension Documentation [#942](https://github.com/hashicorp/vscode-terraform/pull/942) - -BUG FIXES: - - - Fix Nested Map Highlighting [#925](https://github.com/hashicorp/vscode-terraform/pull/925) - - Fix npm run syntax tests [#928](https://github.com/hashicorp/vscode-terraform/pull/928) - - Move TextMate scope.terraform to source.terraform [#921](https://github.com/hashicorp/vscode-terraform/pull/921) - - Fix highlighting for attribute access with a dash [#933](https://github.com/hashicorp/vscode-terraform/pull/933) - - Fix highlighting for nested expression syntax [#940](https://github.com/hashicorp/vscode-terraform/pull/940) - - Update description for log file argument [#945](https://github.com/hashicorp/vscode-terraform/pull/945) - -INTERNAL: - - - deps: Update vsce, mocha, and node-fetch [#908](https://github.com/hashicorp/vscode-terraform/pull/908) - - deps: Update vsce to 2.6.6 [#916](https://github.com/hashicorp/vscode-terraform/pull/916) - - Fix preview publish trigger [#910](https://github.com/hashicorp/vscode-terraform/pull/910) - - Manual Preview release workflow dispatch [#911](https://github.com/hashicorp/vscode-terraform/pull/911) - - Terraform TextMate Test Infrastructure [#912](https://github.com/hashicorp/vscode-terraform/pull/912) - - Add Terraform language tmgrammar snapshots [#914](https://github.com/hashicorp/vscode-terraform/pull/914) - - Run syntax tests on all snapshot files [#917](https://github.com/hashicorp/vscode-terraform/pull/917) - - Run syntax tests when grammar changes [#922](https://github.com/hashicorp/vscode-terraform/pull/922) - - deps: Update to @vscode/extension-telemetry [#939](https://github.com/hashicorp/vscode-terraform/pull/) - - Fix ignore markdown files [#946](https://github.com/hashicorp/vscode-terraform/pull/946) - -## [2.19.0] (2022-01-20) - -NOTES: - - - Deprecate terraform.languageServer.requiredVersion [#903](https://github.com/hashicorp/vscode-terraform/pull/903) - -ENHANCEMENTS: - - - Update telemetry configuration documentation [#894](https://github.com/hashicorp/vscode-terraform/pull/894) - -INTERNAL: - - - deps: Update to Node 16 and VS Code 1.61 [#904](https://github.com/hashicorp/vscode-terraform/pull/904) - - deps: Bump @vscode/test-electron from 2.0.1 to 2.0.3 [#899](https://github.com/hashicorp/vscode-terraform/pull/899) - - deps: Bump jest from 27.4.6 to 27.4.7 [#892](https://github.com/hashicorp/vscode-terraform/pull/892) - - deps: Update actions/setup-node to v2 [#897](https://github.com/hashicorp/vscode-terraform/pull/897) - - deps: Update eslint and minimal ruleset [#896](https://github.com/hashicorp/vscode-terraform/pull/896) - - Test VS Code Version Matrix [#886](https://github.com/hashicorp/vscode-terraform/pull/886) - - Ignore jest config when packaging [#895](https://github.com/hashicorp/vscode-terraform/pull/895) - -## [2.18.0] (2022-01-07) - -ENHANCEMENTS: - - - Improve language server installation ([#868](https://github.com/hashicorp/vscode-terraform/pull/868)) - - Make reference count code lens opt-in (disabled by default) ([#893](https://github.com/hashicorp/vscode-terraform/pull/893)) - -BUG FIXES: - - - Fix Terraform file detection ([#870](https://github.com/hashicorp/vscode-terraform/pull/870)) - -INTERNAL: - - - deps: bump vscode-extension-telemetry to 0.4.4 ([#884](https://github.com/hashicorp/vscode-terraform/pull/884)) - -## [2.17.0] (2021-12-02) - -ENHANCEMENTS: - - - Add new setting which toggles displaying reference counts above top level blocks and attributes ([#837](https://github.com/hashicorp/vscode-terraform/pull/837)) - - Add support for language server side config option `ignoreDirectoryNames` ([#833](https://github.com/hashicorp/vscode-terraform/pull/833)) - - Add module providers view to Explorer pane ([#850](https://github.com/hashicorp/vscode-terraform/pull/850)) - - Process telemetry from the language server ([#823](https://github.com/hashicorp/vscode-terraform/pull/823)) - - Add a new command for generating bug reports ([#851](https://github.com/hashicorp/vscode-terraform/pull/851)) - -BUG FIXES: - - - Fix Terraform status bar not being displayed ([#857](https://github.com/hashicorp/vscode-terraform/pull/857)) - -INTERNAL: - - - Refactor extension to only use one LanguageClient per workspace ([#845](https://github.com/hashicorp/vscode-terraform/pull/845)) - - Stop exposing a public extension API ([#858](https://github.com/hashicorp/vscode-terraform/pull/858)) - - deps: bump vscode-extension-telemetry to 0.4.3 ([#846](https://github.com/hashicorp/vscode-terraform/pull/846)) - -## [2.16.0] (2021-10-14) - -ENHANCEMENTS: - - - Add module calls view to Explorer pane ([#746](https://github.com/hashicorp/vscode-terraform/pulls/746)) - - Add experimental `prefillRequiredFields` feature ([#799](https://github.com/hashicorp/vscode-terraform/pulls/799)) - - Install LS into dedicated persistent global storage (to avoid the need for LS reinstallation upon extension upgrade) ([#811](https://github.com/hashicorp/vscode-terraform/pulls/811)) - -INTERNAL: - - - deps: bump vscode-extension-telemetry to 0.4.2 ([#790](https://github.com/hashicorp/vscode-terraform/pulls/790)) - -## [2.15.0] (2021-09-22) - -ENHANCEMENTS: - - - Add support for language server side config option `terraformExecPath` ([#741](https://github.com/hashicorp/vscode-terraform/pulls/741)) - - Add support for language server side config option `terraformExecTimeout` ([#741](https://github.com/hashicorp/vscode-terraform/pulls/741)) - - Add support for language server side config option `terraformLogFilePath` ([#741](https://github.com/hashicorp/vscode-terraform/pulls/741)) - -BUG FIXES: - - - fix: avoid tracking client which is not ready yet ([#778](https://github.com/hashicorp/vscode-terraform/pulls/778)) - - fix: avoid considering output panes as editors ([#771](https://github.com/hashicorp/vscode-terraform/pulls/771)) - -## [2.14.0] (2021-07-22) - -FEATURES: - - - Register command to show references ([#686](https://github.com/hashicorp/vscode-terraform/pulls/686)) - -ENHANCEMENTS: - - - Install native LS build for Apple Silicon (darwin/arm64) ([#563](https://github.com/hashicorp/vscode-terraform/pulls/563)) - - Add semver based version pin for Language Server via `requiredVersion` config option ([#656](https://github.com/hashicorp/vscode-terraform/pulls/656)) - - Improve error handling ([#691](https://github.com/hashicorp/vscode-terraform/pulls/691)) - -BUG FIXES: - - - fix: launch LS even if path contains escapable characters ([#694](https://github.com/hashicorp/vscode-terraform/pulls/694)) - -## [2.13.2] (2021-07-19) - -BUG FIXES: - - - Fix language server update logic ([#690](https://github.com/hashicorp/vscode-terraform/pulls/690)) - -## [2.13.1] (2021-07-16) - -BUG FIXES: - - - Fix DocumentSelector for multi-folder workspace ([#688](https://github.com/hashicorp/vscode-terraform/pulls/688)) - -## [2.13.0] (2021-06-23) - -FEATURES: - - - Add support for Terraform variable files (`tfvars`) ([#661](https://github.com/hashicorp/vscode-terraform/pulls/661)) - -## [2.12.1] (2021-06-11) - -BUG FIXES: - - - Avoid duplicate language clients for non-multi-folder setup ([#663](https://github.com/hashicorp/vscode-terraform/pulls/663)) - -## [2.12.0] (2021-06-08) - -BUG FIXES: - - - Avoid launching more servers if server supports multiple folders ([#654](https://github.com/hashicorp/vscode-terraform/pulls/654)) - -INTERNAL: - - - Rename `rootModules` command to `module.callers` ([#633](https://github.com/hashicorp/vscode-terraform/pulls/633)) - -## [2.11.0] (2021-05-18) - -BUG FIXES: - -* Reorder functions to prioritize abspath highlight ([#630](https://github.com/hashicorp/vscode-terraform/pulls/630)) -* Only trigger language server auto update once ([#623](https://github.com/hashicorp/vscode-terraform/pulls/623)) - -## [2.10.2] (2021-05-03) - -BUG FIXES: - -* Correct delay for language server version check ([#620](https://github.com/hashicorp/vscode-terraform/pulls/620)) - -## [2.10.1] (2021-04-28) - -BUG FIXES: - -* Update js-releases dependency to resolve security issue [HCSEC-2021-12](https://discuss.hashicorp.com/t/hcsec-2021-12-codecov-security-event-and-hashicorp-gpg-key-exposure/23512) ([#612](https://github.com/hashicorp/vscode-terraform/pulls/612)) - -## [2.10.0] (2021-04-13) - -ENHANCEMENTS: - -* Update syntax highlighting for Terraform 0.15 ([#604](https://github.com/hashicorp/vscode-terraform/pulls/604)) - -## [2.9.1] (2021-03-24) - -BUG FIXES: - -* Fix contents of vsix package - -## [2.9.0] (2021-03-24) - -ENHANCEMENTS: - -* Check for language server updates every 24 hours ([#595](https://github.com/hashicorp/vscode-terraform/pulls/595)) - -BUG FIXES: - -* Normalize language server installer file paths ([#589](https://github.com/hashicorp/vscode-terraform/pulls/589)) -* Disable statusbar feature if a custom language server is in use ([#593](https://github.com/hashicorp/vscode-terraform/pulls/593)) - -## [2.8.3] (2021-03-16) - -ENHANCEMENTS: - -* Update client telemetry ([#587](https://github.com/hashicorp/vscode-terraform/pulls/587)) - -## [2.8.2] (2021-03-11) - -ENHANCEMENTS: - -* Change telemetry value for the language server version to make it easier to filter ([#582](https://github.com/hashicorp/vscode-terraform/pulls/582)) - -BUG FIXES: - -* Match correct language server binary name per platform – fixes language server upgrade problems on Windows ([#583](https://github.com/hashicorp/vscode-terraform/pulls/583)) -* Rescue version check errors on language server install ([#584](https://github.com/hashicorp/vscode-terraform/pulls/584)) - -## [2.8.1] (2021-03-10) - -BUG FIXES: - -* Improve error message for failed language server install ([#580](https://github.com/hashicorp/vscode-terraform/pulls/580)) -* Add telemetry for tracking language server installed and upgrade versions ([#579](https://github.com/hashicorp/vscode-terraform/pulls/579)) - -## [2.8.0] (2021-03-09) - -ENHANCEMENTS: - -* Add stopClient and execWorkspaceCommand telemetry events ([#577](https://github.com/hashicorp/vscode-terraform/pulls/577)) - -BUG FIXES: - -* Cancel language server install when upgrade message is closed ([#570](https://github.com/hashicorp/vscode-terraform/pulls/570)) - -## [2.7.0] (2021-02-22) - -ENHANCEMENTS: - -* Add telemetry for error reporting ([#557](https://github.com/hashicorp/vscode-terraform/pulls/557)) -* Use version JSON output of LS during installation ([#560](https://github.com/hashicorp/vscode-terraform/pulls/560)) - -## [2.6.0] (2021-02-09) - -FEATURES: - -* Execute terraform plan and apply using the VSCode terminal ([#551](https://github.com/hashicorp/vscode-terraform/pulls/551)) - -## [2.5.0] (2021-01-14) - -FEATURES: - -* Add setting for experimental features to enable validateOnSave ([#536](https://github.com/hashicorp/vscode-terraform/pulls/536)) -* Add terraform validate command ([#540](https://github.com/hashicorp/vscode-terraform/pulls/540)) - -## [2.4.0] (2021-01-07) - -FEATURES: - -* Use amd64 binary to support Apple Silicon Macs ([#527](https://github.com/hashicorp/vscode-terraform/pulls/527)) -* Add command and statusbar interface for running terraform init ([#495](https://github.com/hashicorp/vscode-terraform/pulls/495)) - -ENHANCEMENTS: - -* Read LS version from stdout ([#512](https://github.com/hashicorp/vscode-terraform/pulls/512)) -* Prepare for semantic token based highlighting ([#523](https://github.com/hashicorp/vscode-terraform/pulls/523)) - -## [2.3.0] (2020-11-12) - -NOTES: - -* Set up integration tests in GitHub actions ([#483](https://github.com/hashicorp/vscode-terraform/pulls/483)) - -BUG FIXES: - -* Fix 32bit downloads of language server ([#483](https://github.com/hashicorp/vscode-terraform/pulls/483)) -* Prune nested workspace folders to prevent running multiple language servers for the same directory ([#499](https://github.com/hashicorp/vscode-terraform/pulls/499)) -* Prefix workspace command names to prevent multi-instance name collisions ([#514](https://github.com/hashicorp/vscode-terraform/pulls/514)) - -## [2.2.3] (2020-09-03) - -BUG FIXES: - -* Update object syntax highlighting to fix unmatched cases ([#485](https://github.com/hashicorp/vscode-terraform/pulls/485)) - -## [2.2.2] (2020-08-25) - -BUG FIXES: - -* Fix additional object key matching issues ([#478](https://github.com/hashicorp/vscode-terraform/pulls/478)) - -## [2.2.1] (2020-08-24) - -BUG FIXES: - -* Fix object key syntax highlighting ([#475](https://github.com/hashicorp/vscode-terraform/pulls/475)) - -## [2.2.0] (2020-08-20) - -ENHANCEMENTS: - -* Perform PGP verification of zip/shasums ([#450](https://github.com/hashicorp/vscode-terraform/pulls/450)) -* Upgrade LS client library to major version 6 ([#454](https://github.com/hashicorp/vscode-terraform/pulls/454)) -* Add multi-folder workspace support ([#448](https://github.com/hashicorp/vscode-terraform/pulls/448)) -* Ensure downloaded zips are deleted ([#464](https://github.com/hashicorp/vscode-terraform/pulls/464)) -* Add configuration to exclude root modules ([#446](https://github.com/hashicorp/vscode-terraform/pulls/446)) - -BUG FIXES: - -* Refactor and fix install bugs ([#444](https://github.com/hashicorp/vscode-terraform/pulls/444)) -* Fix block syntax labels ([#458](https://github.com/hashicorp/vscode-terraform/pulls/458)) -* Fix parenthesis syntax error ([#459](https://github.com/hashicorp/vscode-terraform/pulls/459)) -* Fix syntax highlighting for object expressions ([#462](https://github.com/hashicorp/vscode-terraform/pulls/462)) - -## [2.1.1] (2020-07-15) - -BUG FIXES: - -* Fix race in shasum verification ([#438](https://github.com/hashicorp/vscode-terraform/pulls/438)) - -## [2.1.0] (2020-07-14) - -ENHANCEMENTS: - -* Verify shasum of language server binary on install ([#414](https://github.com/hashicorp/vscode-terraform/pulls/414)) -* Add link to language server changelog on completed install ([#424](https://github.com/hashicorp/vscode-terraform/pulls/424)) -* Add syntax for object and tuple structural types ([#428](https://github.com/hashicorp/vscode-terraform/pulls/428)) -* Add setting for workspace root module configuration ([#423](https://github.com/hashicorp/vscode-terraform/pulls/423)) - -## [2.0.2] (2020-06-23) - -BUG FIXES: - -* Hide language server output window to prevent stealing focus ([#408](https://github.com/hashicorp/vscode-terraform/pulls/408)) - -## [2.0.1] (2020-06-10) - -BUG FIXES: - -Fix for Marketplace listing issue - -## [2.0.0] (2020-06-10) - -The Terraform VSCode extension has [a new home at HashiCorp](https://www.hashicorp.com/blog/supporting-the-hashicorp-terraform-extension-for-visual-studio-code/)! We're integrating with a [new language server](https://github.com/hashicorp/terraform-ls) designed to create a stable integration with Terraform through public APIs. When you upgrade to v2.0.0, the new language server will be installed by default, and checking for updates automatically. - -Two commands have been added to manage the language server manually, which you can access via the [Command Palette](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette): "Terraform: Enable Language Server" and "Terraform: Disable Language Server". - -If you want to use a custom-built language server, it can be enabled with the Terraform extension setting "terraform.languageServer.pathToBinary". Include the full path and binary name. - -In this version, we've updated the syntax highlighting to work under Terraform 0.12. Errors that were seen in trying to read 0.12 files have also been eliminated. Highlighting and other core features will be partially compatible under 0.11 as well but continuing development will only focus on 0.12 and future versions. If you work in 0.11, you should [pin your extension to an earlier version](https://code.visualstudio.com/updates/v1_30#_install-previous-versions). - -Other updates: - -* Full-document formatting is provided through the language server and [can be configured](https://code.visualstudio.com/docs/editor/codebasics#_formatting) through user or workspace settings -* Added shortcuts (snippets) for variable and for_each syntax -- `fore`, `vare`, `varm` -* For contributors, the TypeScript testing and linting frameworks have been brought current with the recommended packages -* Logos now match the current brand guidelines (pretty snazzy!) -* Auto-completion, hover, and definition features are now managed by the language server, so see their [changelog](https://github.com/hashicorp/terraform-ls/blob/main/CHANGELOG.md) for the most recent updates -* External commands such as `terraform validate` and `tflint` are removed from the extension, but we plan to add hooks for these and/or additional integrations via the language server. -* The outline view and model overview have been removed for now in order to focus on core features - -### Previous Releases - -For information on prior major and minor releases, see their changelogs: - -* [v1.4.0 and earlier](https://github.com/hashicorp/vscode-terraform/blob/v1.4.0/CHANGELOG.md#140) -* [v0.0.23 and earlier](https://github.com/hashicorp/vscode-terraform/blob/0.0.23/CHANGELOG.md#0.0.23) - - - -[Unreleased]: https://github.com/hashicorp/vscode-terraform/compare/v2.29.3...main -[2.29.3]: https://github.com/hashicorp/vscode-terraform/compare/v2.29.2...v2.29.3 -[2.29.2]: https://github.com/hashicorp/vscode-terraform/compare/v2.29.1...v2.29.2 -[2.29.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.29.0...v2.29.1 -[2.29.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.28.2...v2.29.0 -[2.28.2]: https://github.com/hashicorp/vscode-terraform/compare/v2.28.1...v2.28.2 -[2.28.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.28.0...v2.28.1 -[2.28.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.27.2...v2.28.0 -[2.27.2]: https://github.com/hashicorp/vscode-terraform/compare/v2.27.1...v2.27.2 -[2.27.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.27.0...v2.27.1 -[2.27.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.26.1...v2.27.0 -[2.26.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.26.0...v2.26.1 -[2.26.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.25.4...v2.26.0 -[2.25.4]: https://github.com/hashicorp/vscode-terraform/compare/v2.25.3...v2.25.4 -[2.25.3]: https://github.com/hashicorp/vscode-terraform/compare/v2.25.2...v2.25.3 -[2.25.2]: https://github.com/hashicorp/vscode-terraform/compare/v2.25.1...v2.25.2 -[2.25.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.25.0...v2.25.1 -[2.25.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.24.3...v2.25.0 -[2.24.3]: https://github.com/hashicorp/vscode-terraform/compare/v2.24.2...v2.24.3 -[2.24.2]: https://github.com/hashicorp/vscode-terraform/compare/v2.24.1...v2.24.2 -[2.24.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.24.0...v2.24.1 -[2.24.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.23.0...v2.24.0 -[2.23.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.22.0...v2.23.0 -[2.22.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.21.0...v2.22.0 -[2.21.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.20.1...v2.21.0 -[2.20.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.20.0...v2.20.1 -[2.20.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.19.0...v2.20.0 -[2.19.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.18.0...v2.19.0 -[2.18.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.17.0...v2.18.0 -[2.17.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.16.0...v2.17.0 -[2.16.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.15.0...v2.16.0 -[2.15.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.14.0...v2.15.0 -[2.14.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.13.2...v2.14.0 -[2.13.2]: https://github.com/hashicorp/vscode-terraform/compare/v2.13.1...v2.13.2 -[2.13.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.13.0...v2.13.1 -[2.13.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.12.1...v2.13.0 -[2.12.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.12.0...v2.12.1 -[2.12.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.11.0...v2.12.0 -[2.11.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.10.2...v2.11.0 -[2.10.2]: https://github.com/hashicorp/vscode-terraform/compare/v2.10.1...v2.10.2 -[2.10.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.10.0...v2.10.1 -[2.10.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.9.1...v2.10.0 -[2.9.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.9.0...v2.9.1 -[2.9.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.8.3...v2.9.0 -[2.8.3]: https://github.com/hashicorp/vscode-terraform/compare/v2.8.2...v2.8.3 -[2.8.2]: https://github.com/hashicorp/vscode-terraform/compare/v2.8.1...v2.8.2 -[2.8.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.8.0...v2.8.1 -[2.8.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.7.0...v2.8.0 -[2.7.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.6.0...v2.7.0 -[2.6.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.5.0...v2.6.0 -[2.5.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.4.0...v2.5.0 -[2.4.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.3.0...v2.4.0 -[2.3.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.2.3...v2.3.0 -[2.2.3]: https://github.com/hashicorp/vscode-terraform/compare/v2.2.2...v2.2.3 -[2.2.2]: https://github.com/hashicorp/vscode-terraform/compare/v2.2.1...v2.2.2 -[2.2.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.2.0...v2.2.1 -[2.2.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.1.1...v2.2.0 -[2.1.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.1.0...v2.1.1 -[2.1.0]: https://github.com/hashicorp/vscode-terraform/compare/v2.0.2...v2.1.0 -[2.0.2]: https://github.com/hashicorp/vscode-terraform/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/hashicorp/vscode-terraform/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/hashicorp/vscode-terraform/compare/v1.4.0...v2.0.0 diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 2cd4edaf..be65fd8f 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -27,7 +27,7 @@ After cloning the repo, run `npm install` to install dependencies. There's an in > npm run compile ``` -> In order to use an independently built or installed version of terraform-ls, you will need to set `terraform.languageServer.path` to the correct executable path. +> In order to use an independently built or installed version of terraform-ls, you will need to set `opentofu.languageServer.path` to the correct executable path. ## Running the Extension diff --git a/README.md b/README.md index 8359dd46..99efdcc8 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,25 @@ -# Terraform Extension for Visual Studio Code +# OpenTofu Extension for Visual Studio Code + + [OpenTofu Extension for Visual Studio Code (VS Code)](https://marketplace.visualstudio.com/items?itemName=gamunu.opentofu) with the [Terraform Language Server](https://github.com/hashicorp/terraform-ls) adds editing features for [OpenTofu](https://opentofu.org/) files such as syntax highlighting, IntelliSense, code navigation, code formatting, module explorer and much more! + +⚠️ **Important:** +- This extension is not compatible with the HashiCorp Terraform extension when both are active simultaneously. Using them together could lead to unexpected behavior or errors. +- We discover and set the `opentofu.languageServer.opentofu.path` if it is unconfigured. This ensures that the Terraform language server uses the `tofu` command instead of the terraform command. In the future, if a OpenToFu language server becomes available, this setting will no longer be necessary. + +We apologize for any inconvenience this may cause, and we appreciate your understanding. -The HashiCorp [Terraform Extension for Visual Studio Code (VS Code)](https://marketplace.visualstudio.com/items?itemName=HashiCorp.terraform) with the [Terraform Language Server](https://github.com/hashicorp/terraform-ls) adds editing features for [Terraform](https://www.terraform.io) files such as syntax highlighting, IntelliSense, code navigation, code formatting, module explorer and much more! ## Quick Start -Get started writing Terraform configurations with VS Code in three steps: +Get started writing OpenTofu configurations with VS Code in three steps: -- **Step 1:** If you haven't done so already, install [Terraform](https://www.terraform.io/downloads) +- **Step 1:** If you haven't done so already, install [OpenTofu](https://opentofu.org/docs/intro/install/) -- **Step 2:** Install the [Terraform Extension for VS Code](https://marketplace.visualstudio.com/items?itemName=HashiCorp.terraform). +- **Step 2:** Install the [OpenTofu Extension for VS Code](https://marketplace.visualstudio.com/items?itemName=gamunu.opentofu). -- **Step 3:** To activate the extension, open any folder or VS Code workspace containing Terraform files. Once activated, the Terraform language indicator will appear in the bottom right corner of the window. +- **Step 3:** To activate the extension, open any folder or VS Code workspace containing OpenTofu files. Once activated, the OpenTofu language indicator will appear in the bottom right corner of the window. -New to Terraform? Read the [Terraform Learning guides](https://learn.hashicorp.com/terraform) +New to OpenTofu? Read the [OpenTofu Introduction](https://opentofu.org/docs/intro/) See [Usage](#usage) for more detailed getting started information. @@ -24,17 +31,16 @@ Read the [Troubleshooting Guide](#troubleshooting) for answers to common questio - [Syntax validation](#syntax-validation) Provides inline diagnostics for invalid configuration as you type - [Syntax highlighting](#syntax-highlighting) Highlighting syntax from Terraform 0.12 to 1.X - [Code Navigation](#code-navigation) Navigate through your codebase with Go to Definition and Symbol support -- [Code Formatting](#code-formatting) Format your code with `terraform fmt` automatically +- [Code Formatting](#code-formatting) Format your code with `tofu fmt` automatically - [Code Snippets](#code-snippets) Shortcuts for common snippets like `for_each` and `variable` -- [Terraform Cloud Integration](#terraform-cloud-integration) View Terraform Cloud Workspaces and Run details inside VS Code -- [Terraform Module Explorer](#terraform-module-and-provider-explorer) View all modules and providers referenced in the currently open document. -- [Terraform commands](#terraform-commands) Directly execute commands like `terraform init` or `terraform plan` from the VS Code Command Palette. +- [OpenTofu Module Explorer](#opentofu-module-and-provider-explorer) View all modules and providers referenced in the currently open document. +- [OpenTofu commands](#opentofu-commands) Directly execute commands like `tofu init` or `tofu plan` from the VS Code Command Palette. ### IntelliSense and Autocomplete IntelliSense is a general term for a variety of code editing features including: code completion, parameter info, quick info, and member lists. IntelliSense features are sometimes called by other names such as autocomplete, code completion, and code hinting. -For Terraform constructs like resource and data, labels, blocks and attributes are auto completed both at the root of the document and inside other blocks. This also works for Terraform modules that are installed in the workspace, attributes and other constructs are autocompleted. +For OpenTofu constructs like resource and data, labels, blocks and attributes are auto completed both at the root of the document and inside other blocks. This also works for OpenTofu modules that are installed in the workspace, attributes and other constructs are autocompleted. > **Note:** If there are syntax errors present in the document upon opening, intellisense may not provide all completions. Please fix the errors and reload the document and intellisense will return. See [hcl-lang#57](https://github.com/hashicorp/hcl-lang/issues/57) for more information. @@ -71,10 +77,10 @@ Enhanced validation of selected Terraform language constructs in both `*.tf` and The enhanced validation feature is enabled by default but can be disabled using the following setting: ```json -"terraform.validation.enableEnhancedValidation": false +"opentofu.validation.enableEnhancedValidation": false ``` -The extension also provides validation through [`terraform validate`](https://www.terraform.io/cli/commands/validate). This can be triggered via command palette. Unlike the other validation methods, this one requires the Terraform CLI installed and a previous successful run of `terraform init` (i.e. local installation of all providers and modules) to function correctly. It is the slowest method, but the most thorough - i.e. it will catch the most mistakes. +The extension also provides validation through [`tofu validate`](https://opentofu.org/docs/cli/commands/validate/). This can be triggered via command palette. Unlike the other validation methods, this one requires the Terraform CLI installed and a previous successful run of `tofu init` (i.e. local installation of all providers and modules) to function correctly. It is the slowest method, but the most thorough - i.e. it will catch the most mistakes. ![](docs/validation-cli-command.png) @@ -82,12 +88,10 @@ The extension also provides validation through [`terraform validate`](https://ww ### Syntax Highlighting -Terraform syntax highlighting recognizes language constructs from Terraform version 0.12 to 1.X. Terraform providers, modules, variables and other high-level constructs are recognized, as well as more complex code statements like `for` loops, conditional expressions, and other complex expressions. +OpenTofu syntax highlighting recognizes language constructs of OpenTofu version 1.X. OpenTofu providers, modules, variables and other high-level constructs are recognized, as well as more complex code statements like `for` loops, conditional expressions, and other complex expressions. ![](docs/syntax.png) -Some language constructs will highlight differently for older versions of Terraform that are incompatible with newer ways of expressing Terraform code. In these cases we lean toward ensuring the latest version of Terraform displays correctly and do our best with older versions. - ### Code Navigation While editing, you can right-click different identifiers to take advantage of several convenient commands @@ -99,7 +103,7 @@ While editing, you can right-click different identifiers to take advantage of se ### Code Formatting -This extension utilizes [`terraform fmt`](https://www.terraform.io/cli/commands/fmt) to rewrite an open document to a canonical format and style. This command applies a subset of the [Terraform language style conventions](https://www.terraform.io/language/syntax/style), along with other minor adjustments for readability. +This extension utilizes [`tofu fmt`](https://opentofu.org/docs/cli/commands/fmt/) to rewrite an open document to a canonical format and style. This command applies a subset of the [OpenTofu language style conventions](https://opentofu.org/docs/language/syntax/style/), along with other minor adjustments for readability. See the [Formatting](#formatting) Configuration section for information on how to configure this feature. @@ -115,109 +119,78 @@ The extension provides several snippets to accelerate adding Terraform code to y - `vare` - Empty variable - `varm` - Map Variable -### Terraform Cloud Integration - -Every time you have to switch away from your code, you risk losing momentum and the context about your tasks. Previously, Terraform users needed to have at least two windows open – their editor and a web page – to develop Terraform code. The editor contains all of the Terraform code they are working on, and the web page has the Terraform Cloud workspace loaded. Switching back and forth between the Terraform Cloud website and the text editor can be a frustrating and fragmented experience. - -The Terraform Cloud Visual Studio Code integration improves user experience by allowing users to view workspaces directly from within Visual Studio Code. Users can view the status of current and past runs and inspect detailed logs – without ever leaving the comfort of their editor. - -To start using Terraform Cloud with VS Code, open the new Terraform Cloud sidebar and click "Login to Terraform Cloud". You can login using a stored token from the Terraform CLI, an existing token you provide, or open the Terraform Cloud website to generate a new token. - -![](docs/tfc/login_view.gif) - -Once logged in, you are prompted to choose which Organization to view workspaces in. - -![](docs/tfc/choose_org_view.png) - -Now that your Organization is chosen, the Workspace view populates with all workspaces your token has permission to view. At a glance, you can see the last run status of each Workspace. Hovering over a workspace shows detailed information about each workspace. - -![](docs/tfc/workspace_view.gif) - -Selecting a workspace populates the Run view with a list of runs for that workspace. At a glance, you can see the status of each Run, and hover over each for more detailed information. - -![](docs/tfc/workspace_run_view.gif) - -If a Run has been Planned or Applied, you can view the raw log for each by expanding the Run then selecting the 'View Raw Log' button for either the Plan or Apply. - -![](docs/tfc/plan_apply_view.gif) - -To sign out or log out of your Terraform Cloud session, click the Accounts icon next to the Settings icon in the Activity Bar and select "Sign Out": - -![](docs/tfc/log_out.png) - -This will clear the currently saved token and allow you to login using a different token. -### Terraform Module and Provider Explorer +### OpenTofu Module and Provider Explorer -List Terraform modules used in the current open document in the Explorer Pane, or drag to the Side Bar pane for an expanded view. +List OpenTofu modules used in the current open document in the Explorer Pane, or drag to the Side Bar pane for an expanded view. -Each item shows an icon indicating where the module comes from (local filesystem, git repository, or Terraform Registry). +Each item shows an icon indicating where the module comes from (local filesystem, git repository, or OpenTofu Registry). ![](docs/module_calls.png) -If the module comes from the Terraform Registry, a link to open the documentation in a browser is provided. +If the module comes from the OpenTofu Registry, a link to open the documentation in a browser is provided. ![](docs/module_calls_doc_link.png) -List Terraform providers used in the current open document in the Explorer Pane, or drag to the Side Bar pane for an expanded view. +List OpenTofu providers used in the current open document in the Explorer Pane, or drag to the Side Bar pane for an expanded view. ![](docs/module_providers.png) -### Terraform Commands +### OpenTofu Commands -The extension provides access to several Terraform commands through the Command Palette: +The extension provides access to several OpenTofu commands through the Command Palette: -- Terraform: init -- Terraform: init current folder -- Terraform: validate -- Terraform: plan +- tofu: init +- tofu: init current folder +- tofu: validate +- tofu: plan ## Requirements -The Terraform VS Code extension bundles the [Terraform Language Server](https://github.com/hashicorp/terraform-ls) and is a self-contained install. +The OpenTofu VS Code extension bundles the [Terraform Language Server](https://github.com/hashicorp/terraform-ls) and is a self-contained install. The extension does require the following to be installed before use: - VS Code v1.82 or greater -- Terraform v0.12 or greater +- OpenTofu v1.0 or greater ## Platform Support -The extension should work anywhere VS Code itself and Terraform 0.12 or higher is supported. Our test matrix includes the following: +The extension should work anywhere VS Code itself and OpenTofu 1.0 or higher is supported. Our test matrix includes the following: -- Windows Server 2022 with Terraform v1.6 -- macOS 12 with Terraform v1.6 -- macOS 11 with Terraform v1.6 -- Ubuntu 22.04 with Terraform v1.6 +- Windows Server 2022 with OpenTofu v1.0 +- macOS 12 with OpenTofu v1.0 +- macOS 11 with OpenTofu v1.0 +- Ubuntu 22.04 with OpenTofu v1.0 -Intellisense, error checking and other language features are supported for Terraform v0.12 and greater. +Intellisense, error checking and other language features are supported for OpenTofu v1.0 and greater. -Syntax highlighting targets Terraform v1.0 and greater. Highlighting 0.12-0.15 configuration is done on a best effort basis. +Syntax highlighting targets OpenTofu v1.0 and greater. ## Usage ### VS Code Workspace support -It is a common pattern to have separate folders containing related Terraform configuration that are not contained under one root folder. For example, you have a main Terraform folder containing the configuration for a single application and several module folders containing encapsulated code for configuring different parts of component pieces. You could open each folder in a separate VS Code window, and bounce between each window to author your changes. +It is a common pattern to have separate folders containing related OpenTofu configuration that are not contained under one root folder. For example, you have a main OpenTofu folder containing the configuration for a single application and several module folders containing encapsulated code for configuring different parts of component pieces. You could open each folder in a separate VS Code window, and bounce between each window to author your changes. -A better approach is to use [VS Code Workspaces](https://code.visualstudio.com/docs/editor/workspaces). Using our example above, open the main Terraform folder first, then use Add Folder to workspace to add the dependent module folders. A single VS Code window is used and all Terraform files are available to author your changes. This uses a single terraform-ls process that has an understanding of your entire project, allowing you to use features like `Go to Symbol` and `Reference counts` across your project. +A better approach is to use [VS Code Workspaces](https://code.visualstudio.com/docs/editor/workspaces). Using our example above, open the main OpenTofu folder first, then use Add Folder to workspace to add the dependent module folders. A single VS Code window is used and all OpenTofu files are available to author your changes. This uses a single terraform-ls process that has an understanding of your entire project, allowing you to use features like `Go to Symbol` and `Reference counts` across your project. ### Single file support -Opening a single Terraform configuration file inside VS Code is currently not supported. We see this approach most commonly attempted by users of terminal editors like vim, where it is common to edit a single file at a time. +Opening a single OpenTofu configuration file inside VS Code is currently not supported. We see this approach most commonly attempted by users of terminal editors like vim, where it is common to edit a single file at a time. -The Terraform VS Code extension works best when it has the full context of a Terraform project where it can parse the referenced files and provide the expected advanced language features. +The OpenTofu VS Code extension works best when it has the full context of a OpenTofu project where it can parse the referenced files and provide the expected advanced language features. -The recommended workflow is to instead open the containing folder for the desired Terraform file inside a single VS Code editor window, then navigate to the desired file. This seems counter-intuitive when you only want to edit a single file, but this allows the extension to understand the Terraform setup you are using and provide accurate and helpful intellisense, error checking, and other language features. +The recommended workflow is to instead open the containing folder for the desired OpenTofu file inside a single VS Code editor window, then navigate to the desired file. This seems counter-intuitive when you only want to edit a single file, but this allows the extension to understand the OpenTofu setup you are using and provide accurate and helpful intellisense, error checking, and other language features. ### Refresh Intellisense -The extension will pick up new schema for Terraform providers you reference in your configuration files automatically whenever anything changes inside `.terraform`. +The extension will pick up new schema for OpenTofu providers you reference in your configuration files automatically whenever anything changes inside `.terraform`. -To provide the extension with an up-to-date schema for the Terraform providers used in your configuration: +To provide the extension with an up-to-date schema for the OpenTofu providers used in your configuration: -1. Open any folder or VS Code workspace containing Terraform files. -1. Open the Command Palette and run `Terraform: init current folder` or perform a `terraform init` from the terminal. +1. Open any folder or VS Code workspace containing OpenTofu files. +1. Open the Command Palette and run `tofu: init current folder` or perform a `tofu init` from the terminal. ### Remote Extension support @@ -238,7 +211,7 @@ This extension offers several configuration options. To modify these open the [V An experimental option can be enabled to prefill required fields when completing Terraform blocks with the following setting: ```json -"terraform.experimentalFeatures.prefillRequiredFields": true +"opentofu.experimentalFeatures.prefillRequiredFields": true ``` For example, choosing `aws_alb_listener` in the following block inserts a snippet in the current line with the `resource` block entirely filled out, containing tab stops to fill in the required values. @@ -256,7 +229,7 @@ Completing the snippet allows you to tab complete through each attribute and blo Display reference counts above top level blocks and attributes ```json -"terraform.codelens.referenceCount": true +"opentofu.codelens.referenceCount": true ``` ![](docs/code_lens.png) @@ -265,16 +238,16 @@ Display reference counts above top level blocks and attributes ### Formatting -To enable automatic formatting, it is recommended that the following be added to the extension settings for the Terraform extension: +To enable automatic formatting, it is recommended that the following be added to the extension settings for the OpenTofu extension: ```json -"[terraform]": { - "editor.defaultFormatter": "hashicorp.terraform", +"[opentofu]": { + "editor.defaultFormatter": "opentofu.tofu", "editor.formatOnSave": true, "editor.formatOnSaveMode": "file" }, -"[terraform-vars]": { - "editor.defaultFormatter": "hashicorp.terraform", +"[opentofu-vars]": { + "editor.defaultFormatter": "opentofu.tofu", "editor.formatOnSave": true, "editor.formatOnSaveMode": "file" } @@ -282,24 +255,24 @@ To enable automatic formatting, it is recommended that the following be added to > It is recommended to set `editor.defaultFormatter` to ensure that VS Code knows which extension to use to format your files. It is possible to have more than one extension installed which claim a capability to format Terraform files. -When using the `editor.formatOnSaveMode` setting, only `file` is currently supported. The `modifications` or `modificationsIfAvailable` settings [use the currently configured SCM](https://code.visualstudio.com/updates/v1_49#_only-format-modified-text) to detect file line ranges that have changed and send those ranges to the formatter. The `file` setting works because `terraform fmt` was originally designed for formatting an entire file, not ranges. If you don't have an SCM enabled for the files you are editing, `modifications` won't work at all. The `modificationsIfAvailable` setting will fall back to `file` if there is no SCM and will appear to work sometimes. +When using the `editor.formatOnSaveMode` setting, only `file` is currently supported. The `modifications` or `modificationsIfAvailable` settings [use the currently configured SCM](https://code.visualstudio.com/updates/v1_49#_only-format-modified-text) to detect file line ranges that have changed and send those ranges to the formatter. The `file` setting works because `tofu fmt` was originally designed for formatting an entire file, not ranges. If you don't have an SCM enabled for the files you are editing, `modifications` won't work at all. The `modificationsIfAvailable` setting will fall back to `file` if there is no SCM and will appear to work sometimes. If you want to use `editor.codeActionsOnSave` with `editor.formatOnSave` to automatically format Terraform files, use the following configuration: ```json "editor.formatOnSave": true, -"[terraform]": { - "editor.defaultFormatter": "hashicorp.terraform", +"[opentofu]": { + "editor.defaultFormatter": "opentofu.tofu", "editor.formatOnSave": false, "editor.codeActionsOnSave": { - "source.formatAll.terraform": true + "source.formatAll.opentofu": true }, }, -"[terraform-vars]": { - "editor.defaultFormatter": "hashicorp.terraform", +"[opentofu-vars]": { + "editor.defaultFormatter": "opentofu.tofu", "editor.formatOnSave": false, "editor.codeActionsOnSave": { - "source.formatAll.terraform": true + "source.formatAll.opentofu": true }, } ``` @@ -313,7 +286,7 @@ This will keep the global `editor.formatOnSave` for other languages you use, and An experimental validate-on-save option can be enabled with the following setting: ```json -"terraform.experimentalFeatures.validateOnSave": true +"opentofu.experimentalFeatures.validateOnSave": true ``` This will create diagnostics for any elements that fail validation. You can also run `terraform validate` by issuing the `Terraform: validate` in the command palette. @@ -323,7 +296,7 @@ This will create diagnostics for any elements that fail validation. You can also If you have multiple root modules in your workspace, you can configure the language server settings to identify them. Edit this through the VSCode Settings UI or add a `.vscode/settings.json` file using the following template: ```json -"terraform.languageServer.rootModules": [ +"opentofu.languageServer.rootModules": [ "/module1", "/module2" ] @@ -332,7 +305,7 @@ If you have multiple root modules in your workspace, you can configure the langu If you want to automatically search root modules in your workspace and exclude some folders, you can configure the language server settings to identify them. ```json -"terraform.languageServer.excludeRootModules": [ +"opentofu.languageServer.excludeRootModules": [ "/module3", "/module4" ] @@ -341,70 +314,50 @@ If you want to automatically search root modules in your workspace and exclude s If you want to automatically ignore certain directories when terraform-ls indexes files, add the folder names to this setting: ```json - "terraform.languageServer.ignoreDirectoryNames": [ + "opentofu.languageServer.ignoreDirectoryNames": [ "folder1", "folder2" ] ``` -### Terraform command options +### OpenTofu command options You can configure the path to the Terraform binary used by terraform-ls to perform operations inside the editor by configuring this setting: ```json -"terraform.languageServer.terraform.path": "C:/some/folder/path" +"opentofu.languageServer.path": "C:/some/folder/path" ``` -You can override the Terraform execution timeout by configuring this setting: +You can override the opentofu execution timeout by configuring this setting: ```json -"terraform.languageServer.terraform.timeout": "30" +"opentofu.languageServer.timeout": "30" ``` You can set the path Terraform logs (`TF_LOG_PATH`) by configuring this setting: ```json -"terraform.languageServer.terraform.logFilePath": "C:/some/folder/path/log-{{varname}}.log" +"opentofu.languageServer.logFilePath": "C:/some/folder/path/log-{{varname}}.log" ``` Supports variables (e.g. timestamp, pid, ppid) via Go template syntax `{{varname}}` -### Telemetry - -We use telemetry to send error reports to our team, so we can respond more effectively. You can configure VS Code to send all telemetry, just crash telemetry, just errors or turn it off entirely by [configuring](https://code.visualstudio.com/docs/getstarted/telemetry#_disable-telemetry-reporting) `"telemetry.telemetryLevel"` to your desired value. You can also [monitor what's being sent](https://code.visualstudio.com/docs/getstarted/telemetry#_output-channel-for-telemetry-events) in your logs. - ## Known Issues -- If there are syntax errors present in the document upon opening, intellisense may not provide all completions. Run `Terraform: validate` and fix validation errors, then reload the document and intellisense will work again. Potential solutions for this are being investigated in See [hcl-lang#57](https://github.com/hashicorp/hcl-lang/issues/57) for more information. +- If there are syntax errors present in the document upon opening, intellisense may not provide all completions. Run `tofu: validate` and fix validation errors, then reload the document and intellisense will work again. Potential solutions for this are being investigated in See [hcl-lang#57](https://github.com/hashicorp/hcl-lang/issues/57) for more information. - Completion inside incomplete blocks, such as `resource "here` (without the closing quote and braces) is not supported. You can complete the 1st level blocks though and that will automatically trigger subsequent completion for e.g. resource types. See [terraform-ls#57](https://github.com/hashicorp/terraform-ls/issues/57) for more information. - A number of different folder configurations (specifically when your root module is not a parent to any submodules) are not yet supported. More information available in ([terraform-ls#32](https://github.com/hashicorp/terraform-ls/issues/32#issuecomment-649707345)) -### Terraform 0.11 compatibility - -If you are using a Terraform version prior to 0.12.0, you can install the pre-transfer 1.4.0 version of this extension by following the instructions in the [pin version section](#pin-to-a-specific-version-of-the-extension). - -The configuration has changed from 1.4.0 to v2.X. If you are having issues with the Language Server starting, you can reset the configuration to the following: - -```json -"terraform.languageServer.enable": true, -"terraform.languageServer.args": ["serve"] -``` - ## Troubleshooting -- If you have a question about how to accomplish something with the extension, please ask on the [Terraform Editor Discuss site](https://discuss.hashicorp.com/c/terraform-core/terraform-editor-integrations/46) -- If you come across a problem with the extension, please file an [issue](https://github.com/hashicorp/vscode-terraform/issues/new/choose). +- If you come across a problem with the extension, please file an [issue](https://github.com/gamunu/vscode-opentofu/issues/new/choose). - If someone has already filed an issue that encompasses your feedback, please leave a 👍/👎 reaction on the issue -- Contributions are always welcome! Please see our [contributing guide](https://github.com/hashicorp/vscode-terraform/issues/new?assignees=&labels=enhancement&template=feature_request.md) for more details +- Contributions are always welcome! Please see our [contributing guide](https://github.com/gamunu/vscode-opentofu/issues/new?assignees=&labels=enhancement&template=feature_request.md) for more details - If you're interested in the development of the extension, you can read about our [development process](DEVELOPMENT.md) -### Settings Migration - -Read more about [changes in settings options introduced in v2.24.0](./docs/settings-migration.md). - ### Generate a bug report -Experience a problem? You can have VS Code open a Github issue in our repo with all the information filled out for you. Open the Command Palette and invoke `Terraform: Generate Bug Report`. This will inspect the VS Code version, the Terraform extension version, the terraform-ls version and the list of installed extensions and open a browser window with GitHub loaded. You can then inspect the information provided, edit if desired, and submit the issue. +Experience a problem? You can have VS Code open a Github issue in our repo with all the information filled out for you. Open the Command Palette and invoke `OpenTofu: Generate Bug Report`. This will inspect the VS Code version, the Terraform extension version, the terraform-ls version and the list of installed extensions and open a browser window with GitHub loaded. You can then inspect the information provided, edit if desired, and submit the issue. ### Reload the extension @@ -418,29 +371,11 @@ If you wish to install a specific version of the extension, you can choose 'Inst ![](docs/pin_version.png) -## Code of Conduct - -HashiCorp Community Guidelines apply to you when interacting with the community here on GitHub and contributing code to this repository. - -Please read the full text at https://www.hashicorp.com/community-guidelines - ## Contributing -We are an open source project on GitHub and would enjoy your contributions! Consult our [development guide](DEVELOPMENT.md) for steps on how to get started. Please [open a new issue](https://github.com/hashicorp/terraform-vscode/issues) before working on a PR that requires significant effort. This will allow us to make sure the work is in line with the project's goals. - -## Release History - -**v2.0.0** is the first official release from HashiCorp, prior releases were by [Mikael Olenfalk](https://github.com/mauve). - -The 2.0.0 release integrates a new [Language Server package from HashiCorp](https://github.com/hashicorp/terraform-ls). The extension will install and upgrade terraform-ls to continue to add new functionality around code completion and formatting. See the [terraform-ls CHANGELOG](https://github.com/hashicorp/terraform-ls/blob/main/CHANGELOG.md) for details. - -In addition, this new version brings the syntax highlighting up to date with all HCL2 features, as needed for Terraform 0.12 and above. - -> **Configuration Changes** Please note that in 2.x, the configuration differs from 1.4.0, see [Known Issues](#known-issues) for more information. - -See the [CHANGELOG](https://github.com/hashicorp/vscode-terraform/blob/main/CHANGELOG.md) for more detailed release notes. +We are an open source project on GitHub and would enjoy your contributions! Consult our [development guide](DEVELOPMENT.md) for steps on how to get started. Please [open a new issue](https://github.com/gamunu/terraform-vscode/issues) before working on a PR that requires significant effort. This will allow us to make sure the work is in line with the project's goals. ## Credits -- [Mikael Olenfalk](https://github.com/mauve) - creating and supporting the [vscode-terraform](https://github.com/mauve/vscode-terraform) extension, which was used as a starting point and inspiration for this extension. -- [Hashicorp Terraform](https://github.com/mauve) - creating and supporting the [vscode-terraform](https://github.com/hashicorp/vscode-terraform) extension, which was used as a starting point and inspiration for this extension. +- [Mikael Olenfalk](https://github.com/mauve) - creating the [vscode-terraform](https://github.com/mauve/vscode-terraform) extension, which was used as a starting point and inspiration for this extension. +- [Hashicorp Terraform](https://github.com/mauve) - creating the [vscode-terraform](https://github.com/hashicorp/vscode-terraform) extension, which was used as a starting point and inspiration for this extension. diff --git a/assets/icons/opentofu.svg b/assets/icons/opentofu.svg new file mode 100644 index 00000000..c60cdef6 --- /dev/null +++ b/assets/icons/opentofu.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/icons/opentofu_logo_universal.png b/assets/icons/opentofu_logo_universal.png new file mode 100644 index 0000000000000000000000000000000000000000..234171129c650ee8ce82b57577595c9766ce46df GIT binary patch literal 19122 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 - - - - - - - - - - - - diff --git a/assets/icons/terraform_logo_mark_light_universal.png b/assets/icons/terraform_logo_mark_light_universal.png deleted file mode 100644 index 57fa6caad6d4bd741c42ebc8f5b0800fc3ac3196..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20163 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�=r)VYfX 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 diff --git a/assets/icons/vs_code_opentofu.svg b/assets/icons/vs_code_opentofu.svg new file mode 100644 index 00000000..f55e1d37 --- /dev/null +++ b/assets/icons/vs_code_opentofu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/vs_code_terraform.svg b/assets/icons/vs_code_terraform.svg deleted file mode 100644 index 4eb51658..00000000 --- a/assets/icons/vs_code_terraform.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/assets/icons/vs_code_terraform_cloud.svg b/assets/icons/vs_code_terraform_cloud.svg deleted file mode 100644 index 3b66177b..00000000 --- a/assets/icons/vs_code_terraform_cloud.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/settings-migration.md b/docs/settings-migration.md deleted file mode 100644 index 2993ca4c..00000000 --- a/docs/settings-migration.md +++ /dev/null @@ -1,137 +0,0 @@ -# Settings Migration - -In v2.24.0 we migrated all settings to conform to common VS Code setting naming conventions. This improves readability in the VS Code Settings UI as well as making the settings easier to discover when typing in the JSON Settings view. - -## Manual Migration - -The `terraform.languageServer` setting block has been extracted out to individual settings. - -In addition, `terraform.languageServer.external` has been renamed to `terraform.languageServer.enable` - - - - - - - -
OldNew
- -```json -"terraform.languageServer": { - "external": true, - "pathToBinary": "", - "args": [ "serve" ], - "ignoreSingleFileWarning": false -}, -``` - - -```json -"terraform.languageServer.enable": true, -"terraform.languageServer.pathToBinary": "", -"terraform.languageServer.args": [ "serve" ], -"terraform.languageServer.ignoreSingleFileWarning": false -``` - -
- -The `terraform-ls.terraformExec` settings have been moved to the `terraform` section and have been renamed: - - - - - - - -
OldNew
- -```json -"terraform-ls.terraformExecPath": "", -"terraform-ls.terraformExecTimeout": "", -"terraform-ls.terraformExecLogFilePath": "" -``` - - - -```json -"terraform.languageServer.terraform.path": "", -"terraform.languageServer.terraform.timeout": "", -"terraform.languageServer.terraform.logFilePath": "" -``` - -
- -All settings previously under the `terraform-ls` section have been moved to the `terraform` section and a new `indexing` subsection: - - - - - - - -
OldNew
- -```json -"terraform-ls.rootModules": [], -"terraform-ls.excludeRootModules": [], -"terraform-ls.ignoreDirectoryNames": [] -``` - - - -```json -"terraform.languageServer.rootModules": [], -"terraform.languageServer.indexing.ignorePaths": [], -"terraform.languageServer.indexing.ignoreDirectoryNames": [] -``` - -
- -The `terraform.experimentalFeatures` setting block has been extracted out to individual settings: - - - - - - - -
OldNew
- -```json -"terraform.experimentalFeatures": { - "validateOnSave": false, - "prefillRequiredFields": false, -}, -``` - - -```json -"terraform.experimentalFeatures.validateOnSave": false, -"terraform.experimentalFeatures.prefillRequiredFields": false, -``` - -
- -For an easy to view table of settings, see the `Contributions` tab when viewing the Terraform Extension in the VS Code Extension Pane. - -## Setting Scope - -This extension has several settings that allow users to customize an executable path for different functions. These paths can vary depending on where the extension is running. - -As of v2.24.0, the extension uses the `machine` scope for the following settings: - -``` -terraform.languageServer.path -terraform.languageServer.args -terraform.languageServer.tcp.port -terraform.languageServer.terraform.path -terraform.languageServer.terraform.logFilePath -terraform.languageServer.terraform.timeout -terraform.languageServer.rootModules -terraform.languageServer.excludeRootModules -terraform.languageServer.ignoreDirectoryNames -``` - -> **Note**: This means these settings are no longer able to be configred in the Workspace or Folder setting scopes. For more information about setting scope see the VS Code [setting documentation](https://code.visualstudio.com/docs/getstarted/settings) - -This will allow VS Code to know where to read each setting depending on where the extension is running. For example: running locally on a Windows desktop, or in a WSL instance, or remotely in a GitHub Codespace or a Remote SSH session. VS Code understands where the extension is "running" and can read settings from the proper location, if the settings are properly scoped. diff --git a/package-lock.json b/package-lock.json index f26cdb58..07a3510d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "opentofu", - "version": "2.29.3", + "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "opentofu", - "version": "2.29.3", + "version": "0.1.0", "license": "MPL-2.0", "dependencies": { "@zodios/core": "^10.9.2", @@ -82,12 +82,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -95,30 +95,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -143,12 +143,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", - "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.23.3", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -158,14 +158,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -296,9 +296,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -314,32 +314,32 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", @@ -351,9 +351,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -540,34 +540,34 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", - "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.3", - "@babel/types": "^7.23.3", - "debug": "^4.1.0", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -584,12 +584,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, @@ -659,9 +659,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -682,9 +682,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", - "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -704,13 +704,13 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -731,9 +731,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@isaacs/cliui": { @@ -1585,9 +1585,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1715,13 +1715,13 @@ } }, "node_modules/@playwright/browser-chromium": { - "version": "1.40.1", - "resolved": "https://registry.npmjs.org/@playwright/browser-chromium/-/browser-chromium-1.40.1.tgz", - "integrity": "sha512-uNmjHYXBTYTfJkf89D6zVUcesCFzZ/yjkPj8FvBJQ6yf3na/j1rcjVNzx0PzOAGcWKioB/rnWRBi7b5ojOdCHA==", + "version": "1.41.2", + "resolved": "https://registry.npmjs.org/@playwright/browser-chromium/-/browser-chromium-1.41.2.tgz", + "integrity": "sha512-vzobqNg2K6cJPyXCVaUxq8uDV54l3pEJvkO58XK0CBV2nl9IBySXvEqcgwsQc8PmQ930yVDrz0oCrMR6H/Qv3A==", "dev": true, "hasInstallScript": true, "dependencies": { - "playwright-core": "1.40.1" + "playwright-core": "1.41.2" }, "engines": { "node": ">=16" @@ -1746,9 +1746,9 @@ } }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -1809,9 +1809,9 @@ "dev": true }, "node_modules/@types/babel__core": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.4.tgz", - "integrity": "sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -1822,9 +1822,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -1841,9 +1841,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -1862,9 +1862,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-of+ICnbqjmFCiixUnqRulbylyXQrPqIGf/B3Jax1wIF3DvSheysQxAWvqHhZiW3IQrycvokcLcFQlveGp+vyNg==", + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", + "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", "dev": true }, "node_modules/@types/cookie": { @@ -1883,9 +1883,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.44.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.7.tgz", - "integrity": "sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==", + "version": "8.56.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz", + "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==", "dev": true, "dependencies": { "@types/estree": "*", @@ -1958,9 +1958,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.8", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.8.tgz", - "integrity": "sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -1995,9 +1995,9 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.4.tgz", - "integrity": "sha512-xKU7bUjiFTIttpWaIZ9qvgg+22O1nmbA+HRxdlR+u6TWsGfmFdXrheJoK4fFxrHNVIOBDvDNKZG+LYBpMHpX3w==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", "dev": true }, "node_modules/@types/ms": { @@ -2007,9 +2007,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.18.61", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.61.tgz", - "integrity": "sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q==", + "version": "16.18.80", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.80.tgz", + "integrity": "sha512-vFxJ1Iyl7A0+xB0uW1r1v504yItKZLdqg/VZELUZ4H02U0bXAgBisSQ8Erf0DMruNFz9ggoiEv6T8Ll9bTg8Jw==", "dev": true }, "node_modules/@types/responselike": { @@ -2022,15 +2022,15 @@ } }, "node_modules/@types/semver": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.5.tgz", - "integrity": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", + "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==", "dev": true }, "node_modules/@types/set-cookie-parser": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.6.tgz", - "integrity": "sha512-tjIRMxGztGfIbW2/d20MdJmAPZbabtdW051cKfU+nvZXUnKKifHbY2CyL/C0EGabUB8ahIRjanYzTqJUQR8TAQ==", + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.7.tgz", + "integrity": "sha512-+ge/loa0oTozxip6zmhRIk8Z/boU51wl9Q6QdLZcokIGMzY5lFXYy/x7Htj2HTC6/KZP1hUbZ1ekx8DYXICvWg==", "dev": true, "dependencies": { "@types/node": "*" @@ -2055,15 +2055,15 @@ "dev": true }, "node_modules/@types/which": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.2.tgz", - "integrity": "sha512-UqCG7NjNyume6e+BHcFkOQOS8of/E18V2z/jTRkiD98YiiryYOFBVvPxqA/8PQCwkn7icKqz/hFflMIRN2HGhQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.3.tgz", + "integrity": "sha512-2C1+XoY0huExTbs8MQv1DuS5FS86+SEjdM9F/+GS61gg5Hqbtj8ZiDSx8MfWcyei907fIPbfPGCOrNUTnVHY1g==", "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.31", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz", - "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -2270,9 +2270,9 @@ "dev": true }, "node_modules/@vscode/test-electron": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz", - "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==", + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.9.tgz", + "integrity": "sha512-z3eiChaCQXMqBnk2aHHSEkobmC2VRalFQN0ApOAtydL172zXGxTwGrRtviT5HnUB+Q+G3vtEYFtuQkYqBzYgMA==", "dev": true, "dependencies": { "http-proxy-agent": "^4.0.1", @@ -2350,38 +2350,17 @@ "node": ">= 14" } }, - "node_modules/@vscode/test-web/node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dev": true, - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/@vscode/test-web/node_modules/tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", - "dev": true, - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, "node_modules/@vscode/vsce": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.22.0.tgz", - "integrity": "sha512-8df4uJiM3C6GZ2Sx/KilSKVxsetrTBBIUb3c0W4B1EWHcddioVs5mkyDKtMNP0khP/xBILVSzlXxhV+nm2rC9A==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.23.0.tgz", + "integrity": "sha512-Wf9yN8feZf4XmUW/erXyKQvCL577u72AQv4AI4Cwt5o5NyE49C5mpfw3pN78BJYYG3qnSIxwRo7JPvEurkQuNA==", "dev": true, "dependencies": { "azure-devops-node-api": "^11.0.1", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", "commander": "^6.2.1", + "find-yarn-workspace-root": "^2.0.0", "glob": "^7.0.6", "hosted-git-info": "^4.0.2", "jsonc-parser": "^3.2.0", @@ -2682,9 +2661,9 @@ } }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2712,9 +2691,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "engines": { "node": ">=0.4.0" @@ -2888,9 +2867,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", "dev": true, "engines": { "node": ">= 0.4" @@ -2900,9 +2879,9 @@ } }, "node_modules/axios": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dependencies": { "follow-redirects": "^1.15.4", "form-data": "^4.0.0", @@ -2920,9 +2899,9 @@ } }, "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", "dev": true }, "node_modules/babel-jest": { @@ -3116,6 +3095,43 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/bare-events": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz", + "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==", + "dev": true, + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.1.3.tgz", + "integrity": "sha512-Oa7F0QJV7We0mtKq7Tk246uiBrl7vun64cPEsJOEwv2vHjnVL9yO7aH3643aSrd4rXfVe7yhJ9LHZywQQAXKFQ==", + "dev": true, + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-os": "^2.0.0", + "bare-path": "^2.0.0", + "streamx": "^2.13.0" + } + }, + "node_modules/bare-os": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.1.2.tgz", + "integrity": "sha512-slQjOn78Q8itnzomNAamiKo5MDpEpV3JnoNZ93lyynaFh6paWcU+5c0GVcZ7EYIJC2unN2JGdF1qupdscYl0Yg==", + "dev": true, + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz", + "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==", + "dev": true, + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -3238,9 +3254,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", "dev": true, "funding": [ { @@ -3257,9 +3273,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -3369,29 +3385,18 @@ "node": ">=8" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz", + "integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.3", + "set-function-length": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3416,9 +3421,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001561", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", - "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", + "version": "1.0.30001585", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz", + "integrity": "sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==", "dev": true, "funding": [ { @@ -3436,9 +3441,9 @@ ] }, "node_modules/chai": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", @@ -3621,9 +3626,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "engines": { "node": ">=6" @@ -3860,9 +3865,9 @@ } }, "node_modules/cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", "dev": true, "dependencies": { "depd": "~2.0.0", @@ -4167,13 +4172,14 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz", + "integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==", "dependencies": { - "get-intrinsic": "^1.2.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.2", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -4370,9 +4376,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.579", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.579.tgz", - "integrity": "sha512-bJKvA+awBIzYR0xRced7PrQuRIwGQPpo6ZLP62GAShahU9fWpsNN2IP6BSP1BLDDSbxvBVRGAMWlvVVq3npmLA==", + "version": "1.4.665", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.665.tgz", + "integrity": "sha512-UpyCWObBoD+nSZgOC2ToaIdZB0r9GhqT2WahPKiSki6ckkSuKhQNso8V2PrFcHBMleI/eqbKgVQgVC4Wni4ilw==", "dev": true }, "node_modules/emittery": { @@ -4437,9 +4443,9 @@ } }, "node_modules/envinfo": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", - "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -4457,16 +4463,24 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", - "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", "dev": true }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -4488,15 +4502,15 @@ } }, "node_modules/eslint": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", - "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.53.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -4829,6 +4843,18 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/execa/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -4964,9 +4990,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -5045,6 +5071,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -5055,9 +5090,9 @@ } }, "node_modules/flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { "flatted": "^3.2.9", @@ -5065,7 +5100,7 @@ "rimraf": "^3.0.2" }, "engines": { - "node": ">=12.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { @@ -5075,9 +5110,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "funding": [ { "type": "individual", @@ -5203,15 +5238,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5226,12 +5265,15 @@ } }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5309,9 +5351,9 @@ } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -5460,12 +5502,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -5475,9 +5517,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", "dependencies": { "function-bind": "^1.1.2" }, @@ -5688,9 +5730,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -6118,12 +6160,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -7929,9 +7971,9 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", "dev": true }, "node_modules/jszip": { @@ -8004,16 +8046,16 @@ } }, "node_modules/koa": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.2.tgz", - "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.0.tgz", + "integrity": "sha512-KEL/vU1knsoUvfP4MC4/GthpQrY/p6dzwaaGI6Rt4NQuFqkw3qrvsdYF5pz3wOfi7IGTvMPHC9aZIcUKYFNxsw==", "dev": true, "dependencies": { "accepts": "^1.3.5", "cache-content-type": "^1.0.0", "content-disposition": "~0.5.2", "content-type": "^1.0.4", - "cookies": "~0.8.0", + "cookies": "~0.9.0", "debug": "^4.3.2", "delegates": "^1.0.0", "depd": "^2.0.0", @@ -8581,12 +8623,13 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "dev": true, + "optional": true }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", + "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", "dev": true, "dependencies": { "ansi-colors": "4.1.1", @@ -8596,13 +8639,12 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", + "glob": "8.1.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -8617,10 +8659,6 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" } }, "node_modules/mocha/node_modules/ansi-styles": { @@ -8638,6 +8676,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/mocha/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -8686,37 +8733,24 @@ } }, "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -8738,15 +8772,6 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -9000,18 +9025,6 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -9047,9 +9060,9 @@ "dev": true }, "node_modules/node-abi": { - "version": "3.51.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", - "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", + "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", "dev": true, "optional": true, "dependencies": { @@ -9093,9 +9106,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/normalize-path": { @@ -9177,13 +9190,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -9377,9 +9390,9 @@ } }, "node_modules/outvariant": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.0.tgz", - "integrity": "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.2.tgz", + "integrity": "sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==", "dev": true }, "node_modules/p-cancelable": { @@ -9568,9 +9581,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -9709,12 +9722,12 @@ } }, "node_modules/playwright": { - "version": "1.40.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.40.1.tgz", - "integrity": "sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==", + "version": "1.41.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.41.2.tgz", + "integrity": "sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==", "dev": true, "dependencies": { - "playwright-core": "1.40.1" + "playwright-core": "1.41.2" }, "bin": { "playwright": "cli.js" @@ -9727,9 +9740,9 @@ } }, "node_modules/playwright-core": { - "version": "1.40.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.40.1.tgz", - "integrity": "sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==", + "version": "1.41.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.41.2.tgz", + "integrity": "sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==", "dev": true, "bin": { "playwright-core": "cli.js" @@ -9779,6 +9792,51 @@ "node": ">=10" } }, + "node_modules/prebuild-install/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prebuild-install/node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/prebuild-install/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "optional": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -10377,9 +10435,9 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10406,14 +10464,16 @@ "dev": true }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -10465,13 +10525,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10607,19 +10671,22 @@ } }, "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", "dev": true }, "node_modules/streamx": { - "version": "2.15.6", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", - "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", + "version": "2.15.8", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.8.tgz", + "integrity": "sha512-6pwMeMY/SuISiRsuS8TeIrAzyFbG5gGPHFQsYjUr/pbBadaL1PCWmzKw+CHZSwainfvcF6Si6cVLq4XTEwswFQ==", "dev": true, "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/strict-event-emitter": { @@ -10810,54 +10877,34 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", "dev": true, - "optional": true, "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "optional": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "tar-stream": "^3.1.5" }, - "engines": { - "node": ">=6" + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" } }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, - "optional": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", + "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -10873,16 +10920,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -10930,9 +10977,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -11080,9 +11127,9 @@ "dev": true }, "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", + "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -11098,7 +11145,7 @@ "ts-jest": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", @@ -11132,9 +11179,9 @@ } }, "node_modules/ts-loader": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz", - "integrity": "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -11231,9 +11278,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -11493,9 +11540,9 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -11624,19 +11671,19 @@ "dev": true }, "node_modules/webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "version": "5.90.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz", + "integrity": "sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", + "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.11.5", "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", @@ -11650,7 +11697,7 @@ "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", + "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -11772,16 +11819,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.1" }, "engines": { "node": ">= 0.4" diff --git a/package.json b/package.json index 980dc205..c6c61916 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { - "icon": "assets/icons/terraform_logo_mark_light_universal.png", + "icon": "assets/icons/opentofu_logo_universal.png", "name": "opentofu", "displayName": "OpenTofu", "description": "Syntax highlighting and autocompletion for OpenTofu", - "version": "2.29.3", + "version": "0.1.0", "publisher": "gamunu", "license": "MPL-2.0", "preview": false, @@ -22,10 +22,10 @@ "syntax": { "version": "0.4.2" }, - "qna": "https://discuss.hashicorp.com/c/terraform-core/terraform-editor-integrations/46", + "qna": "https://github.com/gamunu/vscode-opentofu/discussions/categories/q-a", "bugs": { - "url": "https://github.com/hashicorp/vscode-terraform/issues", - "email": "terraform-vscode@hashicorp.com" + "url": "https://github.com/gamunu/vscode-opentofu/issues", + "email": "support@fastcode.io" }, "categories": [ "Programming Languages", @@ -35,8 +35,9 @@ ], "keywords": [ "devops", - "terraform", - "hcl" + "opentofu", + "hcl", + "tofu" ], "galleryBanner": { "color": "#FFF", @@ -47,8 +48,7 @@ "url": "https://github.com/gamunu/vscode-opentofu.git" }, "activationEvents": [ - "onAuthenticationRequest:terraform", - "onView:terraform-modules", + "onView:opentofu-modules", "workspaceContains:**/*.tf", "workspaceContains:**/*.tfvars" ], @@ -59,8 +59,10 @@ { "id": "terraform", "aliases": [ - "Terraform", - "terraform" + "OpenTofu", + "opentofu", + "tofu", + "hcl" ], "extensions": [ ".tf" @@ -279,7 +281,7 @@ "snippets": [ { "language": "terraform", - "path": "./snippets/terraform.json" + "path": "./snippets/opentofu.json" } ], "configuration": [ @@ -287,17 +289,17 @@ "title": "General", "order": 0, "properties": { - "terraform.codelens.referenceCount": { + "opentofu.codelens.referenceCount": { "scope": "window", "type": "boolean", "default": false, "description": "Display reference counts above top level blocks and attributes." }, - "terraform.validation.enableEnhancedValidation": { + "opentofu.validation.enableEnhancedValidation": { "scope": "window", "type": "boolean", "default": true, - "description": "Enable enhanced validation of Terraform files and modules" + "description": "Enable enhanced validation of OpenTofu files and modules" } } }, @@ -305,21 +307,21 @@ "title": "Language Server", "order": 1, "properties": { - "terraform.languageServer.enable": { + "opentofu.languageServer.enable": { "scope": "window", "order": "0", "type": "boolean", "default": true, - "description": "Enable Terraform Language Server" + "description": "Enable OpenTofu Language Server" }, - "terraform.languageServer.path": { + "opentofu.languageServer.path": { "order": "1", "scope": "machine", "type": "string", "default": "", - "description": "Path to the Terraform Language Server binary (optional)" + "description": "Path to the OpenTofu Language Server binary (optional)" }, - "terraform.languageServer.args": { + "opentofu.languageServer.args": { "order": "2", "scope": "machine", "type": "array", @@ -331,7 +333,7 @@ ], "description": "Arguments to pass to language server binary" }, - "terraform.languageServer.tcp.port": { + "opentofu.languageServer.tcp.port": { "order": 4, "type": [ "number", @@ -339,16 +341,16 @@ ], "scope": "machine", "default": null, - "markdownDescription": "Language server TCP port to connect to. This is not compatible with `#terraform.languageServer.path#`. This is used when you want the extension to connect via TCP to an already running language server process." + "markdownDescription": "Language server TCP port to connect to. This is not compatible with `#opentofu.languageServer.path#`. This is used when you want the extension to connect via TCP to an already running language server process." }, - "terraform.languageServer.ignoreSingleFileWarning": { + "opentofu.languageServer.ignoreSingleFileWarning": { "order": "3", "scope": "window", "type": "boolean", "default": false, - "description": "Enable warning when opening a single Terraform file instead of a Terraform folder. Enabling this will prevent the message being sent" + "description": "Enable warning when opening a single OpenTofu file instead of a OpenTofu folder. Enabling this will prevent the message being sent" }, - "terraform.languageServer.indexing.ignorePaths": { + "opentofu.languageServer.indexing.ignorePaths": { "scope": "machine", "type": "array", "items": { @@ -357,7 +359,7 @@ "default": [], "description": "Per-workspace list of paths for the language server to ignore when indexing files" }, - "terraform.languageServer.indexing.ignoreDirectoryNames": { + "opentofu.languageServer.indexing.ignoreDirectoryNames": { "scope": "machine", "type": "array", "items": { @@ -369,26 +371,26 @@ } }, { - "title": "Terraform Features", + "title": "OpenTofu Features", "order": 3, "properties": { - "terraform.languageServer.terraform.path": { + "opentofu.languageServer.opentofu.path": { "order": 0, "scope": "machine", "type": "string", - "description": "Path to the Terraform binary used by the Terraform Language Server" + "description": "Path to the OpenTofu binary used by the OpenTofu Language Server" }, - "terraform.languageServer.terraform.timeout": { + "opentofu.languageServer.opentofu.timeout": { "order": 1, "scope": "machine", "type": "string", - "description": "Overrides Terraform execution timeout (e.g. 30s) used by the Terraform Language Server" + "description": "Overrides OpenTofu execution timeout (e.g. 30s) used by the OpenTofu Language Server" }, - "terraform.languageServer.terraform.logFilePath": { + "opentofu.languageServer.opentofu.logFilePath": { "order": 2, "scope": "machine", "type": "string", - "markdownDescription": "Path to a file (`TF_LOG_PATH`) for Terraform executions to be logged used by the the Terraform Language Server. Support for variables (e.g. timestamp, pid, ppid) via Go template syntax `{{varName}}`" + "markdownDescription": "Path to a file (`TF_LOG_PATH`) for OpenTofu executions to be logged used by the the OpenTofu Language Server. Support for variables (e.g. timestamp, pid, ppid) via Go template syntax `{{varName}}`" } } }, @@ -396,14 +398,14 @@ "title": "Experimental Features", "order": 4, "properties": { - "terraform.experimentalFeatures.validateOnSave": { + "opentofu.experimentalFeatures.validateOnSave": { "description": "Enable validating the currently open file on save", "scope": "window", "type": "boolean", "default": false }, - "terraform.experimentalFeatures.prefillRequiredFields": { - "markdownDescription": "Enable autocompletion for required fields when completing Terraform blocks. Combine with `#editor.suggest.preview#` and the editor will provide inline snippet suggestions for blocks of code", + "opentofu.experimentalFeatures.prefillRequiredFields": { + "markdownDescription": "Enable autocompletion for required fields when completing OpenTofu blocks. Combine with `#editor.suggest.preview#` and the editor will provide inline snippet suggestions for blocks of code", "scope": "window", "type": "boolean", "default": false @@ -413,51 +415,51 @@ ], "commands": [ { - "command": "terraform.generateBugReport", - "title": "HashiCorp Terraform: Generate Bug Report" + "command": "opentofu.generateBugReport", + "title": "OpenTofu: Generate Bug Report" }, { - "command": "terraform.enableLanguageServer", - "title": "HashiCorp Terraform: Enable Language Server" + "command": "opentofu.enableLanguageServer", + "title": "OpenTofu: Enable Language Server" }, { - "command": "terraform.disableLanguageServer", - "title": "HashiCorp Terraform: Disable Language Server" + "command": "opentofu.disableLanguageServer", + "title": "OpenTofu: Disable Language Server" }, { - "command": "terraform.init", + "command": "opentofu.init", "title": "HashiCorp Terraform: init" }, { - "command": "terraform.initCurrent", + "command": "opentofu.initCurrent", "title": "HashiCorp Terraform: init current folder", "icon": "$(cloud-download)" }, { - "command": "terraform.validate", - "title": "HashiCorp Terraform: validate" + "command": "opentofu.validate", + "title": "OpenTofu: validate" }, { - "command": "terraform.plan", - "title": "HashiCorp Terraform: plan" + "command": "opentofu.plan", + "title": "OpenTofu: plan" }, { - "command": "terraform.modules.refreshList", + "command": "opentofu.modules.refreshList", "title": "Refresh Module Calls", "icon": "$(refresh)" }, { - "command": "terraform.providers.refreshList", + "command": "opentofu.providers.refreshList", "title": "Refresh Module Providers", "icon": "$(refresh)" }, { - "command": "terraform.modules.openDocumentation", + "command": "opentofu.modules.openDocumentation", "title": "Open Documentation", "icon": "$(book)" }, { - "command": "terraform.providers.openDocumentation", + "command": "opentofu.providers.openDocumentation", "title": "Open Documentation", "icon": "$(book)" } @@ -465,82 +467,82 @@ "menus": { "commandPalette": [ { - "command": "terraform.enableLanguageServer", - "when": "config.terraform.languageServer.enable == false" + "command": "opentofu.enableLanguageServer", + "when": "config.opentofu.languageServer.enable == false" }, { - "command": "terraform.disableLanguageServer", - "when": "config.terraform.languageServer.enable == true" + "command": "opentofu.disableLanguageServer", + "when": "config.opentofu.languageServer.enable == true" }, { - "command": "terraform.init", + "command": "opentofu.init", "when": "config.terraform.languageServer.enable == true" }, { - "command": "terraform.initCurrent", + "command": "opentofu.initCurrent", "when": "config.terraform.languageServer.enable == true" }, { - "command": "terraform.validate", - "when": "config.terraform.languageServer.enable == true" + "command": "opentofu.validate", + "when": "config.opentofu.languageServer.enable == true" }, { - "command": "terraform.plan", - "when": "config.terraform.languageServer.enable == true" + "command": "opentofu.plan", + "when": "config.opentofu.languageServer.enable == true" }, { - "command": "terraform.modules.refreshList", + "command": "opentofu.modules.refreshList", "when": "false" }, { - "command": "terraform.providers.refreshList", + "command": "opentofu.providers.refreshList", "when": "false" }, { - "command": "terraform.modules.openDocumentation", + "command": "opentofu.modules.openDocumentation", "when": "false" }, { - "command": "terraform.providers.openDocumentation", + "command": "opentofu.providers.openDocumentation", "when": "false" } ], "view/title": [ { - "command": "terraform.modules.refreshList", - "when": "view == terraform.modules", + "command": "opentofu.modules.refreshList", + "when": "view == opentofu.modules", "group": "navigation" }, { - "command": "terraform.providers.refreshList", - "when": "view == terraform.providers", + "command": "opentofu.providers.refreshList", + "when": "view == opentofu.providers", "group": "navigation" }, { - "command": "terraform.initCurrent", - "when": "view == terraform.providers", + "command": "opentofu.initCurrent", + "when": "view == opentofu.providers", "group": "navigation" } ], "view/item/context": [ { - "command": "terraform.modules.openDocumentation", - "when": "view == terraform.modules" + "command": "opentofu.modules.openDocumentation", + "when": "view == opentofu.modules" }, { - "command": "terraform.providers.openDocumentation", - "when": "view == terraform.providers && viewItem == moduleProviderHasDocs" + "command": "opentofu.providers.openDocumentation", + "when": "view == opentofu.providers && viewItem == moduleProviderHasDocs" } ] }, "views": { - "terraform": [ + "opentofu": [ { - "id": "terraform.providers", + "id": "opentofu.providers", "name": "Providers" }, { - "id": "terraform.modules", + "id": "opentofu.modules", "name": "Module Calls" } ] @@ -548,20 +550,20 @@ "viewsContainers": { "activitybar": [ { - "id": "terraform", + "id": "opentofu", "title": "OpenTofu", - "icon": "assets/icons/vs_code_terraform.svg" + "icon": "assets/icons/vs_code_opentofu.svg" } ] }, "viewsWelcome": [ { - "view": "terraform.providers", - "contents": "The active editor cannot provide information about installed providers. [Learn more about providers](https://www.terraform.io/docs/language/providers/index.html). You may need to update your language server version." + "view": "opentofu.providers", + "contents": "The active editor cannot provide information about installed providers. [Learn more about providers](https://opentofu.org/docs/language/providers/). You may need to update your language server version." }, { - "view": "terraform.modules", - "contents": "The active editor cannot provide information about installed modules. [Learn more about modules](https://www.terraform.io/docs/language/modules/develop/index.html) You may need to run 'terraform get' or update your language server version." + "view": "opentofu.modules", + "contents": "The active editor cannot provide information about installed modules. [Learn more about modules](https://opentofu.org/docs/language/modules/) You may need to run 'tofu get' or update your language server version." } ] }, diff --git a/snippets/terraform.json b/snippets/opentofu.json similarity index 100% rename from snippets/terraform.json rename to snippets/opentofu.json diff --git a/src/commands/generateBugReport.ts b/src/commands/generateBugReport.ts index 90b87d96..899e1f61 100644 --- a/src/commands/generateBugReport.ts +++ b/src/commands/generateBugReport.ts @@ -22,7 +22,7 @@ interface VSCodeExtension { export class GenerateBugReportCommand implements vscode.Disposable { constructor(private ctx: vscode.ExtensionContext) { this.ctx.subscriptions.push( - vscode.commands.registerCommand('terraform.generateBugReport', async () => { + vscode.commands.registerCommand('opentofu.generateBugReport', async () => { const problemText = await vscode.window.showInputBox({ title: 'Generate a Bug Report', prompt: 'Enter a short description of the problem or hit enter to submit now', @@ -32,7 +32,7 @@ export class GenerateBugReportCommand implements vscode.Disposable { const extensions = this.getExtensions(); const body = await this.generateBody(extensions, problemText); const encodedBody = encodeURIComponent(body); - const fullUrl = `https://github.com/hashicorp/vscode-terraform/issues/new?body=${encodedBody}`; + const fullUrl = `https://github.com/gamunu/vscode-opentofu/issues/new?body=${encodedBody}`; vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(fullUrl)); }), ); @@ -173,7 +173,7 @@ Outdated:\t${info.outdated} } async getRuntimeInfo(): Promise { - const terraformExe = 'terraform'; + const terraformExe = 'tofu'; const spawn = child_process.spawnSync; // try to get version from a newer terraform binary diff --git a/src/commands/terraform.ts b/src/commands/terraform.ts index 901e6f07..276e57a2 100644 --- a/src/commands/terraform.ts +++ b/src/commands/terraform.ts @@ -12,19 +12,19 @@ export class TerraformCommands implements vscode.Disposable { constructor(private client: LanguageClient) { this.commands = [ - vscode.commands.registerCommand('terraform.init', async () => { + vscode.commands.registerCommand('opentofu.init', async () => { await terraform.initAskUserCommand(this.client); }), - vscode.commands.registerCommand('terraform.initCurrent', async () => { + vscode.commands.registerCommand('opentofu.initCurrent', async () => { await terraform.initCurrentOpenFileCommand(this.client); }), - vscode.commands.registerCommand('terraform.apply', async () => { + vscode.commands.registerCommand('opentofu.apply', async () => { await terraform.command('apply', this.client, true); }), - vscode.commands.registerCommand('terraform.plan', async () => { + vscode.commands.registerCommand('opentofu.plan', async () => { await terraform.command('plan', this.client, true); }), - vscode.commands.registerCommand('terraform.validate', async () => { + vscode.commands.registerCommand('opentofu.validate', async () => { await terraform.command('validate', this.client); }), ]; diff --git a/src/commands/terraformls.ts b/src/commands/terraformls.ts index da97d0fe..1d74d678 100644 --- a/src/commands/terraformls.ts +++ b/src/commands/terraformls.ts @@ -12,7 +12,7 @@ export class TerraformLSCommands implements vscode.Disposable { constructor() { this.commands = [ vscode.workspace.onDidChangeConfiguration(async (event: vscode.ConfigurationChangeEvent) => { - if (event.affectsConfiguration('terraform') || event.affectsConfiguration('terraform-ls')) { + if (event.affectsConfiguration('opentofu') || event.affectsConfiguration('terraform-ls')) { const reloadMsg = 'Reload VSCode window to apply language server changes'; const selected = await vscode.window.showInformationMessage(reloadMsg, 'Reload'); if (selected === 'Reload') { @@ -20,23 +20,23 @@ export class TerraformLSCommands implements vscode.Disposable { } } }), - vscode.commands.registerCommand('terraform.enableLanguageServer', async () => { - if (config('terraform').get('languageServer.enable') === true) { + vscode.commands.registerCommand('opentofu.enableLanguageServer', async () => { + if (config('opentofu').get('languageServer.enable') === true) { return; } - const scope: vscode.ConfigurationTarget = getScope('terraform', 'languageServer.enable'); + const scope: vscode.ConfigurationTarget = getScope('opentofu', 'languageServer.enable'); - await config('terraform').update('languageServer.enable', true, scope); + await config('opentofu').update('languageServer.enable', true, scope); }), - vscode.commands.registerCommand('terraform.disableLanguageServer', async () => { - if (config('terraform').get('languageServer.enable') === false) { + vscode.commands.registerCommand('opentofu.disableLanguageServer', async () => { + if (config('opentofu').get('languageServer.enable') === false) { return; } - const scope: vscode.ConfigurationTarget = getScope('terraform', 'languageServer.enable'); + const scope: vscode.ConfigurationTarget = getScope('opentofu', 'languageServer.enable'); - await config('terraform').update('languageServer.enable', false, scope); + await config('opentofu').update('languageServer.enable', false, scope); }), ]; } diff --git a/src/extension.ts b/src/extension.ts index 43e05064..21c6fd4d 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -33,8 +33,8 @@ import { TerraformLSCommands } from './commands/terraformls'; import { TerraformCommands } from './commands/terraform'; import * as lsStatus from './status/language'; -const id = 'terraform'; -const brand = `HashiCorp Terraform`; +const id = 'opentofu'; +const brand = `OpenTofu`; const documentSelector: DocumentSelector = [ { scheme: 'file', language: 'terraform' }, { scheme: 'file', language: 'terraform-vars' }, @@ -51,7 +51,7 @@ export async function activate(context: vscode.ExtensionContext): Promise // always register commands needed to control terraform-ls context.subscriptions.push(new TerraformLSCommands()); - if (config('terraform').get('languageServer.enable') === false) { + if (config('opentofu').get('languageServer.enable') === false) { return; } @@ -59,7 +59,7 @@ export async function activate(context: vscode.ExtensionContext): Promise const serverOptions = await getServerOptions(lsPath, outputChannel); - const initializationOptions = getInitializationOptions(); + const initializationOptions = await getInitializationOptions(); const clientOptions: LanguageClientOptions = { documentSelector: documentSelector, @@ -70,7 +70,6 @@ export async function activate(context: vscode.ExtensionContext): Promise vscode.workspace.createFileSystemWatcher('**/*.tfvars'), ], }, - diagnosticCollectionName: 'HashiCorpTerraform', outputChannel: outputChannel, revealOutputChannelOn: RevealOutputChannelOn.Never, initializationOptions: initializationOptions, @@ -80,10 +79,10 @@ export async function activate(context: vscode.ExtensionContext): Promise let msg = 'Failure to start terraform-ls. Please check your configuration settings and reload this window'; - const serverArgs = config('terraform').get('languageServer.args', []); + const serverArgs = config('opentofu').get('languageServer.args', []); if (serverArgs[0] !== 'serve') { msg = - 'You need at least a "serve" argument in the `terraform.languageServer.args` setting. Please check your configuration settings and reload this window'; + 'You need at least a "serve" argument in the `opentofu.languageServer.args` setting. Please check your configuration settings and reload this window'; } outputChannel.appendLine(msg); @@ -109,12 +108,12 @@ export async function activate(context: vscode.ExtensionContext): Promise outputChannel.show(); break; case 'Open Settings': - await vscode.commands.executeCommand('workbench.action.openSettings', '@ext:hashicorp.terraform'); + await vscode.commands.executeCommand('workbench.action.openSettings', '@ext:OpenTofu.tofu'); break; case 'More Info': await vscode.commands.executeCommand( 'vscode.open', - vscode.Uri.parse('https://github.com/hashicorp/vscode-terraform#troubleshooting'), + vscode.Uri.parse('https://github.com/gamunu/vscode-opentofu#troubleshooting'), ); break; } @@ -126,7 +125,7 @@ export async function activate(context: vscode.ExtensionContext): Promise // eslint-disable-next-line @typescript-eslint/no-unused-vars error: (error: Error, message: Message, count: number) => { return { - message: `Terraform LS connection error: (${count ?? 0})\n${error?.message}\n${message?.jsonrpc}`, + message: `OpenTofu LS connection error: (${count ?? 0})\n${error?.message}\n${message?.jsonrpc}`, action: ErrorAction.Shutdown, }; }, diff --git a/src/features/moduleCalls.ts b/src/features/moduleCalls.ts index 54120372..506a8dc1 100644 --- a/src/features/moduleCalls.ts +++ b/src/features/moduleCalls.ts @@ -35,7 +35,7 @@ export class ModuleCallsFeature implements StaticFeature { } public async initialize(capabilities: ServerCapabilities): Promise { - this.disposables.push(vscode.window.registerTreeDataProvider('terraform.modules', this.view)); + this.disposables.push(vscode.window.registerTreeDataProvider('opentofu.modules', this.view)); if (!capabilities.experimental?.refreshModuleCalls) { console.log('Server does not support client.refreshModuleCalls'); diff --git a/src/features/moduleProviders.ts b/src/features/moduleProviders.ts index ac1dce16..8eba9081 100644 --- a/src/features/moduleProviders.ts +++ b/src/features/moduleProviders.ts @@ -35,7 +35,7 @@ export class ModuleProvidersFeature implements StaticFeature { } public async initialize(capabilities: ServerCapabilities): Promise { - this.disposables.push(vscode.window.registerTreeDataProvider('terraform.providers', this.view)); + this.disposables.push(vscode.window.registerTreeDataProvider('opentofu.providers', this.view)); if (!capabilities.experimental?.refreshModuleProviders) { console.log("Server doesn't support client.refreshModuleProviders"); diff --git a/src/features/showReferences.ts b/src/features/showReferences.ts index 546fcfeb..c782073e 100644 --- a/src/features/showReferences.ts +++ b/src/features/showReferences.ts @@ -31,7 +31,7 @@ const VSCODE_SHOW_REFERENCES = 'editor.action.showReferences'; export class ShowReferencesFeature implements StaticFeature { private registeredCommands: vscode.Disposable[] = []; - private isEnabled = config('terraform').get('codelens.referenceCount', false); + private isEnabled = config('opentofu').get('codelens.referenceCount', false); constructor(private _client: BaseLanguageClient) {} diff --git a/src/providers/moduleCalls.ts b/src/providers/moduleCalls.ts index ce6c2da9..6efe6789 100644 --- a/src/providers/moduleCalls.ts +++ b/src/providers/moduleCalls.ts @@ -65,11 +65,11 @@ export class ModuleCallsDataProvider implements vscode.TreeDataProvider this.refresh()), - vscode.commands.registerCommand('terraform.modules.openDocumentation', (module: ModuleCallItem) => { + vscode.commands.registerCommand('opentofu.modules.refreshList', () => this.refresh()), + vscode.commands.registerCommand('opentofu.modules.openDocumentation', (module: ModuleCallItem) => { if (module.docsLink) { vscode.env.openExternal(vscode.Uri.parse(module.docsLink)); } diff --git a/src/providers/moduleProviders.ts b/src/providers/moduleProviders.ts index 8eeabc37..64440491 100644 --- a/src/providers/moduleProviders.ts +++ b/src/providers/moduleProviders.ts @@ -35,7 +35,7 @@ export class ModuleProvidersDataProvider implements vscode.TreeDataProvider this.refresh()), + vscode.commands.registerCommand('opentofu.providers.refreshList', () => this.refresh()), vscode.window.onDidChangeActiveTextEditor(async (event: vscode.TextEditor | undefined) => { const activeEditor = getActiveTextEditor(); @@ -47,7 +47,7 @@ export class ModuleProvidersDataProvider implements vscode.TreeDataProvider { + vscode.commands.registerCommand('opentofu.providers.openDocumentation', (module: ModuleProviderItem) => { if (module.docsLink) { vscode.env.openExternal(vscode.Uri.parse(module.docsLink)); } diff --git a/src/settings.ts b/src/settings.ts index 905e2ef5..8da925d3 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -3,6 +3,7 @@ * SPDX-License-Identifier: MPL-2.0 */ +import * as which from 'which'; import { config } from './utils/vscode'; export interface InitializationOptions { @@ -33,29 +34,39 @@ export interface ValidationOptions { enableEnhancedValidation: boolean; } -export function getInitializationOptions() { +export async function getInitializationOptions() { /* This is basically a set of settings masquerading as a function. The intention here is to make room for this to be added to a configuration builder when we tackle #791 */ - const validation = config('terraform').get('validation', { + const validation = config('opentofu').get('validation', { enableEnhancedValidation: true, }); - const terraform = config('terraform').get('languageServer.terraform', { + + const path = await getTofuPath(); + + const terraform = config('opentofu').get('languageServer.opentofu', { path: '', timeout: '', logFilePath: '', }); - const indexing = config('terraform').get('languageServer.indexing', { + + // TODO: remove this when we have a opentofu-ls + // If the path is not set, we will try to discover it + if (!terraform.path) { + terraform.path = path; + } + + const indexing = config('opentofu').get('languageServer.indexing', { ignoreDirectoryNames: [], ignorePaths: [], }); - const ignoreSingleFileWarning = config('terraform').get('languageServer.ignoreSingleFileWarning', false); - const experimentalFeatures = config('terraform').get('experimentalFeatures'); + const ignoreSingleFileWarning = config('opentofu').get('languageServer.ignoreSingleFileWarning', false); + const experimentalFeatures = config('opentofu').get('experimentalFeatures'); // deprecated - const rootModulePaths = config('terraform').get('languageServer.rootModules', []); + const rootModulePaths = config('opentofu').get('languageServer.rootModules', []); if (rootModulePaths.length > 0 && indexing.ignorePaths.length > 0) { throw new Error( 'Only one of rootModules and indexing.ignorePaths can be set at the same time, please remove the conflicting config and reload', @@ -73,3 +84,8 @@ export function getInitializationOptions() { return initializationOptions; } + +async function getTofuPath(): Promise { + const path = await which('tofu.exe', { nothrow: true }); + return path; +} diff --git a/src/status/installedVersion.ts b/src/status/installedVersion.ts index 69bd4b37..bf89a981 100644 --- a/src/status/installedVersion.ts +++ b/src/status/installedVersion.ts @@ -5,12 +5,12 @@ import * as vscode from 'vscode'; -const installedVersion = vscode.languages.createLanguageStatusItem('terraform.installedVersion', [ +const installedVersion = vscode.languages.createLanguageStatusItem('opentofu.installedVersion', [ { language: 'terraform' }, { language: 'terraform-vars' }, ]); -installedVersion.name = 'TerraformInstalledVersion'; -installedVersion.detail = 'Terraform Installed'; +installedVersion.name = 'OpenTofuInstalledVersion'; +installedVersion.detail = 'OpenTofu Installed'; export function setVersion(version: string) { installedVersion.text = version; diff --git a/src/status/language.ts b/src/status/language.ts index 846c294d..80799453 100644 --- a/src/status/language.ts +++ b/src/status/language.ts @@ -9,8 +9,8 @@ const lsStatus = vscode.languages.createLanguageStatusItem('terraform-ls.status' { language: 'terraform' }, { language: 'terraform-vars' }, ]); -lsStatus.name = 'Terraform LS'; -lsStatus.detail = 'Terraform LS'; +lsStatus.name = 'OpenTofu LS'; +lsStatus.detail = 'OpenTofu LS'; export function setVersion(version: string) { lsStatus.text = version; diff --git a/src/status/requiredVersion.ts b/src/status/requiredVersion.ts index 58a16b86..23ec79f8 100644 --- a/src/status/requiredVersion.ts +++ b/src/status/requiredVersion.ts @@ -5,12 +5,12 @@ import * as vscode from 'vscode'; -const requiredVersion = vscode.languages.createLanguageStatusItem('terraform.requiredVersion', [ +const requiredVersion = vscode.languages.createLanguageStatusItem('opentofu.requiredVersion', [ { language: 'terraform' }, { language: 'terraform-vars' }, ]); -requiredVersion.name = 'TerraformRequiredVersion'; -requiredVersion.detail = 'Terraform Required'; +requiredVersion.name = 'OpenTofuRequiredVersion'; +requiredVersion.detail = 'OpenTofu Required'; export function setVersion(version: string) { requiredVersion.text = version; diff --git a/src/terraform.ts b/src/terraform.ts index d5ef966c..bcbbedd4 100644 --- a/src/terraform.ts +++ b/src/terraform.ts @@ -93,7 +93,7 @@ export async function initAskUserCommand(client: LanguageClient) { canSelectFiles: false, canSelectFolders: true, canSelectMany: false, - title: 'Choose which workspace to initialize with terraform init', + title: 'Choose which workspace to initialize with tofu init', defaultUri: workspaceFolders ? workspaceFolders[0]?.uri : undefined, openLabel: 'Initialize', }); @@ -141,7 +141,7 @@ export async function command(command: string, client: LanguageClient, useShell async function terraformCommand(command: string, client: LanguageClient, useShell = false): Promise { const textEditor = getActiveTextEditor(); if (textEditor === undefined) { - vscode.window.showErrorMessage(`Open a Terraform module file and then run terraform ${command} again`); + vscode.window.showErrorMessage(`Open a OpenTofu module file and then run tofu ${command} again`); return; } @@ -154,10 +154,10 @@ async function terraformCommand(command: string, client: LanguageClient, useShel } if (useShell) { - const terminalName = `Terraform ${selectedModule}`; + const terminalName = `OpenTofu ${selectedModule}`; const moduleURI = vscode.Uri.parse(selectedModule); const terraformCommand = await vscode.window.showInputBox({ - value: `terraform ${command}`, + value: `tofu ${command}`, prompt: `Run in ${selectedModule}`, }); if (terraformCommand === undefined) { @@ -166,7 +166,7 @@ async function terraformCommand(command: string, client: LanguageClient, useShel const terminal = vscode.window.terminals.find((t) => t.name === terminalName) || - vscode.window.createTerminal({ name: `Terraform ${selectedModule}`, cwd: moduleURI }); + vscode.window.createTerminal({ name: `OpenTofu ${selectedModule}`, cwd: moduleURI }); terminal.sendText(terraformCommand); terminal.show(); @@ -211,7 +211,7 @@ async function getSelectedModule(moduleUri: vscode.Uri, moduleCallers: ModuleCal moduleCallers.map((m) => m.uri), { canPickMany: false, - title: 'Choose which workspace to initialize with terraform init', + title: 'Choose which workspace to initialize with tofu init', }, ); if (selected === undefined) { diff --git a/src/test/integration/codeAction.test.ts b/src/test/integration/codeAction.test.ts index 235e5d4f..19af5872 100644 --- a/src/test/integration/codeAction.test.ts +++ b/src/test/integration/codeAction.test.ts @@ -15,12 +15,12 @@ suite('code actions', () => { test('supported actions', async () => { await vscode.workspace - .getConfiguration('terraform') + .getConfiguration('opentofu') .update('languageServer.enable', true, vscode.ConfigurationTarget.Workspace); await vscode.workspace .getConfiguration('editor') // eslint-disable-next-line @typescript-eslint/naming-convention - .update('codeActionsOnSave', { 'source.formatAll.terraform': true }, vscode.ConfigurationTarget.Workspace); + .update('codeActionsOnSave', { 'source.formatAll.opentofu': true }, vscode.ConfigurationTarget.Workspace); const docUri = getDocUri('actions.tf'); await open(docUri); diff --git a/src/utils/clientHelpers.ts b/src/utils/clientHelpers.ts index 4c7ae785..78f84aa2 100644 --- a/src/utils/clientHelpers.ts +++ b/src/utils/clientHelpers.ts @@ -15,12 +15,12 @@ export async function getServerOptions( ): Promise { let serverOptions: ServerOptions; - const port = config('terraform').get('languageServer.tcp.port'); + const port = config('opentofu').get('languageServer.tcp.port'); if (port) { - const inspect = vscode.workspace.getConfiguration('terraform').inspect('languageServer.path'); + const inspect = vscode.workspace.getConfiguration('opentofu').inspect('languageServer.path'); if (inspect !== undefined && (inspect.globalValue || inspect.workspaceFolderValue || inspect.workspaceValue)) { vscode.window.showWarningMessage( - 'You cannot use terraform.languageServer.tcp.port with terraform.languageServer.path. Ignoring terraform.languageServer.path and proceeding to connect via TCP', + 'You cannot use opentofu.languageServer.tcp.port with opentofu.languageServer.path. Ignoring opentofu.languageServer.path and proceeding to connect via TCP', ); } @@ -41,7 +41,7 @@ export async function getServerOptions( } const cmd = await lsPath.resolvedPathToBinary(); - const serverArgs = config('terraform').get('languageServer.args', []); + const serverArgs = config('opentofu').get('languageServer.args', []); outputChannel.appendLine(`Launching language server: ${cmd} ${serverArgs.join(' ')}`); const executable: Executable = { command: cmd, diff --git a/src/utils/serverPath.ts b/src/utils/serverPath.ts index 31ff6e73..c442daa2 100644 --- a/src/utils/serverPath.ts +++ b/src/utils/serverPath.ts @@ -14,7 +14,7 @@ export class ServerPath { private customBinPath: string | undefined; constructor(private context: vscode.ExtensionContext) { - this.customBinPath = config('terraform').get('languageServer.path'); + this.customBinPath = config('opentofu').get('languageServer.path'); } private installPath(): string { @@ -58,7 +58,7 @@ export class ServerPath { } catch (err) { let extraHint = ''; if (this.customBinPath) { - extraHint = `. Check "terraform.languageServer.path" in your settings.`; + extraHint = `. Check "opentofu.languageServer.path" in your settings.`; } throw new Error(`Unable to launch language server: ${err instanceof Error ? err.message : err}${extraHint}`); } diff --git a/src/utils/vscode.ts b/src/utils/vscode.ts index c30e329e..6f129228 100644 --- a/src/utils/vscode.ts +++ b/src/utils/vscode.ts @@ -88,7 +88,7 @@ export async function handleLanguageClientStartError(error: unknown, ctx: vscode if (message === 'INVALID_URI_WSL') { // handle in startLanguageServer() - if (ctx.globalState.get('terraform.disableWSLNotification') === true) { + if (ctx.globalState.get('opentofu.disableWSLNotification') === true) { return; } @@ -114,7 +114,7 @@ export async function handleLanguageClientStartError(error: unknown, ctx: vscode switch (choice.title) { case 'Suppress': - ctx.globalState.update('terraform.disableWSLNotification', true); + ctx.globalState.update('opentofu.disableWSLNotification', true); break; case 'Reopen Folder in WSL': await vscode.commands.executeCommand('remote-wsl.reopenInWSL'); @@ -122,9 +122,7 @@ export async function handleLanguageClientStartError(error: unknown, ctx: vscode case 'More Info': await vscode.commands.executeCommand( 'vscode.open', - vscode.Uri.parse( - 'https://github.com/hashicorp/vscode-terraform/blob/v2.24.0/README.md#remote-extension-support', - ), + vscode.Uri.parse('https://github.com/gamunu/vscode-opentofu/blob/main/README.md#remote-extension-support'), ); } } else {