diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..0f45bad
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,43 @@
+name: Tests
+
+on:
+ pull_request:
+ branches:
+ - "**"
+
+ # ALLOW MANUAL RUNS
+ workflow_dispatch:
+
+jobs:
+ build:
+ strategy:
+ matrix:
+ os: [macos-latest, ubuntu-latest, windows-latest]
+ runs-on: ${{ matrix.os }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 20.x
+
+ - name: Install the package dependencies
+ run: npm ci
+
+ - name: Test extension
+ if: runner.os == 'Linux'
+ run: xvfb-run -a npm test
+
+ - name: Test extension
+ if: runner.os != 'Linux'
+ run: npm test
+
+ - name: Ensure prePublish script is working
+ if: runner.os != 'Linux'
+ run: npm run vscode:prepublish
+
+ - name: Ensure prePublish script is working
+ if: runner.os == 'Linux'
+ run: xvfb-run -a npm run vscode:prepublish
diff --git a/.gitignore b/.gitignore
index fe94435..24b7eca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,4 +7,8 @@ Gemfile.lock
Gemfile
.vscode-test
.vscode/*.dict
-*.vsix
\ No newline at end of file
+*.vsix
+
+#Ignore test output (but not the SASS files)
+src/test/sample/*
+!src/test/sample/*.scss
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
index 55ea2b2..a4e2d23 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -1,4 +1,5 @@
{
"tabWidth": 4,
- "useTabs": false
+ "useTabs": false,
+ "printWidth": 80
}
diff --git a/.vscode/launch.json b/.vscode/launch.json
index ac2815b..8c841c6 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -12,9 +12,9 @@
],
"sourceMaps": true,
"outFiles": [
- "${workspaceRoot}/out/src/**/*.js"
+ "${workspaceRoot}/**/*.{t,j}s"
],
- "preLaunchTask": "pack"
+ "preLaunchTask": "npm: vscode:prepublish"
},
{
"name": "Launch Tests",
@@ -23,14 +23,14 @@
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceRoot}",
- "--extensionTestsPath=${workspaceRoot}/out/test/index",
- "./assets/"
+ "--extensionTestsPath=${workspaceRoot}/out/test",
+ "${workspaceRoot}/src/test/sample"
],
"sourceMaps": true,
+ "preLaunchTask": "npm: pretest",
"outFiles": [
- "${workspaceRoot}/out/test/**/*.js"
+ "${workspaceRoot}/**/*.{t,j}s"
],
- "preLaunchTask": "npm: pretest"
}
]
}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 54629bf..0bbb063 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -14,5 +14,14 @@
"[NoFormat]": {
"editor.formatOnPaste": false,
"editor.formatOnSave": false
+ },
+ "explorer.fileNesting.enabled": true,
+ "explorer.fileNesting.patterns": {
+ "*.ts": "${capture}.js, ${capture}.test.ts",
+ "*.js": "${capture}.js.map, ${capture}.min.js, ${capture}.d.ts",
+ "*.jsx": "${capture}.js",
+ "*.tsx": "${capture}.ts",
+ "tsconfig.json": "tsconfig.*.json",
+ "package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb"
}
-}
+}
\ No newline at end of file
diff --git a/.vscodeignore b/.vscodeignore
index 93fec2d..5e27db6 100644
--- a/.vscodeignore
+++ b/.vscodeignore
@@ -8,8 +8,7 @@ assets/**
dist/**
images/Screenshot/**
node_modules/**
-out/announcement/**
-out/test/**
+out/**
src/**
**/*.map
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 49a3264..3df2ccb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -37,16 +37,22 @@ All notable changes to this project will be documented in this file.
### Changed
-- Switched from `sass@1.69.5` to `sass-embedded@1.79.3` - as mentioned above
+- Switched from `sass@1.69.5` to `sass-embedded@1.79.4` - as mentioned above
### Updated
- `autoprefixer` to `10.4.20` [Changelog][cl:fd]
-- `fdir` to `6.3.0` [Changelog][cl:fd]
+- `fdir` to `6.4.0` [Changelog][cl:fd]
- `picomatch` to `4.0.2` [Changelog][cl:pm]
- `postcss` to `8.4.47` [Changelog][cl:pc]
- Various dev dependency updates _(nothing user facing)_
+### Other
+
+- Fixed broken tests and added added several new tests
+- Added test badge to README
+- Code formatting and linting
+
## [6.1.2] - 2023-11-22
[Compare to previous release][comp:6.1.2]
@@ -843,3 +849,4 @@ All notable changes to this project will be documented in this file.
[cl:pc]: https://github.com/postcss/postcss/blob/main/CHANGELOG.md
[cl:pm]: https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md
[cl:sa]: https://github.com/sass/dart-sass/blob/main/CHANGELOG.md
+[cl:se]: https://github.com/sass/embedded-host-node/blob/main/CHANGELOG.md
diff --git a/README.md b/README.md
index 8edce6e..25d21ed 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,10 @@
# Live Sass Compiler
-[![VSCode Marketplace Badge](https://img.shields.io/vscode-marketplace/v/glenn2223.live-sass.svg?label=VSCode%20Marketplace&style=flat-square)](https://marketplace.visualstudio.com/items?itemName=glenn2223.live-sass) [![Total Install](https://img.shields.io/vscode-marketplace/d/glenn2223.live-sass.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=glenn2223.live-sass) [![Average Rating Badge](https://img.shields.io/vscode-marketplace/r/glenn2223.live-sass.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=glenn2223.live-sass) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/glenn2223/vscode-live-sass-compiler/)
+[![Icon for GitHub actions workflow status](https://img.shields.io/github/actions/workflow/status/glenn2223/vscode-live-sass-compiler/test.yml?style=for-the-badge&label=Test)](https://github.com/glenn2223/vscode-live-sass-compiler/actions/workflows/test.yml)
+[![VSCode Marketplace Badge](https://img.shields.io/vscode-marketplace/v/glenn2223.live-sass.svg?label=VSCode%20Marketplace&style=flat-square)](https://marketplace.visualstudio.com/items?itemName=glenn2223.live-sass)
+[![Total Install](https://img.shields.io/vscode-marketplace/d/glenn2223.live-sass.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=glenn2223.live-sass)
+[![Average Rating Badge](https://img.shields.io/vscode-marketplace/r/glenn2223.live-sass.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=glenn2223.live-sass)
+[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/glenn2223/vscode-live-sass-compiler/)
[](https://youtu.be/9J__JAgQbS0)
diff --git a/package-lock.json b/package-lock.json
index f6d94ac..28bbade 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,38 +10,45 @@
"license": "MIT",
"dependencies": {
"autoprefixer": "^10.4.20",
- "fdir": "^6.3.0",
+ "fdir": "^6.4.0",
"picomatch": "^4.0.2",
"postcss": "^8.4.47",
- "sass-embedded": "^1.79.3"
+ "sass-embedded": "^1.79.4"
},
"devDependencies": {
- "@rollup/plugin-commonjs": "^26.0.1",
+ "@rollup/plugin-commonjs": "^28.0.0",
"@rollup/plugin-json": "^6.1.0",
- "@rollup/plugin-node-resolve": "^15.2.3",
+ "@rollup/plugin-node-resolve": "^15.3.0",
"@rollup/plugin-terser": "^0.4.4",
- "@rollup/plugin-typescript": "^11.1.6",
- "@types/mocha": "^10.0.8",
+ "@rollup/plugin-typescript": "^12.1.0",
+ "@types/mocha": "^10.0.9",
"@types/node": "^17.0.45",
"@types/picomatch": "^3.0.1",
"@types/vscode": "1.74",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
+ "@vscode/test-cli": "^0.0.10",
+ "@vscode/test-electron": "^2.4.1",
"eslint": "^8.57.1",
"mocha": "^10.7.3",
- "rollup": "^4.22.4",
+ "rollup": "^4.24.0",
"tslib": "^2.7.0",
- "typescript": "^5.6.2",
- "vscode-test": "^1.6.1"
+ "typescript": "^5.6.3"
},
"engines": {
"vscode": "^1.74.0"
}
},
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
+ },
"node_modules/@bufbuild/protobuf": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.1.0.tgz",
- "integrity": "sha512-+2Mx67Y3skJ4NCD/qNSdBJNWtu6x6Qr53jeNg+QcwiL6mt0wK+3jwHH2x1p7xaYH6Ve2JKOVn0OxU35WsmqI9A=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.0.tgz",
+ "integrity": "sha512-+imAQkHf7U/Rwvu0wk1XWgsP3WnpCWmK7B48f0XqSNzgk64+grljTKC7pnO/xBiEMUziF7vKRfbBnOQhg126qQ=="
},
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
@@ -222,6 +229,15 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
@@ -326,17 +342,18 @@
}
},
"node_modules/@rollup/plugin-commonjs": {
- "version": "26.0.1",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz",
- "integrity": "sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==",
+ "version": "28.0.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.0.tgz",
+ "integrity": "sha512-BJcu+a+Mpq476DMXG+hevgPSl56bkUoi88dKT8t3RyUp8kGuOh+2bU8Gs7zXDlu+fyZggnJ+iOBGrb/O1SorYg==",
"dev": true,
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"commondir": "^1.0.1",
"estree-walker": "^2.0.2",
- "glob": "^10.4.1",
+ "fdir": "^6.1.1",
"is-reference": "1.2.1",
- "magic-string": "^0.30.3"
+ "magic-string": "^0.30.3",
+ "picomatch": "^2.3.1"
},
"engines": {
"node": ">=16.0.0 || 14 >= 14.17"
@@ -350,6 +367,18 @@
}
}
},
+ "node_modules/@rollup/plugin-commonjs/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/@rollup/plugin-json": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz",
@@ -371,15 +400,14 @@
}
},
"node_modules/@rollup/plugin-node-resolve": {
- "version": "15.2.3",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
- "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==",
+ "version": "15.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz",
+ "integrity": "sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==",
"dev": true,
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"@types/resolve": "1.20.2",
"deepmerge": "^4.2.2",
- "is-builtin-module": "^3.2.1",
"is-module": "^1.0.0",
"resolve": "^1.22.1"
},
@@ -418,9 +446,9 @@
}
},
"node_modules/@rollup/plugin-typescript": {
- "version": "11.1.6",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz",
- "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==",
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.0.tgz",
+ "integrity": "sha512-Kzs8KGJofe7cfTRODsnG1jNGxSvU8gVoNNd7Z/QaY25AYwe2LSSUpx/kPxqF38NYkpR8de3m51r9uwJpDlz6dg==",
"dev": true,
"dependencies": {
"@rollup/pluginutils": "^5.1.0",
@@ -444,9 +472,9 @@
}
},
"node_modules/@rollup/pluginutils": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
- "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz",
+ "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==",
"dev": true,
"dependencies": {
"@types/estree": "^1.0.0",
@@ -478,9 +506,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz",
- "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz",
+ "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==",
"cpu": [
"arm"
],
@@ -491,9 +519,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz",
- "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz",
+ "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==",
"cpu": [
"arm64"
],
@@ -504,9 +532,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz",
- "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz",
+ "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==",
"cpu": [
"arm64"
],
@@ -517,9 +545,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz",
- "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz",
+ "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==",
"cpu": [
"x64"
],
@@ -530,9 +558,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz",
- "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz",
+ "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==",
"cpu": [
"arm"
],
@@ -543,9 +571,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz",
- "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz",
+ "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==",
"cpu": [
"arm"
],
@@ -556,9 +584,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz",
- "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz",
+ "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==",
"cpu": [
"arm64"
],
@@ -569,9 +597,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz",
- "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz",
+ "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==",
"cpu": [
"arm64"
],
@@ -582,9 +610,9 @@
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz",
- "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz",
+ "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==",
"cpu": [
"ppc64"
],
@@ -595,9 +623,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz",
- "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz",
+ "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==",
"cpu": [
"riscv64"
],
@@ -608,9 +636,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz",
- "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz",
+ "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==",
"cpu": [
"s390x"
],
@@ -621,9 +649,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz",
- "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz",
+ "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==",
"cpu": [
"x64"
],
@@ -634,9 +662,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz",
- "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz",
+ "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==",
"cpu": [
"x64"
],
@@ -647,9 +675,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz",
- "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz",
+ "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==",
"cpu": [
"arm64"
],
@@ -660,9 +688,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz",
- "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz",
+ "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==",
"cpu": [
"ia32"
],
@@ -673,9 +701,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz",
- "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz",
+ "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==",
"cpu": [
"x64"
],
@@ -685,25 +713,22 @@
"win32"
]
},
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/@types/estree": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
"integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
"dev": true
},
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "dev": true
+ },
"node_modules/@types/mocha": {
- "version": "10.0.8",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.8.tgz",
- "integrity": "sha512-HfMcUmy9hTMJh66VNcmeC9iVErIZJli2bszuXc6julh5YGuRb/W5OnkHjwLNYdFlMis0sY3If5SEAp+PktdJjw==",
+ "version": "10.0.9",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.9.tgz",
+ "integrity": "sha512-sicdRoWtYevwxjOHNMPTl3vSfJM6oyW8o1wXeI7uww6b6xHg8eBznQDNSGBCDJmsE8UMxP05JgZRtsKbTqt//Q==",
"dev": true
},
"node_modules/@types/node": {
@@ -921,6 +946,45 @@
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
"dev": true
},
+ "node_modules/@vscode/test-cli": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.10.tgz",
+ "integrity": "sha512-B0mMH4ia+MOOtwNiLi79XhA+MLmUItIC8FckEuKrVAVriIuSWjt7vv4+bF8qVFiNFe4QRfzPaIZk39FZGWEwHA==",
+ "dev": true,
+ "dependencies": {
+ "@types/mocha": "^10.0.2",
+ "c8": "^9.1.0",
+ "chokidar": "^3.5.3",
+ "enhanced-resolve": "^5.15.0",
+ "glob": "^10.3.10",
+ "minimatch": "^9.0.3",
+ "mocha": "^10.2.0",
+ "supports-color": "^9.4.0",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "vscode-test": "out/bin.mjs"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@vscode/test-electron": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.4.1.tgz",
+ "integrity": "sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==",
+ "dev": true,
+ "dependencies": {
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.5",
+ "jszip": "^3.10.1",
+ "ora": "^7.0.1",
+ "semver": "^7.6.2"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/acorn": {
"version": "8.12.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
@@ -943,15 +1007,15 @@
}
},
"node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
"dev": true,
"dependencies": {
- "debug": "4"
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 6.0.0"
+ "node": ">= 14"
}
},
"node_modules/ajv": {
@@ -1085,27 +1149,25 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
- "node_modules/big-integer": {
- "version": "1.6.52",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
- "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
- "dev": true,
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/binary": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
- "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==",
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"dev": true,
- "dependencies": {
- "buffers": "~0.1.1",
- "chainsaw": "~0.1.0"
- },
- "engines": {
- "node": "*"
- }
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
"node_modules/binary-extensions": {
"version": "2.3.0",
@@ -1119,11 +1181,30 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/bluebird": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
- "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==",
- "dev": true
+ "node_modules/bl": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
+ "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
+ "dev": true,
+ "dependencies": {
+ "buffer": "^6.0.3",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/bl/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
},
"node_modules/brace-expansion": {
"version": "2.0.1",
@@ -1153,9 +1234,9 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.23.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
- "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz",
+ "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==",
"funding": [
{
"type": "opencollective",
@@ -1171,8 +1252,8 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001646",
- "electron-to-chromium": "^1.5.4",
+ "caniuse-lite": "^1.0.30001663",
+ "electron-to-chromium": "^1.5.28",
"node-releases": "^2.0.18",
"update-browserslist-db": "^1.1.0"
},
@@ -1183,6 +1264,30 @@
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
+ "node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
"node_modules/buffer-builder": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz",
@@ -1194,34 +1299,29 @@
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
- "node_modules/buffer-indexof-polyfill": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
- "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/buffers": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==",
- "dev": true,
- "engines": {
- "node": ">=0.2.0"
- }
- },
- "node_modules/builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+ "node_modules/c8": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz",
+ "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==",
"dev": true,
- "engines": {
- "node": ">=6"
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@istanbuljs/schema": "^0.1.3",
+ "find-up": "^5.0.0",
+ "foreground-child": "^3.1.1",
+ "istanbul-lib-coverage": "^3.2.0",
+ "istanbul-lib-report": "^3.0.1",
+ "istanbul-reports": "^3.1.6",
+ "test-exclude": "^6.0.0",
+ "v8-to-istanbul": "^9.0.0",
+ "yargs": "^17.7.2",
+ "yargs-parser": "^21.1.1"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "bin": {
+ "c8": "bin/c8.js"
+ },
+ "engines": {
+ "node": ">=14.14.0"
}
},
"node_modules/callsites": {
@@ -1246,9 +1346,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001662",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz",
- "integrity": "sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==",
+ "version": "1.0.30001667",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz",
+ "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==",
"funding": [
{
"type": "opencollective",
@@ -1264,18 +1364,6 @@
}
]
},
- "node_modules/chainsaw": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
- "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==",
- "dev": true,
- "dependencies": {
- "traverse": ">=0.3.0 <0.4"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -1292,6 +1380,18 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -1316,27 +1416,45 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "node_modules/cli-cursor": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz",
+ "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==",
"dev": true,
"dependencies": {
- "is-glob": "^4.0.1"
+ "restore-cursor": "^4.0.0"
},
"engines": {
- "node": ">= 6"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
"dependencies": {
"string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
+ "strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
"node_modules/cliui/node_modules/emoji-regex": {
@@ -1417,6 +1535,12 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
@@ -1514,15 +1638,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
- "dev": true,
- "dependencies": {
- "readable-stream": "^2.0.2"
- }
- },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -1530,9 +1645,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.5.27",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.27.tgz",
- "integrity": "sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw=="
+ "version": "1.5.36",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.36.tgz",
+ "integrity": "sha512-HYTX8tKge/VNp6FGO+f/uVDmUkq+cEfcxYhKf15Akc4M5yxt5YmorwlAitKWjWhWQnKcDRBAQKXkhqqXMqcrjw=="
},
"node_modules/emoji-regex": {
"version": "9.2.2",
@@ -1540,6 +1655,19 @@
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true
},
+ "node_modules/enhanced-resolve": {
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/escalade": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
@@ -1564,6 +1692,7 @@
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
@@ -1653,6 +1782,18 @@
"concat-map": "0.0.1"
}
},
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/eslint/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -1752,18 +1893,6 @@
"node": ">=8.6.0"
}
},
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -1786,9 +1915,9 @@
}
},
"node_modules/fdir": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.3.0.tgz",
- "integrity": "sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==",
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz",
+ "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==",
"peerDependencies": {
"picomatch": "^3 || ^4"
},
@@ -1915,126 +2044,54 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "deprecated": "This package is no longer supported.",
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- },
- "engines": {
- "node": ">=0.6"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/fstream/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/fstream/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
+ "node_modules/glob": {
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dev": true,
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/fstream/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/fstream/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/glob": {
- "version": "10.4.5",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
- "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
- "dev": true,
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"dependencies": {
- "is-glob": "^4.0.3"
+ "is-glob": "^4.0.1"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">= 6"
}
},
"node_modules/globals": {
@@ -2113,33 +2170,58 @@
"he": "bin/he"
}
},
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true
+ },
"node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
"dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz",
+ "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==",
"dev": true,
"dependencies": {
- "agent-base": "6",
+ "agent-base": "^7.0.2",
"debug": "4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/ignore": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -2149,6 +2231,12 @@
"node": ">= 4"
}
},
+ "node_modules/immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
+ "dev": true
+ },
"node_modules/immutable": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
@@ -2208,21 +2296,6 @@
"node": ">=8"
}
},
- "node_modules/is-builtin-module": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
- "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
- "dev": true,
- "dependencies": {
- "builtin-modules": "^3.3.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/is-core-module": {
"version": "2.15.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz",
@@ -2268,6 +2341,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-interactive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
+ "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
@@ -2334,6 +2419,54 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+ "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+ "dev": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/jackspeak": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
@@ -2379,6 +2512,18 @@
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
+ "node_modules/jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "dev": true,
+ "dependencies": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -2401,11 +2546,14 @@
"node": ">= 0.8.0"
}
},
- "node_modules/listenercount": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
- "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==",
- "dev": true
+ "node_modules/lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "dev": true,
+ "dependencies": {
+ "immediate": "~3.0.5"
+ }
},
"node_modules/locate-path": {
"version": "6.0.0",
@@ -2459,6 +2607,21 @@
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -2493,6 +2656,15 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
@@ -2508,15 +2680,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
@@ -2526,18 +2689,6 @@
"node": ">=16 || 14 >=14.17"
}
},
- "node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
"node_modules/mocha": {
"version": "10.7.3",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz",
@@ -2573,6 +2724,23 @@
"node": ">= 14.0.0"
}
},
+ "node_modules/mocha/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
"node_modules/mocha/node_modules/glob": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
@@ -2605,6 +2773,20 @@
"node": ">=10"
}
},
+ "node_modules/mocha/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/mocha/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -2620,6 +2802,50 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
+ "node_modules/mocha/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/mocha/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -2680,6 +2906,21 @@
"wrappy": "1"
}
},
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/optionator": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@@ -2697,6 +2938,119 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/ora": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-7.0.1.tgz",
+ "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^5.3.0",
+ "cli-cursor": "^4.0.0",
+ "cli-spinners": "^2.9.0",
+ "is-interactive": "^2.0.0",
+ "is-unicode-supported": "^1.3.0",
+ "log-symbols": "^5.1.0",
+ "stdin-discarder": "^0.1.0",
+ "string-width": "^6.1.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ora/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/ora/node_modules/emoji-regex": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
+ "dev": true
+ },
+ "node_modules/ora/node_modules/is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/log-symbols": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz",
+ "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^5.0.0",
+ "is-unicode-supported": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/string-width": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz",
+ "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^10.2.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ora/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -2728,9 +3082,15 @@
}
},
"node_modules/package-json-from-dist": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
- "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
"dev": true
},
"node_modules/parent-module": {
@@ -2919,12 +3279,6 @@
"util-deprecate": "~1.0.1"
}
},
- "node_modules/readable-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -2984,6 +3338,28 @@
"node": ">=4"
}
},
+ "node_modules/restore-cursor": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz",
+ "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==",
+ "dev": true,
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/restore-cursor/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -3054,12 +3430,12 @@
}
},
"node_modules/rollup": {
- "version": "4.22.4",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz",
- "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz",
+ "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==",
"dev": true,
"dependencies": {
- "@types/estree": "1.0.5"
+ "@types/estree": "1.0.6"
},
"bin": {
"rollup": "dist/bin/rollup"
@@ -3069,31 +3445,25 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.22.4",
- "@rollup/rollup-android-arm64": "4.22.4",
- "@rollup/rollup-darwin-arm64": "4.22.4",
- "@rollup/rollup-darwin-x64": "4.22.4",
- "@rollup/rollup-linux-arm-gnueabihf": "4.22.4",
- "@rollup/rollup-linux-arm-musleabihf": "4.22.4",
- "@rollup/rollup-linux-arm64-gnu": "4.22.4",
- "@rollup/rollup-linux-arm64-musl": "4.22.4",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4",
- "@rollup/rollup-linux-riscv64-gnu": "4.22.4",
- "@rollup/rollup-linux-s390x-gnu": "4.22.4",
- "@rollup/rollup-linux-x64-gnu": "4.22.4",
- "@rollup/rollup-linux-x64-musl": "4.22.4",
- "@rollup/rollup-win32-arm64-msvc": "4.22.4",
- "@rollup/rollup-win32-ia32-msvc": "4.22.4",
- "@rollup/rollup-win32-x64-msvc": "4.22.4",
+ "@rollup/rollup-android-arm-eabi": "4.24.0",
+ "@rollup/rollup-android-arm64": "4.24.0",
+ "@rollup/rollup-darwin-arm64": "4.24.0",
+ "@rollup/rollup-darwin-x64": "4.24.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.24.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.24.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.24.0",
+ "@rollup/rollup-linux-arm64-musl": "4.24.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.24.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.24.0",
+ "@rollup/rollup-linux-x64-gnu": "4.24.0",
+ "@rollup/rollup-linux-x64-musl": "4.24.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.24.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.24.0",
+ "@rollup/rollup-win32-x64-msvc": "4.24.0",
"fsevents": "~2.3.2"
}
},
- "node_modules/rollup/node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dev": true
- },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -3126,29 +3496,15 @@
}
},
"node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
},
"node_modules/sass-embedded": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.79.3.tgz",
- "integrity": "sha512-zUve2qCn6uSOMZnZazLzrDWq//OQWFle5G45vJjv3B/ADIA3TXVgqHqN3u7D2vGajOGREz0HN5nhliSoKmQqZA==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.79.4.tgz",
+ "integrity": "sha512-3AATrtStMgxYjkit02/Ix8vx/P7qderYG6DHjmehfk5jiw53OaWVScmcGJSwp/d77kAkxDQ+Y0r+79VynGmrkw==",
"dependencies": {
"@bufbuild/protobuf": "^2.0.0",
"buffer-builder": "^0.2.0",
@@ -3165,32 +3521,32 @@
"node": ">=16.0.0"
},
"optionalDependencies": {
- "sass-embedded-android-arm": "1.79.3",
- "sass-embedded-android-arm64": "1.79.3",
- "sass-embedded-android-ia32": "1.79.3",
- "sass-embedded-android-riscv64": "1.79.3",
- "sass-embedded-android-x64": "1.79.3",
- "sass-embedded-darwin-arm64": "1.79.3",
- "sass-embedded-darwin-x64": "1.79.3",
- "sass-embedded-linux-arm": "1.79.3",
- "sass-embedded-linux-arm64": "1.79.3",
- "sass-embedded-linux-ia32": "1.79.3",
- "sass-embedded-linux-musl-arm": "1.79.3",
- "sass-embedded-linux-musl-arm64": "1.79.3",
- "sass-embedded-linux-musl-ia32": "1.79.3",
- "sass-embedded-linux-musl-riscv64": "1.79.3",
- "sass-embedded-linux-musl-x64": "1.79.3",
- "sass-embedded-linux-riscv64": "1.79.3",
- "sass-embedded-linux-x64": "1.79.3",
- "sass-embedded-win32-arm64": "1.79.3",
- "sass-embedded-win32-ia32": "1.79.3",
- "sass-embedded-win32-x64": "1.79.3"
+ "sass-embedded-android-arm": "1.79.4",
+ "sass-embedded-android-arm64": "1.79.4",
+ "sass-embedded-android-ia32": "1.79.4",
+ "sass-embedded-android-riscv64": "1.79.4",
+ "sass-embedded-android-x64": "1.79.4",
+ "sass-embedded-darwin-arm64": "1.79.4",
+ "sass-embedded-darwin-x64": "1.79.4",
+ "sass-embedded-linux-arm": "1.79.4",
+ "sass-embedded-linux-arm64": "1.79.4",
+ "sass-embedded-linux-ia32": "1.79.4",
+ "sass-embedded-linux-musl-arm": "1.79.4",
+ "sass-embedded-linux-musl-arm64": "1.79.4",
+ "sass-embedded-linux-musl-ia32": "1.79.4",
+ "sass-embedded-linux-musl-riscv64": "1.79.4",
+ "sass-embedded-linux-musl-x64": "1.79.4",
+ "sass-embedded-linux-riscv64": "1.79.4",
+ "sass-embedded-linux-x64": "1.79.4",
+ "sass-embedded-win32-arm64": "1.79.4",
+ "sass-embedded-win32-ia32": "1.79.4",
+ "sass-embedded-win32-x64": "1.79.4"
}
},
"node_modules/sass-embedded-android-arm": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.79.3.tgz",
- "integrity": "sha512-rrdaVDkKBLUqzdqlBFamUbeuLG+8r/QLXHIgz4qPhIDqceJH6ds0Vzrae9Ef6DhYfMatOg2xiScdatwQ8Yl/hA==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.79.4.tgz",
+ "integrity": "sha512-YOVpDGDcwWUQvktpJhYo4zOkknDpdX6ALpaeHDTX6GBUvnZfx+Widh76v+QFUhiJQ/I/hndXg1jv/PKilOHRrw==",
"cpu": [
"arm"
],
@@ -3203,9 +3559,9 @@
}
},
"node_modules/sass-embedded-android-arm64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.79.3.tgz",
- "integrity": "sha512-Wqm/WKHIDQl7w7eIQRO/GQ7EXfnwNpipCyJL7Xtb15vSAV64J4/0D/esy6GOPlVG+qcu8/XN8NV7Bf5wZ2ExUw==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.79.4.tgz",
+ "integrity": "sha512-0JAZ8TtXYv9yI3Yasaq03xvo7DLJOmD+Exb30oJKxXcWTAV9TB0ZWKoIRsFxbCyPxyn7ouxkaCEXQtaTRKrmfw==",
"cpu": [
"arm64"
],
@@ -3218,9 +3574,9 @@
}
},
"node_modules/sass-embedded-android-ia32": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.79.3.tgz",
- "integrity": "sha512-6rDmH0O7hjBP04/xBAFzSYYMU/7MrQYCak4541BZIbIfa2uw0x/8+mB7lZjdgFsBrFjcpdVCPhZPUE6Y50c00A==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.79.4.tgz",
+ "integrity": "sha512-IjO3RoyvNN84ZyfAR5s/a8TIdNPfClb7CLGrswB3BN/NElYIJUJMVHD6+Y8W9QwBIZ8DrK1IdLFSTV8nn82xMA==",
"cpu": [
"ia32"
],
@@ -3233,9 +3589,9 @@
}
},
"node_modules/sass-embedded-android-riscv64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.79.3.tgz",
- "integrity": "sha512-B/PgB0AfTCvOlF1g89raJTwTXIUQUM3OXDWqEKIlJEZM1Yao91i8ZkyrFkDMzT4G5sETy4o8pgK+qE9+7bFlug==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.79.4.tgz",
+ "integrity": "sha512-uOT8nXmKxSwuIdcqvElVWBFcm/+YcIvmwfoKbpuuSOSxUe9eqFzxo+fk7ILhynzf6FBlvRUH5DcjGj+sXtCc3w==",
"cpu": [
"riscv64"
],
@@ -3248,9 +3604,9 @@
}
},
"node_modules/sass-embedded-android-x64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.79.3.tgz",
- "integrity": "sha512-a5cpo9Yw4xnX32Uo3WfMZLaTVnI/h2n7U3K3eTygyj707yhGkUB0i+qxldzCw8MmKivIu9irG6O4kmnRjW6f7g==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.79.4.tgz",
+ "integrity": "sha512-W2FQoj3Z2J2DirNs3xSBVvrhMuqLnsqvOPulxOkhL/074+faKOZZnPx2tZ5zsHbY97SonciiU0SV0mm98xI42w==",
"cpu": [
"x64"
],
@@ -3263,9 +3619,9 @@
}
},
"node_modules/sass-embedded-darwin-arm64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.79.3.tgz",
- "integrity": "sha512-imafD0nlVz5FJhqBqxUbG5rK4E3cu1GxhMZ5VhKm0k4t5jFQo+3OjN7sHT4Ee2Mk1g8sjr5dtq5enDU4fs6lXA==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.79.4.tgz",
+ "integrity": "sha512-pcYtbN1VUAAcfgyHeX8ySndDWGjIvcq6rldduktPbGGuAlEWFDfnwjTbv0hS945ggdzZ6TFnaFlLEDr0SjKzBA==",
"cpu": [
"arm64"
],
@@ -3278,9 +3634,9 @@
}
},
"node_modules/sass-embedded-darwin-x64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.79.3.tgz",
- "integrity": "sha512-pjciT1FcMUMA4rWdpyZYSwMOvxk5JP7R6vy7TzvqkUEqXxP9FTflYnAiwgYUDVTpngHHqRxTjdyW+e+h2L9dHw==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.79.4.tgz",
+ "integrity": "sha512-ir8CFTfc4JLx/qCP8LK1/3pWv35nRyAQkUK7lBIKM6hWzztt64gcno9rZIk4SpHr7Z/Bp1IYWWRS4ZT+4HmsbA==",
"cpu": [
"x64"
],
@@ -3293,9 +3649,9 @@
}
},
"node_modules/sass-embedded-linux-arm": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.79.3.tgz",
- "integrity": "sha512-n0bDtzABPE5YaL9wSLxNPiQMl1zArsGblHJyED6fEHz41m+OkCTopfO8IVjcf+MBrK/j11gonxiIGWO+fNOxvg==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.79.4.tgz",
+ "integrity": "sha512-H/XEE3rY7c+tY0qDaELjPjC6VheAhBo1tPJQ6UHoBEf8xrbT/RT3dWiIS8grp9Vk54RCn05BEB/+POaljvvKGA==",
"cpu": [
"arm"
],
@@ -3308,9 +3664,9 @@
}
},
"node_modules/sass-embedded-linux-arm64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.79.3.tgz",
- "integrity": "sha512-ODo8ghwk6KHxchgwxq4CwgfYwWdreEbsQoukeEgRKxHcuLB9XF6tol9pGlfrc8sYox48Vp5WDCZuzgoo6rJ6tg==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.79.4.tgz",
+ "integrity": "sha512-XIVn2mCuA422SR2kmKjF6jhjMs1Vrt1DbZ/ktSp+eR0sU4ugu2htg45GajiUFSKKRj7Sc+cBdThq1zPPsDLf1w==",
"cpu": [
"arm64"
],
@@ -3323,9 +3679,9 @@
}
},
"node_modules/sass-embedded-linux-ia32": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.79.3.tgz",
- "integrity": "sha512-oC3rUyIE6mEm2etsc4CuNu6IVmB6CoSM4KsubxzCD3S37QFXq8wYbI0t9iiDdTkKb5Iu+vUyhn+tYJRVHg0tvw==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.79.4.tgz",
+ "integrity": "sha512-3nqZxV4nuUTb1ahLexVl4hsnx1KKwiGdHEf1xHWTZai6fYFMcwyNPrHySCQzFHqb5xiqSpPzzrKjuDhF6+guuQ==",
"cpu": [
"ia32"
],
@@ -3338,9 +3694,9 @@
}
},
"node_modules/sass-embedded-linux-musl-arm": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.79.3.tgz",
- "integrity": "sha512-TOUYMtDs9xoMsJSEEr7NjtcVCqVpg1eSOQHXXruJ1kiYfxwmHrCYTjTLoefbZ29mWqIq8NUaXJG4rZNDK6NzRA==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.79.4.tgz",
+ "integrity": "sha512-HnbU1DEiQdUayioNzxh2WlbTEgQRBPTgIIvof8J63QLmVItUqE7EkWYkSUy4RhO+8NsuN9wzGmGTzFBvTImU7g==",
"cpu": [
"arm"
],
@@ -3353,9 +3709,9 @@
}
},
"node_modules/sass-embedded-linux-musl-arm64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.79.3.tgz",
- "integrity": "sha512-Q9/5lsrK/JnQci3DwxZ9PGIIrRxuo/bySv+gbyVp8Kb7gdkZcEsY7HkxaBJfwVEwpZSGAyCviyZDHDMILjliOw==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.79.4.tgz",
+ "integrity": "sha512-C6qX06waPEfDgOHR8jXoYxl0EtIXOyBDyyonrLO3StRjWjGx7XMQj2hA/KXSsV+Hr71fBOsaViosqWXPzTbEiQ==",
"cpu": [
"arm64"
],
@@ -3368,9 +3724,9 @@
}
},
"node_modules/sass-embedded-linux-musl-ia32": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.79.3.tgz",
- "integrity": "sha512-T2uERh3gs9eWUzdkDadPuYbelQJQLZyX8myutUd4fxyrQ7ToQRBwcMoynEjl48DBHnM0oRiJUHrV9uFuJ+fmRA==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.79.4.tgz",
+ "integrity": "sha512-y5b0fdOPWyhj4c+mc88GvQiC5onRH1V0iNaWNjsiZ+L4hHje6T98nDLrCJn0fz5GQnXjyLCLZduMWbfV0QjHGg==",
"cpu": [
"ia32"
],
@@ -3383,9 +3739,9 @@
}
},
"node_modules/sass-embedded-linux-musl-riscv64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.79.3.tgz",
- "integrity": "sha512-XTuYtTBPFeEjydS2GsIUkMztzXIiz13noknE7m1yAbVxOchu9jD9FCLAdK9pVPPki+9BiLSxsutYwOcQn8atqQ==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.79.4.tgz",
+ "integrity": "sha512-G2M5ADMV9SqnkwpM0S+UzDz7xR2njCOhofku/sDMZABzAjQQWTsAykKoGmzlT98fTw2HbNhb6u74umf2WLhCfw==",
"cpu": [
"riscv64"
],
@@ -3398,9 +3754,9 @@
}
},
"node_modules/sass-embedded-linux-musl-x64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.79.3.tgz",
- "integrity": "sha512-gDHfaPlxT/XQTMbfb2y+U6zDMuI8pfapVXTYlUrgYhKH2KoICclIvahhjFii5i5+1dHpfGzjgYKBqI3nvZsYFg==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.79.4.tgz",
+ "integrity": "sha512-kQm8dCU3DXf7DtUGWYPiPs03KJYKvFeiZJHhSx993DCM8D2b0wCXWky0S0Z46gf1sEur0SN4Lvnt1WczTqxIBw==",
"cpu": [
"x64"
],
@@ -3413,9 +3769,9 @@
}
},
"node_modules/sass-embedded-linux-riscv64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.79.3.tgz",
- "integrity": "sha512-NONTa//1ZfxA87+Zjp3rabL+Z9gM67FJBdktRKXXMBAce5i8eCj/eqJGUOGPjYxtvxtQw77cex0qMr9SZnX6ww==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.79.4.tgz",
+ "integrity": "sha512-GaTI/mXYWYSzG5wxtM4H2cozLpATyh+4l+rO9FFKOL8e1sUOLAzTeRdU2nSBYCuRqsxRuTZIwCXhSz9Q3NRuNA==",
"cpu": [
"riscv64"
],
@@ -3428,9 +3784,9 @@
}
},
"node_modules/sass-embedded-linux-x64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.79.3.tgz",
- "integrity": "sha512-drlUqMMw222+f/T5sNrIAv+z0vQwLkO4zAlDmf4biLdWIloPP/3plTodAkMyfagNcvA8jG2jN414pJXBI3zK6w==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.79.4.tgz",
+ "integrity": "sha512-f9laGkqHgC01h99Qt4LsOV+OLMffjvUcTu14hYWqMS9QVX5a4ihMwpf1NoAtTUytb7cVF3rYY/NVGuXt6G3ppQ==",
"cpu": [
"x64"
],
@@ -3443,9 +3799,9 @@
}
},
"node_modules/sass-embedded-win32-arm64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.79.3.tgz",
- "integrity": "sha512-gYz0IUb0fLkHUbhq+HR52wvQfG75Zu1s48/v48TqC+b04H/01k2eiawp/Ec1f+lhpIL/pr5+n5jWR6CjkxPdnQ==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.79.4.tgz",
+ "integrity": "sha512-cidBvtaA2cJ6dNlwQEa8qak+ezypurzKs0h0QAHLH324+j/6Jum7LCnQhZRPYJBFjHl+WYd7KwzPnJ2X5USWnQ==",
"cpu": [
"arm64"
],
@@ -3458,9 +3814,9 @@
}
},
"node_modules/sass-embedded-win32-ia32": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.79.3.tgz",
- "integrity": "sha512-fbDTyzbqRc+xCWZ+YHSDt2WvGk5PW2K0SjyHuwes/Fls1+wdO4iHIukE/pD+HSWytYrtCqhe7EFq5Ug5HxGTLg==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.79.4.tgz",
+ "integrity": "sha512-hexdmNTIZGTKNTzlMcdvEXzYuxOJcY89zqgsf45aQ2YMy4y2M8dTOxRI/Vz7p4iRxVp1Jow6LCtaLHrNI2Ordg==",
"cpu": [
"ia32"
],
@@ -3473,9 +3829,9 @@
}
},
"node_modules/sass-embedded-win32-x64": {
- "version": "1.79.3",
- "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.79.3.tgz",
- "integrity": "sha512-vvfr6wyCaHvdQbGS8UkYab6DXc1FKJRYFT5aFE3QTVqbzCqmJ5tf80E4+gvB99nljLtMjwKR1d332iWI9KDLhw==",
+ "version": "1.79.4",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.79.4.tgz",
+ "integrity": "sha512-73yrpiWIbti6DkxhWURklkgSLYKfU9itDmvHxB+oYSb4vQveIApqTwSyTOuIUb/6Da/EsgEpdJ4Lbj4sLaMZWA==",
"cpu": [
"x64"
],
@@ -3603,6 +3959,21 @@
"source-map": "^0.6.0"
}
},
+ "node_modules/stdin-discarder": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
+ "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==",
+ "dev": true,
+ "dependencies": {
+ "bl": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -3612,12 +3983,6 @@
"safe-buffer": "~5.1.0"
}
},
- "node_modules/string_decoder/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
"node_modules/string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
@@ -3721,15 +4086,15 @@
}
},
"node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz",
+ "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==",
"dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/supports-preserve-symlinks-flag": {
@@ -3744,10 +4109,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/terser": {
- "version": "5.33.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.33.0.tgz",
- "integrity": "sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==",
+ "version": "5.34.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz",
+ "integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==",
"dev": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
@@ -3762,6 +4136,63 @@
"node": ">=10"
}
},
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/test-exclude/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/test-exclude/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/test-exclude/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -3780,15 +4211,6 @@
"node": ">=8.0"
}
},
- "node_modules/traverse": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
- "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
"node_modules/ts-api-utils": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
@@ -3831,9 +4253,9 @@
}
},
"node_modules/typescript": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
- "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
+ "version": "5.6.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
+ "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -3843,28 +4265,10 @@
"node": ">=14.17"
}
},
- "node_modules/unzipper": {
- "version": "0.10.14",
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz",
- "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==",
- "dev": true,
- "dependencies": {
- "big-integer": "^1.6.17",
- "binary": "~0.3.0",
- "bluebird": "~3.4.1",
- "buffer-indexof-polyfill": "~1.0.0",
- "duplexer2": "~0.1.4",
- "fstream": "^1.0.12",
- "graceful-fs": "^4.2.2",
- "listenercount": "~1.0.1",
- "readable-stream": "~2.3.6",
- "setimmediate": "~1.0.4"
- }
- },
"node_modules/update-browserslist-db": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
- "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
"funding": [
{
"type": "opencollective",
@@ -3880,8 +4284,8 @@
}
],
"dependencies": {
- "escalade": "^3.1.2",
- "picocolors": "^1.0.1"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -3905,27 +4309,25 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
},
- "node_modules/varint": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
- "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg=="
- },
- "node_modules/vscode-test": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz",
- "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==",
- "deprecated": "This package has been renamed to @vscode/test-electron, please update to the new name",
+ "node_modules/v8-to-istanbul": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
+ "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==",
"dev": true,
"dependencies": {
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "rimraf": "^3.0.2",
- "unzipper": "^0.10.11"
+ "@jridgewell/trace-mapping": "^0.3.12",
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^2.0.0"
},
"engines": {
- "node": ">=8.9.3"
+ "node": ">=10.12.0"
}
},
+ "node_modules/varint": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
+ "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg=="
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -4066,30 +4468,30 @@
}
},
"node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"dependencies": {
- "cliui": "^7.0.2",
+ "cliui": "^8.0.1",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "string-width": "^4.2.0",
+ "string-width": "^4.2.3",
"y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "yargs-parser": "^21.1.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/yargs-unparser": {
diff --git a/package.json b/package.json
index b1fdc87..1bd4f04 100644
--- a/package.json
+++ b/package.json
@@ -305,37 +305,39 @@
},
"homepage": "https://glenn2223.github.io/vscode-live-sass-compiler/",
"scripts": {
- "vscode:prepublish": "npm run rollup",
- "pretest": "npm run rollup && tsc -p ./src/test/",
+ "vscode:prepublish": "node ./src/test/clean.js out && npm run lint && npm run rollup",
+ "pretest": "node ./src/test/clean.js out && tsc -p ./src/tsconfig.tests.json && npm run rollup-testing",
"test": "node ./out/test/runTest.js",
"lint": "eslint -c .eslintrc.js --ext .ts ./src/",
- "rollup": "rollup --config rollup.config.ts --configPlugin @rollup/plugin-typescript"
+ "rollup": "rollup --config rollup.config.ts --configPlugin @rollup/plugin-typescript",
+ "rollup-testing": "rollup --config rollup.config.ts --configPlugin @rollup/plugin-typescript --testing"
},
"dependencies": {
"autoprefixer": "^10.4.20",
- "fdir": "^6.3.0",
+ "fdir": "^6.4.0",
"picomatch": "^4.0.2",
"postcss": "^8.4.47",
- "sass-embedded": "^1.79.3"
+ "sass-embedded": "^1.79.4"
},
"devDependencies": {
- "@rollup/plugin-commonjs": "^26.0.1",
+ "@rollup/plugin-commonjs": "^28.0.0",
"@rollup/plugin-json": "^6.1.0",
- "@rollup/plugin-node-resolve": "^15.2.3",
+ "@rollup/plugin-node-resolve": "^15.3.0",
"@rollup/plugin-terser": "^0.4.4",
- "@rollup/plugin-typescript": "^11.1.6",
- "@types/mocha": "^10.0.8",
+ "@rollup/plugin-typescript": "^12.1.0",
+ "@types/mocha": "^10.0.9",
"@types/node": "^17.0.45",
"@types/picomatch": "^3.0.1",
"@types/vscode": "1.74",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
+ "@vscode/test-cli": "^0.0.10",
+ "@vscode/test-electron": "^2.4.1",
"eslint": "^8.57.1",
"mocha": "^10.7.3",
- "rollup": "^4.22.4",
+ "rollup": "^4.24.0",
"tslib": "^2.7.0",
- "typescript": "^5.6.2",
- "vscode-test": "^1.6.1"
+ "typescript": "^5.6.3"
},
"announcement": {
"onVersion": "6.1.2",
diff --git a/rollup.config.ts b/rollup.config.ts
index 50bfa63..13d8819 100644
--- a/rollup.config.ts
+++ b/rollup.config.ts
@@ -4,6 +4,9 @@ import typescript from "@rollup/plugin-typescript";
import terser from "@rollup/plugin-terser";
import json from "@rollup/plugin-json";
import commonjs from "@rollup/plugin-commonjs";
+import { argv } from "process";
+
+const isTest = argv.includes("--testing");
export default {
input: "src/extension.ts",
@@ -12,21 +15,23 @@ export default {
{
file: "out/extension.js",
format: "cjs",
- sourcemap: false,
+ sourcemap: isTest,
compact: true,
- plugins: [{
- name: "navigtorFix",
- renderChunk(code) {
- return {
- code: `var navigator=null!==navigator&&void 0!==navigator?navigator:navigator={userAgent:null};${code}`,
- map: null,
- };
+ plugins: [
+ {
+ name: "navigtorFix",
+ renderChunk(code) {
+ return {
+ code: `var navigator=null!==navigator&&void 0!==navigator?navigator:navigator={userAgent:null};${code}`,
+ map: null,
+ };
+ },
},
- }],
+ ],
},
],
plugins: [
- typescript({ sourceMap: false }),
+ typescript({ sourceMap: isTest, tsconfig: "src/tsconfig.rollup.json" }),
json(),
terser({ format: { comments: false } }),
commonjs({
diff --git a/src/Helpers/Autoprefix.test.ts b/src/Helpers/Autoprefix.test.ts
new file mode 100644
index 0000000..56804f8
--- /dev/null
+++ b/src/Helpers/Autoprefix.test.ts
@@ -0,0 +1,69 @@
+import * as assert from "assert";
+import { autoprefix } from "./Autoprefix";
+
+suite("Autocomplete Tests", function () {
+ test("Simple test", async () => {
+ const input = ".test{display:flex}",
+ expected = ".test{display:-ms-flexbox;display:flex}",
+ actualObj = await autoprefix(
+ input,
+ undefined,
+ "input.scss",
+ ["IE 10"],
+ false
+ );
+
+ assert.equal(actualObj.css, expected);
+ });
+
+ test("Dated prefix not required (we have good support now)", async () => {
+ const input = ".test{display:flex}",
+ expected = ".test{display:flex}",
+ actualObj = await autoprefix(
+ input,
+ undefined,
+ "input.scss",
+ true,
+ false
+ );
+
+ assert.equal(actualObj.css, expected);
+ });
+
+ test("Auto removes dead prefixes", async () => {
+ const input = `
+a {
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+}`,
+ expected = `
+a {
+ border-radius: 5px;
+}`,
+ actualObj = await autoprefix(
+ input,
+ undefined,
+ "input.scss",
+ true,
+ false
+ );
+
+ assert.equal(actualObj.css, expected);
+ });
+
+ test("Incorrect list item throws", () => {
+ assert.rejects(
+ () =>
+ autoprefix(
+ ".test{display:flex}",
+ undefined,
+ "input.scss",
+ ["IE10"],
+ false
+ ),
+ {
+ message: /IE10/,
+ }
+ );
+ });
+});
diff --git a/src/Helpers/Autoprefix.ts b/src/Helpers/Autoprefix.ts
index 5aba2b1..999dd8e 100644
--- a/src/Helpers/Autoprefix.ts
+++ b/src/Helpers/Autoprefix.ts
@@ -1,6 +1,5 @@
import autoprefixer from "autoprefixer";
import postcss from "postcss";
-import * as vscode from "vscode";
import { OutputWindow } from "../VsCode/OutputWindow";
import { OutputLevel } from "../Enums/OutputLevel";
@@ -8,7 +7,6 @@ import { OutputLevel } from "../Enums/OutputLevel";
* Autoprefix CSS properties
*/
export async function autoprefix(
- folder: vscode.WorkspaceFolder | undefined,
css: string,
map: string | undefined,
savePath: string,
@@ -61,7 +59,9 @@ export async function autoprefix(
body.push(warn.text);
OutputWindow.Show(
- warn.type === "warning" ? OutputLevel.Warning : OutputLevel.Error,
+ warn.type === "warning"
+ ? OutputLevel.Warning
+ : OutputLevel.Error,
`Autoprefix ${warn.type || "error"}`,
body
);
@@ -79,9 +79,10 @@ export async function autoprefix(
OutputWindow.Show(
OutputLevel.Trace,
- `Restored BROWSERSLIST_DISABLE_CACHE to: ${oldBrowserlistCache ?? "UNDEFINED"
+ `Restored BROWSERSLIST_DISABLE_CACHE to: ${
+ oldBrowserlistCache ?? "UNDEFINED"
}`
);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Helpers/FileHelper.test.ts b/src/Helpers/FileHelper.test.ts
new file mode 100644
index 0000000..2bc078d
--- /dev/null
+++ b/src/Helpers/FileHelper.test.ts
@@ -0,0 +1,29 @@
+import * as assert from "assert";
+import { FileHelper } from "./FileHelper";
+import { statSync } from "fs";
+
+suite("FileHelper Tests", function () {
+ test("Create file doesn't reject", () => {
+ assert.doesNotReject(() =>
+ FileHelper.writeToOneFile(
+ "./doesntRejectFile.css",
+ ".test{display:flex}"
+ )
+ );
+ });
+
+ test("File exists", async () => {
+ await FileHelper.writeToOneFile(
+ "./existsFile.css",
+ ".test{display:flex}"
+ );
+
+ assert.ok(statSync("./existsFile.css").isFile());
+ });
+
+ test("Can create directory", () => {
+ FileHelper.MakeDirIfNotAvailable("./createDir");
+
+ assert.ok(statSync("./createDir").isDirectory());
+ });
+});
diff --git a/src/Helpers/SassHelper.test.ts b/src/Helpers/SassHelper.test.ts
new file mode 100644
index 0000000..f816c2b
--- /dev/null
+++ b/src/Helpers/SassHelper.test.ts
@@ -0,0 +1,68 @@
+import * as assert from "assert";
+import { Logger } from "sass-embedded";
+import path from "path";
+import { SassHelper } from "./SassHelper";
+
+const loggerProperty: Logger = {
+ warn: (message, options) => {
+ console.warn(
+ "Warning:",
+ [message].concat(
+ SassHelper.format(
+ options.span,
+ options.stack,
+ options.deprecation
+ )
+ )
+ );
+ },
+ debug: (message, options) => {
+ console.debug(
+ "Debug info:",
+ [message].concat(SassHelper.format(options.span))
+ );
+ },
+};
+
+suite("SassHelper Tests", function () {
+ const filePath = path.resolve(
+ __dirname,
+ "../../src/test/sample/css/sample.scss"
+ );
+
+ test("Simple compressed test", async () => {
+ const input = filePath,
+ expected = ".Sample{color:#000}",
+ actualObj = await SassHelper.compileOneAsync(input, "input.scss", {
+ style: "compressed",
+ logger: loggerProperty,
+ });
+
+ if (actualObj.errorString) {
+ console.log("Compile error:", actualObj.errorString);
+ }
+
+ assert.equal(actualObj.errorString, null);
+
+ assert.equal(actualObj.result?.css, expected);
+ });
+
+ test("Simple expanded test", async () => {
+ const input = filePath,
+ expected = `.Sample {
+ color: #000;
+}`,
+ actualObj = await SassHelper.compileOneAsync(input, "input.scss", {
+ style: "expanded",
+ logger: loggerProperty,
+ });
+
+ if (actualObj.errorString) {
+ console.log("Compile error:", actualObj.errorString);
+ }
+
+ assert.equal(actualObj.errorString, null);
+
+ assert.equal(actualObj.result?.css, expected);
+ });
+});
diff --git a/src/Helpers/SassHelper.ts b/src/Helpers/SassHelper.ts
index 7d70b8a..4723c7e 100644
--- a/src/Helpers/SassHelper.ts
+++ b/src/Helpers/SassHelper.ts
@@ -10,46 +10,6 @@ import { Logger, Options, SourceSpan, compileAsync } from "sass-embedded";
import { ISassCompileResult } from "../Interfaces/ISassCompileResult";
export class SassHelper {
- private static parsePath(importUrl: string, cb: (newPath: string) => T): T | null {
- if (workspace.workspaceFolders) {
- const normalisedUrl = importUrl.replace(/\\/g, "/"),
- urlParts = normalisedUrl
- .substring(1)
- .split("/")
- .filter((x) => x.length > 0);
-
- if (normalisedUrl.startsWith("~") && normalisedUrl.indexOf("/") > -1) {
- for (let i = 0; i < workspace.workspaceFolders.length; i++) {
- const workingPath = [workspace.workspaceFolders[i].uri.fsPath, "node_modules"]
- .concat(...urlParts.slice(0, -1))
- .join("/");
-
- if (existsSync(workingPath)) {
- return cb(workingPath + path.sep + urlParts.slice(-1).join(path.sep));
- }
- }
- } else if (normalisedUrl.startsWith("/")) {
- for (let i = 0; i < workspace.workspaceFolders.length; i++) {
- const folder = workspace.workspaceFolders[i],
- rootIsWorkspace = SettingsHelper.getConfigSettings(
- "rootIsWorkspace",
- folder
- );
-
- if (rootIsWorkspace) {
- const filePath = [folder.uri.fsPath, normalisedUrl.substring(1)].join("/");
-
- if (existsSync(filePath.substring(0, filePath.lastIndexOf("/")))) {
- return cb(filePath);
- }
- }
- }
- }
- }
-
- return null;
- }
-
private static readonly loggerProperty: Logger = {
warn: (
message: string,
@@ -62,7 +22,13 @@ export class SassHelper {
OutputWindow.Show(
OutputLevel.Warning,
"Warning:",
- [message].concat(this.format(options.span, options.stack, options.deprecation))
+ [message].concat(
+ this.format(
+ options.span,
+ options.stack,
+ options.deprecation
+ )
+ )
);
},
debug: (message: string, options: { span?: SourceSpan }) => {
@@ -85,7 +51,10 @@ export class SassHelper {
importers: [
{
findFileUrl: (importUrl) =>
- SassHelper.parsePath(importUrl, (newPath) => pathToFileURL(newPath)),
+ // @ts-ignore: 2322
+ SassHelper.parsePath(importUrl, (newPath) =>
+ pathToFileURL(newPath)
+ ),
},
],
logger: SassHelper.loggerProperty,
@@ -111,31 +80,97 @@ export class SassHelper {
const { css, sourceMap } = await compileAsync(SassPath, options);
if (sourceMap) {
- sourceMap.sources = sourceMap.sources.map(
- (sourcePath) =>
- path.relative(path.join(targetCssUri, "../"), fileURLToPath(sourcePath))
+ sourceMap.sources = sourceMap.sources.map((sourcePath) =>
+ path.relative(
+ path.join(targetCssUri, "../"),
+ fileURLToPath(sourcePath)
+ )
);
}
return {
result: {
css: css,
- map: sourceMap
- ? JSON.stringify(sourceMap)
- : undefined,
+ map: sourceMap ? JSON.stringify(sourceMap) : undefined,
},
errorString: null,
};
} catch (err) {
if (err instanceof Error) {
- return { result: null, errorString: err.message };
+ console.log("Error:", err.message, err);
+
+ return {
+ result: null,
+ errorString: err.name + ": " + err.message,
+ };
}
return { result: null, errorString: "Unexpected error" };
}
}
- private static format(
+ private static parsePath(
+ importUrl: string,
+ cb: (newPath: string) => T
+ ): T | null {
+ if (workspace.workspaceFolders) {
+ const normalisedUrl = importUrl.replace(/\\/g, "/"),
+ urlParts = normalisedUrl
+ .substring(1)
+ .split("/")
+ .filter((x) => x.length > 0);
+
+ if (
+ normalisedUrl.startsWith("~") &&
+ normalisedUrl.indexOf("/") > -1
+ ) {
+ for (let i = 0; i < workspace.workspaceFolders.length; i++) {
+ const workingPath = [
+ workspace.workspaceFolders[i].uri.fsPath,
+ "node_modules",
+ ]
+ .concat(...urlParts.slice(0, -1))
+ .join("/");
+
+ if (existsSync(workingPath)) {
+ return cb(
+ workingPath +
+ path.sep +
+ urlParts.slice(-1).join(path.sep)
+ );
+ }
+ }
+ } else if (normalisedUrl.startsWith("/")) {
+ for (let i = 0; i < workspace.workspaceFolders.length; i++) {
+ const folder = workspace.workspaceFolders[i],
+ rootIsWorkspace =
+ SettingsHelper.getConfigSettings(
+ "rootIsWorkspace",
+ folder
+ );
+
+ if (rootIsWorkspace) {
+ const filePath = [
+ folder.uri.fsPath,
+ normalisedUrl.substring(1),
+ ].join("/");
+
+ if (
+ existsSync(
+ filePath.substring(0, filePath.lastIndexOf("/"))
+ )
+ ) {
+ return cb(filePath);
+ }
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ static format(
span: SourceSpan | undefined | null,
stack?: string,
deprecated?: boolean
@@ -147,14 +182,18 @@ export class SassHelper {
stringArray.push(stack);
}
} else {
- stringArray.push(this.charOfLength(span.start.line.toString().length, "╷"));
+ stringArray.push(
+ this.charOfLength(span.start.line.toString().length, "╷")
+ );
let lineNumber = span.start.line;
do {
stringArray.push(
- `${lineNumber} |${span.context?.split("\n")[lineNumber - span.start.line] ??
- span.text.split("\n")[lineNumber - span.start.line]
+ `${lineNumber} |${
+ span.context?.split("\n")[
+ lineNumber - span.start.line
+ ] ?? span.text.split("\n")[lineNumber - span.start.line]
}`
);
@@ -162,25 +201,40 @@ export class SassHelper {
} while (lineNumber < span.end.line);
stringArray.push(
- this.charOfLength(span.start.line.toString().length, this.addUnderLine(span))
+ this.charOfLength(
+ span.start.line.toString().length,
+ this.addUnderLine(span)
+ )
);
- stringArray.push(this.charOfLength(span.start.line.toString().length, "╵"));
+ stringArray.push(
+ this.charOfLength(span.start.line.toString().length, "╵")
+ );
if (span.url) {
// possibly include `,${span.end.line}:${span.end.column}`, if VS Code ever supports it
- stringArray.push(`${span.url.toString()}:${span.start.line}:${span.start.column}`);
+ stringArray.push(
+ `${span.url.toString()}:${span.start.line}:${
+ span.start.column
+ }`
+ );
}
}
if (deprecated === true) {
- stringArray.push("THIS IS DEPRECATED AND WILL BE REMOVED IN SASS 2.0");
+ stringArray.push(
+ "THIS IS DEPRECATED AND WILL BE REMOVED IN SASS 2.0"
+ );
}
return stringArray;
}
- private static charOfLength(charCount: number, suffix?: string, char = " "): string {
+ private static charOfLength(
+ charCount: number,
+ suffix?: string,
+ char = " "
+ ): string {
if (charCount < 0) {
return suffix ?? "";
}
@@ -202,7 +256,11 @@ export class SassHelper {
} else {
outString +=
this.charOfLength(span.start.column - 2, "^") +
- this.charOfLength(span.end.column - span.start.column - 1, "^", ".");
+ this.charOfLength(
+ span.end.column - span.start.column - 1,
+ "^",
+ "."
+ );
}
return outString;
diff --git a/src/VsCode/StatusbarUi.ts b/src/VsCode/StatusbarUi.ts
index 92185ef..b512a15 100644
--- a/src/VsCode/StatusbarUi.ts
+++ b/src/VsCode/StatusbarUi.ts
@@ -18,7 +18,10 @@ export class StatusBarUi {
}
static init(watchOnLaunch: boolean): void {
- StatusBarUi.customMessage("Starting...", "Initializing... switching state in 1 second");
+ StatusBarUi.customMessage(
+ "Starting...",
+ "Initializing... switching state in 1 second"
+ );
setTimeout(function () {
watchOnLaunch ? StatusBarUi.watching() : StatusBarUi.notWatching();
@@ -26,12 +29,16 @@ export class StatusBarUi {
}
static watching(): void {
- OutputWindow.Show(OutputLevel.Trace, "Changing status bar to: Watching");
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Changing status bar to: Watching"
+ );
StatusBarUi.statusBarItem.text = `$(telescope) Watching...`;
StatusBarUi.statusBarItem.color = "inherit";
StatusBarUi.statusBarItem.command = "liveSass.command.donotWatchMySass";
- StatusBarUi.statusBarItem.tooltip = "Stop live compilation of SASS or SCSS to CSS";
+ StatusBarUi.statusBarItem.tooltip =
+ "Stop live compilation of SASS or SCSS to CSS";
}
static notWatching(): void {
@@ -43,7 +50,8 @@ export class StatusBarUi {
StatusBarUi.statusBarItem.text = `$(eye) Watch Sass`;
StatusBarUi.statusBarItem.color = "inherit";
StatusBarUi.statusBarItem.command = "liveSass.command.watchMySass";
- StatusBarUi.statusBarItem.tooltip = "live compilation of SASS or SCSS to CSS";
+ StatusBarUi.statusBarItem.tooltip =
+ "live compilation of SASS or SCSS to CSS";
}
static working(workingMsg = "Working on it..."): void {
@@ -59,7 +67,10 @@ export class StatusBarUi {
iconName = "pulse",
command: string | undefined = undefined
): void {
- OutputWindow.Show(OutputLevel.Trace, `Changing status bar to: "${text}"`);
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ `Changing status bar to: "${text}"`
+ );
let icon = "";
if (iconName) {
@@ -73,16 +84,21 @@ export class StatusBarUi {
// Quick status bar messages after compile success or error
static compilationSuccess(isWatching: boolean): void {
- OutputWindow.Show(OutputLevel.Trace, "Changing status bar to: Success", [
- "Registered timeout to switch state back",
- ]);
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Changing status bar to: Success",
+ ["Registered timeout to switch state back"]
+ );
StatusBarUi.statusBarItem.text = `$(check) Success`;
StatusBarUi.statusBarItem.color = "#33ff00";
StatusBarUi.statusBarItem.command = "liveSass.command.openOutputWindow";
setTimeout(function () {
- OutputWindow.Show(OutputLevel.Trace, "Firing timeout function to switch back");
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Firing timeout function to switch back"
+ );
StatusBarUi.statusBarItem.color = "inherit";
if (isWatching) {
@@ -94,7 +110,12 @@ export class StatusBarUi {
}
static compilationError(isWatching: boolean): void {
- OutputWindow.Show(OutputLevel.Trace, "Changing status bar to: Error", null, false);
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Changing status bar to: Error",
+ null,
+ false
+ );
StatusBarUi.statusBarItem.text = `$(x) Error`;
StatusBarUi.statusBarItem.color = "#ff0033";
@@ -109,7 +130,10 @@ export class StatusBarUi {
);
setTimeout(function () {
- OutputWindow.Show(OutputLevel.Trace, "Firing timeout function to switch back");
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Firing timeout function to switch back"
+ );
StatusBarUi.statusBarItem.color = "inherit";
StatusBarUi.watching();
@@ -124,6 +148,9 @@ export class StatusBarUi {
static dispose(): void {
StatusBarUi.statusBarItem.dispose();
- OutputWindow.Show(OutputLevel.Trace, "Disposing Live SASS status bar item");
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Disposing Live SASS status bar item"
+ );
}
}
diff --git a/src/appModel.ts b/src/appModel.ts
index 9c01f5e..3257bb5 100644
--- a/src/appModel.ts
+++ b/src/appModel.ts
@@ -26,7 +26,8 @@ export class AppModel {
constructor(workplaceState: vscode.Memento) {
OutputWindow.Show(OutputLevel.Trace, "Constructing app model");
- this.isWatching = SettingsHelper.getConfigSettings("watchOnLaunch");
+ this.isWatching =
+ SettingsHelper.getConfigSettings("watchOnLaunch");
this._logger = new ErrorLogger(workplaceState);
@@ -40,7 +41,8 @@ export class AppModel {
}
async StartWatching(): Promise {
- const compileOnWatch = SettingsHelper.getConfigSettings("compileOnWatch");
+ const compileOnWatch =
+ SettingsHelper.getConfigSettings("compileOnWatch");
if (!this.isWatching) {
this.isWatching = !this.isWatching;
@@ -150,7 +152,10 @@ export class AppModel {
* Compiles the currently active file
*/
async compileCurrentFile(): Promise {
- OutputWindow.Show(OutputLevel.Trace, "Starting to compile current file");
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Starting to compile current file"
+ );
try {
if (!vscode.window.activeTextEditor) {
@@ -175,9 +180,13 @@ export class AppModel {
switch (sassFileType) {
case SassConfirmationType.PartialFile:
- OutputWindow.Show(OutputLevel.Debug, "Can't process partial Sass", [
- "The file currently open in the editor window is a partial sass file, these aren't processed singly",
- ]);
+ OutputWindow.Show(
+ OutputLevel.Debug,
+ "Can't process partial Sass",
+ [
+ "The file currently open in the editor window is a partial sass file, these aren't processed singly",
+ ]
+ );
StatusBarUi.customMessage(
"Can't process partial Sass",
@@ -206,9 +215,11 @@ export class AppModel {
}
StatusBarUi.working("Processing single file...");
- OutputWindow.Show(OutputLevel.Debug, "Processing the current file", [
- `Path: ${sassPath}`,
- ]);
+ OutputWindow.Show(
+ OutputLevel.Debug,
+ "Processing the current file",
+ [`Path: ${sassPath}`]
+ );
await this.handleSingleFile(workspaceFolder, sassPath);
} catch (err) {
@@ -244,10 +255,13 @@ export class AppModel {
const currentFile = textDocument.fileName;
const workspaceFolder = AppModel.getWorkspaceFolder(
- currentFile,
- !this.isWatching
- ),
- sassFileType = this.confirmSassType(currentFile, workspaceFolder);
+ currentFile,
+ !this.isWatching
+ ),
+ sassFileType = this.confirmSassType(
+ currentFile,
+ workspaceFolder
+ );
if (sassFileType == SassConfirmationType.NotSass) {
return;
@@ -341,7 +355,7 @@ export class AppModel {
"formats",
workspaceFolder
);
-
+
return await Promise.all(
formats.map(async (format, index) => {
OutputWindow.Show(
@@ -389,7 +403,7 @@ export class AppModel {
"Starting compilation of file",
`Path: ${sassPath}`,
]);
-
+
const paths = this.generateCssAndMapUri(sassPath, format, folder);
if (paths === null) {
@@ -399,8 +413,11 @@ export class AppModel {
const options = SassHelper.toSassOptions(format);
const generateMap =
- format.generateMap ??
- SettingsHelper.getConfigSettings("generateMap", folder),
+ format.generateMap ??
+ SettingsHelper.getConfigSettings(
+ "generateMap",
+ folder
+ ),
compileResult = await SassHelper.compileOneAsync(
sassPath,
paths.css,
@@ -445,7 +462,6 @@ export class AppModel {
try {
const autoprefixerResult = await autoprefix(
- folder,
css,
map,
paths.css,
@@ -483,7 +499,8 @@ export class AppModel {
fileResolvers.forEach((fileResolver) => {
if (fileResolver.Exception) {
OutputWindow.Show(OutputLevel.Error, "Error:", [
- fileResolver.Exception.errno?.toString() ?? "UNKNOWN ERR NUMBER",
+ fileResolver.Exception.errno?.toString() ??
+ "UNKNOWN ERR NUMBER",
fileResolver.Exception.path ?? "UNKNOWN PATH",
fileResolver.Exception.message,
]);
@@ -559,14 +576,18 @@ export class AppModel {
]);
const workspacePath = workspaceRoot.uri.fsPath;
- let generatedUri = null;
+ let generatedUri: string | null = null;
// NOTE: If all SavePath settings are `NULL`, CSS Uri will be same location as SASS
if (format.savePath) {
- OutputWindow.Show(OutputLevel.Trace, "Using `savePath` setting", [
- "This format has a `savePath`, using this (takes precedence if others are present)",
- `savePath: ${format.savePath}`,
- ]);
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Using `savePath` setting",
+ [
+ "This format has a `savePath`, using this (takes precedence if others are present)",
+ `savePath: ${format.savePath}`,
+ ]
+ );
if (format.savePath.startsWith("~")) {
OutputWindow.Show(
@@ -601,7 +622,10 @@ export class AppModel {
format.savePathReplacementPairs &&
format.savePath.startsWith("~")
) {
- OutputWindow.Show(OutputLevel.Trace, `New path: ${generatedUri}`);
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ `New path: ${generatedUri}`
+ );
} else {
OutputWindow.Show(
OutputLevel.Trace,
@@ -641,7 +665,10 @@ export class AppModel {
) {
const value = format.savePathReplacementPairs[key];
- if (typeof value === "string" || value instanceof String) {
+ if (
+ typeof value === "string" ||
+ value instanceof String
+ ) {
OutputWindow.Show(
OutputLevel.Trace,
`Applying: ${key} => ${value}`,
@@ -671,7 +698,10 @@ export class AppModel {
path.join(workspacePath, generatedUri)
);
- OutputWindow.Show(OutputLevel.Trace, `New path: ${generatedUri}`);
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ `New path: ${generatedUri}`
+ );
filePath = path.join(
workspacePath,
@@ -745,11 +775,17 @@ export class AppModel {
const isPartial = picomatch(
AppModel.stripAnyLeadingSlashes(
- SettingsHelper.getConfigSettings("partialsList", workspaceFolder)
+ SettingsHelper.getConfigSettings(
+ "partialsList",
+ workspaceFolder
+ )
),
{
ignore: AppModel.stripAnyLeadingSlashes(
- SettingsHelper.getConfigSettings("excludeList", workspaceFolder)
+ SettingsHelper.getConfigSettings(
+ "excludeList",
+ workspaceFolder
+ )
),
dot: true,
nocase: true,
@@ -771,29 +807,35 @@ export class AppModel {
sassPath: string,
workspaceFolder?: vscode.WorkspaceFolder
): Promise {
- OutputWindow.Show(OutputLevel.Trace, "Checking SASS path isn't excluded", [
- `Path: ${sassPath}`,
- ]);
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Checking SASS path isn't excluded",
+ [`Path: ${sassPath}`]
+ );
if (workspaceFolder) {
- const includeItems = SettingsHelper.getConfigSettings(
- "includeItems",
- workspaceFolder
- ),
+ const includeItems = SettingsHelper.getConfigSettings<
+ string[] | null
+ >("includeItems", workspaceFolder),
excludeItems = AppModel.stripAnyLeadingSlashes(
- SettingsHelper.getConfigSettings("excludeList", workspaceFolder)
+ SettingsHelper.getConfigSettings(
+ "excludeList",
+ workspaceFolder
+ )
),
- forceBaseDirectory = SettingsHelper.getConfigSettings(
- "forceBaseDirectory",
- workspaceFolder
- );
+ forceBaseDirectory = SettingsHelper.getConfigSettings<
+ string | null
+ >("forceBaseDirectory", workspaceFolder);
let fileList = ["**/*.s[ac]ss"];
if (includeItems && includeItems.length) {
fileList = AppModel.stripAnyLeadingSlashes(
includeItems.concat(
- SettingsHelper.getConfigSettings("partialsList", workspaceFolder)
+ SettingsHelper.getConfigSettings(
+ "partialsList",
+ workspaceFolder
+ )
)
);
}
@@ -851,9 +893,17 @@ export class AppModel {
);
}
- OutputWindow.Show(OutputLevel.Trace, "Searching folder", null, false);
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Searching folder",
+ null,
+ false
+ );
- const searchLogs: Map = new Map(),
+ const searchLogs: Map = new Map<
+ string,
+ string[]
+ >(),
isMatch = picomatch(fileList, {
ignore: excludeItems,
dot: true,
@@ -872,12 +922,17 @@ export class AppModel {
filePath.toLowerCase().endsWith(".sass")
)
.filter((filePath) => {
- const result = isMatch(path.relative(basePath, filePath));
+ const result = isMatch(
+ path.relative(basePath, filePath)
+ );
searchLogs.set(`Path: ${filePath}`, [
` isMatch: ${result}`,
` - Base path: ${basePath}`,
- ` - Rela path: ${path.relative(basePath, filePath)}`,
+ ` - Rela path: ${path.relative(
+ basePath,
+ filePath
+ )}`,
]);
return result;
@@ -886,9 +941,13 @@ export class AppModel {
const result =
path
.toNamespacedPath(filePath)
- .localeCompare(path.toNamespacedPath(sassPath), undefined, {
- sensitivity: "accent",
- }) === 0;
+ .localeCompare(
+ path.toNamespacedPath(sassPath),
+ undefined,
+ {
+ sensitivity: "accent",
+ }
+ ) === 0;
searchLogs
.get(`Path: ${filePath}`)
@@ -905,7 +964,12 @@ export class AppModel {
.withPromise()
).files;
- OutputWindow.Show(OutputLevel.Trace, "Search results", undefined, false);
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Search results",
+ undefined,
+ false
+ );
searchLogs.forEach((logs, key) => {
OutputWindow.Show(OutputLevel.Trace, key, logs, false);
@@ -915,7 +979,10 @@ export class AppModel {
// If doesn't include true then it's not been found
if (searchFileCount > 0) {
- OutputWindow.Show(OutputLevel.Trace, "File found, not excluded");
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "File found, not excluded"
+ );
return false;
} else {
@@ -955,62 +1022,98 @@ export class AppModel {
) {
(
await Promise.all(
- vscode.workspace.workspaceFolders.map(async (folder, index) => {
- OutputWindow.Show(
- OutputLevel.Trace,
- `Checking folder ${index + 1} of ${vscode.workspace.workspaceFolders!.length
- }`,
- [`Folder: ${folder.name}`]
- );
-
- const includeItems = SettingsHelper.getConfigSettings(
- "includeItems",
- folder
- ),
- forceBaseDirectory = SettingsHelper.getConfigSettings(
- "forceBaseDirectory",
- folder
- );
-
- let basePath = folder.uri.fsPath,
- excludedItems = isDebugging
- ? ["**/node_modules/**", ".vscode/**"]
- : SettingsHelper.getConfigSettings("excludeList", folder);
-
- if (queryPattern) {
- queryPattern = AppModel.stripAnyLeadingSlashes(
- Array.isArray(queryPattern) ? queryPattern : [queryPattern]
- );
- } else if (includeItems && includeItems.length) {
- queryPattern = AppModel.stripAnyLeadingSlashes(includeItems);
-
+ vscode.workspace.workspaceFolders.map(
+ async (folder, index) => {
OutputWindow.Show(
OutputLevel.Trace,
- "Query pattern overwritten",
- [`New pattern(s): "${includeItems.join('" , "')}"`]
+ `Checking folder ${index + 1} of ${
+ vscode.workspace.workspaceFolders!.length
+ }`,
+ [`Folder: ${folder.name}`]
);
- }
- excludedItems = AppModel.stripAnyLeadingSlashes(excludedItems);
+ const includeItems =
+ SettingsHelper.getConfigSettings<
+ string[] | null
+ >("includeItems", folder),
+ forceBaseDirectory =
+ SettingsHelper.getConfigSettings<
+ string | null
+ >("forceBaseDirectory", folder);
+
+ let basePath = folder.uri.fsPath,
+ excludedItems = isDebugging
+ ? ["**/node_modules/**", ".vscode/**"]
+ : SettingsHelper.getConfigSettings<
+ string[]
+ >("excludeList", folder);
+
+ if (queryPattern) {
+ queryPattern = AppModel.stripAnyLeadingSlashes(
+ Array.isArray(queryPattern)
+ ? queryPattern
+ : [queryPattern]
+ );
+ } else if (includeItems && includeItems.length) {
+ queryPattern =
+ AppModel.stripAnyLeadingSlashes(
+ includeItems
+ );
- if (forceBaseDirectory && forceBaseDirectory.length > 1) {
- OutputWindow.Show(
- OutputLevel.Trace,
- "`forceBaseDirectory` setting found, checking validity"
- );
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Query pattern overwritten",
+ [
+ `New pattern(s): "${includeItems.join(
+ '" , "'
+ )}"`,
+ ]
+ );
+ }
- basePath = path.resolve(
- basePath,
- AppModel.stripLeadingSlash(forceBaseDirectory)
- );
+ excludedItems =
+ AppModel.stripAnyLeadingSlashes(excludedItems);
- try {
- if (!(await fs.promises.stat(basePath)).isDirectory()) {
+ if (
+ forceBaseDirectory &&
+ forceBaseDirectory.length > 1
+ ) {
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "`forceBaseDirectory` setting found, checking validity"
+ );
+
+ basePath = path.resolve(
+ basePath,
+ AppModel.stripLeadingSlash(
+ forceBaseDirectory
+ )
+ );
+
+ try {
+ if (
+ !(
+ await fs.promises.stat(basePath)
+ ).isDirectory()
+ ) {
+ OutputWindow.Show(
+ OutputLevel.Critical,
+ "Error with your `forceBaseDirectory` setting",
+ [
+ `Path is not a folder: ${basePath}`,
+ `Setting: "${forceBaseDirectory}"`,
+ `Workspace folder: ${folder.name}`,
+ ]
+ );
+
+ return null;
+ }
+ } catch {
OutputWindow.Show(
OutputLevel.Critical,
"Error with your `forceBaseDirectory` setting",
[
- `Path is not a folder: ${basePath}`,
+ `Can not find path: ${basePath}`,
`Setting: "${forceBaseDirectory}"`,
`Workspace folder: ${folder.name}`,
]
@@ -1018,62 +1121,59 @@ export class AppModel {
return null;
}
- } catch {
+
OutputWindow.Show(
- OutputLevel.Critical,
- "Error with your `forceBaseDirectory` setting",
- [
- `Can not find path: ${basePath}`,
- `Setting: "${forceBaseDirectory}"`,
- `Workspace folder: ${folder.name}`,
- ]
+ OutputLevel.Trace,
+ "No problem with path, changing from workspace folder",
+ [`New folder: ${basePath}`]
);
+ } else {
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "No base folder override found. Keeping workspace folder"
+ );
+ }
- return null;
+ if (!isDebugging) {
+ // Add partials to excludedItems
+ excludedItems.push(
+ ...AppModel.stripAnyLeadingSlashes(
+ SettingsHelper.getConfigSettings<
+ string[]
+ >("partialsList", folder)
+ )
+ );
}
- OutputWindow.Show(
- OutputLevel.Trace,
- "No problem with path, changing from workspace folder",
- [`New folder: ${basePath}`]
- );
- } else {
- OutputWindow.Show(
- OutputLevel.Trace,
- "No base folder override found. Keeping workspace folder"
+ const isMatch = picomatch(
+ queryPattern || ["**/*.s[ac]ss"],
+ {
+ ignore: excludedItems,
+ dot: true,
+ nocase: true,
+ }
);
- }
- if (!isDebugging) {
- // Add partials to excludedItems
- excludedItems.push(
- ...AppModel.stripAnyLeadingSlashes(
- SettingsHelper.getConfigSettings("partialsList", folder)
+ return new fdir({
+ includeBasePath: true,
+ resolvePaths: true,
+ suppressErrors: true,
+ })
+ .filter(
+ (filePath) =>
+ filePath
+ .toLowerCase()
+ .endsWith(".scss") ||
+ filePath.toLowerCase().endsWith(".sass")
)
- );
+ .filter((filePath) =>
+ isMatch(path.relative(basePath, filePath))
+ )
+ .withBasePath()
+ .crawl(basePath)
+ .withPromise();
}
-
- const isMatch = picomatch(queryPattern || ["**/*.s[ac]ss"], {
- ignore: excludedItems,
- dot: true,
- nocase: true,
- });
-
- return new fdir({
- includeBasePath: true,
- resolvePaths: true,
- suppressErrors: true,
- })
- .filter(
- (filePath) =>
- filePath.toLowerCase().endsWith(".scss") ||
- filePath.toLowerCase().endsWith(".sass")
- )
- .filter((filePath) => isMatch(path.relative(basePath, filePath)))
- .withBasePath()
- .crawl(basePath)
- .withPromise();
- })
+ )
)
).forEach((files) => {
files?.forEach((file) => {
@@ -1093,7 +1193,10 @@ export class AppModel {
}
}
- OutputWindow.Show(OutputLevel.Trace, `Found ${fileList.length} SASS files`);
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ `Found ${fileList.length} SASS files`
+ );
return fileList;
}
@@ -1135,14 +1238,20 @@ export class AppModel {
OutputWindow.Show(OutputLevel.Critical, "Not a Sass file", [
"The file currently open in the editor window isn't a sass file",
]);
- } else if (await this.isSassFileExcluded(sassPath, workspaceFolder)) {
+ } else if (
+ await this.isSassFileExcluded(sassPath, workspaceFolder)
+ ) {
OutputWindow.Show(OutputLevel.Critical, "File excluded", [
"The file is excluded based on your settings, please check your configuration",
]);
} else {
- OutputWindow.Show(OutputLevel.Critical, "File should get processed", [
- "If the file isn't being processed, run `liveSass.command.debugFileList`",
- ]);
+ OutputWindow.Show(
+ OutputLevel.Critical,
+ "File should get processed",
+ [
+ "If the file isn't being processed, run `liveSass.command.debugFileList`",
+ ]
+ );
}
} catch (err) {
const sassPath = vscode.window.activeTextEditor
@@ -1200,75 +1309,90 @@ export class AppModel {
});
await Promise.all(
- vscode.workspace.workspaceFolders!.map(async (folder, index) => {
- const folderOutput: string[] = [];
-
- folderOutput.push(
- "--------------------",
- `Checking workspace folder ${index + 1} of ${workspaceCount}`,
- `Path: ${folder.uri.fsPath}`,
- "--------------------"
- );
+ vscode.workspace.workspaceFolders!.map(
+ async (folder, index) => {
+ const folderOutput: string[] = [];
+
+ folderOutput.push(
+ "--------------------",
+ `Checking workspace folder ${
+ index + 1
+ } of ${workspaceCount}`,
+ `Path: ${folder.uri.fsPath}`,
+ "--------------------"
+ );
- const exclusionList = SettingsHelper.getConfigSettings(
- "excludeList",
- folder
- );
+ const exclusionList =
+ SettingsHelper.getConfigSettings(
+ "excludeList",
+ folder
+ );
- folderOutput.push(
- "--------------------",
- "Current Include/Exclude Settings",
- "--------------------",
- `Include: [ ${SettingsHelper.getConfigSettings(
- "includeItems",
- folder
- )?.join(", ") ?? "NULL"
- } ]`,
- `Exclude: [ ${exclusionList.join(", ")} ]`
- );
+ folderOutput.push(
+ "--------------------",
+ "Current Include/Exclude Settings",
+ "--------------------",
+ `Include: [ ${
+ SettingsHelper.getConfigSettings<
+ string[] | null
+ >("includeItems", folder)?.join(", ") ??
+ "NULL"
+ } ]`,
+ `Exclude: [ ${exclusionList.join(", ")} ]`
+ );
- folderOutput.push(
- "--------------------",
- "Included SASS Files",
- "--------------------"
- );
- (await this.getSassFiles()).map((file) => {
- folderOutput.push(file);
- });
-
- folderOutput.push(
- "--------------------",
- "Included Partial SASS Files",
- "--------------------"
- );
- (
- await this.getSassFiles(
- SettingsHelper.getConfigSettings("partialsList", folder),
- true
- )
- ).map((file) => {
- folderOutput.push(file);
- });
-
- folderOutput.push(
- "--------------------",
- "Excluded SASS Files",
- "--------------------"
- );
- if (exclusionList.length > 0) {
- (await this.getSassFiles(exclusionList, true)).map((file) => {
+ folderOutput.push(
+ "--------------------",
+ "Included SASS Files",
+ "--------------------"
+ );
+ (await this.getSassFiles()).map((file) => {
folderOutput.push(file);
});
- } else {
- folderOutput.push("NONE");
- }
- outputInfo.push(...folderOutput);
- })
+ folderOutput.push(
+ "--------------------",
+ "Included Partial SASS Files",
+ "--------------------"
+ );
+ (
+ await this.getSassFiles(
+ SettingsHelper.getConfigSettings(
+ "partialsList",
+ folder
+ ),
+ true
+ )
+ ).map((file) => {
+ folderOutput.push(file);
+ });
+
+ folderOutput.push(
+ "--------------------",
+ "Excluded SASS Files",
+ "--------------------"
+ );
+ if (exclusionList.length > 0) {
+ (
+ await this.getSassFiles(exclusionList, true)
+ ).map((file) => {
+ folderOutput.push(file);
+ });
+ } else {
+ folderOutput.push("NONE");
+ }
+
+ outputInfo.push(...folderOutput);
+ }
+ )
);
}
- OutputWindow.Show(OutputLevel.Critical, "Extension Info", outputInfo);
+ OutputWindow.Show(
+ OutputLevel.Critical,
+ "Extension Info",
+ outputInfo
+ );
} catch (err) {
const sassPath = vscode.window.activeTextEditor
? vscode.window.activeTextEditor.document.fileName
@@ -1314,7 +1438,10 @@ export class AppModel {
});
}
- private static getWorkspaceFolder(filePath: string, suppressOutput = false) {
+ private static getWorkspaceFolder(
+ filePath: string,
+ suppressOutput = false
+ ) {
const workspaceFolder = vscode.workspace.getWorkspaceFolder(
vscode.Uri.file(filePath)
);
@@ -1323,10 +1450,15 @@ export class AppModel {
const filename = filePath.toLowerCase();
if (workspaceFolder) {
- OutputWindow.Show(OutputLevel.Trace, "Found the workspace folder", [
- `Workspace Name: ${workspaceFolder.name}`,
- ]);
- } else if (filename.endsWith(".sass") || filename.endsWith(".scss")) {
+ OutputWindow.Show(
+ OutputLevel.Trace,
+ "Found the workspace folder",
+ [`Workspace Name: ${workspaceFolder.name}`]
+ );
+ } else if (
+ filename.endsWith(".sass") ||
+ filename.endsWith(".scss")
+ ) {
OutputWindow.Show(
OutputLevel.Warning,
"Warning: File is not in a workspace",
diff --git a/src/extension.test.ts b/src/extension.test.ts
new file mode 100644
index 0000000..2137b11
--- /dev/null
+++ b/src/extension.test.ts
@@ -0,0 +1,90 @@
+import * as assert from "assert";
+import * as vscode from "vscode";
+
+suite("Extension Tests", function () {
+ const ext = vscode.extensions.getExtension("glenn2223.live-sass");
+
+ test("Is present", () => {
+ assert.ok(ext);
+ });
+
+ test("Is active", () => {
+ assert.ok(ext?.isActive);
+ });
+
+ test("All live sass commands registered", async () => {
+ const expectedCommands = [
+ "liveSass.command.watchMySass",
+ "liveSass.command.donotWatchMySass",
+ "liveSass.command.compileCurrentSass",
+ "liveSass.command.oneTimeCompileSass",
+ "liveSass.command.openOutputWindow",
+ "liveSass.command.createIssue",
+ "liveSass.command.debugInclusion",
+ "liveSass.command.debugFileList",
+ "liveSass.command.showOutputOn.trace",
+ "liveSass.command.showOutputOn.debug",
+ "liveSass.command.showOutputOn.information",
+ "liveSass.command.showOutputOn.warning",
+ "liveSass.command.showOutputOn.error",
+ "liveSass.command.showOutputOn.none",
+ ],
+ actualCommands = await vscode.commands.getCommands(true);
+ const foundLiveServerCommands = actualCommands.filter((value) => {
+ return (
+ expectedCommands.indexOf(value) >= 0 ||
+ value.startsWith("liveSass.command.")
+ );
+ });
+
+ assert.deepEqual(
+ foundLiveServerCommands.sort(),
+ expectedCommands.sort()
+ );
+ });
+
+ test("VS Code save generates files", async () => {
+ const expectedFiles = [
+ vscode.Uri.file("css/sample.scss"),
+ vscode.Uri.file("css/sample.css.map"),
+ vscode.Uri.file("css/sample.css"),
+ ].map((file) =>
+ vscode.Uri.joinPath(
+ vscode.workspace.workspaceFolders![0].uri,
+ file.path
+ ).path.toLowerCase()
+ ),
+ // Open a file
+ doc = await vscode.window.showTextDocument(
+ (
+ await vscode.workspace.findFiles("css/**")
+ )[0]
+ );
+
+ doc.edit((edit) => {
+ edit.insert(new vscode.Position(2, 1), " ");
+ });
+
+ // Save the file
+ if (!(await doc.document.save())) {
+ assert.ok(false, "Save failed");
+ }
+
+ // Wait .4 seconds to allow save success
+ await new Promise((resolve) => setTimeout(resolve, 400));
+
+ // Get the folders files
+ const actualFiles = (await vscode.workspace.findFiles("css/**")).map(
+ (file) => file.path.toLowerCase()
+ );
+
+ assert.deepEqual(actualFiles.sort(), expectedFiles.sort());
+
+ // Revert change
+ await doc.edit((edit) =>
+ edit.replace(new vscode.Range(2, 0, 2, 2), "}")
+ );
+
+ await doc.document.save();
+ });
+});
diff --git a/src/test/clean.js b/src/test/clean.js
new file mode 100644
index 0000000..4087ed2
--- /dev/null
+++ b/src/test/clean.js
@@ -0,0 +1,40 @@
+/* eslint-disable @typescript-eslint/no-var-requires */
+var fs = require("fs");
+
+function deleteFolderRecursive(path) {
+ if (!fs.existsSync(path)) {
+ return console.log(`${path} does not exist!`);
+ }
+
+ if (fs.existsSync(path) && fs.lstatSync(path).isDirectory()) {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ fs.readdirSync(path).forEach(function (file, _index) {
+ var curPath = path + "/" + file;
+
+ if (fs.lstatSync(curPath).isDirectory()) {
+ // recurse
+ deleteFolderRecursive(curPath);
+ } else {
+ // delete file
+ fs.unlinkSync(curPath);
+ }
+ });
+
+ console.log(`Deleting directory "${path}"...`);
+ fs.rmdirSync(path);
+ }
+}
+
+var pathArgs = process.argv.slice(2);
+
+if (pathArgs.length < 1) {
+ return console.warn(
+ "Please enter paths as arguments, for the folders you want to delete recursively. \nExample script invokation: node scripts/clean.js ./release"
+ );
+}
+
+console.log("Cleaning working tree...");
+
+pathArgs.forEach((pathToDelete) => deleteFolderRecursive(pathToDelete));
+
+console.log("Successfully cleaned working tree!");
diff --git a/src/test/extension.test.ts b/src/test/extension.test.ts
deleted file mode 100644
index 1afdd9a..0000000
--- a/src/test/extension.test.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import * as assert from "assert";
-import * as vscode from "vscode";
-
-suite("Extension Tests", function () {
- test("Extension should be present", () => {
- assert.ok(vscode.extensions.getExtension("glenn2223.live-sass"));
- });
-
- test("Extension should activate", () => {
- assert.ok(vscode.extensions.getExtension("glenn2223.live-sass").isActive);
- });
-
- test("should register all live sass commands", async () => {
- const commands = await vscode.commands.getCommands(true);
- const COMMANDS = [
- "liveSass.command.watchMySass",
- "liveSass.command.donotWatchMySass",
- "liveSass.command.compileCurrentSass",
- "liveSass.command.oneTimeCompileSass",
- "liveSass.command.openOutputWindow",
- "liveSass.command.createIssue",
- "liveSass.command.debugInclusion",
- "liveSass.command.debugFileList",
- "liveSass.command.showOutputOn.trace",
- "liveSass.command.showOutputOn.debug",
- "liveSass.command.showOutputOn.information",
- "liveSass.command.showOutputOn.warning",
- "liveSass.command.showOutputOn.error",
- "liveSass.command.showOutputOn.none",
- ];
- const foundLiveServerCommands = commands.filter((value) => {
- return COMMANDS.indexOf(value) >= 0 || value.startsWith("liveSass.command.");
- });
- assert.strictEqual(foundLiveServerCommands.length, COMMANDS.length);
- });
-
- test("Save should ouput default files", async () => {
- const actual = [
- vscode.Uri.file("css/sample.scss"),
- vscode.Uri.file("css/sample.css"),
- vscode.Uri.file("css/sample.css.map"),
- ].map(
- (file) =>
- vscode.Uri.joinPath(vscode.workspace.workspaceFolders[0].uri, file.path).path
- ),
- doc = await vscode.workspace.openTextDocument(
- (
- await vscode.workspace.findFiles("css/**")
- )[0]
- );
-
- await vscode.commands.executeCommand("liveSass.command.watchMySass");
-
- if (!(await doc.save())) {
- assert.ok(false, "Save failed");
- }
-
- await new Promise((resolve) => setTimeout(resolve, 1000));
-
- const docs = (await vscode.workspace.findFiles("css/**")).map((file) => file.path);
-
- console.log("Docs:", docs);
-
- assert.strictEqual(docs, actual);
- });
-
- // TODO: increase tests for the following
- // testing forceBaseDirectory
- // testing autoprefixer
- // more known features
- // (so future changes don't break something they shouldn't)
-});
diff --git a/src/test/index.ts b/src/test/index.ts
index e99e661..69c3c16 100644
--- a/src/test/index.ts
+++ b/src/test/index.ts
@@ -1,6 +1,6 @@
import * as path from "path";
-import * as Mocha from "mocha";
-import * as glob from "glob";
+import Mocha from "mocha";
+import { glob } from "glob";
export function run(): Promise {
// Create the mocha test
@@ -9,30 +9,29 @@ export function run(): Promise {
color: true,
});
- const testsRoot = path.resolve(__dirname, "..");
+ const testsRoot = path.resolve(__dirname, "../..");
return new Promise((c, e) => {
- glob("**/**.test.js", { cwd: testsRoot }, (err, files) => {
- if (err) {
- return e(err);
- }
-
- // Add files to the test suite
- files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f)));
+ glob("**/**.test.js", { cwd: testsRoot })
+ .then((files) => {
+ // Add files to the test suite
+ files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f)));
- try {
- // Run the mocha test
- mocha.run((failures) => {
- if (failures > 0) {
- e(new Error(`${failures} tests failed.`));
- } else {
- c();
- }
- });
- } catch (err) {
- console.error(err);
- e(err);
- }
- });
+ try {
+ // Run the mocha test
+ mocha.run((failures) => {
+ if (failures > 0) {
+ e(new Error(`${failures} tests failed.`));
+ } else {
+ c();
+ }
+ });
+ } catch (err) {
+ e(err);
+ }
+ })
+ .catch((err) => {
+ return e(err);
+ });
});
}
diff --git a/src/test/runTest.ts b/src/test/runTest.ts
index 62e6c74..847e1db 100644
--- a/src/test/runTest.ts
+++ b/src/test/runTest.ts
@@ -1,13 +1,14 @@
import * as path from "path";
-import { runTests } from "vscode-test";
+import { runTests } from "@vscode/test-electron";
async function main() {
try {
- const extensionDevelopmentPath = path.resolve(__dirname, "..");
- const extensionTestsPath = __dirname;
- const testWorkspace = path.resolve(__dirname, "../../src/test/sample");
+ const extensionDevelopmentPath = path.resolve(__dirname, "../.."),
+ extensionTestsPath = __dirname,
+ testWorkspace = path.resolve(__dirname, "../../src/test/sample");
+ // Download VS Code, unzip it and run the integration test
await runTests({
extensionDevelopmentPath,
extensionTestsPath,
diff --git a/src/test/tsconfig.json b/src/test/tsconfig.json
deleted file mode 100644
index 317e0f7..0000000
--- a/src/test/tsconfig.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "compilerOptions": {
- "module": "commonjs",
- "target": "es6",
- "outDir": "../../out/test",
- "lib": [
- "es6",
- "es5"
- ],
- "sourceMap": true,
- "rootDir": "./"
- },
-
- "include": ["./*"],
- "exclude": [
- "node_modules",
- "lib",
- "_site"
- ]
-}
\ No newline at end of file
diff --git a/src/tsconfig.rollup.json b/src/tsconfig.rollup.json
new file mode 100644
index 0000000..46403c1
--- /dev/null
+++ b/src/tsconfig.rollup.json
@@ -0,0 +1,22 @@
+{
+ "compilerOptions": {
+ "module": "ESNext",
+ "target": "es6",
+ "outDir": "../out",
+ "lib": [
+ "es6",
+ "es5"
+ ],
+ "sourceMap": true,
+ "esModuleInterop": true,
+ "strict": true,
+ "moduleResolution": "node",
+ "rootDir": "./",
+ },
+ "include": [
+ "./extension.ts"
+ ],
+ "exclude": [
+ "node_modules",
+ ]
+}
\ No newline at end of file
diff --git a/src/tsconfig.tests.json b/src/tsconfig.tests.json
new file mode 100644
index 0000000..3dded3f
--- /dev/null
+++ b/src/tsconfig.tests.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "target": "es2020",
+ "lib": [
+ "es2020"
+ ],
+ "sourceMap": true,
+ "outDir": "../out",
+ "rootDir": "./",
+ "esModuleInterop": true,
+ },
+ "include": [
+ "./test/*.ts",
+ "./**/*.test.ts",
+ ],
+ "exclude": [
+ "node_modules",
+ ]
+}
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
index 1e51906..4924e52 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,14 +2,22 @@
"compilerOptions": {
"module": "ESNext",
"target": "es6",
- "outDir": "out",
- "lib": ["es6", "es5"],
+ "lib": [
+ "es6",
+ "es5"
+ ],
"sourceMap": true,
- "rootDir": "./",
"esModuleInterop": true,
"strict": true,
"moduleResolution": "node"
},
-
- "exclude": ["node_modules", "lib", "_site", "./src/test/**/*"]
-}
+ "include": [
+ "./*.ts"
+ ],
+ "exclude": [
+ "node_modules",
+ "lib",
+ "_site",
+ "./src/**/*"
+ ]
+}
\ No newline at end of file