From 9301e634248718ec2dfc51037dd0d51f75c153cf Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:15:17 -0400 Subject: [PATCH 01/10] Split typechecking from tests --- .github/workflows/ci.yml | 28 +++++++++++++++++++ package.json | 1 + packages/environment-ember-loose/package.json | 2 +- packages/template/package.json | 2 +- packages/type-test/package.json | 2 +- test-packages/ts-ember-app/package.json | 1 - .../ts-template-imports-app/package.json | 2 +- 7 files changed, 33 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6813cdd5..10abdcc62 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,6 +19,34 @@ env: CI: true jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 18 + cache: yarn + + - run: yarn install --frozen-lockfile + - run: yarn lint + + + type-tests: + name: "Type Tests" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 18 + cache: yarn + + - run: yarn install --frozen-lockfile + - run: "yarn workspaces run test:typecheck" + - run: "yarn workspaces run test:tsc" + test: name: Test runs-on: ubuntu-latest diff --git a/package.json b/package.json index c11de6c39..551469e63 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "lint:scripts": "yarn eslint --max-warnings 0 --cache .", "lint:formatting": "yarn prettier --check .", "test": "yarn workspaces run test", + "test:typecheck": "yarn workspaces run test:typecheck", "build": "tsc --build", "release-it": "echo \"Running release-it via yarn breaks publishing! Use npx or a Volta global installation.\"" }, diff --git a/packages/environment-ember-loose/package.json b/packages/environment-ember-loose/package.json index 6781194f7..5262937d9 100644 --- a/packages/environment-ember-loose/package.json +++ b/packages/environment-ember-loose/package.json @@ -16,7 +16,7 @@ "glint-environment" ], "scripts": { - "test": "glint --project __tests__/type-tests && vitest run", + "test:typecheck": "glint --project __tests__/type-tests && vitest run", "test:watch": "vitest watch", "build": "tsc --build", "prepack": "yarn build" diff --git a/packages/template/package.json b/packages/template/package.json index 42ca34750..a3c386b63 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -7,7 +7,7 @@ "author": "Dan Freeman (https://github.com/dfreeman)", "types": "-private/index.d.ts", "scripts": { - "test": "tsc --project __tests__" + "test:typecheck": "tsc --project __tests__" }, "files": [ "README.md", diff --git a/packages/type-test/package.json b/packages/type-test/package.json index e549e1556..e2df27b64 100644 --- a/packages/type-test/package.json +++ b/packages/type-test/package.json @@ -15,7 +15,7 @@ "lib" ], "scripts": { - "test": "glint -p __tests__" + "test:typecheck": "glint -p __tests__" }, "dependencies": { "expect-type": "^0.15.0" diff --git a/test-packages/ts-ember-app/package.json b/test-packages/ts-ember-app/package.json index 97f577d39..2bc272c5c 100644 --- a/test-packages/ts-ember-app/package.json +++ b/test-packages/ts-ember-app/package.json @@ -19,7 +19,6 @@ "lint:js": "eslint . --cache", "lint:js:fix": "eslint . --fix", "start": "ember serve", - "test": "npm-run-all test:*", "test:typecheck": "glint", "test:tsc": "tsc --noEmit" }, diff --git a/test-packages/ts-template-imports-app/package.json b/test-packages/ts-template-imports-app/package.json index 9deae3bc2..717f5520f 100644 --- a/test-packages/ts-template-imports-app/package.json +++ b/test-packages/ts-template-imports-app/package.json @@ -4,7 +4,7 @@ "private": true, "license": "MIT", "scripts": { - "test": "glint" + "test:typecheck": "glint" }, "volta": { "extends": "../../package.json" From 0b2fcfef267512886547e210381dc3a9382a9189 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:29:22 -0400 Subject: [PATCH 02/10] yarn can automatically sort package.jsons if you change a dep --- packages/core/package.json | 22 ++++++++-------- .../package.json | 2 +- packages/scripts/package.json | 2 +- packages/vscode/package.json | 5 ++-- test-packages/unstable-release/package.json | 4 +++ yarn.lock | 26 +++++++++++++++++++ 6 files changed, 45 insertions(+), 16 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index bb1e71b72..e224a1f9d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -33,25 +33,24 @@ }, "dependencies": { "@glimmer/syntax": "^0.84.3", - "computeds": "^0.0.1", - "escape-string-regexp": "^4.0.0", - "semver": "^7.5.2", - "silent-error": "^1.1.1", - "uuid": "^8.3.2", - "vscode-languageserver-textdocument": "^1.0.5", - "vscode-uri": "^3.0.8", - "yargs": "^17.5.1", "@volar/kit": "~2.3.0", "@volar/language-core": "~2.3.0", "@volar/language-server": "~2.3.0", "@volar/language-service": "~2.3.0", "@volar/source-map": "~2.3.0", - "@volar/typescript": "~2.3.0", "@volar/test-utils": "~2.3.0", - "volar-service-typescript": "0.0.51" + "@volar/typescript": "~2.3.0", + "computeds": "^0.0.1", + "escape-string-regexp": "^4.0.0", + "semver": "^7.5.2", + "silent-error": "^1.1.1", + "uuid": "^8.3.2", + "volar-service-typescript": "0.0.51", + "vscode-languageserver-textdocument": "^1.0.5", + "vscode-uri": "^3.0.8", + "yargs": "^17.5.1" }, "devDependencies": { - "glint-monorepo-test-utils": "^1.4.0", "@types/common-tags": "^1.8.0", "@types/node": "^18.11.5", "@types/semver": "^7.3.13", @@ -60,6 +59,7 @@ "@vitest/ui": "~1.0.0", "common-tags": "^1.8.0", "execa": "^4.0.1", + "glint-monorepo-test-utils": "^1.4.0", "strip-ansi": "^6.0.0", "vitest": "~1.0.0" }, diff --git a/packages/environment-ember-template-imports/package.json b/packages/environment-ember-template-imports/package.json index 20c63487f..68bb164cb 100644 --- a/packages/environment-ember-template-imports/package.json +++ b/packages/environment-ember-template-imports/package.json @@ -52,12 +52,12 @@ } }, "devDependencies": { - "@types/node": "^18.11.5", "@types/ember": "^4.0.0", "@types/ember__component": "^4.0.10", "@types/ember__helper": "^4.0.1", "@types/ember__modifier": "^4.0.3", "@types/ember__routing": "^4.0.12", + "@types/node": "^18.11.5", "vitest": "~1.0.0" }, "publishConfig": { diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 04b6c25dd..3c5ef2f4a 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -24,8 +24,8 @@ "prepack": "yarn build" }, "dependencies": { - "golden-fleece": "^1.0.9", "glob": "^7.2.0", + "golden-fleece": "^1.0.9", "js-yaml": "^4.1.0", "ora": "^6.1.2", "true-myth": "^6.1.0", diff --git a/packages/vscode/package.json b/packages/vscode/package.json index 6b867f3d5..8a78f1541 100644 --- a/packages/vscode/package.json +++ b/packages/vscode/package.json @@ -40,7 +40,6 @@ "workspaceContains:**/tsconfig.json", "workspaceContains:**/jsconfig.json" ], - "contributes": { "languages": [ { @@ -238,8 +237,8 @@ "@vscode/vsce": "^2.22.0", "esbuild": "^0.15.16", "expect": "^29.5.0", - "mocha": "^10.2.0", - "glob": "^10.2.4" + "glob": "^10.2.4", + "mocha": "^10.2.0" }, "volta": { "extends": "../../package.json" diff --git a/test-packages/unstable-release/package.json b/test-packages/unstable-release/package.json index 747c53061..a6154fd40 100644 --- a/test-packages/unstable-release/package.json +++ b/test-packages/unstable-release/package.json @@ -15,6 +15,10 @@ "eslint": "^7.32.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^5.1.3", "prettier": "^2.5.1" + }, + "volta": { + "extends": "../../package.json" } } diff --git a/yarn.lock b/yarn.lock index 2f1205780..b42d38b31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1830,6 +1830,11 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + "@pnpm/config.env-replace@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" @@ -6352,6 +6357,14 @@ eslint-plugin-prettier@^4.0.0: dependencies: prettier-linter-helpers "^1.0.0" +eslint-plugin-prettier@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" + integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.8.6" + eslint-plugin-qunit@^7.2.0: version "7.3.4" resolved "https://registry.yarnpkg.com/eslint-plugin-qunit/-/eslint-plugin-qunit-7.3.4.tgz#2465b6f29ff56fbe9b741bde2740dec109ee9bec" @@ -12707,6 +12720,14 @@ sync-disk-cache@^2.0.0: rimraf "^3.0.0" username-sync "^1.0.2" +synckit@^0.8.6: + version "0.8.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + table@^6.0.9: version "6.8.1" resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" @@ -13033,6 +13054,11 @@ tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" From 50e03c1d541949aae4b12e4cc70768f55b3e6dbe Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:52:52 -0400 Subject: [PATCH 03/10] Fix linting for the unstable-release package --- test-packages/unstable-release/.eslintrc.cjs | 39 +- test-packages/unstable-release/package.json | 11 +- test-packages/unstable-release/publish.js | 11 +- yarn.lock | 973 ++++++++++++++++++- 4 files changed, 1007 insertions(+), 27 deletions(-) diff --git a/test-packages/unstable-release/.eslintrc.cjs b/test-packages/unstable-release/.eslintrc.cjs index 79667c4c4..d454cc190 100644 --- a/test-packages/unstable-release/.eslintrc.cjs +++ b/test-packages/unstable-release/.eslintrc.cjs @@ -2,23 +2,28 @@ module.exports = { root: true, - parser: 'babel-eslint', - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - ecmaFeatures: { - legacyDecorators: true, - }, - }, - extends: ['eslint:recommended', 'plugin:prettier/recommended'], - env: { - browser: false, - node: true, - }, overrides: [ - // node files + // ESM files + { + files: ['*.js'], + parser: '@babel/eslint-parser', + parserOptions: { + ecmaVersion: 2018, + sourceType: 'module', + requireConfigFile: false, + babelOptions: { + presets: ['@babel/preset-env'], + }, + }, + extends: ['eslint:recommended', 'plugin:prettier/recommended'], + env: { + browser: false, + node: true, + }, + }, + // CJS files { - files: ['./.eslintrc.cjs'], + files: ['**/*.cjs'], parserOptions: { sourceType: 'script', }, @@ -26,8 +31,8 @@ module.exports = { browser: false, node: true, }, - plugins: ['node'], - extends: ['plugin:node/recommended'], + plugins: ['n'], + extends: ['eslint:recommended', 'plugin:n/recommended'], }, ], }; diff --git a/test-packages/unstable-release/package.json b/test-packages/unstable-release/package.json index a6154fd40..86737c8fb 100644 --- a/test-packages/unstable-release/package.json +++ b/test-packages/unstable-release/package.json @@ -4,7 +4,8 @@ "private": true, "type": "module", "scripts": { - "lint:js": "eslint . --cache --config ./.eslintrc.cjs" + "lint": "eslint . && prettier . --check", + "lint:fix": "eslint . --fix && prettier . --write" }, "dependencies": { "execa": "^7.0.0", @@ -12,11 +13,13 @@ "globby": "^11.0.3" }, "devDependencies": { + "@babel/preset-env": "^7.24.7", + "@babel/eslint-parser": "^7.24.7", "eslint": "^7.32.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-node": "^11.1.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-n": "^17.9.0", "eslint-plugin-prettier": "^5.1.3", - "prettier": "^2.5.1" + "prettier": "^3.1.1" }, "volta": { "extends": "../../package.json" diff --git a/test-packages/unstable-release/publish.js b/test-packages/unstable-release/publish.js index 0a35c9b88..7c0df92fe 100644 --- a/test-packages/unstable-release/publish.js +++ b/test-packages/unstable-release/publish.js @@ -1,4 +1,3 @@ - import { execaCommand } from 'execa'; import { listPublicWorkspaces } from './workspaces.js'; import { dirname } from 'path'; @@ -11,9 +10,13 @@ async function publish() { for (let workspace of publicWorkspaces) { console.info(`Publishing ${workspace}`); try { - await execaCommand('npm publish --tag=unstable --verbose --access=public', { cwd: dirname(workspace) }); + await execaCommand('npm publish --tag=unstable --verbose --access=public', { + cwd: dirname(workspace), + }); } catch (err) { - console.info(`Publishing ${workspace} has failed. A full list of errors will be printed at the end of this run`); + console.info( + `Publishing ${workspace} has failed. A full list of errors will be printed at the end of this run`, + ); errors.push(err); continue; } @@ -23,7 +26,7 @@ async function publish() { if (errors.length) { console.error('Errors were encountered while publishing these packages'); - errors.forEach(error => console.log(error.stderr)); + errors.forEach((error) => console.log(error.stderr)); process.exit(1); } } diff --git a/yarn.lock b/yarn.lock index b42d38b31..78c469b54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,11 +30,24 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" +"@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.3", "@babel/compat-data@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== +"@babel/compat-data@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" + integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== + "@babel/core@^7.12.0", "@babel/core@^7.16.10", "@babel/core@^7.16.7", "@babel/core@^7.17.9", "@babel/core@^7.3.4": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" @@ -56,6 +69,15 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/eslint-parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz#27ebab1a1ec21f48ae191a8aaac5b82baf80d9c7" + integrity sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + "@babel/generator@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" @@ -66,6 +88,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" + integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== + dependencies: + "@babel/types" "^7.24.7" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -73,6 +105,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" @@ -80,6 +119,14 @@ dependencies: "@babel/types" "^7.22.15" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" + integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-compilation-targets@^7.12.0", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" @@ -91,6 +138,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" + integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== + dependencies: + "@babel/compat-data" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6", "@babel/helper-create-class-features-plugin@^7.23.7", "@babel/helper-create-class-features-plugin@^7.5.5": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz#b2e6826e0e20d337143655198b79d58fdc9bd43d" @@ -106,6 +164,21 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz#2eaed36b3a1c11c53bdf80d53838b293c52f5b3b" + integrity sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" @@ -115,6 +188,15 @@ regexpu-core "^5.3.1" semver "^6.3.1" +"@babel/helper-create-regexp-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz#be4f435a80dc2b053c76eeb4b7d16dd22cfc89da" + integrity sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + regexpu-core "^5.3.1" + semver "^6.3.1" + "@babel/helper-define-polyfill-provider@^0.4.4": version "0.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz#64df615451cb30e94b59a9696022cffac9a10088" @@ -126,11 +208,29 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== +"@babel/helper-environment-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" + integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" @@ -139,6 +239,14 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.23.0" +"@babel/helper-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" + integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== + dependencies: + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -146,6 +254,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-hoist-variables@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" + integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" @@ -153,6 +268,14 @@ dependencies: "@babel/types" "^7.23.0" +"@babel/helper-member-expression-to-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz#67613d068615a70e4ed5101099affc7a41c5225f" + integrity sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" @@ -160,6 +283,14 @@ dependencies: "@babel/types" "^7.22.15" +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-transforms@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" @@ -171,6 +302,17 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/helper-module-transforms@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" + integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" @@ -178,11 +320,23 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== +"@babel/helper-plugin-utils@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" + integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== + "@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" @@ -192,6 +346,15 @@ "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-wrap-function" "^7.22.20" +"@babel/helper-remap-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz#b3f0f203628522713849d49403f1a414468be4c7" + integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-wrap-function" "^7.24.7" + "@babel/helper-replace-supers@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" @@ -201,6 +364,15 @@ "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" +"@babel/helper-replace-supers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz#f933b7eed81a1c0265740edc91491ce51250f765" + integrity sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -208,6 +380,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" @@ -215,6 +395,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -222,21 +410,43 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-split-export-declaration@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" + integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-string-parser@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== +"@babel/helper-string-parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" + integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== + "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== +"@babel/helper-validator-option@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" + integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== + "@babel/helper-wrap-function@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" @@ -246,6 +456,16 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" +"@babel/helper-wrap-function@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz#52d893af7e42edca7c6d2c6764549826336aae1f" + integrity sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw== + dependencies: + "@babel/helper-function-name" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helpers@^7.23.7": version "7.23.8" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" @@ -264,11 +484,34 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.22.15", "@babel/parser@^7.23.6", "@babel/parser@^7.4.5", "@babel/parser@^7.7.0": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== +"@babel/parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" + integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz#fd059fd27b184ea2b4c7e646868a9a381bbc3055" + integrity sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" @@ -276,6 +519,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz#468096ca44bbcbe8fcc570574e12eb1950e18107" + integrity sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" @@ -285,6 +535,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-transform-optional-chaining" "^7.23.3" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" + integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b" @@ -293,6 +552,14 @@ "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz#71b21bb0286d5810e63a1538aa901c58e87375ec" + integrity sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.16.5", "@babel/plugin-proposal-class-properties@^7.16.7": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" @@ -382,6 +649,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-import-assertions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-import-attributes@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" @@ -389,6 +663,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" + integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -481,6 +762,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" + integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-async-generator-functions@^7.23.7": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz#3aa0b4f2fa3788b5226ef9346cf6d16ec61f99cd" @@ -491,6 +779,16 @@ "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" +"@babel/plugin-transform-async-generator-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz#7330a5c50e05181ca52351b8fd01642000c96cfd" + integrity sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-transform-async-to-generator@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" @@ -500,6 +798,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-remap-async-to-generator" "^7.22.20" +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" + integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" @@ -507,6 +814,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" + integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-block-scoping@^7.16.0", "@babel/plugin-transform-block-scoping@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" @@ -514,6 +828,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-block-scoping@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz#42063e4deb850c7bd7c55e626bf4e7ab48e6ce02" + integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-class-properties@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" @@ -522,6 +843,14 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-class-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" + integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-class-static-block@^7.16.7", "@babel/plugin-transform-class-static-block@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" @@ -531,6 +860,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-transform-class-static-block@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-transform-classes@^7.23.8": version "7.23.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz#d08ae096c240347badd68cdf1b6d1624a6435d92" @@ -545,6 +883,20 @@ "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz#4ae6ef43a12492134138c1e45913f7c46c41b4bf" + integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" @@ -553,6 +905,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.15" +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" + integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/plugin-transform-destructuring@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" @@ -560,6 +920,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-destructuring@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz#a097f25292defb6e6cc16d6333a4cfc1e3c72d9e" + integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-dotall-regex@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" @@ -568,6 +935,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-dotall-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" + integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-duplicate-keys@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" @@ -575,6 +950,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-duplicate-keys@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" + integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-dynamic-import@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" @@ -583,6 +965,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/plugin-transform-dynamic-import@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" + integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" @@ -591,6 +981,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" + integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-export-namespace-from@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" @@ -599,6 +997,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-transform-export-namespace-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" + integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-transform-for-of@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e" @@ -607,6 +1013,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" +"@babel/plugin-transform-for-of@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" + integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-function-name@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" @@ -616,6 +1030,15 @@ "@babel/helper-function-name" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz#6d8601fbffe665c894440ab4470bc721dd9131d6" + integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== + dependencies: + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-json-strings@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" @@ -624,6 +1047,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-transform-json-strings@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" + integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-transform-literals@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" @@ -631,6 +1062,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz#36b505c1e655151a9d7607799a9988fc5467d06c" + integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-logical-assignment-operators@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" @@ -639,6 +1077,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" + integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-transform-member-expression-literals@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" @@ -646,6 +1092,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-member-expression-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" + integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-modules-amd@^7.13.0", "@babel/plugin-transform-modules-amd@^7.16.7", "@babel/plugin-transform-modules-amd@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" @@ -654,6 +1107,14 @@ "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-modules-amd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" + integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== + dependencies: + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-modules-commonjs@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" @@ -663,6 +1124,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" +"@babel/plugin-transform-modules-commonjs@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz#9fd5f7fdadee9085886b183f1ad13d1ab260f4ab" + integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ== + dependencies: + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/plugin-transform-modules-systemjs@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz#fa7e62248931cb15b9404f8052581c302dd9de81" @@ -673,6 +1143,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/plugin-transform-modules-systemjs@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz#f8012316c5098f6e8dee6ecd58e2bc6f003d0ce7" + integrity sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw== + dependencies: + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/plugin-transform-modules-umd@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" @@ -681,6 +1161,14 @@ "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-modules-umd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" + integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== + dependencies: + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" @@ -689,6 +1177,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" + integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-new-target@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" @@ -696,6 +1192,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-new-target@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" + integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" @@ -704,6 +1207,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" + integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-transform-numeric-separator@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" @@ -712,6 +1223,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-transform-object-rest-spread@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" @@ -723,6 +1242,16 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.23.3" +"@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" + integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== + dependencies: + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-object-super@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" @@ -731,6 +1260,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.20" +"@babel/plugin-transform-object-super@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" + integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" @@ -739,6 +1276,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" + integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" @@ -748,6 +1293,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-transform-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz#b8f6848a80cf2da98a8a204429bec04756c6d454" + integrity sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-transform-parameters@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" @@ -755,6 +1309,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-parameters@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" + integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-private-methods@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" @@ -763,6 +1324,14 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" + integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-private-property-in-object@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" @@ -773,6 +1342,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" + integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-transform-property-literals@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" @@ -780,6 +1359,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-property-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" + integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-regenerator@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" @@ -788,6 +1374,14 @@ "@babel/helper-plugin-utils" "^7.22.5" regenerator-transform "^0.15.2" +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" + integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + regenerator-transform "^0.15.2" + "@babel/plugin-transform-reserved-words@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" @@ -795,6 +1389,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-reserved-words@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" + integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-runtime@^7.13.9": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz#52bbd20054855beb9deae3bee9ceb05289c343e6" @@ -814,6 +1415,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" + integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-spread@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" @@ -822,6 +1430,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" +"@babel/plugin-transform-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" + integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-sticky-regex@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" @@ -829,6 +1445,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" + integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-template-literals@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" @@ -836,6 +1459,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-template-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" + integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-typeof-symbol@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" @@ -843,6 +1473,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-typeof-symbol@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz#f074be466580d47d6e6b27473a840c9f9ca08fb0" + integrity sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-typescript@^7.13.0", "@babel/plugin-transform-typescript@^7.16.8": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" @@ -877,6 +1514,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-escapes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" + integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" @@ -885,6 +1529,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" + integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-unicode-regex@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" @@ -893,6 +1545,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" + integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" @@ -901,6 +1561,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" + integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/polyfill@^7.11.5": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.12.1.tgz#1f2d6371d1261bbd961f3c5d5909150e12d0bd96" @@ -995,6 +1663,93 @@ core-js-compat "^3.31.0" semver "^6.3.1" +"@babel/preset-env@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.7.tgz#ff067b4e30ba4a72f225f12f123173e77b987f37" + integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ== + dependencies: + "@babel/compat-data" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.7" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.24.7" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.24.7" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.24.7" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.7" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.24.7" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.24.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-modules-systemjs" "^7.24.7" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.7" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" @@ -1032,6 +1787,15 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" +"@babel/template@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" + integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/traverse@^7.23.7", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" @@ -1048,6 +1812,22 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" + integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.7.2": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" @@ -1057,6 +1837,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" + integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== + dependencies: + "@babel/helper-string-parser" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1283,7 +2072,7 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== @@ -1295,6 +2084,11 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== +"@eslint-community/regexpp@^4.6.0": + version "4.10.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" + integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -1633,6 +2427,15 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -1643,6 +2446,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + "@jridgewell/source-map@^0.3.3": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" @@ -1664,6 +2472,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@lint-todo/utils@^13.0.3": version "13.1.1" resolved "https://registry.yarnpkg.com/@lint-todo/utils/-/utils-13.1.1.tgz#5c054d61ee037b9e552add118264771122cc1166" @@ -1677,6 +2493,13 @@ tslib "^2.4.1" upath "^2.0.1" +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -3464,6 +4287,15 @@ babel-plugin-module-resolver@^4.1.0: reselect "^4.0.0" resolve "^1.13.1" +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.2" + semver "^6.3.1" + babel-plugin-polyfill-corejs2@^0.4.7: version "0.4.7" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz#679d1b94bf3360f7682e11f2cb2708828a24fe8c" @@ -3473,6 +4305,14 @@ babel-plugin-polyfill-corejs2@^0.4.7: "@babel/helper-define-polyfill-provider" "^0.4.4" semver "^6.3.1" +babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" + babel-plugin-polyfill-corejs3@^0.8.7: version "0.8.7" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz#941855aa7fdaac06ed24c730a93450d2b2b76d04" @@ -3488,6 +4328,13 @@ babel-plugin-polyfill-regenerator@^0.5.4: dependencies: "@babel/helper-define-polyfill-provider" "^0.4.4" +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + babel-plugin-syntax-dynamic-import@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" @@ -4147,6 +4994,16 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.13" +browserslist@^4.23.0: + version "4.23.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.1.tgz#ce4af0534b3d37db5c1a4ca98b9080f985041e96" + integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== + dependencies: + caniuse-lite "^1.0.30001629" + electron-to-chromium "^1.4.796" + node-releases "^2.0.14" + update-browserslist-db "^1.0.16" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -4322,6 +5179,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001565: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz#893be772cf8ee6056d6c1e2d07df365b9ec0a5c4" integrity sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg== +caniuse-lite@^1.0.30001629: + version "1.0.30001636" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz#b15f52d2bdb95fad32c2f53c0b68032b85188a78" + integrity sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -4859,6 +5721,13 @@ core-js-compat@^3.31.0, core-js-compat@^3.33.1: dependencies: browserslist "^4.22.2" +core-js-compat@^3.36.1: + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" + integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== + dependencies: + browserslist "^4.23.0" + core-js@^2.6.5: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" @@ -5306,6 +6175,11 @@ electron-to-chromium@^1.4.601: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.630.tgz#1d9f4169653784997bec98975e11a2c05214ce39" integrity sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg== +electron-to-chromium@^1.4.796: + version "1.4.808" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.808.tgz#85b2f93a5e32c2949a1a4d39375851945c936835" + integrity sha512-0ItWyhPYnww2VOuCGF4s1LTfbrdAV2ajy/TN+ZTuhR23AHI6rWHCrBXJ/uxoXOvRRqw8qjYVrG81HFI7x/2wdQ== + ember-auto-import@^2.4.0, ember-auto-import@^2.4.1, ember-auto-import@^2.6.0: version "2.7.2" resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-2.7.2.tgz#5e74b6a8839fab25e23af6cff6f74b1b424d8f25" @@ -5962,6 +6836,14 @@ enhanced-resolve@^5.15.0: graceful-fs "^4.2.4" tapable "^2.2.0" +enhanced-resolve@^5.17.0: + version "5.17.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" + integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.5: version "2.4.1" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" @@ -6269,6 +7151,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + escape-goat@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" @@ -6311,11 +7198,23 @@ escodegen@^1.14.3: optionalDependencies: source-map "~0.6.1" +eslint-compat-utils@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#7fc92b776d185a70c4070d03fd26fde3d59652e4" + integrity sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q== + dependencies: + semver "^7.5.4" + eslint-config-prettier@^8.5.0: version "8.10.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== + eslint-plugin-ember@^10.6.1: version "10.6.1" resolved "https://registry.yarnpkg.com/eslint-plugin-ember/-/eslint-plugin-ember-10.6.1.tgz#04ea84cc82307f64a2faa4f2855b30e5ebf9f722" @@ -6330,6 +7229,15 @@ eslint-plugin-ember@^10.6.1: requireindex "^1.2.0" snake-case "^3.0.3" +eslint-plugin-es-x@^7.5.0: + version "7.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.7.0.tgz#26a2e96ac9d5b510dec4635c7e30ec5b7b142a3f" + integrity sha512-aP3qj8BwiEDPttxQkZdI221DLKq9sI/qHolE2YSQL1/9+xk7dTV+tB1Fz8/IaCA+lnLA1bDEnvaS2LKs0k2Uig== + dependencies: + "@eslint-community/eslint-utils" "^4.1.2" + "@eslint-community/regexpp" "^4.6.0" + eslint-compat-utils "^0.5.1" + eslint-plugin-es@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" @@ -6338,6 +7246,20 @@ eslint-plugin-es@^3.0.0: eslint-utils "^2.0.0" regexpp "^3.0.0" +eslint-plugin-n@^17.9.0: + version "17.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.9.0.tgz#91b43d4e10a35e455bfac2c64671f9cecc396590" + integrity sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + enhanced-resolve "^5.17.0" + eslint-plugin-es-x "^7.5.0" + get-tsconfig "^4.7.0" + globals "^15.0.0" + ignore "^5.2.4" + minimatch "^9.0.0" + semver "^7.5.3" + eslint-plugin-node@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" @@ -6408,7 +7330,7 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== @@ -7448,6 +8370,13 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-tsconfig@^4.7.0: + version "4.7.5" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.5.tgz#5e012498579e9a6947511ed0cd403272c7acbbaf" + integrity sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw== + dependencies: + resolve-pkg-maps "^1.0.0" + get-uri@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.2.tgz#e019521646f4a8ff6d291fbaea2c46da204bb75b" @@ -7597,6 +8526,11 @@ globals@^13.19.0, globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" +globals@^15.0.0: + version "15.6.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.6.0.tgz#3872d3ab4427e1df4718efd3f7d2c721c503f65f" + integrity sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg== + globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -9845,6 +10779,13 @@ minimatch@^5.0.1, minimatch@^5.1.0: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.0: + version "9.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + dependencies: + brace-expansion "^2.0.1" + minimatch@^9.0.1: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" @@ -10889,6 +11830,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -11059,6 +12005,11 @@ prettier@^2.1.1, prettier@^2.5.1, prettier@^2.6.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +prettier@^3.1.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" + integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== + pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -11625,6 +12576,11 @@ resolve-path@^1.4.0: http-errors "~1.6.2" path-is-absolute "1.0.1" +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -11965,6 +12921,11 @@ semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semve dependencies: lru-cache "^6.0.0" +semver@^7.5.3: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -13371,6 +14332,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" + integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + update-notifier@6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" From 06b3a1628b28e72c9bcf156a41b711218d9f0ada Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:58:02 -0400 Subject: [PATCH 04/10] Fix the hard errors from eslint --- packages/core/src/cli/run-volar-tsc.ts | 4 ++-- packages/core/src/transform/template/transformed-module.ts | 6 +++--- packages/core/src/volar/gts-virtual-code.ts | 2 +- packages/core/src/volar/handlebars-virtual-code.ts | 2 +- packages/core/src/volar/language-server.ts | 2 +- packages/core/src/volar/script-snapshot.ts | 6 +++--- packages/vscode/src/extension.ts | 7 ++++--- test-packages/test-utils/src/project.ts | 4 ++-- 8 files changed, 17 insertions(+), 16 deletions(-) diff --git a/packages/core/src/cli/run-volar-tsc.ts b/packages/core/src/cli/run-volar-tsc.ts index 79a1864f8..0c6345022 100644 --- a/packages/core/src/cli/run-volar-tsc.ts +++ b/packages/core/src/cli/run-volar-tsc.ts @@ -5,11 +5,11 @@ import { findConfig } from '../config/index.js'; import { createRequire } from 'node:module'; const require = createRequire(import.meta.url); -export function run() { +export function run(): void { let runExtensions = ['.js', '.ts', '.gjs', '.gts', '.hbs']; let cwd = process.cwd(); - const main = () => + const main = (): void => runTsc(require.resolve('typescript/lib/tsc'), runExtensions, (ts, options) => { const glintConfig = findConfig(cwd); diff --git a/packages/core/src/transform/template/transformed-module.ts b/packages/core/src/transform/template/transformed-module.ts index a25e71048..19a25d6bf 100644 --- a/packages/core/src/transform/template/transformed-module.ts +++ b/packages/core/src/transform/template/transformed-module.ts @@ -60,7 +60,7 @@ export default class TransformedModule { public readonly errors: ReadonlyArray, public readonly directives: ReadonlyArray, private readonly correlatedSpans: Array - ) {} + ) { } public toDebugString(): string { let mappingStrings = this.correlatedSpans.map((span) => @@ -165,7 +165,7 @@ export default class TransformedModule { assert( correlatedSpan.mapping?.sourceNode.type === 'TemplateEmbedding' && - templateMapping?.sourceNode.type === 'Template', + templateMapping?.sourceNode.type === 'Template', 'Internal error: unexpected mapping structure.' + ` (${templateMapping?.sourceNode.type})` ); @@ -239,7 +239,7 @@ export default class TransformedModule { const generatedOffsets: number[] = []; const lengths: number[] = []; - let recurse = (span: CorrelatedSpan, mapping: MappingTree) => { + let recurse = (span: CorrelatedSpan, mapping: MappingTree): void => { const children = mapping.children; let { originalRange, transformedRange } = mapping; let hbsStart = span.originalStart + originalRange.start; diff --git a/packages/core/src/volar/gts-virtual-code.ts b/packages/core/src/volar/gts-virtual-code.ts index 5b8801d17..1ca628f58 100644 --- a/packages/core/src/volar/gts-virtual-code.ts +++ b/packages/core/src/volar/gts-virtual-code.ts @@ -38,7 +38,7 @@ export class VirtualGtsCode implements VirtualCode { // This gets called by the constructor and whenever the language server receives a file change event, // i.e. the user saved the file. - update(snapshot: IScriptSnapshot) { + update(snapshot: IScriptSnapshot): void { this.snapshot = snapshot; const length = snapshot.getLength(); diff --git a/packages/core/src/volar/handlebars-virtual-code.ts b/packages/core/src/volar/handlebars-virtual-code.ts index d3f916a75..4f08a0b1e 100644 --- a/packages/core/src/volar/handlebars-virtual-code.ts +++ b/packages/core/src/volar/handlebars-virtual-code.ts @@ -38,7 +38,7 @@ export class VirtualHandlebarsCode implements VirtualCode { // This gets called by the constructor and whenever the language server receives a file change event, // i.e. the user saved the file. - update(snapshot: IScriptSnapshot) { + update(snapshot: IScriptSnapshot): void { this.snapshot = snapshot; const length = snapshot.getLength(); diff --git a/packages/core/src/volar/language-server.ts b/packages/core/src/volar/language-server.ts index f1506503b..a13e32ce9 100644 --- a/packages/core/src/volar/language-server.ts +++ b/packages/core/src/volar/language-server.ts @@ -107,7 +107,7 @@ function filterAndAugmentDiagnostics( context: LanguageServiceContext, document: TextDocument, diagnostics: vscode.Diagnostic[] | null | undefined -) { +): vscode.Diagnostic[] | null { if (!diagnostics) { // This can fail if .gts file fails to parse. Maybe other use cases too? return null; diff --git a/packages/core/src/volar/script-snapshot.ts b/packages/core/src/volar/script-snapshot.ts index 8722944f7..d9512eaed 100644 --- a/packages/core/src/volar/script-snapshot.ts +++ b/packages/core/src/volar/script-snapshot.ts @@ -10,18 +10,18 @@ import { IScriptSnapshot, TextChangeRange } from "typescript"; * @implements {IScriptSnapshot} */ export class ScriptSnapshot implements IScriptSnapshot { - constructor(public text: string) {} + constructor(public text: string) { } // Not Implemented getChangeRange(_oldSnapshot: IScriptSnapshot): TextChangeRange | undefined { return undefined; } - getLength() { + getLength(): number { return this.text.length; } - getText(start: number, end: number) { + getText(start: number, end: number): string { return this.text.slice(start, end); } } diff --git a/packages/vscode/src/extension.ts b/packages/vscode/src/extension.ts index b92c10aa6..96d31dc3f 100644 --- a/packages/vscode/src/extension.ts +++ b/packages/vscode/src/extension.ts @@ -15,6 +15,7 @@ import { } from 'vscode'; import * as languageServerProtocol from '@volar/language-server/protocol.js'; import { + LabsInfo, activateAutoInsertion, activateDocumentDropEdit, activateTsVersionStatusItem, @@ -33,7 +34,7 @@ const clients = new Map(); const extensions = ['.js', '.ts', '.gjs', '.gts', '.hbs']; const filePattern = `**/*{${extensions.join(',')}}`; -export function activate(context: ExtensionContext) { +export function activate(context: ExtensionContext): LabsInfo { // TODO: Volar: i think this happens as part of dynamic registerCapability, i.e. // I think maybe we can remove this from `activate` and wait for it to happen // when the server sends the registerCapability questions for all dynamicRegistration=true capabilities. @@ -196,8 +197,8 @@ function findLanguageServer(workspaceDir: string): string | null { // project, though, we leave a message in our channel explaining why we didn't launch. outputChannel.appendLine( `Unable to resolve @glint/core from ${resolutionDir} — not launching Glint for this directory.\n` + - `If Glint is installed in a child directory, you may wish to set the 'glint.libraryPath' option ` + - `in your workspace settings for the Glint VS Code extension.` + `If Glint is installed in a child directory, you may wish to set the 'glint.libraryPath' option ` + + `in your workspace settings for the Glint VS Code extension.` ); return null; diff --git a/test-packages/test-utils/src/project.ts b/test-packages/test-utils/src/project.ts index b6ab3a529..51e8654a5 100644 --- a/test-packages/test-utils/src/project.ts +++ b/test-packages/test-utils/src/project.ts @@ -56,7 +56,7 @@ export class Project { return pathUtils.filePathToUri(this.filePath(fileName)); } - public async startLanguageServer() { + public async startLanguageServer(): Promise { if (this.languageServerHandle) { throw new Error('Language server is already running'); } @@ -146,7 +146,7 @@ export class Project { * @param diagnosticItems * @returns array of diagnostic */ - normalizeForSnapshotting(uri: string, object: unknown) { + normalizeForSnapshotting(uri: string, object: unknown): unknown { let stringified = JSON.stringify(object); const volarEmbeddedContentUri = URI.from({ From 96c42c69cae650a51a67ddd3dfd5550b44f54777 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 21 Jun 2024 13:58:17 -0400 Subject: [PATCH 05/10] Allow warnings for now --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 551469e63..cd456c371 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "lint": "yarn lint:scripts && yarn lint:formatting", "lint:fix": "yarn lint:scripts --fix && yarn prettier --write .", - "lint:scripts": "yarn eslint --max-warnings 0 --cache .", + "lint:scripts": "yarn eslint .", "lint:formatting": "yarn prettier --check .", "test": "yarn workspaces run test", "test:typecheck": "yarn workspaces run test:typecheck", From 313f2e1129df0ef4e53fe9f66132f3ca43873c03 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:07:39 -0400 Subject: [PATCH 06/10] Update prettier to v3 --- package.json | 2 +- test-packages/ts-ember-app/package.json | 2 +- test-packages/unstable-release/package.json | 2 +- yarn.lock | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index cd456c371..28f6afe44 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@typescript-eslint/eslint-plugin": "^5.42.1", "@typescript-eslint/parser": "^5.42.1", "eslint": "^8.27.0", - "prettier": "^2.1.1", + "prettier": "^3.3.2", "release-it": "^15.5.0", "typescript": "~5.3.0" }, diff --git a/test-packages/ts-ember-app/package.json b/test-packages/ts-ember-app/package.json index 2bc272c5c..db29197fe 100644 --- a/test-packages/ts-ember-app/package.json +++ b/test-packages/ts-ember-app/package.json @@ -56,7 +56,7 @@ "eslint-plugin-qunit": "^7.2.0", "loader.js": "^4.7.0", "npm-run-all": "^4.1.5", - "prettier": "^2.6.2", + "prettier": "^3.3.2", "qunit": "^2.19.1", "qunit-dom": "^2.0.0", "webpack": "^5.72.1" diff --git a/test-packages/unstable-release/package.json b/test-packages/unstable-release/package.json index 86737c8fb..3bc043913 100644 --- a/test-packages/unstable-release/package.json +++ b/test-packages/unstable-release/package.json @@ -19,7 +19,7 @@ "eslint-config-prettier": "^9.1.0", "eslint-plugin-n": "^17.9.0", "eslint-plugin-prettier": "^5.1.3", - "prettier": "^3.1.1" + "prettier": "^3.3.2" }, "volta": { "extends": "../../package.json" diff --git a/yarn.lock b/yarn.lock index 78c469b54..f8b705907 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12000,12 +12000,12 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.1.1, prettier@^2.5.1, prettier@^2.6.2: +prettier@^2.5.1: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -prettier@^3.1.1: +prettier@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== From d8eb1ad62697e1423f3b57a9186495311c47ed4f Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:36:33 -0400 Subject: [PATCH 07/10] lint:fix --- .../core/__tests__/cli/build-watch.test.ts | 18 ++-- packages/core/__tests__/cli/build.test.ts | 46 +++++----- packages/core/__tests__/cli/check.test.ts | 2 +- .../__tests__/cli/custom-extensions.test.ts | 10 +-- packages/core/__tests__/cli/watch.test.ts | 4 +- .../core/__tests__/config/environment.test.ts | 22 ++--- .../core/__tests__/config/load-config.test.ts | 6 +- packages/core/__tests__/config/loader.test.ts | 24 +++--- .../language-server/completions.test.ts | 6 +- .../language-server/custom-extensions.test.ts | 16 ++-- .../language-server/diagnostics.test.ts | 16 ++-- .../language-server/references.test.ts | 12 +-- .../__tests__/language-server/rename.test.ts | 18 ++-- .../transform/offset-mapping.test.ts | 32 +++---- .../transform/template-to-typescript.test.ts | 62 ++++++------- packages/core/src/cli/index.ts | 8 +- packages/core/src/cli/perform-check.ts | 8 +- .../src/cli/utils/sys-for-compiler-host.ts | 2 +- .../src/cli/utils/transform-manager-pool.ts | 16 ++-- packages/core/src/common/document-cache.ts | 7 +- packages/core/src/common/transform-manager.ts | 28 +++--- packages/core/src/config/config.ts | 2 +- packages/core/src/config/environment.ts | 33 +++---- packages/core/src/config/loader.ts | 6 +- packages/core/src/config/types.cts | 4 +- packages/core/src/index.ts | 12 +-- packages/core/src/language-server/index.ts | 1 - .../core/src/language-server/messages.cts | 4 +- .../src/language-server/util/previewer.ts | 4 +- .../src/transform/diagnostics/augmentation.ts | 30 +++---- .../template/inlining/companion-file.ts | 16 ++-- .../template/inlining/tagged-strings.ts | 8 +- .../template/map-template-contents.ts | 6 +- .../src/transform/template/mapping-tree.ts | 10 +-- .../src/transform/template/rewrite-module.ts | 12 +-- .../template/template-to-typescript.ts | 86 +++++++++---------- .../transform/template/transformed-module.ts | 26 +++--- packages/core/src/transform/util.ts | 2 +- .../core/src/volar/gts-language-plugin.ts | 6 +- packages/core/src/volar/gts-virtual-code.ts | 4 +- .../core/src/volar/handlebars-virtual-code.ts | 7 +- packages/core/src/volar/language-server.ts | 73 ++++++++-------- packages/core/src/volar/script-snapshot.ts | 4 +- .../-private/dsl/index.d.ts | 24 +++--- .../-private/environment/index.ts | 6 +- .../-private/intrinsics/action.d.ts | 14 +-- .../-private/intrinsics/fn.d.ts | 16 ++-- .../-private/intrinsics/get.d.ts | 14 +-- .../type-tests/ember-component.test.ts | 14 +-- .../type-tests/glimmer-component.test.ts | 10 +-- .../__tests__/type-tests/helper.test.ts | 24 +++--- .../type-tests/intrinsics/component.test.ts | 16 ++-- .../type-tests/intrinsics/each.test.ts | 4 +- .../type-tests/intrinsics/get.test.ts | 2 +- .../type-tests/intrinsics/helper.test.ts | 18 ++-- .../type-tests/intrinsics/link-to.test.ts | 12 +-- .../type-tests/intrinsics/modifier.test.ts | 8 +- .../__tests__/type-tests/modifier.test.ts | 25 +++--- .../type-tests/template-only.test.ts | 8 +- .../-private/dsl/index.d.ts | 8 +- .../-private/environment/index.ts | 2 +- .../-private/environment/preprocess.ts | 2 +- .../-private/environment/transform.ts | 12 +-- .../__tests__/transformation.test.ts | 4 +- .../scripts/__tests__/auto-nocheck.test.ts | 22 ++--- packages/scripts/src/lib/_auto-nocheck.ts | 12 +-- packages/scripts/src/lib/_migrate-glintrc.ts | 34 ++++---- packages/template/-private/dsl/emit.d.ts | 12 +-- packages/template/-private/dsl/resolve.d.ts | 6 +- packages/template/-private/dsl/types.d.ts | 4 +- packages/template/-private/index.d.ts | 41 +++++---- packages/template/-private/integration.d.ts | 13 ++- .../-private/keywords/-bind-invokable.d.ts | 28 +++--- packages/template/-private/keywords/let.d.ts | 4 +- packages/template/-private/signature.d.ts | 8 +- .../template/__tests__/attributes.test.ts | 26 +++--- .../template/__tests__/component-like.test.ts | 14 +-- .../__tests__/custom-invokable.test.ts | 2 +- .../template/__tests__/emit-component.test.ts | 4 +- .../template/__tests__/helper-like.test.ts | 6 +- .../__tests__/keywords/component.test.ts | 46 +++++----- .../__tests__/keywords/in-element.test.ts | 2 +- .../template/__tests__/keywords/with.test.ts | 2 +- .../template/__tests__/modifier-like.test.ts | 16 ++-- .../template/__tests__/resolution.test.ts | 2 +- packages/type-test/__tests__/classic.test.ts | 2 +- packages/type-test/src/index.ts | 4 +- .../vscode/__tests__/smoketest-ember.test.ts | 16 ++-- .../smoketest-template-imports.test.ts | 8 +- packages/vscode/src/extension.ts | 18 ++-- packages/vscode/syntaxes/inline.hbs.json | 7 +- packages/vscode/syntaxes/inline.template.json | 7 +- .../syntaxes/markdown.glimmer.codeblock.json | 2 +- packages/vscode/syntaxes/source.gjs.json | 2 +- packages/vscode/syntaxes/source.gts.json | 2 +- packages/vscode/syntaxes/src/index.mjs | 4 +- packages/vscode/syntaxes/src/inline.hbs.mjs | 3 +- .../vscode/syntaxes/src/inline.template.mjs | 3 +- .../src/text.html.ember-handlebars.mjs | 16 ++-- .../syntaxes/text.html.ember-handlebars.json | 6 +- .../test-utils/src/composite-project.ts | 10 +-- test-packages/test-utils/src/project.ts | 18 ++-- .../app/components/wrapper-component.ts | 2 +- test-packages/ts-ember-app/app/index.html | 2 +- test-packages/ts-ember-app/tests/index.html | 2 +- .../app/components/wrapper-component.ts | 2 +- .../ts-template-imports-app/src/normal.ts | 2 +- .../ts-template-imports-app/src/other.ts | 4 +- tsconfig.compileroptions.json | 4 +- 109 files changed, 710 insertions(+), 702 deletions(-) diff --git a/packages/core/__tests__/cli/build-watch.test.ts b/packages/core/__tests__/cli/build-watch.test.ts index f2c3d7c15..5d0f55d35 100644 --- a/packages/core/__tests__/cli/build-watch.test.ts +++ b/packages/core/__tests__/cli/build-watch.test.ts @@ -115,7 +115,7 @@ describe.skip('CLI: watched build mode typechecking', () => { let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`~~~${os.EOL}`) + 3 + stripped.lastIndexOf(`~~~${os.EOL}`) + 3, ); expect(output).toMatch('Found 1 error.'); @@ -154,7 +154,7 @@ describe.skip('CLI: watched build mode typechecking', () => { let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`~~~${os.EOL}`) + 3 + stripped.lastIndexOf(`~~~${os.EOL}`) + 3, ); expect(output).toMatch('Found 1 error.'); @@ -349,14 +349,14 @@ describe.skip('CLI: watched build mode typechecking', () => { projects.main.write( INPUT_SFC, - mainCode.replace('{{this.startupTime}}', '{{this.startupTime}') + mainCode.replace('{{this.startupTime}}', '{{this.startupTime}'), ); output = await watch.awaitOutput('Parse error'); let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`~~~${os.EOL}`) + 3 + stripped.lastIndexOf(`~~~${os.EOL}`) + 3, ); expect(error).toMatchInlineSnapshot(` "index.gts:14:32 - error TS0: Parse error on line 3: @@ -392,7 +392,7 @@ describe.skip('CLI: watched build mode typechecking', () => { let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`;${os.EOL}`) + 1 + stripped.lastIndexOf(`;${os.EOL}`) + 1, ); expect(error).toMatchInlineSnapshot(` "index.gts:3:28 - error TS0: Unclosed element \`C\`: @@ -430,7 +430,7 @@ describe.skip('CLI: watched build mode typechecking', () => { let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`~~~${os.EOL}`) + 3 + stripped.lastIndexOf(`~~~${os.EOL}`) + 3, ); expect(error).toMatchInlineSnapshot(` "index.gts:3:31 - error TS0: Parse error on line 1: @@ -468,7 +468,7 @@ describe.skip('CLI: watched build mode typechecking', () => { let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`~~~${os.EOL}`) + 3 + stripped.lastIndexOf(`~~~${os.EOL}`) + 3, ); expect(error).toMatchInlineSnapshot(` "index.gts:15:5 - error TS2554: Expected 0 arguments, but got 1. @@ -501,7 +501,7 @@ describe.skip('CLI: watched build mode typechecking', () => { let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`~~~${os.EOL}`) + 3 + stripped.lastIndexOf(`~~~${os.EOL}`) + 3, ); expect(error).toMatchInlineSnapshot(` "index.gts:3:28 - error TS2554: Expected 0 arguments, but got 1. @@ -534,7 +534,7 @@ describe.skip('CLI: watched build mode typechecking', () => { let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`~~~${os.EOL}`) + 3 + stripped.lastIndexOf(`~~~${os.EOL}`) + 3, ); expect(error).toMatchInlineSnapshot(` "index.gts:3:27 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'. diff --git a/packages/core/__tests__/cli/build.test.ts b/packages/core/__tests__/cli/build.test.ts index ed4288201..bd9257c19 100644 --- a/packages/core/__tests__/cli/build.test.ts +++ b/packages/core/__tests__/cli/build.test.ts @@ -1307,7 +1307,7 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await project.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${project.filePath('tsconfig.json')}'` + `A non-dry build would build project '${project.filePath('tsconfig.json')}'`, ); expect(buildResult.stderr).toEqual(''); }); @@ -1321,7 +1321,7 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await project.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${project.filePath('tsconfig.json')}' is up to date` + `Project '${project.filePath('tsconfig.json')}' is up to date`, ); expect(buildResult.stderr).toEqual(''); }); @@ -1350,7 +1350,7 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await project.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${project.filePath('tsconfig.json')}'` + `A non-dry build would build project '${project.filePath('tsconfig.json')}'`, ); expect(buildResult.stderr).toEqual(''); }); @@ -1391,7 +1391,7 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await project.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${project.filePath('tsconfig.json')}'` + `A non-dry build would build project '${project.filePath('tsconfig.json')}'`, ); expect(buildResult.stderr).toEqual(''); }); @@ -1405,7 +1405,7 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await project.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${project.filePath('tsconfig.json')}' is up to date` + `Project '${project.filePath('tsconfig.json')}' is up to date`, ); expect(buildResult.stderr).toEqual(''); }); @@ -1429,7 +1429,7 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await project.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${project.filePath('tsconfig.json')}'` + `A non-dry build would build project '${project.filePath('tsconfig.json')}'`, ); expect(buildResult.stderr).toEqual(''); }); @@ -1445,7 +1445,7 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await project.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${project.filePath('tsconfig.json')}'` + `A non-dry build would build project '${project.filePath('tsconfig.json')}'`, ); expect(buildResult.stderr).toEqual(''); }, 2_000_000); @@ -1502,16 +1502,16 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await projects.root.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${projects.main.filePath('tsconfig.json')}'` + `A non-dry build would build project '${projects.main.filePath('tsconfig.json')}'`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${projects.children.a.filePath('tsconfig.json')}'` + `A non-dry build would build project '${projects.children.a.filePath('tsconfig.json')}'`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${projects.children.b.filePath('tsconfig.json')}'` + `A non-dry build would build project '${projects.children.b.filePath('tsconfig.json')}'`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${projects.children.c.filePath('tsconfig.json')}'` + `A non-dry build would build project '${projects.children.c.filePath('tsconfig.json')}'`, ); expect(buildResult.stderr).toEqual(''); }); @@ -1525,16 +1525,16 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await projects.root.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${projects.main.filePath('tsconfig.json')}' is up to date` + `Project '${projects.main.filePath('tsconfig.json')}' is up to date`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${projects.children.a.filePath('tsconfig.json')}' is up to date` + `Project '${projects.children.a.filePath('tsconfig.json')}' is up to date`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${projects.children.b.filePath('tsconfig.json')}' is up to date` + `Project '${projects.children.b.filePath('tsconfig.json')}' is up to date`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${projects.children.c.filePath('tsconfig.json')}' is up to date` + `Project '${projects.children.c.filePath('tsconfig.json')}' is up to date`, ); expect(buildResult.stderr).toEqual(''); }); @@ -1564,16 +1564,16 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await projects.root.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${projects.main.filePath('tsconfig.json')}'` + `A non-dry build would build project '${projects.main.filePath('tsconfig.json')}'`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${projects.children.a.filePath('tsconfig.json')}' is up to date` + `Project '${projects.children.a.filePath('tsconfig.json')}' is up to date`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${projects.children.b.filePath('tsconfig.json')}' is up to date` + `Project '${projects.children.b.filePath('tsconfig.json')}' is up to date`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${projects.children.c.filePath('tsconfig.json')}' is up to date` + `Project '${projects.children.c.filePath('tsconfig.json')}' is up to date`, ); expect(buildResult.stderr).toEqual(''); }); @@ -1589,16 +1589,16 @@ describe.skip('CLI: --build --dry', () => { let buildResult = await projects.root.build({ flags: ['--dry'] }); expect(buildResult.exitCode).toBe(0); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${projects.main.filePath('tsconfig.json')}'` + `A non-dry build would build project '${projects.main.filePath('tsconfig.json')}'`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `A non-dry build would build project '${projects.children.a.filePath('tsconfig.json')}'` + `A non-dry build would build project '${projects.children.a.filePath('tsconfig.json')}'`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${projects.children.b.filePath('tsconfig.json')}' is up to date` + `Project '${projects.children.b.filePath('tsconfig.json')}' is up to date`, ); expect(stripAnsi(buildResult.stdout)).toMatch( - `Project '${projects.children.c.filePath('tsconfig.json')}' is up to date` + `Project '${projects.children.c.filePath('tsconfig.json')}' is up to date`, ); expect(buildResult.stderr).toEqual(''); }); diff --git a/packages/core/__tests__/cli/check.test.ts b/packages/core/__tests__/cli/check.test.ts index f3703e877..ece8ac78e 100644 --- a/packages/core/__tests__/cli/check.test.ts +++ b/packages/core/__tests__/cli/check.test.ts @@ -245,7 +245,7 @@ describe('CLI: single-pass typechecking', () => { 'my-component.gts', stripIndent` export let x: string = 123; - ` + `, ); let checkResult = await project.check({ reject: false }); diff --git a/packages/core/__tests__/cli/custom-extensions.test.ts b/packages/core/__tests__/cli/custom-extensions.test.ts index c42026250..885c837f7 100644 --- a/packages/core/__tests__/cli/custom-extensions.test.ts +++ b/packages/core/__tests__/cli/custom-extensions.test.ts @@ -48,7 +48,7 @@ describe.skip('CLI: custom extensions', () => { let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`~~~${os.EOL}`) + 3 + stripped.lastIndexOf(`~~~${os.EOL}`) + 3, ); expect(output).toMatch('Found 1 error.'); @@ -68,7 +68,7 @@ describe.skip('CLI: custom extensions', () => { stripIndent` import { foo } from "./other"; console.log(foo - 1); - ` + `, ); }); @@ -78,7 +78,7 @@ describe.skip('CLI: custom extensions', () => { expect(output).toMatch('Found 1 error.'); expect(output).toMatch( - "Cannot find module './other' or its corresponding type declarations." + "Cannot find module './other' or its corresponding type declarations.", ); project.write('other.gjs', 'export const foo = 123;'); @@ -117,7 +117,7 @@ describe.skip('CLI: custom extensions', () => { expect(output).toMatch('Found 1 error.'); expect(output).toMatch( - "Cannot find module './other' or its corresponding type declarations." + "Cannot find module './other' or its corresponding type declarations.", ); await watch.terminate(); @@ -163,7 +163,7 @@ describe.skip('CLI: custom extensions', () => { expect(result.exitCode).toBe(0); expect(result.stderr).toBe(''); - } + }, ); }); }); diff --git a/packages/core/__tests__/cli/watch.test.ts b/packages/core/__tests__/cli/watch.test.ts index d9924a696..b4dd5f60b 100644 --- a/packages/core/__tests__/cli/watch.test.ts +++ b/packages/core/__tests__/cli/watch.test.ts @@ -70,7 +70,7 @@ describe('CLI: watched typechecking', () => { let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`~~~${os.EOL}`) + 3 + stripped.lastIndexOf(`~~~${os.EOL}`) + 3, ); expect(output).toMatch('Found 1 error.'); @@ -113,7 +113,7 @@ describe('CLI: watched typechecking', () => { let stripped = stripAnsi(output); let error = stripped.slice( stripped.indexOf('index.gts'), - stripped.lastIndexOf(`~~~${os.EOL}`) + 3 + stripped.lastIndexOf(`~~~${os.EOL}`) + 3, ); expect(output).toMatch('Found 1 error.'); diff --git a/packages/core/__tests__/config/environment.test.ts b/packages/core/__tests__/config/environment.test.ts index 5e8bc86ae..fab5f1651 100644 --- a/packages/core/__tests__/config/environment.test.ts +++ b/packages/core/__tests__/config/environment.test.ts @@ -14,7 +14,7 @@ describe('Config: Environments', () => { }); expect( - env.moduleMayHaveEmbeddedTemplates('foo.ts', 'import foo from "my-cool-environment"\n') + env.moduleMayHaveEmbeddedTemplates('foo.ts', 'import foo from "my-cool-environment"\n'), ).toBe(true); }); @@ -28,7 +28,7 @@ describe('Config: Environments', () => { }); expect(env.moduleMayHaveEmbeddedTemplates('foo.ts', 'import foo from "another-env"\n')).toBe( - true + true, ); }); @@ -40,7 +40,7 @@ describe('Config: Environments', () => { }); expect( - env.moduleMayHaveEmbeddedTemplates('foo.ts', 'import { hbs } from "another-env"\n') + env.moduleMayHaveEmbeddedTemplates('foo.ts', 'import { hbs } from "another-env"\n'), ).toBe(false); }); }); @@ -152,7 +152,7 @@ describe('Config: Environments', () => { exports: { './glint-environment-definition': './env.js', }, - }) + }), ); let env = GlintEnvironment.load('test-env', { rootDir: testDir }); @@ -166,7 +166,7 @@ describe('Config: Environments', () => { fs.mkdirSync(envDir, { recursive: true }); fs.writeFileSync( `${envDir}/third-party-env.js`, - 'module.exports = () => ({ tags: { hi: {} } });' + 'module.exports = () => ({ tags: { hi: {} } });', ); fs.writeFileSync( `${envDir}/package.json`, @@ -175,7 +175,7 @@ describe('Config: Environments', () => { exports: { './glint-environment-definition': './third-party-env.js', }, - }) + }), ); let env = GlintEnvironment.load('some-other-environment', { rootDir: testDir }); @@ -189,7 +189,7 @@ describe('Config: Environments', () => { fs.mkdirSync(envDir, { recursive: true }); fs.writeFileSync( `${envDir}/my-internal-env.js`, - 'module.exports = () => ({ tags: { internal: {} } });' + 'module.exports = () => ({ tags: { internal: {} } });', ); let env = GlintEnvironment.load('./lib/my-internal-env.js', { rootDir: testDir }); @@ -210,7 +210,7 @@ describe('Config: Environments', () => { exports: { './glint-environment-definition': './env.js', }, - }) + }), ); return name; @@ -220,7 +220,7 @@ describe('Config: Environments', () => { test('loading compatible environments', () => { let envA = createEnvironment('() => ({ tags: { "foo-bar": { hbs: {} } } })'); let envB = createEnvironment( - '() => ({ tags: { "foo-bar": { tpl: {} }, "baz": { hbs: {} } }, template: { typesModule: "foo" } })' + '() => ({ tags: { "foo-bar": { tpl: {} }, "baz": { hbs: {} } }, template: { typesModule: "foo" } })', ); let env = GlintEnvironment.load([envA, envB], { rootDir: testDir }); @@ -237,7 +237,7 @@ describe('Config: Environments', () => { let envB = createEnvironment('() => ({ template: { typesModule: "bar" } })'); expect(() => GlintEnvironment.load([envA, envB], { rootDir: testDir })).toThrow( - 'Multiple configured Glint environments attempted to define behavior for standalone template files' + 'Multiple configured Glint environments attempted to define behavior for standalone template files', ); }); @@ -246,7 +246,7 @@ describe('Config: Environments', () => { let envB = createEnvironment('() => ({ tags: { foo: { hbs: {} } } })'); expect(() => GlintEnvironment.load([envA, envB], { rootDir: testDir })).toThrow( - "Multiple configured Glint environments attempted to define behavior for the tag `hbs` in module 'foo'" + "Multiple configured Glint environments attempted to define behavior for the tag `hbs` in module 'foo'", ); }); }); diff --git a/packages/core/__tests__/config/load-config.test.ts b/packages/core/__tests__/config/load-config.test.ts index 637592949..ddc2e2d2a 100644 --- a/packages/core/__tests__/config/load-config.test.ts +++ b/packages/core/__tests__/config/load-config.test.ts @@ -12,7 +12,7 @@ describe('Config: loadConfig', () => { fs.mkdirSync(testDir); fs.writeFileSync( `${testDir}/local-env.js`, - `module.exports = () => ({ tags: { test: {} } });\n` + `module.exports = () => ({ tags: { test: {} } });\n`, ); }); @@ -33,7 +33,7 @@ describe('Config: loadConfig', () => { environment: 'kaboom', checkStandaloneTemplates: false, }, - }) + }), ); fs.writeFileSync( `${testDir}/deeply/tsconfig.json`, @@ -42,7 +42,7 @@ describe('Config: loadConfig', () => { glint: { environment: '../local-env', }, - }) + }), ); let config = loadConfig(`${testDir}/deeply/nested/directory`); diff --git a/packages/core/__tests__/config/loader.test.ts b/packages/core/__tests__/config/loader.test.ts index c1c4ea2f6..7a555a0df 100644 --- a/packages/core/__tests__/config/loader.test.ts +++ b/packages/core/__tests__/config/loader.test.ts @@ -12,7 +12,7 @@ describe('Config: loadConfig', () => { fs.mkdirSync(testDir); fs.writeFileSync( `${testDir}/local-env.js`, - `module.exports = () => ({ tags: { test: {} } });\n` + `module.exports = () => ({ tags: { test: {} } });\n`, ); }); @@ -35,12 +35,12 @@ describe('Config: loadConfig', () => { fs.writeFileSync( `${testDir}/tsconfig.json`, - JSON.stringify({ glint: { environment: './local-env.js' } }) + JSON.stringify({ glint: { environment: './local-env.js' } }), ); fs.writeFileSync( `${testDir}/packages/a/tsconfig.json`, - JSON.stringify({ glint: { environment: '../../local-env.js' } }) + JSON.stringify({ glint: { environment: '../../local-env.js' } }), ); let loader = new ConfigLoader(); @@ -56,7 +56,7 @@ describe('Config: loadConfig', () => { `${testDir}/tsconfig.json`, JSON.stringify({ glint: { environment: './local-env.js' }, - }) + }), ); let loader = new ConfigLoader(); @@ -70,12 +70,12 @@ describe('Config: loadConfig', () => { test('fully inherited config', () => { fs.writeFileSync( `${testDir}/tsconfig.base.json`, - JSON.stringify({ glint: { environment: `./local-env` } }) + JSON.stringify({ glint: { environment: `./local-env` } }), ); fs.writeFileSync( `${testDir}/tsconfig.json`, - JSON.stringify({ extends: './tsconfig.base.json' }) + JSON.stringify({ extends: './tsconfig.base.json' }), ); let config = new ConfigLoader().configForFile(`${testDir}/src/foo.glint.ts`); @@ -88,7 +88,7 @@ describe('Config: loadConfig', () => { fs.writeFileSync(`${testDir}/tsconfig.base.json`, JSON.stringify({})); fs.writeFileSync( `${testDir}/tsconfig.json`, - JSON.stringify({ extends: './tsconfig.base.json', glint: { environment: './local-env' } }) + JSON.stringify({ extends: './tsconfig.base.json', glint: { environment: './local-env' } }), ); let config = new ConfigLoader().configForFile(`${testDir}/src/foo.glint.ts`); @@ -100,23 +100,23 @@ describe('Config: loadConfig', () => { test('illegal inheritance', () => { fs.writeFileSync( `${testDir}/tsconfig.base.json`, - JSON.stringify({ glint: { environment: `./local-env`, transform: {} } }) + JSON.stringify({ glint: { environment: `./local-env`, transform: {} } }), ); fs.writeFileSync( `${testDir}/tsconfig.json`, - JSON.stringify({ extends: './tsconfig.base.json' }) + JSON.stringify({ extends: './tsconfig.base.json' }), ); expect(() => new ConfigLoader().configForFile(`${testDir}/foo.ts`)).toThrow( - 'Glint `transform` options may not be specified in extended config.' + 'Glint `transform` options may not be specified in extended config.', ); }); test('merging config', () => { fs.writeFileSync( `${testDir}/tsconfig.base.json`, - JSON.stringify({ glint: { environment: './local-env' } }) + JSON.stringify({ glint: { environment: './local-env' } }), ); fs.writeFileSync( @@ -124,7 +124,7 @@ describe('Config: loadConfig', () => { JSON.stringify({ extends: './tsconfig.base.json', glint: { checkStandaloneTemplates: false }, - }) + }), ); let config = new ConfigLoader().configForFile(`${testDir}/src/foo.glint.ts`); diff --git a/packages/core/__tests__/language-server/completions.test.ts b/packages/core/__tests__/language-server/completions.test.ts index ff34bd525..bc45b39ad 100644 --- a/packages/core/__tests__/language-server/completions.test.ts +++ b/packages/core/__tests__/language-server/completions.test.ts @@ -170,7 +170,7 @@ describe('Language Server: Completions', () => { }); let importCompletion = completions?.items.find( - (k) => k.kind == CompletionItemKind.Variable && k.label == 'foobar' + (k) => k.kind == CompletionItemKind.Variable && k.label == 'foobar', ); let details = await server.sendCompletionResolveRequest(importCompletion!); @@ -213,7 +213,7 @@ describe('Language Server: Completions', () => { const { uri } = await server.openTextDocument(project.filePath('index.ts'), 'typescript'); let completions = await server.sendCompletionRequest(uri, Position.create(2, 11)); let importCompletion = completions?.items.find( - (k) => k.kind == CompletionItemKind.Variable && k.label == 'foobar' + (k) => k.kind == CompletionItemKind.Variable && k.label == 'foobar', ); let details = await server.sendCompletionResolveRequest(importCompletion!); @@ -246,7 +246,7 @@ describe('Language Server: Completions', () => { let server = await project.startLanguageServer(); let completions = await server.sendCompletionRequest( project.fileURI('index.ts'), - Position.create(0, 10) + Position.create(0, 10), ); for (const completion of completions!.items) { diff --git a/packages/core/__tests__/language-server/custom-extensions.test.ts b/packages/core/__tests__/language-server/custom-extensions.test.ts index 2f6894d95..0c81caaa9 100644 --- a/packages/core/__tests__/language-server/custom-extensions.test.ts +++ b/packages/core/__tests__/language-server/custom-extensions.test.ts @@ -94,7 +94,7 @@ describe('Language Server: custom file extensions', () => { await server.replaceTextDocument( project.fileURI('index.gts'), - contents.replace('"hello"', '123') + contents.replace('"hello"', '123'), ); hover = await server.sendHoverRequest(project.fileURI('index.gts'), { @@ -137,7 +137,7 @@ describe('Language Server: custom file extensions', () => { import { identifier } from './index'; identifier; - ` + `, ); let consumerURI = project.fileURI('consumer.ts'); @@ -149,7 +149,9 @@ describe('Language Server: custom file extensions', () => { const { uri } = await server.openTextDocument(tsPath, 'typescript'); let diagnostics = await server.sendDocumentDiagnosticRequest(uri); - expect(definitions).toMatchObject([{ targetUri: "file:///path/to/EPHEMERAL_TEST_PROJECT/index.ts" }]); + expect(definitions).toMatchObject([ + { targetUri: 'file:///path/to/EPHEMERAL_TEST_PROJECT/index.ts' }, + ]); expect(diagnostics.items).toEqual([]); project.remove('index.ts'); @@ -160,7 +162,9 @@ describe('Language Server: custom file extensions', () => { definitions = await server.sendDefinitionRequest(consumerURI, { line: 2, character: 4 }); diagnostics = await server.sendDocumentDiagnosticRequest(uri); - expect(definitions).toMatchObject([{ targetUri: "file:///path/to/EPHEMERAL_TEST_PROJECT/index.gts" }]); + expect(definitions).toMatchObject([ + { targetUri: 'file:///path/to/EPHEMERAL_TEST_PROJECT/index.gts' }, + ]); expect(diagnostics.items).toEqual([]); project.remove('index.gts'); @@ -190,7 +194,7 @@ describe('Language Server: custom file extensions', () => { stripIndent` import { foo } from "./other"; console.log(foo); - ` + `, ); }); @@ -338,7 +342,7 @@ describe('Language Server: custom file extensions', () => { let diagnostics = await server.sendDocumentDiagnosticRequest(uri); expect(diagnostics.items).toEqual([]); - } + }, ); }); }); diff --git a/packages/core/__tests__/language-server/diagnostics.test.ts b/packages/core/__tests__/language-server/diagnostics.test.ts index 8997435ba..fc6d0f89a 100644 --- a/packages/core/__tests__/language-server/diagnostics.test.ts +++ b/packages/core/__tests__/language-server/diagnostics.test.ts @@ -349,7 +349,7 @@ describe('Language Server: Diagnostics', () => { server.openFile(project.fileURI('templates/foo.hbs'), template); server.updateFile( project.fileURI('templates/foo.hbs'), - template.replace('startupTimee', 'startupTime') + template.replace('startupTimee', 'startupTime'), ); expect(server.getDiagnostics(project.fileURI('controllers/foo.ts'))).toEqual([]); @@ -398,11 +398,11 @@ describe('Language Server: Diagnostics', () => { await server.openTextDocument(project.filePath('component-a.gts'), 'glimmer-ts'); await server.replaceTextDocument( project.fileURI('component-a.gts'), - componentA.replace('{{! @glint-expect-error }}', '') + componentA.replace('{{! @glint-expect-error }}', ''), ); expect(await server.sendDocumentDiagnosticRequest(project.fileURI('component-b.gts'))).toEqual( - [] + [], ); expect(await server.sendDocumentDiagnosticRequest(project.fileURI('component-a.gts'))) .toMatchInlineSnapshot(` @@ -437,22 +437,22 @@ describe('Language Server: Diagnostics', () => { await server.replaceTextDocument(project.fileURI('component-a.gts'), componentA); expect(await server.sendDocumentDiagnosticRequest(project.fileURI('component-a.gts'))).toEqual( - [] + [], ); expect(await server.sendDocumentDiagnosticRequest(project.fileURI('component-b.gts'))).toEqual( - [] + [], ); await server.replaceTextDocument( project.fileURI('component-a.gts'), - componentA.replace('{{@version}}', '') + componentA.replace('{{@version}}', ''), ); expect(await server.sendDocumentDiagnosticRequest(project.fileURI('component-b.gts'))).toEqual( - [] + [], ); expect( - await server.sendDocumentDiagnosticRequest(project.fileURI('component-a.gts')) + await server.sendDocumentDiagnosticRequest(project.fileURI('component-a.gts')), ).toMatchInlineSnapshot(`[TODO should display unused glint-expect-error directive]`); }); }); diff --git a/packages/core/__tests__/language-server/references.test.ts b/packages/core/__tests__/language-server/references.test.ts index 1bf3b8384..ec2fb8e18 100644 --- a/packages/core/__tests__/language-server/references.test.ts +++ b/packages/core/__tests__/language-server/references.test.ts @@ -26,7 +26,7 @@ describe('Language Server: References', () => { }, { includeDeclaration: true, - } + }, ); expect(references).toEqual([ @@ -116,7 +116,7 @@ describe('Language Server: References', () => { }, { includeDeclaration: true, - } + }, ); expect(new Set(referencesFromClassDeclaration)).toEqual(expectedReferences); @@ -129,7 +129,7 @@ describe('Language Server: References', () => { }, { includeDeclaration: true, - } + }, ); expect(new Set(referencesFromComponentInvocation)).toEqual(expectedReferences); @@ -196,7 +196,7 @@ describe('Language Server: References', () => { }, { includeDeclaration: true, - } + }, ); expect(new Set(referencesFromDefinition)).toEqual(expectedReferences); @@ -209,7 +209,7 @@ describe('Language Server: References', () => { }, { includeDeclaration: true, - } + }, ); expect(new Set(referencesFromInvocation)).toEqual(expectedReferences); @@ -222,7 +222,7 @@ describe('Language Server: References', () => { }, { includeDeclaration: true, - } + }, ); expect(new Set(referencesFromUsage)).toEqual(expectedReferences); diff --git a/packages/core/__tests__/language-server/rename.test.ts b/packages/core/__tests__/language-server/rename.test.ts index 898429380..8ac558a59 100644 --- a/packages/core/__tests__/language-server/rename.test.ts +++ b/packages/core/__tests__/language-server/rename.test.ts @@ -21,7 +21,7 @@ describe('Language Server: Renaming Symbols', () => { let workspaceEdits = await server.sendRenameRequest( project.fileURI('index.hbs'), { line: 0, character: 11 }, - 'bar' + 'bar', ); expect(workspaceEdits).toEqual({ @@ -153,7 +153,7 @@ describe('Language Server: Renaming Symbols', () => { let renamePassedArg = await server.sendRenameRequest( project.fileURI('index.gts'), { line: 5, character: 17 }, - 'greeting' + 'greeting', ); expect(renamePassedArg).toEqual(expectedWorkspaceEdit); @@ -164,7 +164,7 @@ describe('Language Server: Renaming Symbols', () => { let renameReferencedArg = await server.sendRenameRequest( project.fileURI('greeting.gts'), { line: 7, character: 31 }, - 'greeting' + 'greeting', ); expect(renameReferencedArg).toEqual(expectedWorkspaceEdit); @@ -173,7 +173,7 @@ describe('Language Server: Renaming Symbols', () => { let renameDeclaredArg = await server.sendRenameRequest( project.fileURI('greeting.gts'), { line: 3, character: 2 }, - 'greeting' + 'greeting', ); expect(renameDeclaredArg).toEqual(expectedWorkspaceEdit); @@ -220,7 +220,7 @@ describe('Language Server: Renaming Symbols', () => { let renameDefinition = await server.sendRenameRequest( project.fileURI('index.gts'), { line: 4, character: 38 }, - 'character' + 'character', ); expect(renameDefinition).toEqual(expectedWorkspaceEdit); @@ -229,7 +229,7 @@ describe('Language Server: Renaming Symbols', () => { let renameUsage = await server.sendRenameRequest( project.fileURI('index.gts'), { line: 5, character: 10 }, - 'character' + 'character', ); expect(renameUsage).toEqual(expectedWorkspaceEdit); @@ -299,7 +299,7 @@ describe('Language Server: Renaming Symbols', () => { let renameDefinition = await server.sendRenameRequest( project.fileURI('greeting.gts'), { line: 6, character: 24 }, - 'Salutation' + 'Salutation', ); expect(renameDefinition).toEqual(expectedWorkspaceEdit); @@ -308,7 +308,7 @@ describe('Language Server: Renaming Symbols', () => { let renameUsage = await server.sendRenameRequest( project.fileURI('index.gts'), { line: 5, character: 9 }, - 'Salutation' + 'Salutation', ); // NOTE: this changed since Volar; previously renaming the component class within index.gts @@ -318,7 +318,7 @@ describe('Language Server: Renaming Symbols', () => { expect(renameUsage).toEqual({ changes: { [project.fileURI('index.gts')]: expectedIndexGtsChanges, - } + }, }); }); }); diff --git a/packages/core/__tests__/transform/offset-mapping.test.ts b/packages/core/__tests__/transform/offset-mapping.test.ts index 6e4420ca3..98f853589 100644 --- a/packages/core/__tests__/transform/offset-mapping.test.ts +++ b/packages/core/__tests__/transform/offset-mapping.test.ts @@ -51,8 +51,8 @@ describe.skip('Transform: Source-to-source offset mapping', () => { backing === 'class' ? 'export default class MyComponent {}' : backing === 'opaque' - ? 'export default templateOnly();' - : '', + ? 'export default templateOnly();' + : '', }; let template = { @@ -83,7 +83,7 @@ describe.skip('Transform: Source-to-source offset mapping', () => { function expectTokenMapping( rewrittenTestModule: RewrittenTestModule, originalToken: string, - { transformedToken = originalToken, occurrence = 0 } = {} + { transformedToken = originalToken, occurrence = 0 } = {}, ): void { let originalSource = rewrittenTestModule.source.contents; let transformedContents = rewrittenTestModule.transformedModule.transformedContents; @@ -99,14 +99,14 @@ describe.skip('Transform: Source-to-source offset mapping', () => { { start: transformedOffset, end: transformedOffset + transformedToken.length, - } + }, ); } function expectRangeMapping( rewrittenTestModule: RewrittenTestModule, originalRange: Range, - transformedRange: Range + transformedRange: Range, ): void { let { transformedModule, source } = rewrittenTestModule; expect(transformedModule.getOriginalOffset(transformedRange.start)).toEqual({ @@ -114,13 +114,13 @@ describe.skip('Transform: Source-to-source offset mapping', () => { source, }); expect(transformedModule.getTransformedOffset(source.filename, originalRange.start)).toEqual( - transformedRange.start + transformedRange.start, ); let calculatedTransformedRange = transformedModule.getTransformedRange( source.filename, originalRange.start, - originalRange.end + originalRange.end, ); expect(calculatedTransformedRange.start).toEqual(transformedRange.start); @@ -128,7 +128,7 @@ describe.skip('Transform: Source-to-source offset mapping', () => { let calculatedOriginalRange = transformedModule.getOriginalRange( transformedRange.start, - transformedRange.end + transformedRange.end, ); expect(calculatedOriginalRange.source).toBe(rewrittenTestModule.source); @@ -388,11 +388,11 @@ describe.skip('Transform: Source-to-source offset mapping', () => { transformedModule.transformedContents.indexOf('args.a') + 'args.'.length; expect(transformedModule.getOriginalOffset(passedArgTransformedOffset).offset).toBe( - passedArgSourceOffset + passedArgSourceOffset, ); expect(transformedModule.getTransformedOffset(source.filename, passedArgSourceOffset)).toBe( - passedArgTransformedOffset + passedArgTransformedOffset, ); let argNameSourceOffset = source.contents.indexOf('@a=') + '@'.length; @@ -400,11 +400,11 @@ describe.skip('Transform: Source-to-source offset mapping', () => { transformedModule.transformedContents.indexOf(', a:') + ', '.length; expect(transformedModule.getOriginalOffset(argNameTransformedOffset).offset).toBe( - argNameSourceOffset + argNameSourceOffset, ); expect(transformedModule.getTransformedOffset(source.filename, argNameSourceOffset)).toBe( - argNameTransformedOffset + argNameTransformedOffset, ); }); @@ -416,11 +416,11 @@ describe.skip('Transform: Source-to-source offset mapping', () => { let doubleATransformedOffset = transformedModule.transformedContents.indexOf('aa:'); expect(transformedModule.getOriginalOffset(doubleATransformedOffset).offset).toBe( - doubleASourceOFfset + doubleASourceOFfset, ); expect(transformedModule.getTransformedOffset(source.filename, doubleASourceOFfset)).toBe( - doubleATransformedOffset + doubleATransformedOffset, ); let singleASourceOffset = source.contents.indexOf(' a=') + ' '.length; @@ -428,11 +428,11 @@ describe.skip('Transform: Source-to-source offset mapping', () => { transformedModule.transformedContents.indexOf(' a:') + ' '.length; expect(transformedModule.getOriginalOffset(singleATransformedOFfset).offset).toBe( - singleASourceOffset + singleASourceOffset, ); expect(transformedModule.getTransformedOffset(source.filename, singleASourceOffset)).toBe( - singleATransformedOFfset + singleATransformedOFfset, ); }); }); diff --git a/packages/core/__tests__/transform/template-to-typescript.test.ts b/packages/core/__tests__/transform/template-to-typescript.test.ts index 5c857419c..615aee142 100644 --- a/packages/core/__tests__/transform/template-to-typescript.test.ts +++ b/packages/core/__tests__/transform/template-to-typescript.test.ts @@ -10,7 +10,7 @@ describe('Transform: rewriteTemplate', () => { // the body, to keep snapshots brief and focused. function templateBody( template: string, - options: Omit = {} + options: Omit = {}, ): string { let { result, errors } = templateToTypescript(template, { typesModule: '@glint/template', @@ -40,7 +40,7 @@ describe('Transform: rewriteTemplate', () => { test('given a backing value', () => { expect( templateToTypescript('', { backingValue: 'someValue', typesModule: '@glint/template' }) - .result?.code + .result?.code, ).toMatchInlineSnapshot(` "({} as typeof import("@glint/template")).templateForBackingValue(someValue, function(𝚪, χ: typeof import("@glint/template")) { 𝚪; χ; @@ -285,7 +285,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testIf: 'if' } as const; expect(templateBody(template, { specialForms })).toMatchInlineSnapshot( - `"(𝚪.args.foo) ? ("ok") : (undefined);"` + `"(𝚪.args.foo) ? ("ok") : (undefined);"`, ); }); @@ -294,7 +294,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testIf: 'if' } as const; expect(templateBody(template, { specialForms })).toMatchInlineSnapshot( - `"(𝚪.args.foo) ? ("ok") : ("nope");"` + `"(𝚪.args.foo) ? ("ok") : ("nope");"`, ); }); }); @@ -305,7 +305,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testUnless: 'if-not' } as const; expect(templateBody(template, { specialForms })).toMatchInlineSnapshot( - `"!(𝚪.args.foo) ? ("ok") : (undefined);"` + `"!(𝚪.args.foo) ? ("ok") : (undefined);"`, ); }); @@ -314,7 +314,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testUnless: 'if-not' } as const; expect(templateBody(template, { specialForms })).toMatchInlineSnapshot( - `"!(𝚪.args.foo) ? ("ok") : ("nope");"` + `"!(𝚪.args.foo) ? ("ok") : ("nope");"`, ); }); }); @@ -463,7 +463,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testYield: 'yield' } as const; expect(templateBody(template, { specialForms })).toMatchInlineSnapshot( - `"χ.yieldToBlock(𝚪, "default")(123, 𝚪.this.message);"` + `"χ.yieldToBlock(𝚪, "default")(123, 𝚪.this.message);"`, ); }); @@ -475,7 +475,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testYield: 'yield' } as const; expect(templateBody(template, { specialForms })).toMatchInlineSnapshot( - `"χ.yieldToBlock(𝚪, "body")(123);"` + `"χ.yieldToBlock(𝚪, "body")(123);"`, ); }); @@ -487,7 +487,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testYield: 'yield' } as const; expect(templateBody(template, { specialForms })).toMatchInlineSnapshot( - `"χ.yieldToBlock(𝚪, "else")(123);"` + `"χ.yieldToBlock(𝚪, "else")(123);"`, ); }); @@ -499,7 +499,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testYield: 'yield' } as const; expect(templateBody(template, { specialForms })).toMatchInlineSnapshot( - `"χ.yieldToBlock(𝚪, "else")(123);"` + `"χ.yieldToBlock(𝚪, "else")(123);"`, ); }); }); @@ -513,7 +513,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testArray: 'array-literal' } as const; expect(templateBody(template, { globals: [], specialForms })).toMatchInlineSnapshot( - '"(χ.noop(testArray), []);"' + '"(χ.noop(testArray), []);"', ); }); @@ -525,7 +525,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testArray: 'array-literal' } as const; expect(templateBody(template, { globals: [], specialForms })).toMatchInlineSnapshot( - `"(χ.noop(testArray), [1, true, "free"]);"` + `"(χ.noop(testArray), [1, true, "free"]);"`, ); }); @@ -537,7 +537,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testArray: 'array-literal' } as const; expect(templateBody(template, { globals: [], specialForms })).toMatchInlineSnapshot( - `"χ.emitContent(χ.resolve(log)((χ.noop(testArray), [1, true, "free"])));"` + `"χ.emitContent(χ.resolve(log)((χ.noop(testArray), [1, true, "free"])));"`, ); }); }); @@ -551,7 +551,7 @@ describe('Transform: rewriteTemplate', () => { let specialForms = { testHash: 'object-literal' } as const; expect(templateBody(template, { globals: [], specialForms })).toMatchInlineSnapshot( - '"(χ.noop(testHash), {});"' + '"(χ.noop(testHash), {});"', ); }); @@ -681,7 +681,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{message}}'; expect(templateBody(template)).toMatchInlineSnapshot( - `"χ.emitContent(χ.resolveOrReturn(χ.Globals["message"])());"` + `"χ.emitContent(χ.resolveOrReturn(χ.Globals["message"])());"`, ); }); @@ -689,7 +689,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{message}}'; expect(templateBody(template, { globals: [] })).toMatchInlineSnapshot( - '"χ.emitContent(χ.resolveOrReturn(message)());"' + '"χ.emitContent(χ.resolveOrReturn(message)());"', ); }); @@ -697,7 +697,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{obj.foo.bar}}'; expect(templateBody(template, { globals: [] })).toMatchInlineSnapshot( - '"χ.emitContent(χ.resolveOrReturn(obj?.foo?.bar)());"' + '"χ.emitContent(χ.resolveOrReturn(obj?.foo?.bar)());"', ); }); @@ -705,7 +705,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{obj.foo-bar.baz}}'; expect(templateBody(template, { globals: [] })).toMatchInlineSnapshot( - `"χ.emitContent(χ.resolveOrReturn(obj?.["foo-bar"]?.baz)());"` + `"χ.emitContent(χ.resolveOrReturn(obj?.["foo-bar"]?.baz)());"`, ); }); @@ -713,7 +713,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{this}}'; expect(templateBody(template)).toMatchInlineSnapshot( - '"χ.emitContent(χ.resolveOrReturn(𝚪.this)());"' + '"χ.emitContent(χ.resolveOrReturn(𝚪.this)());"', ); }); @@ -721,7 +721,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{this.foo.bar}}'; expect(templateBody(template)).toMatchInlineSnapshot( - '"χ.emitContent(χ.resolveOrReturn(𝚪.this.foo?.bar)());"' + '"χ.emitContent(χ.resolveOrReturn(𝚪.this.foo?.bar)());"', ); }); @@ -729,7 +729,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{this.foo-bar}}'; expect(templateBody(template)).toMatchInlineSnapshot( - `"χ.emitContent(χ.resolveOrReturn(𝚪.this["foo-bar"])());"` + `"χ.emitContent(χ.resolveOrReturn(𝚪.this["foo-bar"])());"`, ); }); @@ -737,7 +737,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{@foo}}'; expect(templateBody(template)).toMatchInlineSnapshot( - '"χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());"' + '"χ.emitContent(χ.resolveOrReturn(𝚪.args.foo)());"', ); }); @@ -745,7 +745,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{@foo-bar}}'; expect(templateBody(template)).toMatchInlineSnapshot( - `"χ.emitContent(χ.resolveOrReturn(𝚪.args["foo-bar"])());"` + `"χ.emitContent(χ.resolveOrReturn(𝚪.args["foo-bar"])());"`, ); }); @@ -779,7 +779,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{@input}}'; expect(templateBody(template)).toMatchInlineSnapshot( - '"χ.emitContent(χ.resolveOrReturn(𝚪.args.input)());"' + '"χ.emitContent(χ.resolveOrReturn(𝚪.args.input)());"', ); }); @@ -866,7 +866,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{(@foo)}}'; expect(templateBody(template)).toMatchInlineSnapshot( - '"χ.emitContent(χ.resolveOrReturn(χ.resolve(𝚪.args.foo)())());"' + '"χ.emitContent(χ.resolveOrReturn(χ.resolve(𝚪.args.foo)())());"', ); }); }); @@ -903,7 +903,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{doSomething "hello" 123}}'; expect(templateBody(template, { globals: [] })).toMatchInlineSnapshot( - `"χ.emitContent(χ.resolve(doSomething)("hello", 123));"` + `"χ.emitContent(χ.resolve(doSomething)("hello", 123));"`, ); }); @@ -911,7 +911,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{doSomething a=123 b="ok"}}'; expect(templateBody(template, { globals: [] })).toMatchInlineSnapshot( - `"χ.emitContent(χ.resolve(doSomething)({ a: 123, b: "ok" , ...χ.NamedArgsMarker }));"` + `"χ.emitContent(χ.resolve(doSomething)({ a: 123, b: "ok" , ...χ.NamedArgsMarker }));"`, ); }); @@ -919,7 +919,7 @@ describe('Transform: rewriteTemplate', () => { let template = '{{doSomething "one" true 3 four=4}}'; expect(templateBody(template, { globals: [] })).toMatchInlineSnapshot( - `"χ.emitContent(χ.resolve(doSomething)("one", true, 3, { four: 4 , ...χ.NamedArgsMarker }));"` + `"χ.emitContent(χ.resolve(doSomething)("one", true, 3, { four: 4 , ...χ.NamedArgsMarker }));"`, ); }); }); @@ -1531,7 +1531,7 @@ describe('Transform: rewriteTemplate', () => { hello! {{/testIf}} `, - { typesModule: '@glint/template', specialForms: { testIf: 'if' } } + { typesModule: '@glint/template', specialForms: { testIf: 'if' } }, ); expect(errors).toEqual([ @@ -1556,7 +1556,7 @@ describe('Transform: rewriteTemplate', () => { Footer content `, - { typesModule: '@glint/template' } + { typesModule: '@glint/template' }, ); expect(errors).toEqual([ @@ -1580,7 +1580,7 @@ describe('Transform: rewriteTemplate', () => { {{foo-bar}} `, - { typesModule: '@glint/template' } + { typesModule: '@glint/template' }, ); expect(errors).toEqual([ diff --git a/packages/core/src/cli/index.ts b/packages/core/src/cli/index.ts index a4136294e..e40ae300d 100644 --- a/packages/core/src/cli/index.ts +++ b/packages/core/src/cli/index.ts @@ -118,10 +118,10 @@ if (argv.build) { // build // performBuildWatch(ts, projects, buildOptions); - throw new Error("TODO performBuildWatch"); + throw new Error('TODO performBuildWatch'); } else { // performBuild(ts, projects, buildOptions); - throw new Error("TODO performBuild"); + throw new Error('TODO performBuild'); } } else { // why does typechecking require glint config but not performBuild watch? @@ -133,11 +133,11 @@ if (argv.build) { validateTSOrExit(glintConfig.ts); if (argv.watch) { - throw new Error("TODO performWatch"); + throw new Error('TODO performWatch'); // performWatch(glintConfig, optionsToExtend); } else { - throw new Error("TODO performCheck"); + throw new Error('TODO performCheck'); // performCheck(glintConfig, optionsToExtend); } diff --git a/packages/core/src/cli/perform-check.ts b/packages/core/src/cli/perform-check.ts index 23e2b8690..52508204c 100644 --- a/packages/core/src/cli/perform-check.ts +++ b/packages/core/src/cli/perform-check.ts @@ -13,7 +13,7 @@ export function performCheck(glintConfig: GlintConfig, optionsToExtend: TS.Compi let parsedConfig = loadTsconfig(ts, transformManager, glintConfig.configPath, optionsToExtend); let compilerHost = createCompilerHost(ts, parsedConfig.options, transformManager); let formatDiagnostic = buildDiagnosticFormatter(ts); -`` + ``; // let createProgram = parsedConfig.options.incremental // ? ts.createIncrementalProgram // : ts.createProgram; @@ -45,7 +45,7 @@ export function performCheck(glintConfig: GlintConfig, optionsToExtend: TS.Compi function collectDiagnostics( program: TS.Program | TS.EmitAndSemanticDiagnosticsBuilderProgram, transformManager: TransformManager, - options: TS.CompilerOptions + options: TS.CompilerOptions, ): Array { // return [ // ...program.getSyntacticDiagnostics(), @@ -59,7 +59,7 @@ function collectDiagnostics( function createCompilerHost( ts: TypeScript, options: TS.CompilerOptions, - transformManager: TransformManager + transformManager: TransformManager, ): TS.CompilerHost { let host = options.incremental ? ts.createIncrementalCompilerHost(options, sysForCompilerHost(ts, transformManager)) @@ -78,7 +78,7 @@ function loadTsconfig( ts: TypeScript, transformManager: TransformManager, configPath: string | undefined, - optionsToExtend: TS.CompilerOptions + optionsToExtend: TS.CompilerOptions, ): TS.ParsedCommandLine { if (!configPath) { return { diff --git a/packages/core/src/cli/utils/sys-for-compiler-host.ts b/packages/core/src/cli/utils/sys-for-compiler-host.ts index 1ba961262..60cf640a8 100644 --- a/packages/core/src/cli/utils/sys-for-compiler-host.ts +++ b/packages/core/src/cli/utils/sys-for-compiler-host.ts @@ -4,7 +4,7 @@ import TransformManagerPool from './transform-manager-pool.js'; export function sysForCompilerHost( ts: typeof TS, - transformManagerOrPool: TransformManager | TransformManagerPool + transformManagerOrPool: TransformManager | TransformManagerPool, ): TS.System { return { ...ts.sys, diff --git a/packages/core/src/cli/utils/transform-manager-pool.ts b/packages/core/src/cli/utils/transform-manager-pool.ts index bcdb9fe82..bfad849c5 100644 --- a/packages/core/src/cli/utils/transform-manager-pool.ts +++ b/packages/core/src/cli/utils/transform-manager-pool.ts @@ -6,7 +6,7 @@ import { assert } from './assert.js'; /** * NOTE: this class ONLY used for CLI commands like in `perform-build-watch` and `perform-build`. - * + * * A lazy cache/lookup map for the parts of `TS.System` which `TransformManager` * cares about, such that any given file will be resolved against its closest * `GlintConfig`. This provides us three things: @@ -53,7 +53,7 @@ export default class TransformManagerPool { moduleLiterals: readonly TS.StringLiteralLike[], containingFile: string, redirectedReference: TS.ResolvedProjectReference | undefined, - options: TS.CompilerOptions + options: TS.CompilerOptions, ): readonly TS.ResolvedModuleWithFailedLookupLocations[] => { let resolveModuleNameLiterals = this.managerForFile(containingFile)?.resolveModuleNameLiterals; if (resolveModuleNameLiterals) { @@ -61,7 +61,7 @@ export default class TransformManagerPool { moduleLiterals, containingFile, redirectedReference, - options + options, ); } else { return moduleLiterals.map((literal) => @@ -71,8 +71,8 @@ export default class TransformManagerPool { options, this.#rootSys, undefined, - redirectedReference - ) + redirectedReference, + ), ); } }; @@ -82,7 +82,7 @@ export default class TransformManagerPool { extensions: ReadonlyArray, excludes: ReadonlyArray | undefined, includes: ReadonlyArray, - depth?: number | undefined + depth?: number | undefined, ): Array => { let readDirectory = this.managerForDirectory(rootDir)?.readDirectory ?? this.#rootSys.readDirectory; @@ -93,7 +93,7 @@ export default class TransformManagerPool { path: string, originalCallback: TS.DirectoryWatcherCallback, recursive?: boolean, - options?: TS.WatchOptions + options?: TS.WatchOptions, ): TS.FileWatcher => { assert(this.#rootSys.watchDirectory); let watchDirectory = @@ -110,7 +110,7 @@ export default class TransformManagerPool { path: string, originalCallback: TS.FileWatcherCallback, pollingInterval?: number, - options?: TS.WatchOptions + options?: TS.WatchOptions, ): TS.FileWatcher => { assert(this.#rootSys.watchFile); let watchTransformedFile = diff --git a/packages/core/src/common/document-cache.ts b/packages/core/src/common/document-cache.ts index b4aac032a..e101d624c 100644 --- a/packages/core/src/common/document-cache.ts +++ b/packages/core/src/common/document-cache.ts @@ -2,7 +2,6 @@ import * as path from 'node:path'; import { GlintConfig } from '../config/index.js'; import { v4 as uuid } from 'uuid'; - // import { DocumentsAndSourceMaps } from './documents'; // import type { DocumentsAndSourceMaps } from '@volar/language-server/lib/common/documents.js'; @@ -50,7 +49,7 @@ export default class DocumentCache { private readonly documents = new Map(); private readonly ts: typeof import('typescript'); - // documents: DocumentsAndSourceMaps; + // documents: DocumentsAndSourceMaps; public constructor(private glintConfig: GlintConfig) { // where is GlintConfig created? @@ -72,7 +71,7 @@ export default class DocumentCache { } return this.getCandidateDocumentPaths(path).some((candidate) => - this.ts.sys.fileExists(candidate) + this.ts.sys.fileExists(candidate), ); } @@ -108,7 +107,7 @@ export default class DocumentCache { let document = this.getDocument(path); if (document.stale) { let onDiskPath = this.getCandidateDocumentPaths(path).find((path) => - this.ts.sys.fileExists(path) + this.ts.sys.fileExists(path), ); document.stale = false; diff --git a/packages/core/src/common/transform-manager.ts b/packages/core/src/common/transform-manager.ts index 8d85728a5..d7022a723 100644 --- a/packages/core/src/common/transform-manager.ts +++ b/packages/core/src/common/transform-manager.ts @@ -28,12 +28,12 @@ export default class TransformManager { constructor( private glintConfig: GlintConfig, - private documents: DocumentCache = new DocumentCache(glintConfig) + private documents: DocumentCache = new DocumentCache(glintConfig), ) { this.ts = glintConfig.ts; this.moduleResolutionCache = this.ts.createModuleResolutionCache( this.ts.sys.getCurrentDirectory(), - (name) => name + (name) => name, ); this.moduleResolutionHost = { ...this.ts.sys, @@ -60,7 +60,7 @@ export default class TransformManager { public getTransformedRange( originalFileName: string, originalStart: number, - originalEnd: number + originalEnd: number, ): { transformedFileName: string; transformedStart: number; @@ -80,7 +80,7 @@ export default class TransformManager { let transformedRange = transformedModule.getTransformedRange( originalFileName, originalStart, - originalEnd + originalEnd, ); return { @@ -94,7 +94,7 @@ export default class TransformManager { public getOriginalRange( transformedFileName: string, transformedStart: number, - transformedEnd: number + transformedEnd: number, ): { originalFileName: string; originalStart: number; @@ -113,7 +113,7 @@ export default class TransformManager { let original = transformInfo.transformedModule.getOriginalRange( transformedStart, - transformedEnd + transformedEnd, ); return { @@ -126,7 +126,7 @@ export default class TransformManager { public getTransformedOffset( originalFileName: string, - originalOffset: number + originalOffset: number, ): { transformedFileName: string; transformedOffset: number } { let transformInfo = this.findTransformInfoForOriginalFile(originalFileName); if (!transformInfo?.transformedModule) { @@ -136,7 +136,7 @@ export default class TransformManager { let { transformedFileName, transformedModule } = transformInfo; let transformedOffset = transformedModule.getTransformedOffset( originalFileName, - originalOffset + originalOffset, ); return { transformedFileName, transformedOffset }; @@ -146,7 +146,7 @@ export default class TransformManager { moduleLiterals: readonly ts.StringLiteralLike[], containingFile: string, redirectedReference: ts.ResolvedProjectReference | undefined, - options: ts.CompilerOptions + options: ts.CompilerOptions, ): readonly ts.ResolvedModuleWithFailedLookupLocations[] => { return moduleLiterals.map((literal) => { // If import paths are allowed to include TS extensions (`.ts`, `.tsx`, etc), then we want to @@ -163,7 +163,7 @@ export default class TransformManager { options, this.moduleResolutionHost, this.moduleResolutionCache, - redirectedReference + redirectedReference, ); }); }; @@ -174,7 +174,7 @@ export default class TransformManager { path: string, originalCallback: ts.FileWatcherCallback, pollingInterval?: number, - options?: ts.WatchOptions + options?: ts.WatchOptions, ): ts.FileWatcher => { const { watchFile } = this.ts.sys; if (!watchFile) { @@ -204,7 +204,7 @@ export default class TransformManager { ]; let allWatchers = allPaths.map((candidate) => - watchFile(candidate, callback, pollingInterval, options) + watchFile(candidate, callback, pollingInterval, options), ); return { @@ -218,7 +218,7 @@ export default class TransformManager { path: string, originalCallback: ts.DirectoryWatcherCallback, recursive?: boolean, - options?: ts.WatchOptions + options?: ts.WatchOptions, ): ts.FileWatcher => { if (!this.ts.sys.watchDirectory) { throw new Error('Internal error: TS `watchDirectory` unavailable'); @@ -238,7 +238,7 @@ export default class TransformManager { extensions: ReadonlyArray, excludes: ReadonlyArray | undefined, includes: ReadonlyArray, - depth?: number | undefined + depth?: number | undefined, ): Array => { let env = this.glintConfig.environment; let allExtensions = [...new Set([...extensions, ...env.getConfiguredFileExtensions()])]; diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index f46329669..bc98fa028 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -18,7 +18,7 @@ export class GlintConfig { public constructor( ts: typeof import('typescript'), configPath: string, - config: GlintConfigInput + config: GlintConfigInput, ) { Object.defineProperty(this, 'ts', { value: ts }); this.configPath = normalizePath(configPath); diff --git a/packages/core/src/config/environment.ts b/packages/core/src/config/environment.ts index ca93232b3..2ef6c0da1 100644 --- a/packages/core/src/config/environment.ts +++ b/packages/core/src/config/environment.ts @@ -35,10 +35,13 @@ export class GlintEnvironment { public untypedScriptExtensions: ReadonlyArray; public templateExtensions: ReadonlyArray; - public constructor(public readonly names: Array, config: GlintEnvironmentConfig) { + public constructor( + public readonly names: Array, + config: GlintEnvironmentConfig, + ) { this.tagConfig = config.tags ?? {}; // when is this populated? what is config? - this.extensionsConfig = config. extensions ?? {}; + this.extensionsConfig = config.extensions ?? {}; this.standaloneTemplateConfig = config.template; this.tagImportRegexp = this.buildTagImportRegexp(); @@ -58,7 +61,7 @@ export class GlintEnvironment { public static load( specifier: string | Array | Record, - { rootDir = process.cwd() } = {} + { rootDir = process.cwd() } = {}, ): GlintEnvironment { let envs = normalizeEnvironmentSpecifier(specifier); let config = loadMergedEnvironmentConfig(envs, rootDir); @@ -122,7 +125,7 @@ export class GlintEnvironment { */ public getPossibleTemplatePaths(scriptPath: string): Array { return normalizePathCandidates( - this.standaloneTemplateConfig?.getPossibleTemplatePaths(scriptPath) ?? [] + this.standaloneTemplateConfig?.getPossibleTemplatePaths(scriptPath) ?? [], ); } @@ -132,7 +135,7 @@ export class GlintEnvironment { */ public getPossibleScriptPaths(templatePath: string): Array { return normalizePathCandidates( - this.standaloneTemplateConfig?.getPossibleScriptPaths(templatePath) ?? [] + this.standaloneTemplateConfig?.getPossibleScriptPaths(templatePath) ?? [], ); } @@ -146,7 +149,7 @@ export class GlintEnvironment { public moduleMayHaveEmbeddedTemplates(modulePath: string, moduleContents: string): boolean { let config = this.getConfigForExtension(path.extname(modulePath)); return Boolean( - config?.preprocess || config?.transform || this.tagImportRegexp.test(moduleContents) + config?.preprocess || config?.transform || this.tagImportRegexp.test(moduleContents), ); } @@ -167,13 +170,13 @@ export class GlintEnvironment { private extensionsOfType(kind: SourceKind): Array { return Object.keys(this.extensionsConfig).filter( - (key) => this.extensionsConfig[key].kind === kind + (key) => this.extensionsConfig[key].kind === kind, ); } } function normalizeEnvironmentSpecifier( - specifier: string | string[] | Record + specifier: string | string[] | Record, ): Record { if (typeof specifier === 'string') { return { [specifier]: null }; @@ -186,7 +189,7 @@ function normalizeEnvironmentSpecifier( function loadMergedEnvironmentConfig( envs: Record, - rootDir: string + rootDir: string, ): GlintEnvironmentConfig { let tags: GlintTagsConfig = {}; let extensions: GlintExtensionsConfig = { ...DEFAULT_EXTENSIONS }; @@ -198,7 +201,7 @@ function loadMergedEnvironmentConfig( if (typeof envFunction !== 'function') { throw new SilentError( `The specified environment '${envName}', which was loaded from ${envPath}, ` + - `does not appear to be a Glint environment package.` + `does not appear to be a Glint environment package.`, ); } @@ -207,7 +210,7 @@ function loadMergedEnvironmentConfig( if (config.template) { if (template) { throw new SilentError( - 'Multiple configured Glint environments attempted to define behavior for standalone template files.' + 'Multiple configured Glint environments attempted to define behavior for standalone template files.', ); } @@ -224,7 +227,7 @@ function loadMergedEnvironmentConfig( importSpecifier + "` in module '" + importSource + - "'." + "'.", ); } @@ -239,7 +242,7 @@ function loadMergedEnvironmentConfig( throw new SilentError( 'Multiple configured Glint environments attempted to define handling for the ' + extension + - ' file extension.' + ' file extension.', ); } @@ -277,9 +280,9 @@ function locateEnvironment(name: string, basedir: string): string { } function normalizePathCandidates( - candidates: Array + candidates: Array, ): Array { return candidates.map((candidate) => - typeof candidate === 'string' ? { path: candidate, deferTo: [] } : candidate + typeof candidate === 'string' ? { path: candidate, deferTo: [] } : candidate, ); } diff --git a/packages/core/src/config/loader.ts b/packages/core/src/config/loader.ts index 4774e08a6..8f1ad479c 100644 --- a/packages/core/src/config/loader.ts +++ b/packages/core/src/config/loader.ts @@ -71,7 +71,7 @@ function loadConfigInput(ts: TypeScript, entryPath: string): GlintConfigInput | assert( currentPath === entryPath || !currentGlintConfig.transform, - 'Glint `transform` options may not be specified in extended config.' + 'Glint `transform` options may not be specified in extended config.', ); fullGlintConfig = { ...currentGlintConfig, ...fullGlintConfig }; @@ -104,13 +104,13 @@ function validateConfigInput(input: Record): GlintConfigInput | : typeof input['environment'] === 'string' || (typeof input['environment'] === 'object' && input['environment']), 'Glint config must specify an `environment` that is a string, array of strings, or an object ' + - 'mapping environment names to their config.' + 'mapping environment names to their config.', ); assert( input['checkStandaloneTemplates'] === undefined || typeof input['checkStandaloneTemplates'] === 'boolean', - 'If defined, `checkStandaloneTemplates` must be a boolean' + 'If defined, `checkStandaloneTemplates` must be a boolean', ); return input as GlintConfigInput; diff --git a/packages/core/src/config/types.cts b/packages/core/src/config/types.cts index 451c5152c..4cb6a4b49 100644 --- a/packages/core/src/config/types.cts +++ b/packages/core/src/config/types.cts @@ -18,7 +18,7 @@ export type GlintEnvironmentConfig = { export type GlintExtensionPreprocess = ( source: string, - filePath: string + filePath: string, ) => { contents: string; data?: T }; export type GlintEmitMetadata = { @@ -38,7 +38,7 @@ export type GlintExtensionTransform = ( ts: TSLib; context: ts.TransformationContext; setEmitMetadata: (node: ts.TaggedTemplateExpression, meta: GlintEmitMetadata) => void; - } + }, ) => ts.Transformer; export type GlintSpecialForm = diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 60bc9b7bb..06e6e1d0a 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -24,15 +24,15 @@ export const pathUtils = utils; * * See the `auto-glint-nocheck` implementation in `@glint/scripts` for a * sample use of this API. - * + * * So this "analyzes" your project so that we might put nochecks on there... * is this the same as using glint cli for typechecking? - * + * * Consumers: - * - * - * - * + * + * + * + * * * @internal */ diff --git a/packages/core/src/language-server/index.ts b/packages/core/src/language-server/index.ts index 53e768368..300220f66 100644 --- a/packages/core/src/language-server/index.ts +++ b/packages/core/src/language-server/index.ts @@ -6,7 +6,6 @@ // // original code: - // import { TextDocuments, createConnection } from 'vscode-languageserver/node.js'; // import { TextDocument } from 'vscode-languageserver-textdocument'; // import { bindLanguageServerPool } from './binding.js'; diff --git a/packages/core/src/language-server/messages.cts b/packages/core/src/language-server/messages.cts index e18991ad6..64a8cef54 100644 --- a/packages/core/src/language-server/messages.cts +++ b/packages/core/src/language-server/messages.cts @@ -7,7 +7,7 @@ export type Request = { export const GetIRRequest = makeRequestType( 'glint/getIR', - ProtocolRequestType + ProtocolRequestType, ); export interface GetIRParams { @@ -25,7 +25,7 @@ export interface GetIRResult { // See `requestKey` in the Code extension. function makeRequestType( name: Name, - RequestType: new (name: Name) => T + RequestType: new (name: Name) => T, ): Request { return { name, type: new RequestType(name) }; } diff --git a/packages/core/src/language-server/util/previewer.ts b/packages/core/src/language-server/util/previewer.ts index d699a8e7e..51d27018b 100644 --- a/packages/core/src/language-server/util/previewer.ts +++ b/packages/core/src/language-server/util/previewer.ts @@ -23,7 +23,7 @@ function replaceLinks(text: string): string { default: return `[${text ? text.trim() : link}](${link})`; } - } + }, ) ); } @@ -106,6 +106,6 @@ export function getTagDocumentation(tag: ts.JSDocTagInfo): string | undefined { export function plain(parts: ts.SymbolDisplayPart[] | string): string { return processInlineTags( - typeof parts === 'string' ? parts : parts.map((part) => part.text).join('') + typeof parts === 'string' ? parts : parts.map((part) => part.text).join(''), ); } diff --git a/packages/core/src/transform/diagnostics/augmentation.ts b/packages/core/src/transform/diagnostics/augmentation.ts index 9636ab9f6..327e405c6 100644 --- a/packages/core/src/transform/diagnostics/augmentation.ts +++ b/packages/core/src/transform/diagnostics/augmentation.ts @@ -9,7 +9,7 @@ import MappingTree, { MappingSource } from '../template/mapping-tree.js'; */ export function augmentDiagnostic( diagnostic: T, - mappingForDiagnostic: (diagnostic: T) => MappingTree | null + mappingForDiagnostic: (diagnostic: T) => MappingTree | null, ): T { // TODO: fix any types, remove casting return rewriteMessageText(diagnostic, mappingForDiagnostic as any) as T; @@ -19,7 +19,7 @@ type DiagnosticHandler = (diagnostic: Diagnostic, mapping: MappingTree) => Diagn function rewriteMessageText( diagnostic: Diagnostic, - mappingGetter: (diagnostic: Diagnostic) => MappingTree | null + mappingGetter: (diagnostic: Diagnostic) => MappingTree | null, ): Diagnostic { const handler = diagnosticHandlers[diagnostic.code?.toString() ?? '']; if (!handler) { @@ -48,7 +48,7 @@ const bindHelpers = ['component', 'helper', 'modifier']; function checkAssignabilityError( diagnostic: Diagnostic, - mapping: MappingTree + mapping: MappingTree, ): Diagnostic | undefined { let node = mapping.sourceNode; let parentNode = mapping.parent?.sourceNode; @@ -77,7 +77,7 @@ function checkAssignabilityError( return addGlintDetails( diagnostic, 'Only primitive values (see `AttrValue` in `@glint/template`) are assignable as HTML attributes. ' + - 'If you want to set an event listener, consider using the `{{on}}` modifier instead.' + 'If you want to set an event listener, consider using the `{{on}}` modifier instead.', ); } else if ( node.type === 'MustacheStatement' && @@ -94,7 +94,7 @@ function checkAssignabilityError( `The {{component}} helper can't be used to directly invoke a component under Glint. ` + `Consider first binding the result to a variable, e.g. ` + `'{{#let (component 'component-name') as |ComponentName|}}' and then invoking it as ` + - `''.` + `''.`, ); } @@ -102,7 +102,7 @@ function checkAssignabilityError( return addGlintDetails( diagnostic, 'Only primitive values and certain DOM objects (see `ContentValue` in `@glint/template`) are ' + - 'usable as top-level template content.' + 'usable as top-level template content.', ); } else if ( (mapping?.sourceNode.type === 'SubExpression' || @@ -123,7 +123,7 @@ function checkAssignabilityError( function noteNamedArgsAffectArity( diagnostic: Diagnostic, - mapping: MappingTree + mapping: MappingTree, ): Diagnostic | undefined { // In normal template entity invocations, named args (if specified) are effectively // passed as the final positional argument. Because of this, the reported "expected @@ -174,14 +174,14 @@ function checkResolveError(diagnostic: Diagnostic, mapping: MappingTree): Diagno diagnostic, `Unknown ${kind} name '${sourceMapping.sourceNode.value}'. If this isn't a typo, you may be ` + `missing a registry entry for this name; see the Template Registry page in the Glint ` + - `documentation for more details.` + `documentation for more details.`, ); } else { return addGlintDetails( diagnostic, `The type of this expression doesn't appear to be a valid value to pass the {{${kind}}} ` + `helper. If possible, you may need to give the expression a narrower type, ` + - `for example \`'thing-a' | 'thing-b'\` rather than \`string\`.` + `for example \`'thing-a' | 'thing-b'\` rather than \`string\`.`, ); } } @@ -192,14 +192,14 @@ function checkResolveError(diagnostic: Diagnostic, mapping: MappingTree): Diagno if (nodeType === 'ElementNode' || nodeType === 'PathExpression' || nodeType === 'Identifier') { return addGlintDetails( diagnostic, - 'The given value does not appear to be usable as a component, modifier or helper.' + 'The given value does not appear to be usable as a component, modifier or helper.', ); } } function checkImplicitAnyError( diagnostic: Diagnostic, - mapping: MappingTree + mapping: MappingTree, ): Diagnostic | undefined { let message = diagnostic.message; @@ -214,14 +214,14 @@ function checkImplicitAnyError( sourceNode.type === 'ElementNode' ? sourceNode.tag.split('.')[0] : sourceNode.type === 'PathExpression' && sourceNode.head.type === 'VarHead' - ? sourceNode.head.name - : null; + ? sourceNode.head.name + : null; if (globalName) { return addGlintDetails( diagnostic, `Unknown name '${globalName}'. If this isn't a typo, you may be missing a registry entry ` + - `for this value; see the Template Registry page in the Glint documentation for more details.` + `for this value; see the Template Registry page in the Glint documentation for more details.`, ); } } @@ -229,7 +229,7 @@ function checkImplicitAnyError( function checkIndexAccessError( diagnostic: Diagnostic, - mapping: MappingTree + mapping: MappingTree, ): Diagnostic | undefined { if (mapping.sourceNode.type === 'Identifier') { let message = diagnostic.message; diff --git a/packages/core/src/transform/template/inlining/companion-file.ts b/packages/core/src/transform/template/inlining/companion-file.ts index f81095ccd..4417b84e1 100644 --- a/packages/core/src/transform/template/inlining/companion-file.ts +++ b/packages/core/src/transform/template/inlining/companion-file.ts @@ -13,7 +13,7 @@ export function calculateCompanionTemplateSpans( ast: ts.SourceFile, script: SourceFile, template: SourceFile, - environment: GlintEnvironment + environment: GlintEnvironment, ): CorrelatedSpansResult { let errors: Array = []; let directives: Array = []; @@ -24,7 +24,7 @@ export function calculateCompanionTemplateSpans( source: template, location: { start: 0, end: template.contents.length }, message: `No active Glint environment (${environment.names.join( - ', ' + ', ', )}) supports standalone template files`, }); @@ -79,14 +79,14 @@ export function calculateCompanionTemplateSpans( insertionPoint: number; prefix: string; suffix: string; - } + }, ): void { errors.push( ...transformedTemplate.errors.map(({ message, location }) => ({ message, location: location ?? { start: 0, end: template.contents.length }, source: template, - })) + })), ); if (transformedTemplate.result) { @@ -96,7 +96,7 @@ export function calculateCompanionTemplateSpans( location, areaOfEffect, source: template, - })) + })), ); partialSpans.push( @@ -121,14 +121,14 @@ export function calculateCompanionTemplateSpans( originalLength: 0, insertionPoint: options.insertionPoint, transformedSource: options.suffix, - } + }, ); } else { let mapping = new MappingTree( { start: 0, end: 0 }, { start: 0, end: template.contents.length }, [], - new ParseError() + new ParseError(), ); partialSpans.push({ @@ -145,7 +145,7 @@ export function calculateCompanionTemplateSpans( function findCompanionTemplateTarget( ts: TSLib, - sourceFile: ts.SourceFile + sourceFile: ts.SourceFile, ): ts.ClassLikeDeclaration | ts.Expression | null { let classes: Record = Object.create(null); for (let statement of sourceFile.statements) { diff --git a/packages/core/src/transform/template/inlining/tagged-strings.ts b/packages/core/src/transform/template/inlining/tagged-strings.ts index f096f8a6a..128834837 100644 --- a/packages/core/src/transform/template/inlining/tagged-strings.ts +++ b/packages/core/src/transform/template/inlining/tagged-strings.ts @@ -16,7 +16,7 @@ export function calculateTaggedTemplateSpans( node: ts.TaggedTemplateExpression, meta: GlintEmitMetadata | undefined, script: SourceFile, - environment: GlintEnvironment + environment: GlintEnvironment, ): CorrelatedSpansResult { let directives: Array = []; let errors: Array = []; @@ -32,7 +32,7 @@ export function calculateTaggedTemplateSpans( if (info) { assert( ts.isNoSubstitutionTemplateLiteral(node.template), - 'No interpolated values in template strings' + 'No interpolated values in template strings', ); let { typesModule, globals } = info.tagConfig; @@ -123,7 +123,7 @@ function addOffset(location: Range, offset: number): Range { function collectSpecialForms( importedBindings: ImportedBindings, - config: GlintSpecialFormConfig + config: GlintSpecialFormConfig, ): Record { let specialForms: Record = { ...config.globals }; if (config.imports) { @@ -140,7 +140,7 @@ function collectSpecialForms( function resolveTagInfo( importedBindings: ImportedBindings, tag: ts.Identifier, - environment: GlintEnvironment + environment: GlintEnvironment, ): { importedBinding: ImportedBinding; tagConfig: GlintTagConfig } | undefined { let importedBinding = importedBindings[tag.text]; if (!importedBinding) { diff --git a/packages/core/src/transform/template/map-template-contents.ts b/packages/core/src/transform/template/map-template-contents.ts index 77badd879..10aebdb85 100644 --- a/packages/core/src/transform/template/map-template-contents.ts +++ b/packages/core/src/transform/template/map-template-contents.ts @@ -129,7 +129,7 @@ export type MapTemplateContentsOptions = { export function mapTemplateContents( template: string, { embeddingSyntax }: MapTemplateContentsOptions, - callback: (ast: AST.Template | null, mapper: Mapper) => void + callback: (ast: AST.Template | null, mapper: Mapper) => void, ): RewriteResult { let ast: AST.Template | null = null; let errors: Array<{ message: string; location: Range | undefined }> = []; @@ -177,7 +177,7 @@ export function mapTemplateContents( hbsRange: Range, source: MappingSource, allowEmpty: boolean, - callback: () => void + callback: () => void, ): void => { let start = offset; let mappings: MappingTree[] = []; @@ -277,7 +277,7 @@ export function mapTemplateContents( end: embeddingSyntax.prefix.length + template.length + embeddingSyntax.suffix.length, }, mappingsStack[0], - new TemplateEmbedding() + new TemplateEmbedding(), ); return { errors, result: { code, directives, mapping } }; diff --git a/packages/core/src/transform/template/mapping-tree.ts b/packages/core/src/transform/template/mapping-tree.ts index 81e1ec15c..57f41f6a4 100644 --- a/packages/core/src/transform/template/mapping-tree.ts +++ b/packages/core/src/transform/template/mapping-tree.ts @@ -55,7 +55,7 @@ export default class MappingTree { public transformedRange: Range, public originalRange: Range, public children: Array = [], - public sourceNode: MappingSource + public sourceNode: MappingSource, ) { children.forEach((child) => (child.parent = this)); } @@ -120,15 +120,15 @@ export default class MappingTree { lines.push( `${indent}${` hbs(${hbsStart}:${hbsEnd}):`.padEnd(15)}${this.getSourceRange( originalSource, - originalRange - )}` + originalRange, + )}`, ); lines.push( `${indent}${` ts(${tsStart}:${tsEnd}):`.padEnd(15)}${this.getSourceRange( transformedSource, - transformedRange - )}` + transformedRange, + )}`, ); lines.push(indent); diff --git a/packages/core/src/transform/template/rewrite-module.ts b/packages/core/src/transform/template/rewrite-module.ts index 722e3981b..1512ed976 100644 --- a/packages/core/src/transform/template/rewrite-module.ts +++ b/packages/core/src/transform/template/rewrite-module.ts @@ -33,13 +33,13 @@ export type RewriteInput = { script: SourceFile; template?: SourceFile }; export function rewriteModule( ts: TSLib, { script, template }: RewriteInput, - environment: GlintEnvironment + environment: GlintEnvironment, ): TransformedModule | null { let { errors, directives, partialSpans } = calculateCorrelatedSpans( ts, script, template, - environment + environment, ); if (!partialSpans.length && !errors.length) { @@ -65,7 +65,7 @@ function calculateCorrelatedSpans( ts: TSLib, script: SourceFile, template: SourceFile | undefined, - environment: GlintEnvironment + environment: GlintEnvironment, ): CorrelatedSpansResult { let directives: Array = []; let errors: Array = []; @@ -187,7 +187,7 @@ function parseScript(ts: TSLib, script: SourceFile, environment: GlintEnvironmen // We'll want to ignore all of that and only display our parsing error from content-tag. preprocessed.contents, ts.ScriptTarget.Latest, - true // setParentNodes + true, // setParentNodes ); // Only transform if we don't have a parse error @@ -255,7 +255,7 @@ function parseError(e: unknown, filename: string): ParseError { */ function calculateTransformedSource( originalFile: SourceFile, - sparseSpans: Array + sparseSpans: Array, ): { contents: string; correlatedSpans: Array } { let correlatedSpans: Array = []; let originalOffset = 0; @@ -307,7 +307,7 @@ function calculateTransformedSource( * in full `ReplacedSpan`s. */ function completeCorrelatedSpans( - partialSpans: Array + partialSpans: Array, ): Array { let replacedSpans: Array = []; diff --git a/packages/core/src/transform/template/template-to-typescript.ts b/packages/core/src/transform/template/template-to-typescript.ts index 29c1ce8f4..00b8712d9 100644 --- a/packages/core/src/transform/template/template-to-typescript.ts +++ b/packages/core/src/transform/template/template-to-typescript.ts @@ -34,7 +34,7 @@ export function templateToTypescript( embeddingSyntax = { prefix: '', suffix: '' }, specialForms = {}, useJsDoc = false, - }: TemplateToTypescriptOptions + }: TemplateToTypescriptOptions, ): RewriteResult { let { prefix, suffix } = embeddingSyntax; let template = `${''.padEnd(prefix.length)}${originalTemplate}${''.padEnd(suffix.length)}`; @@ -171,7 +171,7 @@ export function templateToTypescript( function emitSpecialFormExpression( formInfo: SpecialFormInfo, node: AST.MustacheStatement | AST.SubExpression, - position: InvokePosition + position: InvokePosition, ): void { if (formInfo.requiresConsumption) { emit.text('(χ.noop('); @@ -231,12 +231,12 @@ export function templateToTypescript( function emitBindInvokableExpression( formInfo: SpecialFormInfo, node: AST.MustacheStatement | AST.SubExpression, - position: InvokePosition + position: InvokePosition, ): void { emit.forNode(node, () => { assert( node.params.length >= 1, - () => `{{${formInfo.name}}} requires at least one positional argument` + () => `{{${formInfo.name}}} requires at least one positional argument`, ); assert( @@ -245,7 +245,7 @@ export function templateToTypescript( `Due to TypeScript inference limitations, {{${formInfo.name}}} can only pre-bind ` + `either named or positional arguments in a single pass. You can instead break the ` + `binding into two parts, e.g. ` + - `{{${formInfo.name} (${formInfo.name} ... posA posB) namedA=true namedB=true}}` + `{{${formInfo.name} (${formInfo.name} ... posA posB) namedA=true namedB=true}}`, ); if (position === 'top-level') { @@ -276,12 +276,12 @@ export function templateToTypescript( function emitObjectExpression( formInfo: SpecialFormInfo, - node: AST.MustacheStatement | AST.SubExpression + node: AST.MustacheStatement | AST.SubExpression, ): void { emit.forNode(node, () => { assert( node.params.length === 0, - () => `{{${formInfo.name}}} only accepts named parameters` + () => `{{${formInfo.name}}} only accepts named parameters`, ); if (!node.hash.pairs.length) { @@ -310,12 +310,12 @@ export function templateToTypescript( function emitArrayExpression( formInfo: SpecialFormInfo, - node: AST.MustacheStatement | AST.SubExpression + node: AST.MustacheStatement | AST.SubExpression, ): void { emit.forNode(node, () => { assert( node.hash.pairs.length === 0, - () => `{{${formInfo.name}}} only accepts positional parameters` + () => `{{${formInfo.name}}} only accepts positional parameters`, ); emit.text('['); @@ -334,12 +334,12 @@ export function templateToTypescript( function emitIfExpression( formInfo: SpecialFormInfo, - node: AST.MustacheStatement | AST.SubExpression + node: AST.MustacheStatement | AST.SubExpression, ): void { emit.forNode(node, () => { assert( node.params.length >= 2, - () => `{{${formInfo.name}}} requires at least two parameters` + () => `{{${formInfo.name}}} requires at least two parameters`, ); emit.text('('); @@ -360,12 +360,12 @@ export function templateToTypescript( function emitIfNotExpression( formInfo: SpecialFormInfo, - node: AST.MustacheStatement | AST.SubExpression + node: AST.MustacheStatement | AST.SubExpression, ): void { emit.forNode(node, () => { assert( node.params.length >= 2, - () => `{{${formInfo.name}}} requires at least two parameters` + () => `{{${formInfo.name}}} requires at least two parameters`, ); emit.text('!('); @@ -386,16 +386,16 @@ export function templateToTypescript( function emitBinaryOperatorExpression( formInfo: SpecialFormInfo, - node: AST.MustacheStatement | AST.SubExpression + node: AST.MustacheStatement | AST.SubExpression, ): void { emit.forNode(node, () => { assert( node.hash.pairs.length === 0, - () => `{{${formInfo.name}}} only accepts positional parameters` + () => `{{${formInfo.name}}} only accepts positional parameters`, ); assert( node.params.length === 2, - () => `{{${formInfo.name}}} requires exactly two parameters` + () => `{{${formInfo.name}}} requires exactly two parameters`, ); const [left, right] = node.params; @@ -410,16 +410,16 @@ export function templateToTypescript( function emitLogicalExpression( formInfo: SpecialFormInfo, - node: AST.MustacheStatement | AST.SubExpression + node: AST.MustacheStatement | AST.SubExpression, ): void { emit.forNode(node, () => { assert( node.hash.pairs.length === 0, - () => `{{${formInfo.name}}} only accepts positional parameters` + () => `{{${formInfo.name}}} only accepts positional parameters`, ); assert( node.params.length >= 2, - () => `{{${formInfo.name}}} requires at least two parameters` + () => `{{${formInfo.name}}} requires at least two parameters`, ); emit.text('('); @@ -436,16 +436,16 @@ export function templateToTypescript( function emitUnaryOperatorExpression( formInfo: SpecialFormInfo, - node: AST.MustacheStatement | AST.SubExpression + node: AST.MustacheStatement | AST.SubExpression, ): void { emit.forNode(node, () => { assert( node.hash.pairs.length === 0, - () => `{{${formInfo.name}}} only accepts positional parameters` + () => `{{${formInfo.name}}} only accepts positional parameters`, ); assert( node.params.length === 1, - () => `{{${formInfo.name}}} requires exactly one parameter` + () => `{{${formInfo.name}}} requires exactly one parameter`, ); const [param] = node.params; @@ -653,8 +653,8 @@ export function templateToTypescript( nameStart, child.blockParams, blockParamsStart, - child.children - ) + child.children, + ), ); } } else { @@ -664,7 +664,7 @@ export function templateToTypescript( undefined, node.blockParams, blockParamsStart, - blocks.children + blocks.children, ); } @@ -724,7 +724,7 @@ export function templateToTypescript( (child): child is NamedBlockChild => child.type === 'ElementNode' || child.type === 'CommentStatement' || - child.type === 'MustacheCommentStatement' + child.type === 'MustacheCommentStatement', ), }; } else { @@ -736,8 +736,8 @@ export function templateToTypescript( emit.forNode(child, () => assert( isAllowedAmongNamedBlocks(child), - 'Named blocks may not be mixed with other content' - ) + 'Named blocks may not be mixed with other content', + ), ); } } @@ -788,7 +788,7 @@ export function templateToTypescript( function emitPlainAttributes(node: AST.ElementNode): void { let attributes = node.attributes.filter( - (attr) => !attr.name.startsWith('@') && attr.name !== SPLATTRIBUTES + (attr) => !attr.name.startsWith('@') && attr.name !== SPLATTRIBUTES, ); if (!attributes.length) return; @@ -830,7 +830,7 @@ export function templateToTypescript( assert( splattributes.value.type === 'TextNode' && splattributes.value.chars === '', - '`...attributes` cannot accept a value' + '`...attributes` cannot accept a value', ); emit.forNode(splattributes, () => { @@ -863,7 +863,7 @@ export function templateToTypescript( // any named or positional parameters passed in a literal mustache assert( node.params.length === 0 && node.hash.pairs.length === 0, - 'Literals do not accept params' + 'Literals do not accept params', ); emitLiteral(node.path); @@ -893,19 +893,19 @@ export function templateToTypescript( path.type === 'PathExpression' && path.head.type === 'VarHead' && globals?.includes(path.head.name) && - !scope.hasBinding(path.head.name) + !scope.hasBinding(path.head.name), ); } function emitYieldExpression( formInfo: SpecialFormInfo, node: AST.MustacheStatement | AST.SubExpression, - position: InvokePosition + position: InvokePosition, ): void { emit.forNode(node, () => { assert( position === 'top-level', - () => `{{${formInfo.name}}} may only appear as a top-level statement` + () => `{{${formInfo.name}}} may only appear as a top-level statement`, ); let to = 'default'; @@ -913,7 +913,7 @@ export function templateToTypescript( if (toPair) { assert( toPair.value.type === 'StringLiteral', - () => `Named block {{${formInfo.name}}}s must have a literal block name` + () => `Named block {{${formInfo.name}}}s must have a literal block name`, ); to = toPair.value.value; } @@ -959,7 +959,7 @@ export function templateToTypescript( `The {{${formInfo.name}}} helper can't be used directly in block form under Glint. ` + `Consider first binding the result to a variable, e.g. '{{#let (${formInfo.name} ...) as |...|}}' ` + `and then using the bound value.`, - rangeForNode(node.path) + rangeForNode(node.path), ); break; @@ -972,7 +972,7 @@ export function templateToTypescript( emit.forNode(node, () => { assert( node.params.length === 1, - () => `{{#${formInfo.name}}} requires exactly one condition` + () => `{{#${formInfo.name}}} requires exactly one condition`, ); emit.text('if ('); @@ -1006,7 +1006,7 @@ export function templateToTypescript( emit.forNode(node, () => { assert( node.params.length === 1, - () => `{{#${formInfo.name}}} requires exactly one condition` + () => `{{#${formInfo.name}}} requires exactly one condition`, ); emit.text('if (!('); @@ -1079,7 +1079,7 @@ export function templateToTypescript( function emitBlock(name: string, node: AST.Block): void { let paramsStart = template.lastIndexOf( '|', - template.lastIndexOf('|', rangeForNode(node).start) - 1 + template.lastIndexOf('|', rangeForNode(node).start) - 1, ); emitBlockContents(name, undefined, node.blockParams, paramsStart, node.body); @@ -1090,11 +1090,11 @@ export function templateToTypescript( nameOffset: number | undefined, blockParams: string[], blockParamsOffset: number, - children: AST.TopLevelStatement[] + children: AST.TopLevelStatement[], ): void { assert( blockParams.every((name) => !name.includes('-')), - 'Block params must be valid TypeScript identifiers' + 'Block params must be valid TypeScript identifiers', ); scope.push(blockParams); @@ -1258,7 +1258,7 @@ export function templateToTypescript( function emitPropertyAccesss( name: string, - { offset, optional, synthetic }: PropertyAccessOptions = {} + { offset, optional, synthetic }: PropertyAccessOptions = {}, ): void { // Synthetic accesses should always use `[]` notation to avoid incidentally triggering // `noPropertyAccessFromIndexSignature`. Emitting `{{foo.bar}}` property accesses, however, @@ -1297,7 +1297,7 @@ export function templateToTypescript( function emitLiteral(node: AST.Literal): void { emit.forNode(node, () => - emit.text(node.value === undefined ? 'undefined' : JSON.stringify(node.value)) + emit.text(node.value === undefined ? 'undefined' : JSON.stringify(node.value)), ); } diff --git a/packages/core/src/transform/template/transformed-module.ts b/packages/core/src/transform/template/transformed-module.ts index 19a25d6bf..a99c6a05b 100644 --- a/packages/core/src/transform/template/transformed-module.ts +++ b/packages/core/src/transform/template/transformed-module.ts @@ -59,8 +59,8 @@ export default class TransformedModule { public readonly transformedContents: string, public readonly errors: ReadonlyArray, public readonly directives: ReadonlyArray, - private readonly correlatedSpans: Array - ) { } + private readonly correlatedSpans: Array, + ) {} public toDebugString(): string { let mappingStrings = this.correlatedSpans.map((span) => @@ -68,11 +68,11 @@ export default class TransformedModule { originalStart: span.originalStart, originalSource: span.originalFile.contents.slice( span.originalStart, - span.originalStart + span.originalLength + span.originalStart + span.originalLength, ), transformedStart: span.transformedStart, transformedSource: span.transformedSource, - }) + }), ); return `TransformedModule\n\n${mappingStrings.filter(Boolean).join('\n\n')}`; @@ -89,14 +89,14 @@ export default class TransformedModule { public getOriginalRange( transformedStart: number, - transformedEnd: number + transformedEnd: number, ): RangeWithMappingAndSource { let startInfo = this.determineOriginalOffsetAndSpan(transformedStart); let endInfo = this.determineOriginalOffsetAndSpan(transformedEnd); assert( startInfo.correlatedSpan.originalFile === endInfo.correlatedSpan.originalFile, - 'Attempted to transform a range across two different files' + 'Attempted to transform a range across two different files', ); let source = startInfo.correlatedSpan.originalFile; @@ -123,7 +123,7 @@ export default class TransformedModule { public getTransformedRange( originalFileName: string, originalStart: number, - originalEnd: number + originalEnd: number, ): RangeWithMapping { let startInfo = this.determineTransformedOffsetAndSpan(originalFileName, originalStart); let endInfo = this.determineTransformedOffsetAndSpan(originalFileName, originalEnd); @@ -150,11 +150,11 @@ export default class TransformedModule { public findTemplateAtOriginalOffset( originalFileName: string, - originalOffset: number + originalOffset: number, ): { originalContentStart: number; originalContentEnd: number; originalContent: string } | null { let { correlatedSpan } = this.determineTransformedOffsetAndSpan( originalFileName, - originalOffset + originalOffset, ); if (!correlatedSpan.mapping) { @@ -165,15 +165,15 @@ export default class TransformedModule { assert( correlatedSpan.mapping?.sourceNode.type === 'TemplateEmbedding' && - templateMapping?.sourceNode.type === 'Template', - 'Internal error: unexpected mapping structure.' + ` (${templateMapping?.sourceNode.type})` + templateMapping?.sourceNode.type === 'Template', + 'Internal error: unexpected mapping structure.' + ` (${templateMapping?.sourceNode.type})`, ); let originalContentStart = correlatedSpan.originalStart + templateMapping.originalRange.start; let originalContentEnd = correlatedSpan.originalStart + templateMapping.originalRange.end; let originalContent = correlatedSpan.originalFile.contents.slice( originalContentStart, - originalContentEnd + originalContentEnd, ); return { originalContentStart, originalContentEnd, originalContent }; @@ -200,7 +200,7 @@ export default class TransformedModule { private determineTransformedOffsetAndSpan( originalFileName: string, - originalOffset: number + originalOffset: number, ): { transformedOffset: number; correlatedSpan: CorrelatedSpan } { for (let span of this.correlatedSpans) { if ( diff --git a/packages/core/src/transform/util.ts b/packages/core/src/transform/util.ts index 08bc48296..e35e692c1 100644 --- a/packages/core/src/transform/util.ts +++ b/packages/core/src/transform/util.ts @@ -9,7 +9,7 @@ export function unreachable(value: never, message = 'unreachable code'): never { export function assert( test: unknown, - message: string | (() => string) = 'Internal error' + message: string | (() => string) = 'Internal error', ): asserts test { if (test == null || test === false) { throw new Error(typeof message === 'string' ? message : message()); diff --git a/packages/core/src/volar/gts-language-plugin.ts b/packages/core/src/volar/gts-language-plugin.ts index 5915dce4d..87de414d6 100644 --- a/packages/core/src/volar/gts-language-plugin.ts +++ b/packages/core/src/volar/gts-language-plugin.ts @@ -13,13 +13,15 @@ export type TS = typeof ts; /** * Create a [Volar](https://volarjs.dev) language module to support GTS. */ -export function createGtsLanguagePlugin(glintConfig: GlintConfig): LanguagePlugin { +export function createGtsLanguagePlugin( + glintConfig: GlintConfig, +): LanguagePlugin { return { /** * For files that are not opened in the IDE, the language ID will not be provided * to the language server, so a hook is needed to parse the language ID of files * that are known extension but not opened in the IDE. - * + * * In other words, clients like VSCode and other editors are in charge of determining * the language ID and passing it in, but the language ID isn't available in other * contexts, in which case this hook is called to determine it for a file based on its diff --git a/packages/core/src/volar/gts-virtual-code.ts b/packages/core/src/volar/gts-virtual-code.ts index 1ca628f58..bf12dc48c 100644 --- a/packages/core/src/volar/gts-virtual-code.ts +++ b/packages/core/src/volar/gts-virtual-code.ts @@ -31,7 +31,7 @@ export class VirtualGtsCode implements VirtualCode { constructor( private glintConfig: GlintConfig, public snapshot: IScriptSnapshot, - public languageId: 'glimmer-ts' | 'glimmer-js' + public languageId: 'glimmer-ts' | 'glimmer-js', ) { this.update(snapshot); } @@ -72,7 +72,7 @@ export class VirtualGtsCode implements VirtualCode { const transformedModule = rewriteModule( this.glintConfig.ts, { script, template }, - this.glintConfig.environment + this.glintConfig.environment, ); this.transformedModule = transformedModule; diff --git a/packages/core/src/volar/handlebars-virtual-code.ts b/packages/core/src/volar/handlebars-virtual-code.ts index 4f08a0b1e..15b526a9c 100644 --- a/packages/core/src/volar/handlebars-virtual-code.ts +++ b/packages/core/src/volar/handlebars-virtual-code.ts @@ -32,7 +32,10 @@ export class VirtualHandlebarsCode implements VirtualCode { languageId = 'handlebars'; - constructor(private glintConfig: GlintConfig, public snapshot: IScriptSnapshot) { + constructor( + private glintConfig: GlintConfig, + public snapshot: IScriptSnapshot, + ) { this.update(snapshot); } @@ -72,7 +75,7 @@ export class VirtualHandlebarsCode implements VirtualCode { const transformedModule = rewriteModule( this.glintConfig.ts, { script, template }, - this.glintConfig.environment + this.glintConfig.environment, ); if (transformedModule) { diff --git a/packages/core/src/volar/language-server.ts b/packages/core/src/volar/language-server.ts index a13e32ce9..94fdf18ee 100644 --- a/packages/core/src/volar/language-server.ts +++ b/packages/core/src/volar/language-server.ts @@ -85,11 +85,11 @@ connection.onInitialize((parameters) => { }, async provideSemanticDiagnostics( document: TextDocument, - token: vscode.CancellationToken + token: vscode.CancellationToken, ) { const diagnostics = await typeScriptPlugin.provideSemanticDiagnostics!( document, - token + token, ); return filterAndAugmentDiagnostics(context, document, diagnostics); }, @@ -99,14 +99,14 @@ connection.onInitialize((parameters) => { } else { return plugin; } - }) + }), ); }); function filterAndAugmentDiagnostics( context: LanguageServiceContext, document: TextDocument, - diagnostics: vscode.Diagnostic[] | null | undefined + diagnostics: vscode.Diagnostic[] | null | undefined, ): vscode.Diagnostic[] | null { if (!diagnostics) { // This can fail if .gts file fails to parse. Maybe other use cases too? @@ -205,7 +205,6 @@ function filterAndAugmentDiagnostics( }); for (let directive of unusedExpectErrors) { - // desired methond on transformedModule: // - it accepts a source offset and finds the transformed offset // - in which file? there are multiple embeddedCodes in a .gts file @@ -235,39 +234,37 @@ function filterAndAugmentDiagnostics( // transformedModule.determineTransformedOffsetAndSpan(directive.source.filename, directive.location.start) // // this returns a transformedOffset and correlatedSpan with mapping pointing to the template embedded. - // - - allDiagnostics.push( - { - message: `Unused '@glint-expect-error' directive.`, - - // this range... should be... for the TS file. Currently we're sending - // a range for the source .gts. That can't be right. - // The info we have is....... we know an unused glint directive exists. - // We need to find a range in the IR .ts file. - // - // 1. need to translate directive.areaOfEffect into the IR .ts file location - // - this is going to be the beginning of line in .gts and end of line in .gts. - // - actually maybe it's not area of effect, but rather the comment node. YES. - // emit.forNode(node, () => { - // emit.text(`// @glint-${kind}`); - // emit.newline(); - // }); - // - // - can we take the souce and query the CommentNode - // - node: AST.MustacheCommentStatement | AST.CommentStatement - // - what/how do we query now? - // - // 2. need to make sure it fits error boundary - range: vscode.Range.create( - offsetToPosition(document.getText(), directive.areaOfEffect.start), - offsetToPosition(document.getText(), directive.areaOfEffect.end) - ), - severity: vscode.DiagnosticSeverity.Error, - code: 0, - source: directive.source.filename, // not sure if this is right - } - ); + // + + allDiagnostics.push({ + message: `Unused '@glint-expect-error' directive.`, + + // this range... should be... for the TS file. Currently we're sending + // a range for the source .gts. That can't be right. + // The info we have is....... we know an unused glint directive exists. + // We need to find a range in the IR .ts file. + // + // 1. need to translate directive.areaOfEffect into the IR .ts file location + // - this is going to be the beginning of line in .gts and end of line in .gts. + // - actually maybe it's not area of effect, but rather the comment node. YES. + // emit.forNode(node, () => { + // emit.text(`// @glint-${kind}`); + // emit.newline(); + // }); + // + // - can we take the souce and query the CommentNode + // - node: AST.MustacheCommentStatement | AST.CommentStatement + // - what/how do we query now? + // + // 2. need to make sure it fits error boundary + range: vscode.Range.create( + offsetToPosition(document.getText(), directive.areaOfEffect.start), + offsetToPosition(document.getText(), directive.areaOfEffect.end), + ), + severity: vscode.DiagnosticSeverity.Error, + code: 0, + source: directive.source.filename, // not sure if this is right + }); } return allDiagnostics; diff --git a/packages/core/src/volar/script-snapshot.ts b/packages/core/src/volar/script-snapshot.ts index d9512eaed..779ca94ba 100644 --- a/packages/core/src/volar/script-snapshot.ts +++ b/packages/core/src/volar/script-snapshot.ts @@ -2,7 +2,7 @@ * @typedef {import('typescript').IScriptSnapshot} IScriptSnapshot */ -import { IScriptSnapshot, TextChangeRange } from "typescript"; +import { IScriptSnapshot, TextChangeRange } from 'typescript'; /** * A TypeScript compatible script snapshot that wraps a string of text. @@ -10,7 +10,7 @@ import { IScriptSnapshot, TextChangeRange } from "typescript"; * @implements {IScriptSnapshot} */ export class ScriptSnapshot implements IScriptSnapshot { - constructor(public text: string) { } + constructor(public text: string) {} // Not Implemented getChangeRange(_oldSnapshot: IScriptSnapshot): TextChangeRange | undefined { diff --git a/packages/environment-ember-loose/-private/dsl/index.d.ts b/packages/environment-ember-loose/-private/dsl/index.d.ts index ae895e8ea..312a2860d 100644 --- a/packages/environment-ember-loose/-private/dsl/index.d.ts +++ b/packages/environment-ember-loose/-private/dsl/index.d.ts @@ -17,11 +17,11 @@ export { Globals }; export declare function resolve(item: T): T[typeof InvokeDirect]; // Items whose instance type can be invoked export declare function resolve( - item: (abstract new (...args: Args) => Instance) | null | undefined + item: (abstract new (...args: Args) => Instance) | null | undefined, ): (...args: Parameters) => ReturnType; // Plain functions export declare function resolve any) | null | undefined>( - item: T + item: T, ): NonNullable; export declare const resolveOrReturn: ResolveOrReturn; @@ -30,32 +30,32 @@ export declare const resolveOrReturn: ResolveOrReturn; export declare function resolveForBind(item: T): T[typeof InvokeDirect]; // Items whose instance type can be invoked export declare function resolveForBind( - item: abstract new (...args: Args) => Instance + item: abstract new (...args: Args) => Instance, ): (...args: Parameters) => ReturnType; export declare function resolveForBind( - item: (abstract new (...args: Args) => Instance) | null | undefined + item: (abstract new (...args: Args) => Instance) | null | undefined, ): ((...args: Parameters) => ReturnType) | null; // Plain functions export declare function resolveForBind any) | null | undefined>( - item: T + item: T, ): T; export declare function resolveForBind any) | null | undefined>( - item: T | null | undefined + item: T | null | undefined, ): NonNullable | null; // String lookups export declare function resolveForBind( - item: T + item: T, ): Globals[T] extends Invokable ? F : Globals[T] extends DirectInvokable - ? F - : Globals[T]; + ? F + : Globals[T]; export declare function resolveForBind( - item: T | null | undefined + item: T | null | undefined, ): | (Globals[T] extends Invokable ? F : Globals[T] extends DirectInvokable - ? F - : Globals[T]) + ? F + : Globals[T]) | null; diff --git a/packages/environment-ember-loose/-private/environment/index.ts b/packages/environment-ember-loose/-private/environment/index.ts index 339f89afe..cc0c80214 100644 --- a/packages/environment-ember-loose/-private/environment/index.ts +++ b/packages/environment-ember-loose/-private/environment/index.ts @@ -17,7 +17,7 @@ const REGEXES = { }; export default function emberLooseEnvironment( - options: Record + options: Record, ): GlintEnvironmentConfig { let typesModule = '@glint/environment-ember-loose/-private/dsl'; let additionalSpecialForms = @@ -60,7 +60,7 @@ export default function emberLooseEnvironment( candidates.push( templatePath.replace(REGEXES.POD_TEMPLATE, '/component.ts'), templatePath.replace(REGEXES.POD_TEMPLATE, '/controller.ts'), - templatePath.replace(REGEXES.POD_TEMPLATE, '/route.ts') + templatePath.replace(REGEXES.POD_TEMPLATE, '/route.ts'), ); } else if (templatePath.includes('/templates/components/')) { // Classic component @@ -69,7 +69,7 @@ export default function emberLooseEnvironment( // Classic controller/route candidates.push( colocatedTsScriptPath.replace('/templates/', '/controllers/'), - colocatedTsScriptPath.replace('/templates/', '/routes/') + colocatedTsScriptPath.replace('/templates/', '/routes/'), ); } diff --git a/packages/environment-ember-loose/-private/intrinsics/action.d.ts b/packages/environment-ember-loose/-private/intrinsics/action.d.ts index 4a51314ba..727403a33 100644 --- a/packages/environment-ember-loose/-private/intrinsics/action.d.ts +++ b/packages/environment-ember-loose/-private/intrinsics/action.d.ts @@ -7,31 +7,31 @@ export type ActionNamedArgs = NamedArgs<{ export type ActionResult> = undefined extends Args['value'] ? T : Args['value'] extends keyof T - ? T[Args['value']] - : T; + ? T[Args['value']] + : T; export type ActionKeyword = DirectInvokable<{ , Params extends unknown[]>( f: (...rest: Params) => Ret, - args?: Args + args?: Args, ): (...rest: Params) => ActionResult; , Params extends unknown[]>( f: (a: A, ...rest: Params) => Ret, a: A, - args?: Args + args?: Args, ): (...rest: Params) => ActionResult; , Params extends unknown[]>( f: (a: A, b: B, ...rest: Params) => Ret, a: A, b: B, - args?: Args + args?: Args, ): (...rest: Params) => ActionResult; , Params extends unknown[]>( f: (a: A, b: B, c: C, ...rest: Params) => Ret, a: A, b: B, c: C, - args?: Args + args?: Args, ): (...rest: Params) => ActionResult; , Params extends unknown[]>( f: (a: A, b: B, c: C, d: D, ...rest: Params) => Ret, @@ -39,7 +39,7 @@ export type ActionKeyword = DirectInvokable<{ b: B, c: C, d: D, - args?: Args + args?: Args, ): (...rest: Params) => ActionResult; (action: string, ...rest: unknown[]): (...rest: unknown[]) => unknown; }>; diff --git a/packages/environment-ember-loose/-private/intrinsics/fn.d.ts b/packages/environment-ember-loose/-private/intrinsics/fn.d.ts index eccb63d86..7c0f0a0be 100644 --- a/packages/environment-ember-loose/-private/intrinsics/fn.d.ts +++ b/packages/environment-ember-loose/-private/intrinsics/fn.d.ts @@ -6,21 +6,23 @@ export type FnHelper = DirectInvokable<{ (update: Mut, value: T): () => void; (f: (...rest: Args) => Ret): (...rest: Args) => Ret; (f: (a: A, ...rest: Args) => Ret, a: A): (...rest: Args) => Ret; - (f: (a: A, b: B, ...rest: Args) => Ret, a: A, b: B): ( - ...rest: Args - ) => Ret; + ( + f: (a: A, b: B, ...rest: Args) => Ret, + a: A, + b: B, + ): (...rest: Args) => Ret; ( f: (a: A, b: B, c: C, ...rest: Args) => Ret, a: A, b: B, - c: C + c: C, ): (...rest: Args) => Ret; ( f: (a: A, b: B, c: C, d: D, ...rest: Args) => Ret, a: A, b: B, c: C, - d: D + d: D, ): (...rest: Args) => Ret; ( f: (a: A, b: B, c: C, d: D, e: E, ...rest: Args) => Ret, @@ -28,7 +30,7 @@ export type FnHelper = DirectInvokable<{ b: B, c: C, d: D, - e: E + e: E, ): (...rest: Args) => Ret; ( f: (a: A, b: B, c: C, d: D, e: E, g: G, ...rest: Args) => Ret, @@ -37,6 +39,6 @@ export type FnHelper = DirectInvokable<{ c: C, d: D, e: E, - g: G + g: G, ): (...rest: Args) => Ret; }>; diff --git a/packages/environment-ember-loose/-private/intrinsics/get.d.ts b/packages/environment-ember-loose/-private/intrinsics/get.d.ts index 6e40e423b..16b04ef3f 100644 --- a/packages/environment-ember-loose/-private/intrinsics/get.d.ts +++ b/packages/environment-ember-loose/-private/intrinsics/get.d.ts @@ -18,12 +18,14 @@ type UnwrapComputedPropertyGetter = T extends { [GetSetMarker]: [infer U, any export type GetHelper = DirectInvokable<{ (obj: T, key: K): UnwrapComputedPropertyGetter; - (obj: T | null | undefined, key: K): - | UnwrapComputedPropertyGetter - | undefined; - (obj: ObjectProxy | null | undefined, key: K): - | UnwrapComputedPropertyGetter - | undefined; + ( + obj: T | null | undefined, + key: K, + ): UnwrapComputedPropertyGetter | undefined; + ( + obj: ObjectProxy | null | undefined, + key: K, + ): UnwrapComputedPropertyGetter | undefined; (obj: null | undefined, key: string): undefined; (obj: unknown, key: string): unknown; }>; diff --git a/packages/environment-ember-loose/__tests__/type-tests/ember-component.test.ts b/packages/environment-ember-loose/__tests__/type-tests/ember-component.test.ts index 11a97b31e..76c17bcb3 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/ember-component.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/ember-component.test.ts @@ -20,7 +20,7 @@ import type { ComponentLike } from '@glint/template'; resolve(NoArgsComponent)( // @ts-expect-error: extra positional arg - 'oops' + 'oops', ); { @@ -75,10 +75,10 @@ import type { ComponentLike } from '@glint/template'; // the array element and the yielded value are the same. yieldToBlock( 𝚪, - 'default' + 'default', )( // @ts-expect-error: only a `T` is a valid yield - 123 + 123, ); if (𝚪.args.values.length) { @@ -113,7 +113,7 @@ import type { ComponentLike } from '@glint/template'; { const component = emitComponent( - resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }) + resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }), ); { @@ -124,7 +124,7 @@ import type { ComponentLike } from '@glint/template'; { const component = emitComponent( - resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }) + resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }), ); { @@ -159,14 +159,14 @@ import type { ComponentLike } from '@glint/template'; resolve(PositionalArgsComponent)( // @ts-expect-error: incorrect type for positional arg - 123 + 123, ); resolve(PositionalArgsComponent)( 'a', 1, // @ts-expect-error: extra positional arg - true + true, ); resolve(PositionalArgsComponent)('a'); diff --git a/packages/environment-ember-loose/__tests__/type-tests/glimmer-component.test.ts b/packages/environment-ember-loose/__tests__/type-tests/glimmer-component.test.ts index eb008e366..acacc7bb8 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/glimmer-component.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/glimmer-component.test.ts @@ -14,7 +14,7 @@ import { ComponentLike } from '@glint/template'; resolve(NoArgsComponent)( // @ts-expect-error: extra positional arg - 'oops' + 'oops', ); { @@ -66,10 +66,10 @@ import { ComponentLike } from '@glint/template'; // the array element and the yielded value are the same. yieldToBlock( 𝚪, - 'default' + 'default', )( // @ts-expect-error: only a `T` is a valid yield - 123 + 123, ); if (𝚪.args.values.length) { @@ -96,7 +96,7 @@ import { ComponentLike } from '@glint/template'; { const component = emitComponent( - resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }) + resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }), ); { @@ -107,7 +107,7 @@ import { ComponentLike } from '@glint/template'; { const component = emitComponent( - resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }) + resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }), ); { diff --git a/packages/environment-ember-loose/__tests__/type-tests/helper.test.ts b/packages/environment-ember-loose/__tests__/type-tests/helper.test.ts index 5b2942cb4..dedf0ca98 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/helper.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/helper.test.ts @@ -15,7 +15,7 @@ import { NamedArgs } from '@glint/template/-private/integration'; } let definition = helper( - ([name]: [string], { age }: { age: number }) => `${name}: ${age}` + ([name]: [string], { age }: { age: number }) => `${name}: ${age}`, ); let info = resolve(definition); @@ -24,7 +24,7 @@ import { NamedArgs } from '@glint/template/-private/integration'; info( // @ts-expect-error: missing named arg {}, - 'Tom' + 'Tom', ); info('Tom', { @@ -41,7 +41,7 @@ import { NamedArgs } from '@glint/template/-private/integration'; 'Tom', 'Ster', // @ts-expect-error: extra positional arg - { age: 123, ...NamedArgsMarker } + { age: 123, ...NamedArgsMarker }, ); expectTypeOf(info('Tom', { age: 123, ...NamedArgsMarker })).toEqualTypeOf(); @@ -72,7 +72,7 @@ import { NamedArgs } from '@glint/template/-private/integration'; 'a', 'b', // @ts-expect-error: extra positional arg - 'c' + 'c', ); expectTypeOf(or('a', 'b')).toEqualTypeOf(); @@ -127,7 +127,7 @@ import { NamedArgs } from '@glint/template/-private/integration'; repeat( 123, // @ts-expect-error: extra positional arg - { word: 'hi', ...NamedArgsMarker } + { word: 'hi', ...NamedArgsMarker }, ); // @ts-expect-error: missing required named arg @@ -162,14 +162,14 @@ import { NamedArgs } from '@glint/template/-private/integration'; repeat( 'hello', // @ts-expect-error: unexpected named args - { word: 'hi', ...NamedArgsMarker } + { word: 'hi', ...NamedArgsMarker }, ); repeat( 'hello', 123, // @ts-expect-error: extra positional arg in named args spot - 'hi' + 'hi', ); expectTypeOf(repeat('hi')).toEqualTypeOf>(); @@ -220,7 +220,7 @@ import { NamedArgs } from '@glint/template/-private/integration'; expectTypeOf(positionalOnlyGeneric(123, Symbol())).toEqualTypeOf<[number, symbol]>(); let mixedConcrete = resolve( - (a: number, b: number, named: { fallback: number }) => named.fallback + (a: number, b: number, named: { fallback: number }) => named.fallback, ); expectTypeOf(mixedConcrete).toEqualTypeOf< (a: number, b: number, named: { fallback: number }) => number @@ -228,7 +228,7 @@ import { NamedArgs } from '@glint/template/-private/integration'; expectTypeOf(mixedConcrete(1, 2, { fallback: 123 })).toBeNumber(); let mixedGenericNamed = resolve( - (a: number, b: number, named: { fallback: T }) => a + b || named.fallback + (a: number, b: number, named: { fallback: T }) => a + b || named.fallback, ); expectTypeOf(mixedGenericNamed).toEqualTypeOf< (a: number, b: number, named: { fallback: T }) => T | number @@ -237,7 +237,7 @@ import { NamedArgs } from '@glint/template/-private/integration'; expectTypeOf(mixedGenericNamed(1, 2, { fallback: 3 })).toBeNumber(); let mixedGenericPositional = resolve( - (a: T, b: T, named: { fallback: string }): string | T => a || b || named.fallback + (a: T, b: T, named: { fallback: string }): string | T => a || b || named.fallback, ); expectTypeOf(mixedGenericPositional).toEqualTypeOf< (a: T, b: T, named: { fallback: string }) => T | string @@ -248,7 +248,7 @@ import { NamedArgs } from '@glint/template/-private/integration'; 'a', // @ts-expect-error: inconsistent T 123, - { fallback: 'hi' } + { fallback: 'hi' }, ); let mixedGeneric = resolve((a: A, b: B, named: { c: C }): [A, B, C] => [a, b, named.c]); @@ -302,7 +302,7 @@ import { NamedArgs } from '@glint/template/-private/integration'; expectTypeOf(namedArgsType).toEqualTypeOf<(pos: string, named: NamedType) => void>(); let narrowsFirstArg = resolve( - (arg: unknown, key: K): arg is Record => !!key + (arg: unknown, key: K): arg is Record => !!key, ); expectTypeOf(narrowsFirstArg).toEqualTypeOf< (arg: unknown, key: K) => arg is Record diff --git a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/component.test.ts b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/component.test.ts index da8ab1a13..23c4e8621 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/component.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/component.test.ts @@ -13,7 +13,7 @@ typeTest( {{! @glint-expect-error: wrong arg type}} {{/let}} - ` + `, ); // String-based lookups of special builtins @@ -23,7 +23,7 @@ typeTest( {{#let (component 'link-to' route="widgets") as |Link|}} {{/let}} - ` + `, ); declare const formModifier: ModifierLike<{ @@ -50,7 +50,7 @@ typeTest( {{@expectTypeOf value @to.beString}} {{/let}} - ` + `, ); // Nullable in, nullable out @@ -62,7 +62,7 @@ typeTest( {{@expectTypeOf null @to.beAssignableToTypeOf NoopCurriedStringComponent}} {{/let}} - ` + `, ); // Currying a named arg makes it optional but still override-able @@ -83,7 +83,7 @@ typeTest( {{@expectTypeOf value @to.beString}} {{/let}} - ` + `, ); class ParametricComponent extends Component<{ @@ -118,7 +118,7 @@ typeTest( {{@expectTypeOf index @to.beNumber}} {{/let}} - ` + `, ); // Binding a required arg makes it optional @@ -143,7 +143,7 @@ typeTest( {{@expectTypeOf index @to.beNumber}} {{/let}} - ` + `, ); // Binding an optional arg still leaves the required one(s) @@ -172,5 +172,5 @@ typeTest( {{@expectTypeOf index @to.beNumber}} {{/let}} - ` + `, ); diff --git a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/each.test.ts b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/each.test.ts index f2519ec93..c2532323d 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/each.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/each.test.ts @@ -113,8 +113,8 @@ declare const arrayOrNull: string[] | null; const component = emitComponent( each( // @ts-expect-error: number is not a valid iterable - 123 - ) + 123, + ), ); expectTypeOf(component.blockParams.default).toEqualTypeOf<[any, number]>(); diff --git a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/get.test.ts b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/get.test.ts index 9e89c9e0e..855916917 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/get.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/get.test.ts @@ -15,7 +15,7 @@ get( {}, 'hi', // @ts-expect-error: invalid named arg - { hello: 'hi', ...NamedArgsMarker } + { hello: 'hi', ...NamedArgsMarker }, ); interface Foo { diff --git a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/helper.test.ts b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/helper.test.ts index 61225680f..cd6c09578 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/helper.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/helper.test.ts @@ -23,7 +23,7 @@ typeTest( {{! @glint-expect-error: missing positional arg }} {{noopGreet "Hello"}} {{/let}} - ` + `, ); // Currying a positional arg @@ -39,7 +39,7 @@ typeTest( {{! @glint-expect-error: missing required named arg}} {{boundGreet}} {{/let}} - ` + `, ); // Currying a named arg @@ -54,7 +54,7 @@ typeTest( {{! @glint-expect-error: missing required positional arg}} {{boundGreet target="World"}} {{/let}} - ` + `, ); // Double-currying @@ -66,7 +66,7 @@ typeTest( {{@expectTypeOf posThenNamed @to.equalTypeOf namedThenPos}} {{/let}} {{/let}} - ` + `, ); class MakeArrayPositional extends Helper<{ @@ -88,7 +88,7 @@ typeTest( {{! @glint-expect-error: missing required arg }} {{log (noopMakeArray)}} {{/let}} - ` + `, ); // Currying positional generic args MUST pre-fix the type parameter, @@ -100,7 +100,7 @@ typeTest( {{#let (helper this.makeArray 123) as |makeNumberArray|}} {{@expectTypeOf (makeNumberArray) @to.equalTypeOf (array 123)}} {{/let}} - ` + `, ); class MakeArrayNamed extends Helper<{ @@ -122,7 +122,7 @@ typeTest( {{! @glint-expect-error: missing required arg }} {{log (noopMakeArray)}} {{/let}} - ` + `, ); // Currying named generic args doesn't require pre-specifying the type @@ -132,7 +132,7 @@ typeTest( {{#let (helper this.makeArray value=123) as |makeNumberArray|}} {{@expectTypeOf (makeNumberArray) @to.equalTypeOf (array 123)}} {{/let}} - ` + `, ); // Prebinding args at different locations @@ -156,5 +156,5 @@ typeTest( {{! @glint-expect-error: extra arg }} {{(helper this.myriad "one" true 3) "four"}} - ` + `, ); diff --git a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/link-to.test.ts b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/link-to.test.ts index 895295e9b..475e20d5c 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/link-to.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/link-to.test.ts @@ -73,28 +73,28 @@ linkTo({}, 123); { const component = emitComponent( - LinkTo({ route: 'index', query: { a: 123 }, ...NamedArgsMarker }) + LinkTo({ route: 'index', query: { a: 123 }, ...NamedArgsMarker }), ); expectTypeOf(component.blockParams.default).toEqualTypeOf<[]>(); } { const component = emitComponent( - LinkTo({ route: 'index', models: [123, 'abc'], ...NamedArgsMarker }) + LinkTo({ route: 'index', models: [123, 'abc'], ...NamedArgsMarker }), ); expectTypeOf(component.blockParams.default).toEqualTypeOf<[]>(); } { const component = emitComponent( - LinkTo({ route: 'index', 'current-when': 'index', ...NamedArgsMarker }) + LinkTo({ route: 'index', 'current-when': 'index', ...NamedArgsMarker }), ); expectTypeOf(component.blockParams.default).toEqualTypeOf<[]>(); } { const component = emitComponent( - LinkTo({ route: 'index', 'current-when': true, ...NamedArgsMarker }) + LinkTo({ route: 'index', 'current-when': true, ...NamedArgsMarker }), ); expectTypeOf(component.blockParams.default).toEqualTypeOf<[]>(); } @@ -105,8 +105,8 @@ linkTo({}, 123); const component = emitComponent( LinkTo( // @ts-expect-error: missing one of required props - { ...NamedArgsMarker } - ) + { ...NamedArgsMarker }, + ), ); expectTypeOf(component.blockParams.default).toEqualTypeOf<[]>(); } diff --git a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/modifier.test.ts b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/modifier.test.ts index 2a1603e21..3673aa9ce 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/intrinsics/modifier.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/intrinsics/modifier.test.ts @@ -29,7 +29,7 @@ typeTest( {{! @glint-expect-error: extra positional arg }} {{/let}} - ` + `, ); // Pre-bound positional arg @@ -48,7 +48,7 @@ typeTest( {{! @glint-expect-error: extra positional arg }} {{/let}} - ` + `, ); // Pre-bound named arg @@ -68,7 +68,7 @@ typeTest( {{! @glint-expect-error: extra positional arg }} {{/let}} - ` + `, ); // Prebinding args at different locations @@ -91,5 +91,5 @@ typeTest( {{! @glint-expect-error: extra arg }}
- ` + `, ); diff --git a/packages/environment-ember-loose/__tests__/type-tests/modifier.test.ts b/packages/environment-ember-loose/__tests__/type-tests/modifier.test.ts index 031d272a9..1bd467e65 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/modifier.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/modifier.test.ts @@ -29,7 +29,7 @@ import type Owner from '@ember/owner'; override modify( element: HTMLImageElement, [input]: NeatModifierSignature['Args']['Positional'], - { multiplier }: NeatModifierSignature['Args']['Named'] + { multiplier }: NeatModifierSignature['Args']['Named'], ): void { // expectTypeOf(element).toEqualTypeOf(); this.multiplier = multiplier ?? 1000; @@ -47,13 +47,13 @@ import type Owner from '@ember/owner'; expectTypeOf(neat(img, 'hello')).toEqualTypeOf(); expectTypeOf( - neat(img, 'hello', { multiplier: 3, ...NamedArgsMarker }) + neat(img, 'hello', { multiplier: 3, ...NamedArgsMarker }), ).toEqualTypeOf(); neat( // @ts-expect-error: invalid element type new HTMLDivElement(), - 'hello' + 'hello', ); // @ts-expect-error: missing required positional arg @@ -63,7 +63,7 @@ import type Owner from '@ember/owner'; img, 'hello', // @ts-expect-error: extra positional arg - 'goodbye' + 'goodbye', ); neat(img, 'message', { @@ -83,12 +83,15 @@ import type Owner from '@ember/owner'; { let definition = modifier( (element: HTMLAudioElement, [input]: [string], { multiplier }: { multiplier?: number }) => { - let interval = window.setInterval(() => { - alert('this is a typesafe modifier!'); - }, input.length * (multiplier ?? 1000)); + let interval = window.setInterval( + () => { + alert('this is a typesafe modifier!'); + }, + input.length * (multiplier ?? 1000), + ); return () => window.clearInterval(interval); - } + }, ); let audio = new HTMLAudioElement(); @@ -96,13 +99,13 @@ import type Owner from '@ember/owner'; expectTypeOf(neat(audio, 'hello')).toEqualTypeOf(); expectTypeOf( - neat(audio, 'hello', { multiplier: 3, ...NamedArgsMarker }) + neat(audio, 'hello', { multiplier: 3, ...NamedArgsMarker }), ).toEqualTypeOf(); neat( // @ts-expect-error: invalid element type new HTMLDivElement(), - 'hello' + 'hello', ); // @ts-expect-error: missing required positional arg @@ -112,7 +115,7 @@ import type Owner from '@ember/owner'; audio, 'hello', // @ts-expect-error: extra positional arg - 'goodbye' + 'goodbye', ); neat(audio, 'message', { diff --git a/packages/environment-ember-loose/__tests__/type-tests/template-only.test.ts b/packages/environment-ember-loose/__tests__/type-tests/template-only.test.ts index a36d3786d..a8ab4bf94 100644 --- a/packages/environment-ember-loose/__tests__/type-tests/template-only.test.ts +++ b/packages/environment-ember-loose/__tests__/type-tests/template-only.test.ts @@ -13,7 +13,7 @@ import { ComponentLike, WithBoundArgs } from '@glint/template'; resolve(NoArgsComponent)( // @ts-expect-error: extra positional arg - 'oops' + 'oops', ); { @@ -51,7 +51,7 @@ import { ComponentLike, WithBoundArgs } from '@glint/template'; resolve(YieldingComponent)( // @ts-expect-error: missing required arg - { ...NamedArgsMarker } + { ...NamedArgsMarker }, ); resolve(YieldingComponent)({ @@ -69,7 +69,7 @@ import { ComponentLike, WithBoundArgs } from '@glint/template'; { const component = emitComponent( - resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }) + resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }), ); const [value] = component.blockParams.default; expectTypeOf(value).toEqualTypeOf(); @@ -77,7 +77,7 @@ import { ComponentLike, WithBoundArgs } from '@glint/template'; { const component = emitComponent( - resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }) + resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }), ); { diff --git a/packages/environment-ember-template-imports/-private/dsl/index.d.ts b/packages/environment-ember-template-imports/-private/dsl/index.d.ts index 01caac79d..e0a7d1d20 100644 --- a/packages/environment-ember-template-imports/-private/dsl/index.d.ts +++ b/packages/environment-ember-template-imports/-private/dsl/index.d.ts @@ -20,11 +20,11 @@ import { export declare function resolve(item: T): T[typeof InvokeDirect]; // Items whose instance type can be invoked export declare function resolve( - item: (abstract new (...args: Args) => Instance) | null | undefined + item: (abstract new (...args: Args) => Instance) | null | undefined, ): (...args: Parameters) => ReturnType; // Plain functions export declare function resolve any) | null | undefined>( - item: T + item: T, ): NonNullable; export declare const resolveOrReturn: ResolveOrReturn; @@ -38,8 +38,8 @@ import { TemplateOnlyComponent } from '@ember/component/template-only'; export declare function templateExpression< Signature extends AnyFunction = () => ComponentReturn<{}>, - Context extends AnyContext = TemplateContext + Context extends AnyContext = TemplateContext, >( - f: (𝚪: Context, χ: never) => void + f: (𝚪: Context, χ: never) => void, ): TemplateOnlyComponent & (abstract new () => InvokableInstance & HasContext); diff --git a/packages/environment-ember-template-imports/-private/environment/index.ts b/packages/environment-ember-template-imports/-private/environment/index.ts index 112f96bc0..42faee6a2 100644 --- a/packages/environment-ember-template-imports/-private/environment/index.ts +++ b/packages/environment-ember-template-imports/-private/environment/index.ts @@ -3,7 +3,7 @@ import { preprocess } from './preprocess'; import { transform } from './transform'; export default function emberTemplateImportsEnvironment( - options: Record + options: Record, ): GlintEnvironmentConfig { let additionalSpecialForms = typeof options['additionalSpecialForms'] === 'object' diff --git a/packages/environment-ember-template-imports/-private/environment/preprocess.ts b/packages/environment-ember-template-imports/-private/environment/preprocess.ts index cae1553f4..453f780bf 100644 --- a/packages/environment-ember-template-imports/-private/environment/preprocess.ts +++ b/packages/environment-ember-template-imports/-private/environment/preprocess.ts @@ -59,7 +59,7 @@ export const preprocess: GlintExtensionPreprocess = (source, pat let templateContentSegment = sourceBuffer.slice( startTagOffsetBytes + startTagLengthBytes, - endTagOffsetBytes + endTagOffsetBytes, ); segments.push(templateContentSegment.toString()); segments.push(TEMPLATE_END); diff --git a/packages/environment-ember-template-imports/-private/environment/transform.ts b/packages/environment-ember-template-imports/-private/environment/transform.ts index 82bfa4583..7274d54ed 100644 --- a/packages/environment-ember-template-imports/-private/environment/transform.ts +++ b/packages/environment-ember-template-imports/-private/environment/transform.ts @@ -6,7 +6,7 @@ type TSLib = typeof ts; export const transform: GlintExtensionTransform = ( data, - { ts, context, setEmitMetadata } + { ts, context, setEmitMetadata }, ) => { let f = ts.factory; let { templateLocations } = data; @@ -91,9 +91,9 @@ function addTagImport(f: ts.NodeFactory, sourceFile: ts.SourceFile): ts.SourceFi undefined, f.createNamedImports([ f.createImportSpecifier(false, f.createIdentifier('hbs'), f.createIdentifier(GLOBAL_TAG)), - ]) + ]), ), - f.createStringLiteral('@glint/environment-ember-template-imports/-private/tag') + f.createStringLiteral('@glint/environment-ember-template-imports/-private/tag'), ), ...sourceFile.statements, ]); @@ -146,7 +146,7 @@ function isETITemplateLiteral(ts: TSLib, node: ts.Node): node is ETITemplateLite function findTemplateLocation( locations: Array, - node: ETITemplateExpression | ETITemplateProperty + node: ETITemplateExpression | ETITemplateProperty, ): TemplateLocation { let location = locations.find((loc) => loc.transformedStart === node.getStart()); @@ -159,9 +159,9 @@ function findTemplateLocation( function buildStaticBlockForTemplate( f: ts.NodeFactory, - template: ts.TaggedTemplateExpression + template: ts.TaggedTemplateExpression, ): ts.Node { return f.createClassStaticBlockDeclaration( - f.createBlock([f.createExpressionStatement(template)]) + f.createBlock([f.createExpressionStatement(template)]), ); } diff --git a/packages/environment-ember-template-imports/__tests__/transformation.test.ts b/packages/environment-ember-template-imports/__tests__/transformation.test.ts index 7ca361b13..a37190cd4 100644 --- a/packages/environment-ember-template-imports/__tests__/transformation.test.ts +++ b/packages/environment-ember-template-imports/__tests__/transformation.test.ts @@ -122,7 +122,7 @@ describe('Environment: ETI', () => { }, }, ], - ]) + ]), ); }); @@ -184,7 +184,7 @@ describe('Environment: ETI', () => { }, }, ], - ]) + ]), ); }); }); diff --git a/packages/scripts/__tests__/auto-nocheck.test.ts b/packages/scripts/__tests__/auto-nocheck.test.ts index b7d9afdef..55ea8a089 100644 --- a/packages/scripts/__tests__/auto-nocheck.test.ts +++ b/packages/scripts/__tests__/auto-nocheck.test.ts @@ -46,7 +46,7 @@ describe.skip('auto-nocheck', () => { expect(project.read('app/components/good.hbs')).toEqual(files['app/components/good.hbs']); expect(project.read('app/components/bad.hbs')).toEqual( - `{{! @glint-nocheck: not typesafe yet }}\n${files['app/components/bad.hbs']}` + `{{! @glint-nocheck: not typesafe yet }}\n${files['app/components/bad.hbs']}`, ); }); @@ -89,7 +89,7 @@ describe.skip('auto-nocheck', () => { await autoNocheck(['tests/**/*.ts'], { spinner, cwd: project.filePath('.') }); expect(project.read('tests/integration/good-test.ts')).toEqual( - files['tests/integration/good-test.ts'] + files['tests/integration/good-test.ts'], ); let badTest = files['tests/integration/bad-test.ts']; @@ -97,8 +97,8 @@ describe.skip('auto-nocheck', () => { expect(project.read('tests/integration/bad-test.ts')).toEqual( `${badTest.slice( 0, - badTestInsertionIndex - )}{{! @glint-nocheck: not typesafe yet }}\n ${badTest.slice(badTestInsertionIndex)}` + badTestInsertionIndex, + )}{{! @glint-nocheck: not typesafe yet }}\n ${badTest.slice(badTestInsertionIndex)}`, ); let oneLinerTest = files['tests/integration/one-liner-test.ts']; @@ -106,8 +106,8 @@ describe.skip('auto-nocheck', () => { expect(project.read('tests/integration/one-liner-test.ts')).toEqual( `${oneLinerTest.slice( 0, - oneLinerTestInsertionIndex - )}{{! @glint-nocheck }}${oneLinerTest.slice(oneLinerTestInsertionIndex)}` + oneLinerTestInsertionIndex, + )}{{! @glint-nocheck }}${oneLinerTest.slice(oneLinerTestInsertionIndex)}`, ); }); @@ -154,16 +154,16 @@ describe.skip('auto-nocheck', () => { let badInsertionIndex = bad.indexOf('Hello,'); expect(project.read('app/components/bad.gts')).toEqual( `${bad.slice(0, badInsertionIndex)}{{! @glint-nocheck: not typesafe yet }}\n ${bad.slice( - badInsertionIndex - )}` + badInsertionIndex, + )}`, ); let oneLiner = files['app/components/one-liner.gts']; let oneLinerInsertionIndex = oneLiner.indexOf('Hello,'); expect(project.read('app/components/one-liner.gts')).toEqual( `${oneLiner.slice(0, oneLinerInsertionIndex)}{{! @glint-nocheck }}${oneLiner.slice( - oneLinerInsertionIndex - )}` + oneLinerInsertionIndex, + )}`, ); }); @@ -186,7 +186,7 @@ describe.skip('auto-nocheck', () => { }); expect(project.read('app/components/bad.hbs')).toEqual( - `{{! @glint-nocheck: old and crufty }}\n${files['app/components/bad.hbs']}` + `{{! @glint-nocheck: old and crufty }}\n${files['app/components/bad.hbs']}`, ); }); }); diff --git a/packages/scripts/src/lib/_auto-nocheck.ts b/packages/scripts/src/lib/_auto-nocheck.ts index 83b17d118..edebb666e 100644 --- a/packages/scripts/src/lib/_auto-nocheck.ts +++ b/packages/scripts/src/lib/_auto-nocheck.ts @@ -11,7 +11,7 @@ const globSync = globPkg.sync; export async function autoNocheck( args: Array, - { cwd = process.cwd(), spinner = ora() } = {} + { cwd = process.cwd(), spinner = ora() } = {}, ): Promise { let glint = await loadGlintCore(cwd); let { globs, explanation } = parseArgs(args); @@ -29,7 +29,7 @@ export async function autoNocheck( if (templatesWithErrors.size) { fileUpdates.set( filePath, - insertNocheckComments(filePath, fileContents, explanation, templatesWithErrors) + insertNocheckComments(filePath, fileContents, explanation, templatesWithErrors), ); } } @@ -58,7 +58,7 @@ function parseArgs(args: Array): { globs: Array; explanation: st type: 'string', default: 'not typesafe yet', describe: 'The explanation to be included in @glint-nocheck comments', - }) + }), ) .wrap(100) .strict() @@ -88,7 +88,7 @@ async function loadGlintCore(cwd: string): Promise { throw new Error( 'This script requires a recent version of @glint/core to run. ' + 'Consider upgrading to the latest version of Glint or using ' + - 'an older version of @glint/scripts.' + 'an older version of @glint/scripts.', ); } @@ -107,7 +107,7 @@ function findTemplatesWithErrors( glint: GlintCore, filePath: string, fileContents: string, - project: ProjectAnalysis + project: ProjectAnalysis, ): Map { let templatesWithErrors = new Map(); let info = project.transformManager.findTransformInfoForOriginalFile(filePath); @@ -137,7 +137,7 @@ function insertNocheckComments( filePath: string, fileContents: string, explanation: string, - templatesWithErrors: Map + templatesWithErrors: Map, ): string { let chunks = []; let progress = 0; diff --git a/packages/scripts/src/lib/_migrate-glintrc.ts b/packages/scripts/src/lib/_migrate-glintrc.ts index f069913e7..951d65cf3 100644 --- a/packages/scripts/src/lib/_migrate-glintrc.ts +++ b/packages/scripts/src/lib/_migrate-glintrc.ts @@ -13,7 +13,7 @@ const EnvironmentList = z.array(z.string()); const EnvironmentMap = z.record( z.object({ additionalGlobals: z.optional(z.array(z.string())), - }) + }), ); type EnvironmentMap = z.infer; @@ -49,14 +49,14 @@ type GlintTsconfig = { function loadFile(path: string): Promise> { return readFile(path, { encoding: 'utf-8' }).then( (v) => ok(v), - (e) => err(`Could not load file at ${path}: ${JSON.stringify(e)}`) + (e) => err(`Could not load file at ${path}: ${JSON.stringify(e)}`), ); } function loadOrCreateTsconfig(configPath: string): Promise { return readFile(configPath, { encoding: 'utf-8' }).catch((e) => { console.info( - `Could not load tsconfig.json at ${configPath}: ${e}; attempting to create a new one` + `Could not load tsconfig.json at ${configPath}: ${e}; attempting to create a new one`, ); return '{}'; }); @@ -65,7 +65,7 @@ function loadOrCreateTsconfig(configPath: string): Promise { function saveFile(path: string, data: string): Promise> { return writeFile(path, data).then( () => ok(), - (e) => err(`Could not write file at ${path}: ${JSON.stringify(e)}`) + (e) => err(`Could not write file at ${path}: ${JSON.stringify(e)}`), ); } @@ -91,7 +91,7 @@ function parseGlintRcFile(contents: string): Result { }, () => { return GlintRc.parse(yamlData); - } + }, ); } @@ -107,7 +107,7 @@ function prepForPatching(contents: unknown): Result { return tryOrElse( (e) => `Could not patch data:\n\t${e instanceof Error ? e.message : JSON.stringify(e)}`, - () => evaluate(contents) + () => evaluate(contents), ); } @@ -165,19 +165,19 @@ function patchTsconfig(contents: unknown, rc: GlintRc): Result { .andThen((transformed) => tryOrElse( (e) => `Could not patch data:\n\t${JSON.stringify(e)}`, - () => patch(contents, transformed) - ) + () => patch(contents, transformed), + ), ); } function settledToResult( - settledResults: Array>> + settledResults: Array>>, ): Array>; function settledToResult( - settledResults: Array> + settledResults: Array>, ): Array>; function settledToResult( - settledResults: Array>> + settledResults: Array>>, ): Array> { return settledResults.map((result) => { if (result.status === 'fulfilled') { @@ -200,7 +200,7 @@ type SplitResults = { }; function toSplitResults( - settledResults: Array>> + settledResults: Array>>, ): SplitResults { return splitResults(settledToResult(settledResults)); @@ -214,7 +214,7 @@ function toSplitResults( { successes: [] as T[], failures: [] as E[], - } + }, ); } } @@ -295,7 +295,7 @@ export async function migrate(pathArgs: string[]): Promise ({ path: p, config })) .mapErr((err) => `${normalizePathString(p)}: ${err}`); - }) + }), ).then(toSplitResults); let patched = await Promise.allSettled( @@ -306,7 +306,7 @@ export async function migrate(pathArgs: string[]): Promise ({ rcPath, tsconfigPath, patched })) .mapErr((err) => `${normalizePathString(rcPath)}: ${err}`); - }) + }), ).then(toSplitResults); let write = await Promise.allSettled( @@ -315,9 +315,9 @@ export async function migrate(pathArgs: string[]): Promise `Updated ${normalizedTsconfig} with contents of ${normalizedRc}` + () => `Updated ${normalizedTsconfig} with contents of ${normalizedRc}`, ); - }) + }), ).then(toSplitResults); return { diff --git a/packages/template/-private/dsl/emit.d.ts b/packages/template/-private/dsl/emit.d.ts index 4b832bf23..8d8f876fa 100644 --- a/packages/template/-private/dsl/emit.d.ts +++ b/packages/template/-private/dsl/emit.d.ts @@ -45,7 +45,7 @@ export declare function emitContent(value: ContentValue): void; * }); */ export declare function emitElement( - name: Name + name: Name, ): { element: ElementForTagName }; /* @@ -65,7 +65,7 @@ export declare function emitElement( * }); */ export declare function emitComponent>( - component: T + component: T, ): { element: T extends ComponentReturn ? El : any; blockParams: T extends ComponentReturn ? Required : any; @@ -80,7 +80,7 @@ export declare function emitComponent>( */ export declare function templateExpression< Signature extends AnyFunction = () => ComponentReturn<{}>, - Context extends AnyContext = TemplateContext + Context extends AnyContext = TemplateContext, >(f: (𝚪: Context, χ: never) => void): new () => InvokableInstance & HasContext; /* @@ -98,7 +98,7 @@ export declare function templateExpression< */ export declare function templateForBackingValue( backingValue: abstract new (...args: Args) => HasContext, - body: (𝚪: Context, χ: never) => void + body: (𝚪: Context, χ: never) => void, ): abstract new () => unknown; /* @@ -112,7 +112,7 @@ export declare function templateForBackingValue( 𝚪: Context, - to: K + to: K, ): (...values: NonNullable) => void; /* @@ -124,7 +124,7 @@ export declare function yieldToBlock(source: SourceElement, target: TargetElement): void; /* diff --git a/packages/template/-private/dsl/resolve.d.ts b/packages/template/-private/dsl/resolve.d.ts index b817d9298..8c41df10c 100644 --- a/packages/template/-private/dsl/resolve.d.ts +++ b/packages/template/-private/dsl/resolve.d.ts @@ -33,7 +33,7 @@ import { ResolveOrReturn } from './types'; export declare function resolve(item: T): T[typeof InvokeDirect]; export declare function resolve( - item: (abstract new (...args: Args) => Instance) | null | undefined + item: (abstract new (...args: Args) => Instance) | null | undefined, ): (...args: Parameters) => ReturnType; /* @@ -59,8 +59,8 @@ export declare const resolveOrReturn: ResolveOrReturn; export declare function resolveForBind(item: T): T[typeof InvokeDirect]; export declare function resolveForBind( - item: abstract new (...args: Args) => Instance + item: abstract new (...args: Args) => Instance, ): (...args: Parameters) => ReturnType; export declare function resolveForBind( - item: null | undefined | (abstract new (...args: Args) => Instance) + item: null | undefined | (abstract new (...args: Args) => Instance), ): null | ((...args: Parameters) => ReturnType); diff --git a/packages/template/-private/dsl/types.d.ts b/packages/template/-private/dsl/types.d.ts index 1d34e0010..866df7dfb 100644 --- a/packages/template/-private/dsl/types.d.ts +++ b/packages/template/-private/dsl/types.d.ts @@ -13,5 +13,5 @@ export type ElementForTagName = Name extends keyof HTMLElem ? HTMLElementTagNameMap[Name] & SVGElementTagNameMap[Name] : HTMLElementTagNameMap[Name] : Name extends keyof SVGElementTagNameMap - ? SVGElementTagNameMap[Name] - : Element; + ? SVGElementTagNameMap[Name] + : Element; diff --git a/packages/template/-private/index.d.ts b/packages/template/-private/index.d.ts index 29ba2aa21..c0484a04d 100644 --- a/packages/template/-private/index.d.ts +++ b/packages/template/-private/index.d.ts @@ -128,19 +128,17 @@ export type ModifierLike = Invokable< * consumers would still be obligated to provide a `@message` * arg when invoking the yielded component. */ -export type WithBoundArgs< - T extends Invokable, - BoundArgs extends NamedArgNames -> = T extends Invokable<(...args: [...positional: infer P, named: infer N]) => infer R> - ? Invokable< - ( - ...args: [ - ...positional: P, - ...named: MaybeNamed>, BoundArgs>> - ] - ) => R - > - : never; +export type WithBoundArgs, BoundArgs extends NamedArgNames> = + T extends Invokable<(...args: [...positional: infer P, named: infer N]) => infer R> + ? Invokable< + ( + ...args: [ + ...positional: P, + ...named: MaybeNamed>, BoundArgs>>, + ] + ) => R + > + : never; /** * Similar to `WithBoundArgs`, this utility type provides a shorthand @@ -173,13 +171,14 @@ export type WithBoundArgs< */ export type WithBoundPositionals< T extends Invokable | AnyFunction, - Count extends number -> = T extends Invokable<(el: infer El, ...args: infer A) => ModifierReturn> - ? Invokable<(el: El, ...args: SliceFrom) => ModifierReturn> - : T extends Invokable<(...args: infer A) => infer R> - ? Invokable<(...args: SliceFrom) => R> - : T extends (...args: infer A) => infer R - ? Invokable<(...args: SliceFrom) => R> - : never; + Count extends number, +> = + T extends Invokable<(el: infer El, ...args: infer A) => ModifierReturn> + ? Invokable<(el: El, ...args: SliceFrom) => ModifierReturn> + : T extends Invokable<(...args: infer A) => infer R> + ? Invokable<(...args: SliceFrom) => R> + : T extends (...args: infer A) => infer R + ? Invokable<(...args: SliceFrom) => R> + : never; export {}; diff --git a/packages/template/-private/integration.d.ts b/packages/template/-private/integration.d.ts index ec1a935bd..c19c5dfc9 100644 --- a/packages/template/-private/integration.d.ts +++ b/packages/template/-private/integration.d.ts @@ -69,12 +69,11 @@ export interface NamedArgsMarker { [NamedArgs]: true; } -export type NamedArgNames> = T extends Invokable< - (...args: infer A) => any -> - ? A extends [...positional: infer _, named?: infer N] - ? Exclude, typeof NamedArgs> - : never - : never; +export type NamedArgNames> = + T extends Invokable<(...args: infer A) => any> + ? A extends [...positional: infer _, named?: infer N] + ? Exclude, typeof NamedArgs> + : never + : never; export type UnwrapNamedArgs = T extends NamedArgs ? U : T; diff --git a/packages/template/-private/keywords/-bind-invokable.d.ts b/packages/template/-private/keywords/-bind-invokable.d.ts index e10afb0d6..9d1a45f96 100644 --- a/packages/template/-private/keywords/-bind-invokable.d.ts +++ b/packages/template/-private/keywords/-bind-invokable.d.ts @@ -7,16 +7,16 @@ type PrefixOf = T extends [arg: infer Arg, ...rest: infer R export type BindInvokableKeyword = DirectInvokable<{ // {{bind invokable}} - (invokable: (...args: Args) => T): Invokable< - (...args: Args) => T - >; ( - invokable: ((...args: Args) => T) | null | undefined + invokable: (...args: Args) => T, + ): Invokable<(...args: Args) => T>; + ( + invokable: ((...args: Args) => T) | null | undefined, ): null | Invokable<(...args: Args) => T>; // {{bind invokableWithOnlyNamedArgs name="foo"}} ( invokable: (named: NamedArgs) => Return, - named: NamedArgs & GivenNamed> + named: NamedArgs & GivenNamed>, ): Invokable< ( ...named: MaybeNamed< @@ -26,7 +26,7 @@ export type BindInvokableKeyword = DirectInvokable< >; ( invokable: null | undefined | ((named: NamedArgs) => Return), - named: NamedArgs & GivenNamed> + named: NamedArgs & GivenNamed>, ): null | Invokable< ( ...named: MaybeNamed< @@ -37,27 +37,27 @@ export type BindInvokableKeyword = DirectInvokable< // {{bind invokableWithNamedAndPositionalArgs name="foo"}} >( invokable: (...args: [...Positional, NamedArgs]) => Return, - named: GivenNamed + named: GivenNamed, ): Invokable< ( ...args: [ ...Positional, ...MaybeNamed< PrebindArgs, keyof GivenNamed & keyof UnwrapNamedArgs> - > + >, ] ) => Return >; >( invokable: (...args: [...Positional, NamedArgs]) => Return, - named: GivenNamed + named: GivenNamed, ): Invokable< ( ...args: [ ...Positional, ...MaybeNamed< PrebindArgs, keyof GivenNamed & keyof UnwrapNamedArgs> - > + >, ] ) => Return >; @@ -65,7 +65,7 @@ export type BindInvokableKeyword = DirectInvokable< < Positional extends any[], Return extends Kind, - GivenPositional extends PrefixOf> + GivenPositional extends PrefixOf>, >( invokable: (...args: [...Positional]) => Return, ...args: GivenPositional @@ -73,14 +73,14 @@ export type BindInvokableKeyword = DirectInvokable< ( ...args: [ ...SliceTo, - ...SliceFrom, GivenPositional['length']> + ...SliceFrom, GivenPositional['length']>, ] ) => Return >; < Positional extends any[], Return extends Kind, - GivenPositional extends PrefixOf> + GivenPositional extends PrefixOf>, >( invokable: null | undefined | ((...args: [...Positional]) => Return), ...args: GivenPositional @@ -88,7 +88,7 @@ export type BindInvokableKeyword = DirectInvokable< ( ...args: [ ...SliceTo, - ...SliceFrom, GivenPositional['length']> + ...SliceFrom, GivenPositional['length']>, ] ) => Return >; diff --git a/packages/template/-private/keywords/let.d.ts b/packages/template/-private/keywords/let.d.ts index 95be78447..8dc251c47 100644 --- a/packages/template/-private/keywords/let.d.ts +++ b/packages/template/-private/keywords/let.d.ts @@ -1,7 +1,9 @@ import { ComponentReturn, DirectInvokable } from '../integration'; export type LetKeyword = DirectInvokable<{ - (...values: T): ComponentReturn<{ + ( + ...values: T + ): ComponentReturn<{ default: T; }>; }>; diff --git a/packages/template/-private/signature.d.ts b/packages/template/-private/signature.d.ts index b674b2c6d..7d525fe24 100644 --- a/packages/template/-private/signature.d.ts +++ b/packages/template/-private/signature.d.ts @@ -10,7 +10,7 @@ import { NamedArgs, UnwrapNamedArgs } from './integration'; */ export type InvokableArgs = [ ...positional: Constrain, Array, []>, - ...named: MaybeNamed>> + ...named: MaybeNamed>>, ]; /** Given a signature `S`, get back the normalized `Args` type. */ @@ -72,12 +72,12 @@ export type TupleOfSize = Acc['l export type SliceTo = T['length'] extends Index ? T : T extends [...infer Rest, any?] - ? SliceTo - : []; + ? SliceTo + : []; export type SliceFrom = T extends [ ...TupleOfSize, - ...infer Rest + ...infer Rest, ] ? Rest : []; diff --git a/packages/template/__tests__/attributes.test.ts b/packages/template/__tests__/attributes.test.ts index d9664e3a6..bc20d0581 100644 --- a/packages/template/__tests__/attributes.test.ts +++ b/packages/template/__tests__/attributes.test.ts @@ -102,7 +102,7 @@ class MyComponent extends TestComponent<{ Element: HTMLImageElement }> { applySplattributes( new HTMLFormElement(), // @ts-expect-error: Trying to pass splattributes specialized for another element - element + element, ); } @@ -111,7 +111,7 @@ class MyComponent extends TestComponent<{ Element: HTMLImageElement }> { applySplattributes( new HTMLFormElement(), // @ts-expect-error: Trying to pass splattributes specialized for another element - component.element + component.element, ); } @@ -120,7 +120,7 @@ class MyComponent extends TestComponent<{ Element: HTMLImageElement }> { applySplattributes( new HTMLUnknownElement(), // @ts-expect-error: Trying to apply splattributes to a component with no root element - component.element + component.element, ); } @@ -129,7 +129,7 @@ class MyComponent extends TestComponent<{ Element: HTMLImageElement }> { applySplattributes( new HTMLAnchorElement(), // @ts-expect-error: Trying to apply splattributes for an HTML to an SVG - component.element + component.element, ); } @@ -139,8 +139,8 @@ class MyComponent extends TestComponent<{ Element: HTMLImageElement }> { applyModifier( resolve(imageModifier)( // @ts-expect-error: `imageModifier` expects an `HTMLImageElement` - div.element - ) + div.element, + ), ); } @@ -149,8 +149,8 @@ class MyComponent extends TestComponent<{ Element: HTMLImageElement }> { applyModifier( resolve(imageModifier)( // @ts-expect-error: `imageModifier` expects an `HTMLImageElement` - component.element - ) + component.element, + ), ); } @@ -159,8 +159,8 @@ class MyComponent extends TestComponent<{ Element: HTMLImageElement }> { applyModifier( resolve(imageModifier)( // @ts-expect-error: Trying to apply a modifier to a component with no root element - component.element - ) + component.element, + ), ); } @@ -169,8 +169,8 @@ class MyComponent extends TestComponent<{ Element: HTMLImageElement }> { applyModifier( resolve(anchorModifier)( // @ts-expect-error: Can't apply modifier for HTML to SVG - component.element - ) + component.element, + ), ); } @@ -179,7 +179,7 @@ class MyComponent extends TestComponent<{ Element: HTMLImageElement }> { applyAttributes( // @ts-expect-error: Trying to apply attributes to a component with no root element component.element, - { foo: 'bar' } + { foo: 'bar' }, ); } diff --git a/packages/template/__tests__/component-like.test.ts b/packages/template/__tests__/component-like.test.ts index 565c8a739..575831f5e 100644 --- a/packages/template/__tests__/component-like.test.ts +++ b/packages/template/__tests__/component-like.test.ts @@ -43,7 +43,7 @@ import TestComponent from './test-component'; resolve(YieldingComponent)( 'hi', // @ts-expect-error: extra positional arg - { values: [], ...NamedArgsMarker } + { values: [], ...NamedArgsMarker }, ); resolve(YieldingComponent)({ @@ -61,7 +61,7 @@ import TestComponent from './test-component'; { const component = emitComponent( - resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }) + resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }), ); { @@ -72,7 +72,7 @@ import TestComponent from './test-component'; { const component = emitComponent( - resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }) + resolve(YieldingComponent)({ values: [1, 2, 3], ...NamedArgsMarker }), ); { @@ -103,14 +103,14 @@ import TestComponent from './test-component'; resolve(PositionalArgsComponent)( 'hello', // @ts-expect-error: incorrect type for positional arg - 'ok' + 'ok', ); resolve(PositionalArgsComponent)( 'a', 1, // @ts-expect-error: extra positional arg - true + true, ); resolve(PositionalArgsComponent)('a'); @@ -152,7 +152,7 @@ import TestComponent from './test-component'; expectTypeOf(resolve(MyComponentReturn)).toEqualTypeOf< ( - args: NamedArgs<{ foo?: string; bar: number }> + args: NamedArgs<{ foo?: string; bar: number }>, ) => ComponentReturn<{ default: [] }, HTMLCanvasElement> >(); } @@ -198,7 +198,7 @@ import TestComponent from './test-component'; Args: { foo?: string }; Element: HTMLImageElement; Blocks: { default: [] }; - }> + }>, ).toMatchTypeOf(); // Components are contravariant with their named `Args` type diff --git a/packages/template/__tests__/custom-invokable.test.ts b/packages/template/__tests__/custom-invokable.test.ts index 223bb7de3..b4e93f48b 100644 --- a/packages/template/__tests__/custom-invokable.test.ts +++ b/packages/template/__tests__/custom-invokable.test.ts @@ -39,7 +39,7 @@ declare const caseOf: abstract new >() => InstanceType< else: []; }; }> - > + >, ]; }; }> diff --git a/packages/template/__tests__/emit-component.test.ts b/packages/template/__tests__/emit-component.test.ts index f2f2f2063..36929c0bf 100644 --- a/packages/template/__tests__/emit-component.test.ts +++ b/packages/template/__tests__/emit-component.test.ts @@ -55,7 +55,7 @@ class MyComponent extends TestComponent> { yieldToBlock( 𝚪, // @ts-expect-error: bad block - 'bad' + 'bad', )(isReady, 𝚪.args.value); // @ts-expect-error: missing params @@ -64,7 +64,7 @@ class MyComponent extends TestComponent> { yieldToBlock(𝚪, 'body')( isReady, // @ts-expect-error: wrong param type - Symbol() + Symbol(), ); }); } diff --git a/packages/template/__tests__/helper-like.test.ts b/packages/template/__tests__/helper-like.test.ts index 544999aea..6bfefe172 100644 --- a/packages/template/__tests__/helper-like.test.ts +++ b/packages/template/__tests__/helper-like.test.ts @@ -21,7 +21,7 @@ import { NamedArgs } from '../-private/integration'; info( 'Tom', // @ts-expect-error: missing named arg - { ...NamedArgsMarker } + { ...NamedArgsMarker }, ); info('Tom', { @@ -38,7 +38,7 @@ import { NamedArgs } from '../-private/integration'; 'Tom', 'Ster', // @ts-expect-error: extra positional arg - { age: 123, ...NamedArgsMarker } + { age: 123, ...NamedArgsMarker }, ); expectTypeOf(info('Tom', { age: 123, ...NamedArgsMarker })).toEqualTypeOf(); @@ -84,7 +84,7 @@ import { NamedArgs } from '../-private/integration'; 'a', 'b', // @ts-expect-error: extra positional arg - 'c' + 'c', ); expectTypeOf(or('a', 'b')).toEqualTypeOf(); diff --git a/packages/template/__tests__/keywords/component.test.ts b/packages/template/__tests__/keywords/component.test.ts index 5995229eb..36dd5252d 100644 --- a/packages/template/__tests__/keywords/component.test.ts +++ b/packages/template/__tests__/keywords/component.test.ts @@ -21,7 +21,7 @@ emitComponent(resolve(NoopCurriedStringComponent)({ value: 'hello', ...NamedArgs resolve(NoopCurriedStringComponent)( // @ts-expect-error: Invoking the curried component but forgetting `value` - { ...NamedArgsMarker } + { ...NamedArgsMarker }, ); resolve(NoopCurriedStringComponent)({ @@ -33,7 +33,7 @@ resolve(NoopCurriedStringComponent)({ // Invoking the noop-curried component with a valid block { const component = emitComponent( - resolve(NoopCurriedStringComponent)({ value: 'hello', ...NamedArgsMarker }) + resolve(NoopCurriedStringComponent)({ value: 'hello', ...NamedArgsMarker }), ); { @@ -45,7 +45,7 @@ resolve(NoopCurriedStringComponent)({ // Invoking the noop-curried component with an invalid block { const component = emitComponent( - resolve(NoopCurriedStringComponent)({ value: 'hello', ...NamedArgsMarker }) + resolve(NoopCurriedStringComponent)({ value: 'hello', ...NamedArgsMarker }), ); { @@ -65,13 +65,13 @@ emitComponent( // @ts-expect-error: Invoking the curred-with-value component with an invalid value value: 123, ...NamedArgsMarker, - }) + }), ); componentKeyword( resolveForBind(StringComponent), // @ts-expect-error: Attempting to curry an arg with the wrong type - { value: 123, ...NamedArgsMarker } + { value: 123, ...NamedArgsMarker }, ); class ParametricComponent extends TestComponent<{ @@ -90,7 +90,7 @@ const RequiredValueCurriedParametricComponent = componentKeyword( { values: ['hello'], ...NamedArgsMarker, - } + }, ); const OptionalValueCurriedParametricComponent = componentKeyword( @@ -98,13 +98,13 @@ const OptionalValueCurriedParametricComponent = componentKeyword( { optional: 'hi', ...NamedArgsMarker, - } + }, ); // Invoking the noop-curried component with number values { const component = emitComponent( - resolve(NoopCurriedParametricComponent)({ values: [1, 2, 3], ...NamedArgsMarker }) + resolve(NoopCurriedParametricComponent)({ values: [1, 2, 3], ...NamedArgsMarker }), ); { @@ -116,7 +116,7 @@ const OptionalValueCurriedParametricComponent = componentKeyword( // Invoking the noop-curried component with string values { const component = emitComponent( - resolve(NoopCurriedParametricComponent)({ values: ['hello'], ...NamedArgsMarker }) + resolve(NoopCurriedParametricComponent)({ values: ['hello'], ...NamedArgsMarker }), ); { @@ -128,8 +128,8 @@ const OptionalValueCurriedParametricComponent = componentKeyword( emitComponent( resolve(NoopCurriedParametricComponent)( // @ts-expect-error: missing required arg `values` - { ...NamedArgsMarker } - ) + { ...NamedArgsMarker }, + ), ); emitComponent( @@ -137,7 +137,7 @@ emitComponent( // @ts-expect-error: wrong type for `values` values: 'hello', ...NamedArgsMarker, - }) + }), ); emitComponent( @@ -146,14 +146,14 @@ emitComponent( // @ts-expect-error: extra arg extra: 'uh oh', ...NamedArgsMarker, - }) + }), ); // Invoking the curred component with no additional args { /** hello {@link RequiredValueCurriedParametricComponent} */ const component = emitComponent( - resolve(RequiredValueCurriedParametricComponent)({ ...NamedArgsMarker }) + resolve(RequiredValueCurriedParametricComponent)({ ...NamedArgsMarker }), ); { @@ -165,7 +165,7 @@ emitComponent( // Invoking the curred component and overriding the given arg { const component = emitComponent( - resolve(RequiredValueCurriedParametricComponent)({ values: ['ok'], ...NamedArgsMarker }) + resolve(RequiredValueCurriedParametricComponent)({ values: ['ok'], ...NamedArgsMarker }), ); { @@ -179,7 +179,7 @@ emitComponent( // @ts-expect-error: wrong type for arg override values: [1, 2, 3], ...NamedArgsMarker, - }) + }), ); emitComponent( @@ -187,13 +187,13 @@ emitComponent( // @ts-expect-error: extra arg extra: 'bad', ...NamedArgsMarker, - }) + }), ); // Invoking the curried component, supplying missing required args { const component = emitComponent( - resolve(OptionalValueCurriedParametricComponent)({ values: [1, 2, 3], ...NamedArgsMarker }) + resolve(OptionalValueCurriedParametricComponent)({ values: [1, 2, 3], ...NamedArgsMarker }), ); { @@ -205,8 +205,8 @@ emitComponent( emitComponent( resolve(OptionalValueCurriedParametricComponent)( // @ts-expect-error: missing required arg `values` - { ...NamedArgsMarker } - ) + { ...NamedArgsMarker }, + ), ); // {{component (component BoundParametricComponent values=(array "hello")) optional="hi"}} @@ -215,7 +215,7 @@ const DoubleCurriedComponent = componentKeyword( { optional: 'hi', ...NamedArgsMarker, - } + }, ); // Invoking the component with no args @@ -236,7 +236,7 @@ emitComponent( // @ts-expect-error: invalid arg override values: [1, 2, 3], ...NamedArgsMarker, - }) + }), ); emitComponent( @@ -244,5 +244,5 @@ emitComponent( // @ts-expect-error: unexpected args foo: 'bar', ...NamedArgsMarker, - }) + }), ); diff --git a/packages/template/__tests__/keywords/in-element.test.ts b/packages/template/__tests__/keywords/in-element.test.ts index 26a54e46e..54a9282df 100644 --- a/packages/template/__tests__/keywords/in-element.test.ts +++ b/packages/template/__tests__/keywords/in-element.test.ts @@ -21,7 +21,7 @@ inElementKeyword(); inElementKeyword( // @ts-expect-error: rejects invocation with `null` - null + null, ); inElementKeyword(element, { diff --git a/packages/template/__tests__/keywords/with.test.ts b/packages/template/__tests__/keywords/with.test.ts index d39a29c27..5c99641cf 100644 --- a/packages/template/__tests__/keywords/with.test.ts +++ b/packages/template/__tests__/keywords/with.test.ts @@ -21,5 +21,5 @@ const withKeyword = resolve({} as WithKeyword); withKeyword( 'hello', // @ts-expect-error: Rejects multiple values - 'goodbye' + 'goodbye', ); diff --git a/packages/template/__tests__/modifier-like.test.ts b/packages/template/__tests__/modifier-like.test.ts index 77d2779e8..dcbb7ca04 100644 --- a/packages/template/__tests__/modifier-like.test.ts +++ b/packages/template/__tests__/modifier-like.test.ts @@ -19,7 +19,7 @@ import { ModifierLike, WithBoundArgs, WithBoundPositionals } from '@glint/templa expectTypeOf(neat(el, 'hello')).toEqualTypeOf(); expectTypeOf( - neat(el, 'hello', { multiplier: 3, ...NamedArgsMarker }) + neat(el, 'hello', { multiplier: 3, ...NamedArgsMarker }), ).toEqualTypeOf(); // @ts-expect-error: missing required positional arg @@ -29,7 +29,7 @@ import { ModifierLike, WithBoundArgs, WithBoundPositionals } from '@glint/templa el, 'hello', // @ts-expect-error: extra positional arg - 'goodbye' + 'goodbye', ); neat(el, 'message', { @@ -65,19 +65,19 @@ import { ModifierLike, WithBoundArgs, WithBoundPositionals } from '@glint/templa | [ element: HTMLAudioElement, full: string, - named?: NamedArgs> + named?: NamedArgs>, ] | [ element: HTMLAudioElement, first: string, last: string, - named: NamedArgs<{ force: boolean }> + named: NamedArgs<{ force: boolean }>, ] | [ element: HTMLAudioElement, first: string, last: string, - named?: NamedArgs> + named?: NamedArgs>, ] ) => ModifierReturn >(); @@ -97,7 +97,7 @@ import { ModifierLike, WithBoundArgs, WithBoundPositionals } from '@glint/templa let el = new HTMLCanvasElement(); expectTypeOf( - onDestroy(el, (value) => value.charAt(0), { value: 'hello', ...NamedArgsMarker }) + onDestroy(el, (value) => value.charAt(0), { value: 'hello', ...NamedArgsMarker }), ).toEqualTypeOf(); // @ts-expect-error: missing required positional arg @@ -108,7 +108,7 @@ import { ModifierLike, WithBoundArgs, WithBoundPositionals } from '@glint/templa 'hello', 'goodbye', // @ts-expect-error: extra positional arg - { value: 'hi', ...NamedArgsMarker } + { value: 'hi', ...NamedArgsMarker }, ); onDestroy(el, (value: string) => value.length, { @@ -130,7 +130,7 @@ import { ModifierLike, WithBoundArgs, WithBoundPositionals } from '@glint/templa expectTypeOf(resolve(NeatModifier)).toEqualTypeOf< ( el: HTMLImageElement, - args: NamedArgs<{ multiplier?: number; input: string }> + args: NamedArgs<{ multiplier?: number; input: string }>, ) => ModifierReturn >(); } diff --git a/packages/template/__tests__/resolution.test.ts b/packages/template/__tests__/resolution.test.ts index 4e81a3fe4..c5047a835 100644 --- a/packages/template/__tests__/resolution.test.ts +++ b/packages/template/__tests__/resolution.test.ts @@ -73,7 +73,7 @@ declare function value(): T; { type TestSignature = ( args: { value: T; values: T[] }, - positional: string + positional: string, ) => ComponentReturn<{ foo: [T[], string]; otherwise: []; diff --git a/packages/type-test/__tests__/classic.test.ts b/packages/type-test/__tests__/classic.test.ts index 2663769e6..c83163e26 100644 --- a/packages/type-test/__tests__/classic.test.ts +++ b/packages/type-test/__tests__/classic.test.ts @@ -35,5 +35,5 @@ typeTest( {{@expectTypeOf this.hello @to.beAssignableToTypeOf this.string}} {{! @glint-expect-error: string is not assignable to 'hello' }} {{@expectTypeOf this.string @to.beAssignableToTypeOf this.hello}} - ` + `, ); diff --git a/packages/type-test/src/index.ts b/packages/type-test/src/index.ts index 0a745dcad..799951d09 100644 --- a/packages/type-test/src/index.ts +++ b/packages/type-test/src/index.ts @@ -49,12 +49,12 @@ type TypeTestTemplate = abstract new () => HasContext<{ type ExpectTypeOf = DirectInvokable<{ ( actual: T, - expectation: UnaryExpectation + expectation: UnaryExpectation, ): UnaryExpectations[E] extends [false, infer M] ? UnmetExpectation : void; ( actual: T, expectation: BinaryExpectation, - expected: U + expected: U, ): BinaryExpectations[E] extends [false, infer M] ? UnmetExpectation : void; }>; diff --git a/packages/vscode/__tests__/smoketest-ember.test.ts b/packages/vscode/__tests__/smoketest-ember.test.ts index f9022277e..94bc761a3 100644 --- a/packages/vscode/__tests__/smoketest-ember.test.ts +++ b/packages/vscode/__tests__/smoketest-ember.test.ts @@ -121,7 +121,7 @@ describe('Smoke test: Ember', () => { let positions = (await commands.executeCommand( 'vscode.executeDefinitionProvider', templateURI, - new Position(0, 11) + new Position(0, 11), )) as Array; expect(positions.length).toBe(1); @@ -140,7 +140,7 @@ describe('Smoke test: Ember', () => { let positions = (await commands.executeCommand( 'vscode.executeDefinitionProvider', templateURI, - new Position(0, 11) + new Position(0, 11), )) as Array; expect(positions.length).toBe(1); @@ -159,7 +159,7 @@ describe('Smoke test: Ember', () => { let positions = (await commands.executeCommand( 'vscode.executeDefinitionProvider', templateURI, - new Position(0, 11) + new Position(0, 11), )) as Array; expect(positions.length).toBe(1); @@ -180,7 +180,7 @@ describe('Smoke test: Ember', () => { let positions = (await commands.executeCommand( 'vscode.executeDefinitionProvider', templateURI, - new Position(0, 12) + new Position(0, 12), )) as Array; expect(positions.length).toBe(1); @@ -199,7 +199,7 @@ describe('Smoke test: Ember', () => { let positions = (await commands.executeCommand( 'vscode.executeDefinitionProvider', templateURI, - new Position(0, 12) + new Position(0, 12), )) as Array; expect(positions.length).toBe(1); @@ -218,7 +218,7 @@ describe('Smoke test: Ember', () => { let positions = (await commands.executeCommand( 'vscode.executeDefinitionProvider', templateURI, - new Position(0, 12) + new Position(0, 12), )) as Array; expect(positions.length).toBe(1); @@ -237,7 +237,7 @@ describe('Smoke test: Ember', () => { let positions = (await commands.executeCommand( 'vscode.executeDefinitionProvider', templateURI, - new Position(0, 12) + new Position(0, 12), )) as Array; expect(positions.length).toBe(1); @@ -271,7 +271,7 @@ describe('Smoke test: Ember', () => { const fixes = await commands.executeCommand( 'vscode.executeCodeActionProvider', templateURI, - new Range(new Position(2, 8), new Position(2, 8)) + new Range(new Position(2, 8), new Position(2, 8)), ); expect(fixes.length).toBe(3); diff --git a/packages/vscode/__tests__/smoketest-template-imports.test.ts b/packages/vscode/__tests__/smoketest-template-imports.test.ts index 0381bcfaa..cdad6ab4c 100644 --- a/packages/vscode/__tests__/smoketest-template-imports.test.ts +++ b/packages/vscode/__tests__/smoketest-template-imports.test.ts @@ -84,7 +84,7 @@ describe('Smoke test: ETI Environment', () => { const fixes = await commands.executeCommand( 'vscode.executeCodeActionProvider', scriptURI, - new Range(new Position(10, 9), new Position(10, 9)) + new Range(new Position(10, 9), new Position(10, 9)), ); expect(fixes.length).toBe(3); @@ -97,7 +97,7 @@ describe('Smoke test: ETI Environment', () => { await waitUntil( () => scriptEditor.document.getText().includes('undocumentedProperty: any') && - languages.getDiagnostics(scriptURI).length === 0 + languages.getDiagnostics(scriptURI).length === 0, ); }); }); @@ -122,7 +122,7 @@ describe('Smoke test: ETI Environment', () => { const fixes = await commands.executeCommand( 'vscode.executeCodeActionProvider', scriptURI, - new Range(new Position(10, 12), new Position(10, 12)) + new Range(new Position(10, 12), new Position(10, 12)), ); expect(fixes.length).toBe(3); @@ -135,7 +135,7 @@ describe('Smoke test: ETI Environment', () => { await waitUntil( () => scriptEditor.document.getText().includes('localProp: any') && - languages.getDiagnostics(scriptURI).length + languages.getDiagnostics(scriptURI).length, ); }); }); diff --git a/packages/vscode/src/extension.ts b/packages/vscode/src/extension.ts index 96d31dc3f..9ba9ec043 100644 --- a/packages/vscode/src/extension.ts +++ b/packages/vscode/src/extension.ts @@ -43,14 +43,14 @@ export function activate(context: ExtensionContext): LabsInfo { context.subscriptions.push(fileWatcher, createConfigWatcher()); context.subscriptions.push( commands.registerCommand('glint.restart-language-server', restartClients), - commands.registerTextEditorCommand('glint.show-debug-ir', showDebugIR) + commands.registerTextEditorCommand('glint.show-debug-ir', showDebugIR), ); // TODO: how to each multiple workspace reloads with VolarLabs? const volarLabs = createLabsInfo(languageServerProtocol); workspace.workspaceFolders?.forEach((folder) => - addWorkspaceFolder(context, folder, fileWatcher, volarLabs) + addWorkspaceFolder(context, folder, fileWatcher, volarLabs), ); workspace.onDidChangeWorkspaceFolders(({ added, removed }) => { added.forEach((folder) => addWorkspaceFolder(context, folder, fileWatcher)); @@ -109,7 +109,7 @@ async function showDebugIR(editor: TextEditor): Promise { async function reloadAllWorkspaces( context: ExtensionContext, - fileWatcher: FileSystemWatcher + fileWatcher: FileSystemWatcher, ): Promise { let folders = workspace.workspaceFolders ?? []; @@ -117,7 +117,7 @@ async function reloadAllWorkspaces( folders.map(async (folder) => { await removeWorkspaceFolder(folder); await addWorkspaceFolder(context, folder, fileWatcher); - }) + }), ); } @@ -125,7 +125,7 @@ async function addWorkspaceFolder( context: ExtensionContext, workspaceFolder: WorkspaceFolder, watcher: FileSystemWatcher, - volarLabs?: ReturnType + volarLabs?: ReturnType, ): Promise { let folderPath = workspaceFolder.uri.fsPath; if (clients.has(folderPath)) return; @@ -138,12 +138,12 @@ async function addWorkspaceFolder( const typescriptFormatOptions = getOptions(workspace.getConfiguration('typescript'), 'format'); const typescriptUserPreferences = getOptions( workspace.getConfiguration('typescript'), - 'preferences' + 'preferences', ); const javascriptFormatOptions = getOptions(workspace.getConfiguration('javascript'), 'format'); const javascriptUserPreferences = getOptions( workspace.getConfiguration('javascript'), - 'preferences' + 'preferences', ); let client = new LanguageClient('glint', 'Glint', serverOptions, { @@ -197,8 +197,8 @@ function findLanguageServer(workspaceDir: string): string | null { // project, though, we leave a message in our channel explaining why we didn't launch. outputChannel.appendLine( `Unable to resolve @glint/core from ${resolutionDir} — not launching Glint for this directory.\n` + - `If Glint is installed in a child directory, you may wish to set the 'glint.libraryPath' option ` + - `in your workspace settings for the Glint VS Code extension.` + `If Glint is installed in a child directory, you may wish to set the 'glint.libraryPath' option ` + + `in your workspace settings for the Glint VS Code extension.`, ); return null; diff --git a/packages/vscode/syntaxes/inline.hbs.json b/packages/vscode/syntaxes/inline.hbs.json index 3127a3185..bf2f2ed81 100644 --- a/packages/vscode/syntaxes/inline.hbs.json +++ b/packages/vscode/syntaxes/inline.hbs.json @@ -1,8 +1,5 @@ { - "fileTypes": [ - "js", - "ts" - ], + "fileTypes": ["js", "ts"], "injectionSelector": "L:source.js -comment -(string -meta.embedded), L:source.ts -comment -(string -meta.embedded)", "injections": { "L:source": { @@ -148,4 +145,4 @@ } ], "scopeName": "inline.hbs" -} \ No newline at end of file +} diff --git a/packages/vscode/syntaxes/inline.template.json b/packages/vscode/syntaxes/inline.template.json index 1e2b7a7e6..0b71fc147 100644 --- a/packages/vscode/syntaxes/inline.template.json +++ b/packages/vscode/syntaxes/inline.template.json @@ -1,8 +1,5 @@ { - "fileTypes": [ - "gjs", - "gts" - ], + "fileTypes": ["gjs", "gts"], "injectionSelector": "L:source.gjs -comment -(string -meta.embedded), L:source.gts -comment -(string -meta.embedded)", "patterns": [ { @@ -89,4 +86,4 @@ } ], "scopeName": "inline.template" -} \ No newline at end of file +} diff --git a/packages/vscode/syntaxes/markdown.glimmer.codeblock.json b/packages/vscode/syntaxes/markdown.glimmer.codeblock.json index 2059b2610..053613445 100644 --- a/packages/vscode/syntaxes/markdown.glimmer.codeblock.json +++ b/packages/vscode/syntaxes/markdown.glimmer.codeblock.json @@ -291,4 +291,4 @@ } }, "scopeName": "markdown.glimmer.codeblock" -} \ No newline at end of file +} diff --git a/packages/vscode/syntaxes/source.gjs.json b/packages/vscode/syntaxes/source.gjs.json index 81e367a2c..ab88bed24 100644 --- a/packages/vscode/syntaxes/source.gjs.json +++ b/packages/vscode/syntaxes/source.gjs.json @@ -1489,4 +1489,4 @@ ] } } -} \ No newline at end of file +} diff --git a/packages/vscode/syntaxes/source.gts.json b/packages/vscode/syntaxes/source.gts.json index f876c0d5e..0bd5382cc 100644 --- a/packages/vscode/syntaxes/source.gts.json +++ b/packages/vscode/syntaxes/source.gts.json @@ -1489,4 +1489,4 @@ ] } } -} \ No newline at end of file +} diff --git a/packages/vscode/syntaxes/src/index.mjs b/packages/vscode/syntaxes/src/index.mjs index 8d38b787e..b98465e99 100644 --- a/packages/vscode/syntaxes/src/index.mjs +++ b/packages/vscode/syntaxes/src/index.mjs @@ -46,7 +46,9 @@ function mergeGlimmerSourceGrammars(grammar, injectionSelector) { ...copiedEmberHandlebarPatterns, ]; - const tagLikeContent = embeddedTemplateWithArgs.patterns.find((pattern) => pattern.begin === '(?<=\\ pattern.begin === '(?<=\\ { { private: true, workspaces: ['./main', './a', './b', './c'], - } + }, ); root.write(SHARED_TSCONFIG, JSON.stringify(BASE_TS_CONFIG, null, 2)); @@ -80,7 +80,7 @@ export async function setupCompositeProject(): Promise { '@glint-test/b': 'link:../b', }, }, - root.filePath('main') + root.filePath('main'), ); let a = await Project.createExact( @@ -99,7 +99,7 @@ export async function setupCompositeProject(): Promise { '@glint-test/c': 'link:../c', }, }, - root.filePath('a') + root.filePath('a'), ); let b = await Project.createExact( @@ -114,7 +114,7 @@ export async function setupCompositeProject(): Promise { version: '1.0.0', types: `./${INDEX_D_TS}`, }, - root.filePath('b') + root.filePath('b'), ); let c = await Project.createExact( @@ -129,7 +129,7 @@ export async function setupCompositeProject(): Promise { version: '1.0.0', types: `./${INDEX_D_TS}`, }, - root.filePath('c') + root.filePath('c'), ); main.mkdir('node_modules/@glint-test'); diff --git a/test-packages/test-utils/src/project.ts b/test-packages/test-utils/src/project.ts index 51e8654a5..d8c9c9d79 100644 --- a/test-packages/test-utils/src/project.ts +++ b/test-packages/test-utils/src/project.ts @@ -17,7 +17,7 @@ import { WorkspaceSymbolRequest, WorkspaceSymbolParams } from '@volar/language-s const require = createRequire(import.meta.url); const dirname = path.dirname(fileURLToPath(import.meta.url)); const pathToTemplatePackage = pathUtils.normalizeFilePath( - path.resolve(dirname, '../../../packages/template') + path.resolve(dirname, '../../../packages/template'), ); const fileUriToTemplatePackage = pathUtils.filePathToUri(pathToTemplatePackage); const ROOT = pathUtils.normalizeFilePath(path.resolve(dirname, '../../ephemeral')); @@ -127,7 +127,7 @@ export class Project { // Create a Range that represents the whole document const wholeDocumentRange = Range.create( Position.create(0, 0), - Position.create(Number.MAX_VALUE, Number.MAX_VALUE) + Position.create(Number.MAX_VALUE, Number.MAX_VALUE), ); const textEdit = TextEdit.replace(wholeDocumentRange, text); @@ -158,7 +158,7 @@ export class Project { const normalized = stringified .replaceAll( volarEmbeddedContentUri.toString(), - `volar-embedded-content://URI_ENCODED_PATH_TO/FILE` + `volar-embedded-content://URI_ENCODED_PATH_TO/FILE`, ) .replaceAll(this.filePath('.'), '/path/to/EPHEMERAL_TEST_PROJECT') .replaceAll(fileUriToTemplatePackage, 'file:///PATH_TO_MODULE/@glint/template'); @@ -175,7 +175,7 @@ export class Project { */ public static async create( config: TsconfigWithGlint = {}, - rootDir = newWorkingDir() + rootDir = newWorkingDir(), ): Promise { if (!rootDir.includes(ROOT)) { throw new Error('Cannot create projects outside of `ROOT` dir'); @@ -204,7 +204,7 @@ export class Project { fs.writeFileSync(path.join(project.rootDir, 'package.json'), '{}'); fs.writeFileSync( path.join(project.rootDir, 'tsconfig.json'), - JSON.stringify(tsconfig, null, 2) + JSON.stringify(tsconfig, null, 2), ); return project; @@ -218,7 +218,7 @@ export class Project { public static async createExact( tsconfig: TsconfigWithGlint, packageJson: Record = {}, - rootDir = newWorkingDir() + rootDir = newWorkingDir(), ): Promise { if (!rootDir.includes(ROOT)) { throw new Error('Cannot create projects outside of `ROOT` dir'); @@ -349,9 +349,9 @@ class Watch { reject( new Error( `Timed out waiting to see ${JSON.stringify(target)}. Instead saw: ${JSON.stringify( - output - )}` - ) + output, + )}`, + ), ); }, timeout); diff --git a/test-packages/ts-ember-app/app/components/wrapper-component.ts b/test-packages/ts-ember-app/app/components/wrapper-component.ts index 0fe04e1fe..c107f2851 100644 --- a/test-packages/ts-ember-app/app/components/wrapper-component.ts +++ b/test-packages/ts-ember-app/app/components/wrapper-component.ts @@ -14,7 +14,7 @@ interface WrapperComponentSignature { InnerComponent: WithBoundArgs; MaybeComponent?: ComponentLike<{ Args: { key: string } }>; stringValue?: string; - } + }, ]; }; } diff --git a/test-packages/ts-ember-app/app/index.html b/test-packages/ts-ember-app/app/index.html index 79b570abf..93eb837dc 100644 --- a/test-packages/ts-ember-app/app/index.html +++ b/test-packages/ts-ember-app/app/index.html @@ -1,4 +1,4 @@ - + diff --git a/test-packages/ts-ember-app/tests/index.html b/test-packages/ts-ember-app/tests/index.html index c0fde875b..b83415d89 100644 --- a/test-packages/ts-ember-app/tests/index.html +++ b/test-packages/ts-ember-app/tests/index.html @@ -1,4 +1,4 @@ - + diff --git a/test-packages/ts-ember-preview-types/app/components/wrapper-component.ts b/test-packages/ts-ember-preview-types/app/components/wrapper-component.ts index ad0b1d881..939f9ca80 100644 --- a/test-packages/ts-ember-preview-types/app/components/wrapper-component.ts +++ b/test-packages/ts-ember-preview-types/app/components/wrapper-component.ts @@ -13,7 +13,7 @@ interface WrapperComponentSignature { InnerComponent: WithBoundArgs; MaybeComponent?: ComponentLike<{ Args: { key: string } }>; stringValue?: string; - } + }, ]; }; } diff --git a/test-packages/ts-template-imports-app/src/normal.ts b/test-packages/ts-template-imports-app/src/normal.ts index 7f045ad7d..8add40d79 100644 --- a/test-packages/ts-template-imports-app/src/normal.ts +++ b/test-packages/ts-template-imports-app/src/normal.ts @@ -7,4 +7,4 @@ export class Foo {} let b: C; f; f; -let a: O; \ No newline at end of file +let a: O; diff --git a/test-packages/ts-template-imports-app/src/other.ts b/test-packages/ts-template-imports-app/src/other.ts index 7d7f673e9..4bf93fdbb 100644 --- a/test-packages/ts-template-imports-app/src/other.ts +++ b/test-packages/ts-template-imports-app/src/other.ts @@ -1,3 +1 @@ -export class Other { - -} \ No newline at end of file +export class Other {} diff --git a/tsconfig.compileroptions.json b/tsconfig.compileroptions.json index faff2f7dc..d4ac8bc17 100644 --- a/tsconfig.compileroptions.json +++ b/tsconfig.compileroptions.json @@ -15,8 +15,8 @@ "declarationMap": true, "sourceMap": true, "types": ["@types/node"], - + // new - "allowSyntheticDefaultImports": true, + "allowSyntheticDefaultImports": true } } From 4b7a1413774f670dd682d35b78ff8125d28491bb Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:46:05 -0400 Subject: [PATCH 08/10] Fix requirements for yarn@1 workspaces run See: https://github.com/yarnpkg/yarn/issues/6739 --- packages/core/package.json | 2 ++ packages/environment-ember-loose/package.json | 2 ++ packages/environment-ember-template-imports/package.json | 2 ++ packages/scripts/package.json | 2 ++ packages/template/package.json | 4 +++- packages/type-test/package.json | 4 +++- packages/vscode/package.json | 2 ++ test-packages/test-utils/package.json | 4 +++- test-packages/ts-ember-app/package.json | 1 + test-packages/ts-ember-preview-types/package.json | 4 +++- test-packages/ts-template-imports-app/package.json | 4 +++- test-packages/unstable-release/package.json | 3 +++ 12 files changed, 29 insertions(+), 5 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index e224a1f9d..34c70a10a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -24,6 +24,8 @@ }, "scripts": { "test": "vitest run", + "test:typecheck": "echo 'no standalone typecheck within this project'", + "test:tsc": "echo 'no standalone typecheck within this project'", "test:watch": "vitest watch", "build": "tsc --build", "prepack": "yarn build" diff --git a/packages/environment-ember-loose/package.json b/packages/environment-ember-loose/package.json index 5262937d9..174894979 100644 --- a/packages/environment-ember-loose/package.json +++ b/packages/environment-ember-loose/package.json @@ -16,6 +16,8 @@ "glint-environment" ], "scripts": { + "test": "echo 'no tests within this project'", + "test:tsc": "echo 'no standalone typecheck within this project'", "test:typecheck": "glint --project __tests__/type-tests && vitest run", "test:watch": "vitest watch", "build": "tsc --build", diff --git a/packages/environment-ember-template-imports/package.json b/packages/environment-ember-template-imports/package.json index 68bb164cb..472d7a94c 100644 --- a/packages/environment-ember-template-imports/package.json +++ b/packages/environment-ember-template-imports/package.json @@ -17,6 +17,8 @@ ], "scripts": { "test": "vitest run", + "test:typecheck": "echo 'no standalone typecheck within this project'", + "test:tsc": "echo 'no standalone typecheck within this project'", "test:watch": "vitest watch", "build": "tsc --build", "prepack": "yarn build" diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 3c5ef2f4a..86be19784 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -20,6 +20,8 @@ }, "scripts": { "test": "vitest run", + "test:typecheck": "echo 'no standalone typecheck within this project'", + "test:tsc": "echo 'no standalone typecheck within this project'", "build": "tsc --build", "prepack": "yarn build" }, diff --git a/packages/template/package.json b/packages/template/package.json index a3c386b63..774287882 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -7,7 +7,9 @@ "author": "Dan Freeman (https://github.com/dfreeman)", "types": "-private/index.d.ts", "scripts": { - "test:typecheck": "tsc --project __tests__" + "test": "echo 'no standalone tests within this project'", + "test:typecheck": "tsc --project __tests__", + "test:tsc": "echo 'no standalone typecheck within this project'" }, "files": [ "README.md", diff --git a/packages/type-test/package.json b/packages/type-test/package.json index e2df27b64..53c74fecb 100644 --- a/packages/type-test/package.json +++ b/packages/type-test/package.json @@ -15,7 +15,9 @@ "lib" ], "scripts": { - "test:typecheck": "glint -p __tests__" + "test": "echo 'no standalone tests within this project'", + "test:typecheck": "glint -p __tests__", + "test:tsc": "echo 'no standalone tsc within this project'" }, "dependencies": { "expect-type": "^0.15.0" diff --git a/packages/vscode/package.json b/packages/vscode/package.json index 8a78f1541..d378beb0a 100644 --- a/packages/vscode/package.json +++ b/packages/vscode/package.json @@ -26,6 +26,8 @@ "scripts": { "pretest": "yarn build", "test": "node lib/__tests__/support/launch-from-cli.mjs", + "test:typecheck": "echo 'no standalone typecheck within this project'", + "test:tsc": "echo 'no standalone tsc within this project'", "build": "yarn compile && yarn bundle", "compile": "tsc --build", "bundle": "esbuild lib/src/extension.js --bundle --outfile=dist/extension.js --platform=node --external:vscode --minify", diff --git a/test-packages/test-utils/package.json b/test-packages/test-utils/package.json index cb07fe600..5bab68b4b 100644 --- a/test-packages/test-utils/package.json +++ b/test-packages/test-utils/package.json @@ -10,6 +10,8 @@ "execa": "^7.1.1" }, "scripts": { - "test": "true" + "test": "true", + "test:typecheck": "echo 'no standalone typecheck within this project'", + "test:tsc": "echo 'no standalone tsc within this project'" } } diff --git a/test-packages/ts-ember-app/package.json b/test-packages/ts-ember-app/package.json index db29197fe..e378b47fd 100644 --- a/test-packages/ts-ember-app/package.json +++ b/test-packages/ts-ember-app/package.json @@ -19,6 +19,7 @@ "lint:js": "eslint . --cache", "lint:js:fix": "eslint . --fix", "start": "ember serve", + "test": "echo 'no standalone tests within this project'", "test:typecheck": "glint", "test:tsc": "tsc --noEmit" }, diff --git a/test-packages/ts-ember-preview-types/package.json b/test-packages/ts-ember-preview-types/package.json index 1e88e50d7..bda48b7de 100644 --- a/test-packages/ts-ember-preview-types/package.json +++ b/test-packages/ts-ember-preview-types/package.json @@ -11,7 +11,9 @@ "test": "tests" }, "scripts": { - "test": "true" + "test": "true", + "test:typecheck": "echo 'no standalone typecheck within this project'", + "test:tsc": "echo 'no standalone tsc within this project'" }, "devDependencies": { "@ember/optional-features": "^2.0.0", diff --git a/test-packages/ts-template-imports-app/package.json b/test-packages/ts-template-imports-app/package.json index 717f5520f..27ef44865 100644 --- a/test-packages/ts-template-imports-app/package.json +++ b/test-packages/ts-template-imports-app/package.json @@ -4,7 +4,9 @@ "private": true, "license": "MIT", "scripts": { - "test:typecheck": "glint" + "test": "echo 'no standalone test within this project'", + "test:typecheck": "glint", + "test:tsc": "echo 'no standalone tsc within this project'" }, "volta": { "extends": "../../package.json" diff --git a/test-packages/unstable-release/package.json b/test-packages/unstable-release/package.json index 3bc043913..dd24bd06d 100644 --- a/test-packages/unstable-release/package.json +++ b/test-packages/unstable-release/package.json @@ -4,6 +4,9 @@ "private": true, "type": "module", "scripts": { + "test": "echo 'no tests within this project'", + "test:typecheck": "echo 'no standalone typecheck within this project'", + "test:tsc": "echo 'no standalone tsc within this project'", "lint": "eslint . && prettier . --check", "lint:fix": "eslint . --fix && prettier . --write" }, From 191a32e36e3562a5f5db1f828df612772a7f69a0 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 21 Jun 2024 15:42:39 -0400 Subject: [PATCH 09/10] We must build before running the type tests --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 10abdcc62..da4af8f95 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,6 +44,7 @@ jobs: cache: yarn - run: yarn install --frozen-lockfile + - run: "yarn build" - run: "yarn workspaces run test:typecheck" - run: "yarn workspaces run test:tsc" @@ -68,8 +69,6 @@ jobs: ${{ runner.os }}-yarn- - name: Install Dependencies run: yarn install --frozen-lockfile - # - name: Lint - # run: yarn lint - name: Build run: yarn build - name: Run Tests From f9da4e027ebaaf36a409df8bed5fc240013bfa90 Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 21 Jun 2024 15:44:17 -0400 Subject: [PATCH 10/10] Simplify CI --- .github/workflows/ci.yml | 49 +++++++++++----------------------------- 1 file changed, 13 insertions(+), 36 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da4af8f95..1b88888f5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,23 +52,12 @@ jobs: name: Test runs-on: ubuntu-latest steps: - - name: Checkout Code - uses: actions/checkout@v3 - - name: Install Node - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: 18 - - name: Locate Yarn Cache - id: yarn-cache-dir-path - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Install Dependencies - run: yarn install --frozen-lockfile + cache: yarn + - run: yarn install --frozen-lockfile - name: Build run: yarn build - name: Run Tests @@ -115,14 +104,12 @@ jobs: name: Test Floating Dependencies runs-on: ubuntu-latest steps: - - name: Checkout Code - uses: actions/checkout@v3 - - name: Install Node - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: 18 - - name: Install Dependencies - run: yarn install --no-lockfile + cache: yarn + - run: yarn install --no-lockfile - name: Build run: yarn build - name: Run Tests @@ -134,23 +121,13 @@ jobs: name: Test TypeScript Nightly runs-on: ubuntu-latest steps: - - name: Checkout Code - uses: actions/checkout@v3 - - name: Install Node - uses: actions/setup-node@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 with: node-version: 18 - - name: Locate Yarn Cache - id: yarn-cache-dir-path - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - name: Install Dependencies - run: yarn add --dev -W typescript@next + cache: yarn + - run: yarn install --frozen-lockfile + - run: yarn add --dev -W typescript@next - name: Build run: yarn build - name: Run Tests