From 5946057fd1f37311d0d3806c232c215500997df6 Mon Sep 17 00:00:00 2001 From: Ana Silva <66126240+anasilva105@users.noreply.github.com> Date: Thu, 7 Mar 2024 10:51:03 +0100 Subject: [PATCH 01/25] Update README.md --- README.md | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 21518b0..a88c811 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -# **Accenture SFMC DevTools** | Visual Studio Code Extension +# **SFMC DevTools** | Visual Studio Code Extension Accenture SFMC DevTools VS Code Extension was built to simplify the command execution for [Accenture SFMC DevTools](https://github.com/Accenture/sfmc-devtools), offering a more intuitive interface that streamlines the process of retrieving and deploying Marketing Cloud assets, configuration and code across various Business Units and instances. This tool eliminates the necessity of manual command line input (CLI), making your workflow more efficient and user-friendly. ### Pre Requisites -- [Node.js](https://nodejs.org/en) -- [Git](https://git-scm.com/downloads) -- [Accenture SFMC DevTools](https://github.com/Accenture/sfmc-devtools) +- Install [Node.js](https://nodejs.org/en) +- Install [Git](https://git-scm.com/downloads) +- Install [Accenture SFMC DevTools](https://github.com/Accenture/sfmc-devtools) ### Install Accenture SFMC DevTools @@ -14,6 +14,24 @@ Accenture SFMC DevTools VS Code Extension was built to simplify the command exec npm install -g mcdev ``` +### Install SFMC DevTools VS Code Extension + +- In Visual Studio Code, navigate to the Extensions tab (or click `Ctrl + Shift + X` +- Search for `SFMC DevTools` and click on `Install` +- After installation is completed click on the button `Reload Required` or simply reopen your Visual Studio Code +- A `mcddev` button should display at the bottom bar + +### Initialize SFMC DevTools Project +If you are starting a completely new SFMC DevTools project +- Go to Terminal and click on New Terminal +- Enter the command `mcdev init` and follow the interactive instructions to initialize a new project. For more guidance, consult the official SFMC DevTools documentation [here](https://github.com/Accenture/sfmc-devtools/wiki/06.a-~-Admin-Commands#init) + + +### Wiki + +Consult the [Wiki](https://github.com/Accenture/sfmc-devtools-vscode/wiki) for a complete guide on how to use the SFMC DevTools Vscode Extension. + + ### Currently Supported Accenture SFMC DevTools commands - [Retrieve](https://github.com/Accenture/sfmc-devtools/wiki/06.b-~-Standard-Commands#retrieve) From 715e579036a4a5cd163cd9faf44ccffef5d506ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 20:36:16 +0000 Subject: [PATCH 02/25] Bump winston from 3.11.0 to 3.13.0 Bumps [winston](https://github.com/winstonjs/winston) from 3.11.0 to 3.13.0. - [Release notes](https://github.com/winstonjs/winston/releases) - [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md) - [Commits](https://github.com/winstonjs/winston/compare/v3.11.0...v3.13.0) --- updated-dependencies: - dependency-name: winston dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31557d3..e08b0b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@salesforce-ux/design-system": "^2.23.2", "@vscode/codicons": "^0.0.35", - "winston": "^3.11.0" + "winston": "^3.13.0" }, "devDependencies": { "@types/chai": "^4.3.11", @@ -8912,9 +8912,9 @@ "dev": true }, "node_modules/winston": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", - "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.13.0.tgz", + "integrity": "sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ==", "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", @@ -8926,16 +8926,16 @@ "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" + "winston-transport": "^4.7.0" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/winston-transport": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.6.0.tgz", - "integrity": "sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", "dependencies": { "logform": "^2.3.2", "readable-stream": "^3.6.0", diff --git a/package.json b/package.json index ac66458..fe81dc6 100644 --- a/package.json +++ b/package.json @@ -148,6 +148,6 @@ "dependencies": { "@salesforce-ux/design-system": "^2.23.2", "@vscode/codicons": "^0.0.35", - "winston": "^3.11.0" + "winston": "^3.13.0" } } From fde542cca53e14fed8d503063b251c5dafaae245 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 20:37:45 +0000 Subject: [PATCH 03/25] Bump @typescript-eslint/eslint-plugin from 7.1.0 to 7.4.0 Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 7.1.0 to 7.4.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.4.0/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 272 ++++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 251 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31557d3..dfbc7f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@types/jest": "^29.5.11", "@types/node": "^20.11.17", "@types/vscode": "^1.81.1", - "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.1.0", "@vscode/test-electron": "^2.3.9", "chai": "^5.1.0", @@ -1721,16 +1721,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.0.tgz", - "integrity": "sha512-j6vT/kCulhG5wBmGtstKeiVr1rdXE4nk+DT1k6trYkwlrvW9eOF5ZbgKnd/YR6PcM4uTEXa0h6Fcvf6X7Dxl0w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.4.0.tgz", + "integrity": "sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.1.0", - "@typescript-eslint/type-utils": "7.1.0", - "@typescript-eslint/utils": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", + "@typescript-eslint/scope-manager": "7.4.0", + "@typescript-eslint/type-utils": "7.4.0", + "@typescript-eslint/utils": "7.4.0", + "@typescript-eslint/visitor-keys": "7.4.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -1739,7 +1739,7 @@ "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1755,6 +1755,53 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz", + "integrity": "sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.4.0", + "@typescript-eslint/visitor-keys": "7.4.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", + "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", + "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.4.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/parser": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.0.tgz", @@ -1801,18 +1848,18 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.0.tgz", - "integrity": "sha512-UZIhv8G+5b5skkcuhgvxYWHjk7FW7/JP5lPASMEUoliAPwIH/rxoUSQPia2cuOj9AmDZmwUl1usKm85t5VUMew==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz", + "integrity": "sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.1.0", - "@typescript-eslint/utils": "7.1.0", + "@typescript-eslint/typescript-estree": "7.4.0", + "@typescript-eslint/utils": "7.4.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1827,6 +1874,88 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", + "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz", + "integrity": "sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.4.0", + "@typescript-eslint/visitor-keys": "7.4.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", + "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.4.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/types": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.0.tgz", @@ -1893,21 +2022,21 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.0.tgz", - "integrity": "sha512-WUFba6PZC5OCGEmbweGpnNJytJiLG7ZvDBJJoUcX4qZYf1mGZ97mO2Mps6O2efxJcJdRNpqweCistDbZMwIVHw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.4.0.tgz", + "integrity": "sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.1.0", - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/typescript-estree": "7.1.0", + "@typescript-eslint/scope-manager": "7.4.0", + "@typescript-eslint/types": "7.4.0", + "@typescript-eslint/typescript-estree": "7.4.0", "semver": "^7.5.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1917,6 +2046,105 @@ "eslint": "^8.56.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz", + "integrity": "sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.4.0", + "@typescript-eslint/visitor-keys": "7.4.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", + "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz", + "integrity": "sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.4.0", + "@typescript-eslint/visitor-keys": "7.4.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", + "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.4.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/visitor-keys": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.0.tgz", diff --git a/package.json b/package.json index ac66458..e21ec7e 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "@types/jest": "^29.5.11", "@types/node": "^20.11.17", "@types/vscode": "^1.81.1", - "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.1.0", "@vscode/test-electron": "^2.3.9", "chai": "^5.1.0", From 9e528d1e9f635c85d24f6ba24dd516f6dc39b2d1 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Fri, 19 Apr 2024 15:58:09 +0200 Subject: [PATCH 04/25] amp extension added in deploy command --- package.json | 4 +- src/config/main.config.ts | 92 ++- src/devtools/main.ts | 1531 +++++++++++++++++++++---------------- 3 files changed, 918 insertions(+), 709 deletions(-) diff --git a/package.json b/package.json index ac66458..c133b64 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "group": "devtools" }, { - "when": "resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown'))", + "when": "resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript'))", "command": "sfmc-devtools-vscext.devtoolsCMDeploy", "group": "devtools" }, @@ -97,7 +97,7 @@ "group": "devtools" }, { - "when": "resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown'))", + "when": "resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript'))", "command": "sfmc-devtools-vscext.devtoolsCMDeploy", "group": "devtools" }, diff --git a/src/config/main.config.ts b/src/config/main.config.ts index ebd246f..f88be3a 100644 --- a/src/config/main.config.ts +++ b/src/config/main.config.ts @@ -1,43 +1,53 @@ export const mainConfig: { - credentialsFilename: string, - requiredFiles: string[], - fileExtensions: string[], - noCopyFileExtensions: string[], - allPlaceholder: string, - extensionsDependencies: string[], - messages: { - selectedCredentialsBU: string, - selectCredential: string, - selectBusinessUnit: string, - selectCommandType: string, - selectCommand: string, - initDevTools: string, - initiatingDevTools: string, - copyToBUInput: string, - runningCommand: string, - successRunningCommand: string, - failureRunningCommand: string, - unsupportedMetadataType: string - } + credentialsFilename: string; + requiredFiles: string[]; + fileExtensions: string[]; + noCopyFileExtensions: string[]; + allPlaceholder: string; + extensionsDependencies: string[]; + messages: { + selectedCredentialsBU: string; + selectCredential: string; + selectBusinessUnit: string; + selectCommandType: string; + selectCommand: string; + initDevTools: string; + initiatingDevTools: string; + copyToBUInput: string; + runningCommand: string; + successRunningCommand: string; + failureRunningCommand: string; + unsupportedMetadataType: string; + }; } = { - credentialsFilename: ".mcdevrc.json", - requiredFiles: [".mcdevrc.json", ".mcdev-auth.json"], - fileExtensions: ["meta.json", "meta.sql", "meta.html", "meta.ssjs", "doc.md"], - noCopyFileExtensions: ["doc.md"], - allPlaceholder: "*All*", - extensionsDependencies: ["IBM.output-colorizer"], - messages: { - selectedCredentialsBU: "Select a Credential/BU before running the command", - selectCredential: "Select one of the credentials below...", - selectBusinessUnit: "Select all or one of the business units below...", - selectCommandType: "Select one DevTools command type...", - selectCommand: "Select one DevTools Command...", - initDevTools: "Do you wish to initialize SFMC DevTools project in the current directory?", - initiatingDevTools: "Initiating SFMC DevTools project...", - copyToBUInput: "Select one of the actions below...", - runningCommand: "Running DevTools Command...", - successRunningCommand: "DevTools Command has run successfully.", - failureRunningCommand: "Oh no. Something went wrong while running DevTools Command.", - unsupportedMetadataType: "SFMC DevTools currently does not support one or more of the selected metadata types." - } -}; \ No newline at end of file + credentialsFilename: ".mcdevrc.json", + requiredFiles: [".mcdevrc.json", ".mcdev-auth.json"], + fileExtensions: [ + "meta.json", + "meta.sql", + "meta.html", + "meta.ssjs", + "meta.amp", + "doc.md", + ], + noCopyFileExtensions: ["doc.md"], + allPlaceholder: "*All*", + extensionsDependencies: ["IBM.output-colorizer"], + messages: { + selectedCredentialsBU: "Select a Credential/BU before running the command", + selectCredential: "Select one of the credentials below...", + selectBusinessUnit: "Select all or one of the business units below...", + selectCommandType: "Select one DevTools command type...", + selectCommand: "Select one DevTools Command...", + initDevTools: + "Do you wish to initialize SFMC DevTools project in the current directory?", + initiatingDevTools: "Initiating SFMC DevTools project...", + copyToBUInput: "Select one of the actions below...", + runningCommand: "Running DevTools Command...", + successRunningCommand: "DevTools Command has run successfully.", + failureRunningCommand: + "Oh no. Something went wrong while running DevTools Command.", + unsupportedMetadataType: + "SFMC DevTools currently does not support one or more of the selected metadata types.", + }, +}; diff --git a/src/devtools/main.ts b/src/devtools/main.ts index 9bb8402..8a18eb9 100644 --- a/src/devtools/main.ts +++ b/src/devtools/main.ts @@ -1,7 +1,10 @@ import { mainConfig } from "../config/main.config"; import { InstallDevToolsResponseOptions } from "../config/installer.config"; import DevToolsCommands from "./commands/DevToolsCommands"; -import { PrerequisitesInstalledReturn, devtoolsPrerequisites } from "./prerequisites"; +import { + PrerequisitesInstalledReturn, + devtoolsPrerequisites, +} from "./prerequisites"; import { devtoolsInstaller } from "./installer"; import { devtoolsContainers, StatusBarIcon } from "./containers"; import { editorInput } from "../editor/input"; @@ -15,748 +18,944 @@ import DevToolsPathComponents from "../shared/interfaces/devToolsPathComponents" import { lib } from "../shared/utils/lib"; import { file } from "../shared/utils/file"; +async function initDevToolsExtension(): Promise { + try { + log("info", "Running SFMC DevTools extension..."); -async function initDevToolsExtension(): Promise{ - - try{ - log("info", "Running SFMC DevTools extension..."); - - editorDependencies.activateExtensionDependencies(mainConfig.extensionsDependencies); + editorDependencies.activateExtensionDependencies( + mainConfig.extensionsDependencies + ); - // activate the status bar - devtoolsContainers.activateStatusBar(); + // activate the status bar + devtoolsContainers.activateStatusBar(); - // activate the context menus options - devtoolsContainers.activateContextMenuCommands(); + // activate the context menus options + devtoolsContainers.activateContextMenuCommands(); - // If it's already a mcdev project it will check if prerequisites and devtools are installed - if(await isADevToolsProject()){ - await handleDevToolsRequirements(); - }else{ - // activate status bar immediately when isDevToolsProject is false - // devtoolsContainers.activateStatusBar(false, DevToolsCommands.commandPrefix); - if(await anySubFolderIsDevToolsProject()){ - // init DevTools Commands - DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); - } - } - }catch(error){ - log("error", `[main_initDevToolsExtension] Error: ${error}`); + // If it's already a mcdev project it will check if prerequisites and devtools are installed + if (await isADevToolsProject()) { + await handleDevToolsRequirements(); + } else { + // activate status bar immediately when isDevToolsProject is false + // devtoolsContainers.activateStatusBar(false, DevToolsCommands.commandPrefix); + if (await anySubFolderIsDevToolsProject()) { + // init DevTools Commands + DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); + } } + } catch (error) { + log("error", `[main_initDevToolsExtension] Error: ${error}`); + } } async function isADevToolsProject(projectName?: string): Promise { - log("debug", "Checking if folder is a SFMC DevTools project..."); - log("debug", `DevTools files: [${mainConfig.requiredFiles}]`); - - const findMcdevFiles: boolean[] = await Promise.all(mainConfig.requiredFiles - .map(async(filename: string) => editorWorkspace.isFileInFolder( - `${projectName || '' }${filename}` - ))); - log("debug", - `Folder ${findMcdevFiles.every((result: boolean) => result === true) ? 'is' : 'is not'} a SFMC DevTools project.` - ); - return findMcdevFiles.every((result: boolean) => result === true); + log("debug", "Checking if folder is a SFMC DevTools project..."); + log("debug", `DevTools files: [${mainConfig.requiredFiles}]`); + + const findMcdevFiles: boolean[] = await Promise.all( + mainConfig.requiredFiles.map(async (filename: string) => + editorWorkspace.isFileInFolder(`${projectName || ""}${filename}`) + ) + ); + log( + "debug", + `Folder ${findMcdevFiles.every((result: boolean) => result === true) ? "is" : "is not"} a SFMC DevTools project.` + ); + return findMcdevFiles.every((result: boolean) => result === true); } -async function handleDevToolsRequirements(/*isDevToolsProject: boolean*/): Promise{ - log("info", "Checking SFMC DevTools requirements..."); - const prerequisites: PrerequisitesInstalledReturn = await devtoolsPrerequisites.arePrerequisitesInstalled(); - log("info", `SFMC Pre-Requisites ${ - prerequisites.prerequisitesInstalled ? 'are' : 'are not' - } installed.`); - if(prerequisites.prerequisitesInstalled){ - const isDevToolsInstalled: boolean = await devtoolsInstaller.isDevToolsInstalled(); - if(!isDevToolsInstalled){ - await devtoolsInstaller.noDevToolsHandler(); - return; - } - log("info", "SFMC DevTools is installed."); +async function handleDevToolsRequirements(/*isDevToolsProject: boolean*/): Promise { + log("info", "Checking SFMC DevTools requirements..."); + const prerequisites: PrerequisitesInstalledReturn = + await devtoolsPrerequisites.arePrerequisitesInstalled(); + log( + "info", + `SFMC Pre-Requisites ${ + prerequisites.prerequisitesInstalled ? "are" : "are not" + } installed.` + ); + if (prerequisites.prerequisitesInstalled) { + const isDevToolsInstalled: boolean = + await devtoolsInstaller.isDevToolsInstalled(); + if (!isDevToolsInstalled) { + await devtoolsInstaller.noDevToolsHandler(); + return; + } + log("info", "SFMC DevTools is installed."); - // Needs to check if it's a DevTools Project or not - // if(isDevToolsProject){ - // // activate status bar immediately when isDevToolsProject is true - // devtoolsContainers.activateStatusBar(true, DevToolsCommands.commandPrefix); - // } + // Needs to check if it's a DevTools Project or not + // if(isDevToolsProject){ + // // activate status bar immediately when isDevToolsProject is true + // devtoolsContainers.activateStatusBar(true, DevToolsCommands.commandPrefix); + // } - // init DevTools Commands - DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); - return; - } - log("debug", `Missing Pre-requisites: [${prerequisites.missingPrerequisites}]`); - devtoolsPrerequisites.noPrerequisitesHandler( - editorContext.get().extensionPath, - prerequisites.missingPrerequisites - ); + // init DevTools Commands + DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); + return; + } + log( + "debug", + `Missing Pre-requisites: [${prerequisites.missingPrerequisites}]` + ); + devtoolsPrerequisites.noPrerequisitesHandler( + editorContext.get().extensionPath, + prerequisites.missingPrerequisites + ); } async function anySubFolderIsDevToolsProject(): Promise { - const subFolders: string[] = await editorWorkspace.getWorkspaceSubFolders(); - if(subFolders.length){ - const subFolderProjects: boolean[] = - await Promise.all(subFolders.map(async (sf: string) => await isADevToolsProject(sf + "/"))); - return subFolderProjects.some((sfResult: boolean) => sfResult); - }else{ - log("debug", "Workspace doesn't contain any sub folders."); - } - return false; + const subFolders: string[] = await editorWorkspace.getWorkspaceSubFolders(); + if (subFolders.length) { + const subFolderProjects: boolean[] = await Promise.all( + subFolders.map(async (sf: string) => await isADevToolsProject(sf + "/")) + ); + return subFolderProjects.some((sfResult: boolean) => sfResult); + } else { + log("debug", "Workspace doesn't contain any sub folders."); + } + return false; } function handleStatusBarActions(action: string): void { - log("debug", "Setting Status Bar Actions..."); - log("debug", `Action: ${action}`); - switch(action.toLowerCase()){ - case "sbcredentialbu": - changeCredentialsBU(); - break; - case "sbcommand": - handleDevToolsSBCommand(); - break; - case "sbinitialize": - initialize(); - break; - case "sbmcdev": - handleMCDevSBCommand(); - break; - default: - log("error", `main_handleStatusBarActions: Invalid Status Bar Action '${action}'`); - } + log("debug", "Setting Status Bar Actions..."); + log("debug", `Action: ${action}`); + switch (action.toLowerCase()) { + case "sbcredentialbu": + changeCredentialsBU(); + break; + case "sbcommand": + handleDevToolsSBCommand(); + break; + case "sbinitialize": + initialize(); + break; + case "sbmcdev": + handleMCDevSBCommand(); + break; + default: + log( + "error", + `main_handleStatusBarActions: Invalid Status Bar Action '${action}'` + ); + } } -function handleContextMenuActions(action: string, selectedFiles: string[]): void { - - devtoolsContainers.modifyStatusBar( "mcdev", "success"); - - log("debug", "Setting Context Menu Actions..."); - log("debug", `Action: ${action} Number of Selected Files: ${selectedFiles.length}`); - switch(action.toLowerCase()){ - case "cmretrieve": - handleDevToolsCMCommand("retrieve", selectedFiles); - break; - case "cmdeploy": - handleDevToolsCMCommand("deploy", selectedFiles); - break; - case "cmcopytobu": - handleCopyToBuCMCommand(selectedFiles); - break; - default: - log("error", `main_handleContextMenuActions: Invalid Context Menu Action '${action}'`); - } +function handleContextMenuActions( + action: string, + selectedFiles: string[] +): void { + devtoolsContainers.modifyStatusBar("mcdev", "success"); + + log("debug", "Setting Context Menu Actions..."); + log( + "debug", + `Action: ${action} Number of Selected Files: ${selectedFiles.length}` + ); + switch (action.toLowerCase()) { + case "cmretrieve": + handleDevToolsCMCommand("retrieve", selectedFiles); + break; + case "cmdeploy": + handleDevToolsCMCommand("deploy", selectedFiles); + break; + case "cmcopytobu": + handleCopyToBuCMCommand(selectedFiles); + break; + default: + log( + "error", + `main_handleContextMenuActions: Invalid Context Menu Action '${action}'` + ); + } } -async function getCredentialsBU(): Promise<{[key: string]: string[] } | undefined >{ - try{ - // gets the project workspace uri path - const folderPath: string = editorWorkspace.getWorkspaceURIPath(); - - // retrieves all the content inside the file that contains the mcdev credentials - const credBUContent: string = - await editorWorkspace.readFile(`${folderPath}/${mainConfig.credentialsFilename}`); - - // parses the content from text to JSON - const parsedCredBUContent: any = JSON.parse(credBUContent); - - // return a json with each credential associated with a list of its business units - if(parsedCredBUContent && "credentials" in parsedCredBUContent){ - return Object.keys(parsedCredBUContent.credentials) - .reduce((prev: {}, credential: string) => { - const { businessUnits } = parsedCredBUContent.credentials[credential]; - if(businessUnits && Object.keys(businessUnits).length){ - return { ...prev, [credential]: Object.keys(businessUnits) }; - }else{ - log("error", `Could not find any business units for the credential '${credential}'`); - return {...prev }; - } - }, {}); - } - log("error", - `[main_getCredentialsBU] Error: Could not find any credentials in the '${mainConfig.credentialsFilename}' file.` - ); - }catch(error){ - log("error", `[main_getCredentialsBU] Error: ${error}`); +async function getCredentialsBU(): Promise< + { [key: string]: string[] } | undefined +> { + try { + // gets the project workspace uri path + const folderPath: string = editorWorkspace.getWorkspaceURIPath(); + + // retrieves all the content inside the file that contains the mcdev credentials + const credBUContent: string = await editorWorkspace.readFile( + `${folderPath}/${mainConfig.credentialsFilename}` + ); + + // parses the content from text to JSON + const parsedCredBUContent: any = JSON.parse(credBUContent); + + // return a json with each credential associated with a list of its business units + if (parsedCredBUContent && "credentials" in parsedCredBUContent) { + return Object.keys(parsedCredBUContent.credentials).reduce( + (prev: {}, credential: string) => { + const { businessUnits } = parsedCredBUContent.credentials[credential]; + if (businessUnits && Object.keys(businessUnits).length) { + return { ...prev, [credential]: Object.keys(businessUnits) }; + } else { + log( + "error", + `Could not find any business units for the credential '${credential}'` + ); + return { ...prev }; + } + }, + {} + ); } - return; + log( + "error", + `[main_getCredentialsBU] Error: Could not find any credentials in the '${mainConfig.credentialsFilename}' file.` + ); + } catch (error) { + log("error", `[main_getCredentialsBU] Error: ${error}`); + } + return; } -async function changeCredentialsBU(): Promise{ - log("info", "Changing SFMC DevTools credententials/bu..."); - const credentialsBUList: {[key: string]: string[]} | undefined = - await getCredentialsBU(); +async function changeCredentialsBU(): Promise { + log("info", "Changing SFMC DevTools credententials/bu..."); + const credentialsBUList: { [key: string]: string[] } | undefined = + await getCredentialsBU(); + + if (credentialsBUList) { + // Configures all placeholder as an selectable option + const allPlaceholderOption: InputOptionsSettings = { + id: mainConfig.allPlaceholder.toLowerCase(), + label: mainConfig.allPlaceholder, + detail: "", + }; + // Configures all credential names as selectable options + const credentialsOptions: InputOptionsSettings[] = Object.keys( + credentialsBUList + ).map((credential: string) => ({ + id: credential.toLowerCase(), + label: credential, + detail: "", + })); + + // Requests user to select one credential option + const selectedCredential: + | InputOptionsSettings + | InputOptionsSettings[] + | undefined = await editorInput.handleQuickPickSelection( + [allPlaceholderOption, ...credentialsOptions], + mainConfig.messages.selectCredential, + false + ); - if(credentialsBUList){ - // Configures all placeholder as an selectable option - const allPlaceholderOption: InputOptionsSettings = { - id: mainConfig.allPlaceholder.toLowerCase(), - label: mainConfig.allPlaceholder, - detail: "" - }; - // Configures all credential names as selectable options - const credentialsOptions: InputOptionsSettings[] = Object.keys(credentialsBUList) - .map((credential: string) => ({ - id: credential.toLowerCase(), - label: credential, - detail: "" - })); + if (selectedCredential && !Array.isArray(selectedCredential)) { + log("debug", `User selected '${selectedCredential.label}' credential.`); + if (selectedCredential.id === mainConfig.allPlaceholder.toLowerCase()) { + // if user selects *All* then status bar should be replaced with it + // devtoolsContainers.modifyStatusBar( + // "credentialbu", + // DevToolsCommands.commandPrefix, + // selectedCredential.label + // ); + } else { + const businessUnitsList: string[] = + credentialsBUList[selectedCredential.label]; + + // Configures all business units names as selectable options + const businessUnitOptions: InputOptionsSettings[] = + businessUnitsList.map((businessUnit: string) => ({ + id: businessUnit.toLowerCase(), + label: businessUnit, + detail: "", + })); + + // Requests user to select all or one Business Unit + const selectedBU: + | InputOptionsSettings + | InputOptionsSettings[] + | undefined = await editorInput.handleQuickPickSelection( + [allPlaceholderOption, ...businessUnitOptions], + mainConfig.messages.selectBusinessUnit, + false + ); - // Requests user to select one credential option - const selectedCredential: InputOptionsSettings | InputOptionsSettings[] | undefined = - await editorInput.handleQuickPickSelection( - [allPlaceholderOption, ...credentialsOptions], - mainConfig.messages.selectCredential, - false - ); + if (selectedBU && !Array.isArray(selectedBU)) { + log("debug", `User selected '${selectedBU.label}' business unit.`); - if(selectedCredential && !Array.isArray(selectedCredential)){ - log("debug", `User selected '${selectedCredential.label}' credential.`); - if(selectedCredential.id === mainConfig.allPlaceholder.toLowerCase()){ - // if user selects *All* then status bar should be replaced with it - // devtoolsContainers.modifyStatusBar( - // "credentialbu", - // DevToolsCommands.commandPrefix, - // selectedCredential.label - // ); - }else{ - const businessUnitsList: string[] = credentialsBUList[selectedCredential.label]; - - // Configures all business units names as selectable options - const businessUnitOptions: InputOptionsSettings[] = businessUnitsList - .map((businessUnit: string) => ({ - id: businessUnit.toLowerCase(), - label: businessUnit, - detail: "" - })); - - // Requests user to select all or one Business Unit - const selectedBU: InputOptionsSettings | InputOptionsSettings[] | undefined = - await editorInput.handleQuickPickSelection( - [allPlaceholderOption, ...businessUnitOptions], - mainConfig.messages.selectBusinessUnit, - false - ); - - if(selectedBU && !Array.isArray(selectedBU)){ - log("debug", `User selected '${selectedBU.label}' business unit.`); - - // Modify the credential status bar icon to contain the - // selected Credential + selected Business Unit - // devtoolsContainers.modifyStatusBar( - // "credentialbu", - // DevToolsCommands.commandPrefix, - // `${selectedCredential.label}/${selectedBU.label}` - // ); - } - } + // Modify the credential status bar icon to contain the + // selected Credential + selected Business Unit + // devtoolsContainers.modifyStatusBar( + // "credentialbu", + // DevToolsCommands.commandPrefix, + // `${selectedCredential.label}/${selectedBU.label}` + // ); } - }else{ - log("error", "[main_changeCredentialsBU] Error: CredentialBU List is undefined."); + } } + } else { + log( + "error", + "[main_changeCredentialsBU] Error: CredentialBU List is undefined." + ); + } } -async function handleDevToolsSBCommand(): Promise{ - log("debug", "Selecting SB SFMC DevTools command..."); - const devToolsCommandTypes: {id: string, title: string}[] = DevToolsCommands.getAllCommandTypes(); - - if(devToolsCommandTypes){ - // Configures all commandTypes names as selectable options - const commandTypesOptions: InputOptionsSettings[] = devToolsCommandTypes - .map(({ id, title }: {id: string, title: string}) => ({ - id: id.toLowerCase(), - label: title, - detail: "" - })); - - // Requests user to select one DevTools Command Type - const selectedCommandType: InputOptionsSettings | InputOptionsSettings[] | undefined = - await editorInput.handleQuickPickSelection( - commandTypesOptions, - mainConfig.messages.selectCommandType, - false - ); +async function handleDevToolsSBCommand(): Promise { + log("debug", "Selecting SB SFMC DevTools command..."); + const devToolsCommandTypes: { id: string; title: string }[] = + DevToolsCommands.getAllCommandTypes(); + + if (devToolsCommandTypes) { + // Configures all commandTypes names as selectable options + const commandTypesOptions: InputOptionsSettings[] = + devToolsCommandTypes.map( + ({ id, title }: { id: string; title: string }) => ({ + id: id.toLowerCase(), + label: title, + detail: "", + }) + ); + + // Requests user to select one DevTools Command Type + const selectedCommandType: + | InputOptionsSettings + | InputOptionsSettings[] + | undefined = await editorInput.handleQuickPickSelection( + commandTypesOptions, + mainConfig.messages.selectCommandType, + false + ); - if(selectedCommandType && !Array.isArray(selectedCommandType)){ - log("debug", `User selected in ${selectedCommandType.label} DevTools Command type.`); - const commands: DevToolsCommandSetting[] = - DevToolsCommands.getCommandsListByType(selectedCommandType.id); - - // Configures all devtools commands as selectable options - const commandsOptions: InputOptionsSettings[] = commands - .map((command: DevToolsCommandSetting) => ({ - id: command.id.toLowerCase(), - label: command.title, - detail: command.description - })); - // Requests user to select one DevTools Command Type - const selectedCommandOption: InputOptionsSettings | InputOptionsSettings[] | undefined = - await editorInput.handleQuickPickSelection( - commandsOptions, - mainConfig.messages.selectCommand, - false + if (selectedCommandType && !Array.isArray(selectedCommandType)) { + log( + "debug", + `User selected in ${selectedCommandType.label} DevTools Command type.` + ); + const commands: DevToolsCommandSetting[] = + DevToolsCommands.getCommandsListByType(selectedCommandType.id); + + // Configures all devtools commands as selectable options + const commandsOptions: InputOptionsSettings[] = commands.map( + (command: DevToolsCommandSetting) => ({ + id: command.id.toLowerCase(), + label: command.title, + detail: command.description, + }) + ); + // Requests user to select one DevTools Command Type + const selectedCommandOption: + | InputOptionsSettings + | InputOptionsSettings[] + | undefined = await editorInput.handleQuickPickSelection( + commandsOptions, + mainConfig.messages.selectCommand, + false + ); + + if (selectedCommandOption && !Array.isArray(selectedCommandOption)) { + log( + "debug", + `User selected in ${selectedCommandOption.label} DevTools Command.` + ); + if (devtoolsContainers.isCredentialBUSelected()) { + log("info", "Credential/BU is selected..."); + const selectedCredentialBU: string | undefined = + devtoolsContainers.getCredentialsBUName( + DevToolsCommands.commandPrefix ); - - if(selectedCommandOption && !Array.isArray(selectedCommandOption)){ - log("debug", `User selected in ${selectedCommandOption.label} DevTools Command.`); - if(devtoolsContainers.isCredentialBUSelected()){ - log("info", "Credential/BU is selected..."); - const selectedCredentialBU: string | undefined = - devtoolsContainers.getCredentialsBUName(DevToolsCommands.commandPrefix); - if(selectedCredentialBU){ - // execute DevTools Command - DevToolsCommands.runCommand( - selectedCommandType.id, - selectedCommandOption.id, - editorWorkspace.getWorkspaceURIPath(), - { bu: selectedCredentialBU.replace(mainConfig.allPlaceholder, "'*'") }, - { handleCommandResult: (result: any) => log("info", result) } - ); - }else{ - log("error", - `[main_handleDevToolsCommandSelection] Error: Failed to retrieve Credential/BU.` - ); - } - }else{ - if(DevToolsCommands.requiresCredentials(selectedCommandType.id)){ - log("debug", - `Crendentials are required to be selected first for type '${selectedCommandType.id}'` - ); - editorInput.handleShowNotificationMessage("warning", - `${mainConfig.messages.selectedCredentialsBU} '${ - lib.capitalizeFirstLetter(selectedCommandOption.id) - }'...`, - [] - ); - lib.waitTime(1000, () => changeCredentialsBU()); - }else{ - // execute DevTools Command - DevToolsCommands.runCommand( - selectedCommandType.id, - selectedCommandOption.id, - editorWorkspace.getWorkspaceURIPath(), - {}, - { handleCommandResult: (result: any) => log("info", result) } - ); - } - } - } + if (selectedCredentialBU) { + // execute DevTools Command + DevToolsCommands.runCommand( + selectedCommandType.id, + selectedCommandOption.id, + editorWorkspace.getWorkspaceURIPath(), + { + bu: selectedCredentialBU.replace( + mainConfig.allPlaceholder, + "'*'" + ), + }, + { handleCommandResult: (result: any) => log("info", result) } + ); + } else { + log( + "error", + `[main_handleDevToolsCommandSelection] Error: Failed to retrieve Credential/BU.` + ); + } + } else { + if (DevToolsCommands.requiresCredentials(selectedCommandType.id)) { + log( + "debug", + `Crendentials are required to be selected first for type '${selectedCommandType.id}'` + ); + editorInput.handleShowNotificationMessage( + "warning", + `${mainConfig.messages.selectedCredentialsBU} '${lib.capitalizeFirstLetter( + selectedCommandOption.id + )}'...`, + [] + ); + lib.waitTime(1000, () => changeCredentialsBU()); + } else { + // execute DevTools Command + DevToolsCommands.runCommand( + selectedCommandType.id, + selectedCommandOption.id, + editorWorkspace.getWorkspaceURIPath(), + {}, + { handleCommandResult: (result: any) => log("info", result) } + ); + } } + } } + } } -async function initialize(): Promise{ - await handleDevToolsRequirements(); +async function initialize(): Promise { + await handleDevToolsRequirements(); - const userResponse: string | undefined = await editorInput.handleShowOptionsMessage( - mainConfig.messages.initDevTools, - Object.keys(InstallDevToolsResponseOptions).filter((v) => isNaN(Number(v))) + const userResponse: string | undefined = + await editorInput.handleShowOptionsMessage( + mainConfig.messages.initDevTools, + Object.keys(InstallDevToolsResponseOptions).filter((v) => + isNaN(Number(v)) + ) ); - if(userResponse && - InstallDevToolsResponseOptions[userResponse as keyof typeof InstallDevToolsResponseOptions]){ - log("info", "Initializing SFMC DevTools project..."); - DevToolsCommands.runCommand( - null, - "init", - editorWorkspace.getWorkspaceURIPath(), - {}, - { - handleCommandResult: () => { - log("info", "Reloading VSCode workspace window..."); - lib.waitTime(5000, () => editorWorkspace.reloadWorkspace()); - } - } - ); - } + if ( + userResponse && + InstallDevToolsResponseOptions[ + userResponse as keyof typeof InstallDevToolsResponseOptions + ] + ) { + log("info", "Initializing SFMC DevTools project..."); + DevToolsCommands.runCommand( + null, + "init", + editorWorkspace.getWorkspaceURIPath(), + {}, + { + handleCommandResult: () => { + log("info", "Reloading VSCode workspace window..."); + lib.waitTime(5000, () => editorWorkspace.reloadWorkspace()); + }, + } + ); + } } -function handleMCDevSBCommand(){ - editorOutput.showOuputChannel(); +function handleMCDevSBCommand() { + editorOutput.showOuputChannel(); } -function getMCDevRelativePathComponents(relativePath: string): DevToolsPathComponents { - const [ - credentialName, - businessUnit, - metadataType, - ...keys - ]: string[] = relativePath.split("/"); - return { credentialName, businessUnit, metadataType, keys }; +function getMCDevRelativePathComponents( + relativePath: string +): DevToolsPathComponents { + const [credentialName, businessUnit, metadataType, ...keys]: string[] = + relativePath.split("/"); + return { credentialName, businessUnit, metadataType, keys }; } -function logUnsupportedMtdtTypeNotification(action: string, unsupportedMtdtTypes: string | string[]){ - [unsupportedMtdtTypes] - .flat() - .forEach((metadataType: string) => { - log( - "error", - `Error: SFMC DevTools currently does not support ${action} for the metadata type: '${metadataType}'` - ); - }); - devtoolsContainers.modifyStatusBar("mcdev", "error"); - editorInput.handleShowNotificationMessage("error", mainConfig.messages.unsupportedMetadataType, []); -}; - -async function handleDevToolsCMCommand(action: string, selectedPaths: string[]): Promise{ - log("debug", "Selecting CM SFMC DevTools command..."); - try{ - type ArgsConfig = { bu: string, mdtypes: string | string[], key: string | string[], fromRetrieve: boolean}; - type ProjectConfig = { path: string, args: ArgsConfig[] }; - let filesType: string[] = [], folderType: string[] = []; - - // Separates files and folders into different arrays - for(const path of selectedPaths){ - await editorWorkspace.isFile(path) ? - filesType.push(path) : - folderType.push(path); - } - - // Removes duplicate files (eg. some files have the same name with md and json) - if(filesType.length){ - filesType = lib.removeDuplicates( - lib.removeExtensionFromFile(filesType, mainConfig.fileExtensions) - ) as string[]; - } +function logUnsupportedMtdtTypeNotification( + action: string, + unsupportedMtdtTypes: string | string[] +) { + [unsupportedMtdtTypes].flat().forEach((metadataType: string) => { + log( + "error", + `Error: SFMC DevTools currently does not support ${action} for the metadata type: '${metadataType}'` + ); + }); + devtoolsContainers.modifyStatusBar("mcdev", "error"); + editorInput.handleShowNotificationMessage( + "error", + mainConfig.messages.unsupportedMetadataType, + [] + ); +} - const configureArgsProject = async (action: string, selectedPaths: string[]): Promise<{[key: string]: ProjectConfig}> => { +async function handleDevToolsCMCommand( + action: string, + selectedPaths: string[] +): Promise { + log("debug", "Selecting CM SFMC DevTools command..."); + try { + type ArgsConfig = { + bu: string; + mdtypes: string | string[]; + key: string | string[]; + fromRetrieve: boolean; + }; + type ProjectConfig = { path: string; args: ArgsConfig[] }; + let filesType: string[] = [], + folderType: string[] = []; + + // Separates files and folders into different arrays + for (const path of selectedPaths) { + (await editorWorkspace.isFile(path)) + ? filesType.push(path) + : folderType.push(path); + } - const projectArgsMap: {[key: string]: ProjectConfig} = {}; + // Removes duplicate files (eg. some files have the same name with md and json) + if (filesType.length) { + filesType = lib.removeDuplicates( + lib.removeExtensionFromFile(filesType, mainConfig.fileExtensions) + ) as string[]; + } - // gets workspace directory - const workspaceFolderPath: string = editorWorkspace.getWorkspaceURIPath(); + const configureArgsProject = async ( + action: string, + selectedPaths: string[] + ): Promise<{ [key: string]: ProjectConfig }> => { + const projectArgsMap: { [key: string]: ProjectConfig } = {}; + + // gets workspace directory + const workspaceFolderPath: string = editorWorkspace.getWorkspaceURIPath(); + + for (const filePath of selectedPaths) { + let projectName: string = ""; + let [projectPath, cmPath]: string[] = []; + let args: ArgsConfig[] = []; + let fromRetrieve: boolean = false; + + if (filePath.includes(action)) { + // Action Retrieve or Deploy were triggered from their folder + [projectPath, cmPath] = filePath.split(`/${action}`); + } else { + if (action === "deploy") { + log("debug", "Context Menu Command Deploy From Retrieve folder..."); + // Action Deploy from Retrieve was triggered (fromRetrieve) + [projectPath, cmPath] = filePath.split(`/retrieve`); + fromRetrieve = true; + } else { + // error + } + } - for(const filePath of selectedPaths){ + // Gets the project folder name + projectName = lib.getProjectNameFromPath(projectPath); - let projectName: string = ""; - let [ projectPath, cmPath ]: string[] = []; - let args: ArgsConfig[] = []; - let fromRetrieve: boolean = false; + log("debug", `Current workspace folder path: ${workspaceFolderPath}`); + log("debug", `Project Name: ${projectName}`); + log("debug", `Project path: ${projectPath}`); + log("debug", `Context Menu path: ${cmPath}`); - if(filePath.includes(action)){ - // Action Retrieve or Deploy were triggered from their folder - [ projectPath, cmPath ] = filePath.split(`/${action}`); - }else{ - if(action === "deploy"){ - log("debug", "Context Menu Command Deploy From Retrieve folder..."); - // Action Deploy from Retrieve was triggered (fromRetrieve) - [ projectPath, cmPath ] = filePath.split(`/retrieve`); - fromRetrieve = true; - }else{ - // error - } - } + log( + "debug", + `Project ${workspaceFolderPath === projectPath ? "is" : "is not"} the workspace folder.` + ); - // Gets the project folder name - projectName = lib.getProjectNameFromPath(projectPath); - - log("debug", `Current workspace folder path: ${workspaceFolderPath}`); - log("debug", `Project Name: ${projectName}`); - log("debug", `Project path: ${projectPath}`); - log("debug", `Context Menu path: ${cmPath}`); - - log("debug", `Project ${workspaceFolderPath === projectPath ? 'is': 'is not'} the workspace folder.`); - - // Check if context menu being triggered is from outside of the workspace folder - if(workspaceFolderPath !== projectPath){ - // Check if folder is a DevTools project - const isSubFolderDevToolsProject: boolean = - await isADevToolsProject( projectName + "/" ); - log("debug", - `SubFolder project '${projectPath}' ${ isSubFolderDevToolsProject ? 'is': 'is not'} a DevTools Project.` - ); - if(!isSubFolderDevToolsProject){ - editorInput.handleShowNotificationMessage("error",`Folder '${projectName}' is not a SFMC DevTools Project.`, []); - return {}; - } - } + // Check if context menu being triggered is from outside of the workspace folder + if (workspaceFolderPath !== projectPath) { + // Check if folder is a DevTools project + const isSubFolderDevToolsProject: boolean = await isADevToolsProject( + projectName + "/" + ); + log( + "debug", + `SubFolder project '${projectPath}' ${isSubFolderDevToolsProject ? "is" : "is not"} a DevTools Project.` + ); + if (!isSubFolderDevToolsProject) { + editorInput.handleShowNotificationMessage( + "error", + `Folder '${projectName}' is not a SFMC DevTools Project.`, + [] + ); + return {}; + } + } - // Checks if the project name is already in the map - if(!(projectName in projectArgsMap)){ - projectArgsMap[projectName] = { - path: projectPath, - args: [] - }; - } + // Checks if the project name is already in the map + if (!(projectName in projectArgsMap)) { + projectArgsMap[projectName] = { + path: projectPath, + args: [], + }; + } - args = projectArgsMap[projectName].args; + args = projectArgsMap[projectName].args; + + // When user only clicks on retrieve or deploy folder + if (projectPath && !cmPath) { + let filteredByBU: ArgsConfig[] = args.filter( + ({ bu }: ArgsConfig) => bu !== undefined && bu === `"*"` + ); + if (!filteredByBU.length) { + args = [...args, { bu: `"*"`, mdtypes: [], key: [], fromRetrieve }]; + } + log( + "debug", + `Updated project path for '${action} "*"': ${projectPath}.` + ); + } - // When user only clicks on retrieve or deploy folder - if(projectPath && !cmPath){ - let filteredByBU: ArgsConfig[] = - args.filter(({ bu }: ArgsConfig) => bu !== undefined && bu === `"*"`); - if(!filteredByBU.length){ - args = [...args, { bu: `"*"`, mdtypes: [], key: [], fromRetrieve}]; - } - log("debug", `Updated project path for '${action} "*"': ${projectPath}.`); - } - - // When user clicks inside a retrieve or deploy folder - if(cmPath){ - let { credentialName, businessUnit, metadataType, keys } = getMCDevRelativePathComponents(cmPath.substring(1)); - let key: string = ""; - - if(!DevToolsCommands.isSupportedMetadataType(action, metadataType)){ - logUnsupportedMtdtTypeNotification(action, metadataType); - continue; - } + // When user clicks inside a retrieve or deploy folder + if (cmPath) { + let { credentialName, businessUnit, metadataType, keys } = + getMCDevRelativePathComponents(cmPath.substring(1)); + let key: string = ""; + + if ( + metadataType && + !DevToolsCommands.isSupportedMetadataType(action, metadataType) + ) { + logUnsupportedMtdtTypeNotification(action, metadataType); + continue; + } + + // If user selected to retrieve/deploy a subfolder/file inside metadata type asset folder + if (metadataType === "asset" && keys.length) { + // Gets the asset subfolder and asset key + const [assetFolder, assetKey] = keys; + if (!assetKey) { + // if user only selected an asset subfolder + // type will be changed to "asset-[name of the asset subfolder]" + metadataType = `${metadataType}-${assetFolder}`; + } + // if user selects a file inside a subfolder of asset + // the key will be the name of the file + keys = assetKey ? [assetKey] : []; + } else if (metadataType === "folder" && keys.length) { + // Nested folders are not supported as keys for the metadata type folder + keys = []; + } + + key = keys.length ? keys[0] : ""; + + let filteredByBU: ArgsConfig[] = args.filter( + ({ bu }: ArgsConfig) => + bu !== undefined && + bu === `${credentialName}/${businessUnit ? businessUnit : "*"}` + ); + + if (filteredByBU.length) { + let newArgs: ArgsConfig = { + bu: filteredByBU[0].bu, + mdtypes: lib.removeNonValues( + lib.removeDuplicates([ + ...filteredByBU[0]["mdtypes"], + metadataType, + ]) as string[] + ) as string[], + key: lib.removeNonValues( + lib.removeDuplicates([ + ...filteredByBU[0]["key"], + key, + ]) as string[] + ) as string[], + fromRetrieve: filteredByBU[0].fromRetrieve, + }; + args = [ + ...args.filter( + ({ bu }: ArgsConfig) => + bu !== + `${credentialName}/${businessUnit ? businessUnit : "*"}` + ), + newArgs, + ]; + } else { + args = [ + ...args, + { + bu: `${credentialName}/${businessUnit ? businessUnit : "*"}`, + mdtypes: lib.removeNonValues([metadataType]) as string[], + key: lib.removeNonValues([key]) as string[], + fromRetrieve, + }, + ]; + } + } + projectArgsMap[projectName].args = args; + } + return projectArgsMap; + }; + + for (const optionType of [filesType, folderType]) { + if (optionType.length) { + const projectMap: { [key: string]: ProjectConfig } = + await configureArgsProject(action, optionType); + await Promise.all( + Object.keys(projectMap).map(async (projName: string) => { + log("debug", `Running DevTools Command for project ${projName}`); + let { path, args }: ProjectConfig = projectMap[projName]; + args = args.map((arg: ArgsConfig) => ({ + ...arg, + mdtypes: arg.mdtypes.length + ? `"${(arg.mdtypes as string[]).join(",")}"` + : "", + key: arg.key.length ? `"${(arg.key as string[]).join(",")}"` : "", + })); - // If user selected to retrieve/deploy a subfolder/file inside metadata type asset folder - if(metadataType === "asset" && keys.length){ - // Gets the asset subfolder and asset key - const [ assetFolder, assetKey ] = keys; - if(!assetKey){ - // if user only selected an asset subfolder - // type will be changed to "asset-[name of the asset subfolder]" - metadataType = `${metadataType}-${assetFolder}`; + for (const dtArgs of args) { + log("debug", `Action: ${action} Args: ${JSON.stringify(dtArgs)}`); + devtoolsContainers.modifyStatusBar( + "mcdev", + action.toLowerCase() as keyof typeof StatusBarIcon + ); + await editorInput.handleInProgressMessage( + "Notification", + (progress) => { + return new Promise((resolve) => + DevToolsCommands.runCommand(null, action, path, dtArgs, { + loadingNotification: () => + progress.report({ + message: mainConfig.messages.runningCommand, + }), + handleCommandResult: ({ + success, + cancelled, + }: { + success: boolean; + cancelled: boolean; + }) => { + if (!cancelled) { + editorInput.handleShowNotificationMessage( + success ? "info" : "error", + success + ? mainConfig.messages.successRunningCommand + : mainConfig.messages.failureRunningCommand, + [] + ); + devtoolsContainers.modifyStatusBar( + "mcdev", + success ? "success" : "error" + ); + resolve(); } - // if user selects a file inside a subfolder of asset - // the key will be the name of the file - keys = assetKey ? [ assetKey ] : []; - }else if(metadataType === "folder" && keys.length){ - // Nested folders are not supported as keys for the metadata type folder - keys = []; - } - - key = keys.length ? keys[0] : ""; - - let filteredByBU: ArgsConfig[] = - args.filter(({ bu }: ArgsConfig) => bu !== undefined && bu === `${credentialName}/${businessUnit ? businessUnit : '*'}`); - - if(filteredByBU.length){ - let newArgs: ArgsConfig = { - bu: filteredByBU[0].bu, - mdtypes: lib.removeNonValues( - (lib.removeDuplicates([...filteredByBU[0]['mdtypes'], metadataType]) as string[]) - ) as string[], - key: lib.removeNonValues( - (lib.removeDuplicates([...filteredByBU[0]['key'], key]) as string[]) - ) as string[], - fromRetrieve: filteredByBU[0].fromRetrieve - }; - args = [ - ...args.filter(({ bu }: ArgsConfig) => bu !== `${credentialName}/${businessUnit ? businessUnit : '*'}`), - newArgs - ]; - }else{ - args = [ - ...args, - { - bu: `${credentialName}/${businessUnit ? businessUnit : '*'}`, - mdtypes: lib.removeNonValues([metadataType]) as string[], - key: lib.removeNonValues([key]) as string[], - fromRetrieve - } - ]; - } + }, + }) + ); } - projectArgsMap[projectName].args = args; - } - return projectArgsMap; - }; - - for(const optionType of [filesType, folderType]){ - if(optionType.length){ - const projectMap: {[key: string]: ProjectConfig} = - await configureArgsProject(action, optionType); - await Promise.all(Object.keys(projectMap).map(async (projName: string) => { - log("debug", `Running DevTools Command for project ${projName}`); - let { path, args }: ProjectConfig = projectMap[projName]; - args = args.map((arg: ArgsConfig) => ({ - ...arg, - mdtypes: arg.mdtypes.length - ? `"${(arg.mdtypes as string[]).join(",")}"` - : "", - key: arg.key.length ? `"${(arg.key as string[]).join(",")}"`: "" - })); - - for(const dtArgs of args){ - log("debug", `Action: ${action} Args: ${JSON.stringify(dtArgs)}`); - devtoolsContainers.modifyStatusBar( - "mcdev", - action.toLowerCase() as keyof typeof StatusBarIcon - ); - await editorInput.handleInProgressMessage( - "Notification", - (progress) => { - return new Promise(resolve => DevToolsCommands.runCommand( - null, - action, - path, - dtArgs, - { - loadingNotification: () => progress.report({message: mainConfig.messages.runningCommand}), - handleCommandResult: ({ success, cancelled }: { success: boolean, cancelled: boolean }) => { - if(!cancelled){ - editorInput.handleShowNotificationMessage( - success ? "info" : "error", - success ? mainConfig.messages.successRunningCommand : - mainConfig.messages.failureRunningCommand, - [] - ); - devtoolsContainers.modifyStatusBar( "mcdev", success ? "success" : "error"); - resolve(); - } - } - } - )); - } - ); - } - })); + ); } - } - }catch(error){ - log("error", `[main_handleDevToolsCMCommand] Error: ${error}`); + }) + ); + } } + } catch (error) { + log("error", `[main_handleDevToolsCMCommand] Error: ${error}`); + } } -async function handleCopyToBuCMCommand(selectedPaths: string[]){ - try{ - enum CopyToBUInputOptions { - COPY = `$(${StatusBarIcon.copy_to_folder}) Copy`, - COPY_AND_DEPLOY = `$(${StatusBarIcon.deploy}) Copy & Deploy` - } - - type DevToolsPathConfiguration = DevToolsPathComponents & { absolutePath: string }; - type SupportedMetadataTypeConfiguration = { supportedMetadataTypes: DevToolsPathConfiguration[], unsupportedMetadataTypes: string[] }; - - const actionOptionList: InputOptionsSettings[] = - Object.values(CopyToBUInputOptions).map((action: string) => ({ id: action, label: action, detail: "" })); - - const configuredSelectedPaths: DevToolsPathConfiguration[] = selectedPaths.map((path: string) => { - const [ _ , relativeDevToolsPath ]: string[] = path.split(/\/retrieve\/|\/deploy\//); - return { ...getMCDevRelativePathComponents(relativeDevToolsPath), absolutePath: path }; - }); - - const { supportedMetadataTypes, unsupportedMetadataTypes }: SupportedMetadataTypeConfiguration = - configuredSelectedPaths.reduce((accObj: SupportedMetadataTypeConfiguration, configPath: DevToolsPathConfiguration) => { +async function handleCopyToBuCMCommand(selectedPaths: string[]) { + try { + enum CopyToBUInputOptions { + COPY = `$(${StatusBarIcon.copy_to_folder}) Copy`, + COPY_AND_DEPLOY = `$(${StatusBarIcon.deploy}) Copy & Deploy`, + } - if(DevToolsCommands.isSupportedMetadataType("deploy", configPath.metadataType)){ - accObj.supportedMetadataTypes.push(configPath); - }else{ - accObj.unsupportedMetadataTypes = lib.removeDuplicates([...accObj.unsupportedMetadataTypes, configPath.metadataType]) as string[]; - } - return accObj; + type DevToolsPathConfiguration = DevToolsPathComponents & { + absolutePath: string; + }; + type SupportedMetadataTypeConfiguration = { + supportedMetadataTypes: DevToolsPathConfiguration[]; + unsupportedMetadataTypes: string[]; + }; + + const actionOptionList: InputOptionsSettings[] = Object.values( + CopyToBUInputOptions + ).map((action: string) => ({ id: action, label: action, detail: "" })); + + const configuredSelectedPaths: DevToolsPathConfiguration[] = + selectedPaths.map((path: string) => { + const [_, relativeDevToolsPath]: string[] = path.split( + /\/retrieve\/|\/deploy\// + ); + return { + ...getMCDevRelativePathComponents(relativeDevToolsPath), + absolutePath: path, + }; + }); + + const { + supportedMetadataTypes, + unsupportedMetadataTypes, + }: SupportedMetadataTypeConfiguration = configuredSelectedPaths.reduce( + ( + accObj: SupportedMetadataTypeConfiguration, + configPath: DevToolsPathConfiguration + ) => { + if ( + DevToolsCommands.isSupportedMetadataType( + "deploy", + configPath.metadataType + ) + ) { + accObj.supportedMetadataTypes.push(configPath); + } else { + accObj.unsupportedMetadataTypes = lib.removeDuplicates([ + ...accObj.unsupportedMetadataTypes, + configPath.metadataType, + ]) as string[]; + } + return accObj; + }, + { supportedMetadataTypes: [], unsupportedMetadataTypes: [] } + ); - }, { supportedMetadataTypes: [], unsupportedMetadataTypes: [] }); + if (unsupportedMetadataTypes.length && !supportedMetadataTypes.length) { + logUnsupportedMtdtTypeNotification("deploy", unsupportedMetadataTypes); + return; + } + const selectedAction: InputOptionsSettings | undefined = + (await editorInput.handleQuickPickSelection( + actionOptionList, + mainConfig.messages.copyToBUInput, + false + )) as InputOptionsSettings; - if(unsupportedMetadataTypes.length && !supportedMetadataTypes.length){ - logUnsupportedMtdtTypeNotification("deploy", unsupportedMetadataTypes); - return; + if (selectedAction) { + const credentials: { [key: string]: string[] } | undefined = + await getCredentialsBU(); + if (credentials) { + const instances: string[] = Object.keys(credentials); + const singleInstance: boolean = instances.length === 1; + let selectedInstance: string = singleInstance ? instances[0] : ""; + + if (!singleInstance) { + const instanceOptions: InputOptionsSettings[] = instances.map( + (instance: string) => ({ + id: instance, + label: instance, + detail: "", + }) + ); + const instanceResponse: InputOptionsSettings | undefined = + (await editorInput.handleQuickPickSelection( + instanceOptions, + mainConfig.messages.selectCredential, + false + )) as InputOptionsSettings; + if (instanceResponse) { + selectedInstance = instanceResponse.id; + } } - const selectedAction: InputOptionsSettings | undefined = await editorInput.handleQuickPickSelection( - actionOptionList, - mainConfig.messages.copyToBUInput, - false - ) as InputOptionsSettings; - - if(selectedAction){ - const credentials: {[key: string]: string[]} | undefined = await getCredentialsBU(); - if(credentials){ - const instances: string[] = Object.keys(credentials); - const singleInstance: boolean = instances.length === 1; - let selectedInstance: string = singleInstance ? instances[0] : ""; - - if(!singleInstance){ - const instanceOptions: InputOptionsSettings[] = - instances.map((instance: string) => ({ id: instance, label: instance, detail: "" })); - const instanceResponse: InputOptionsSettings | undefined = - await editorInput.handleQuickPickSelection( - instanceOptions, - mainConfig.messages.selectCredential, - false - ) as InputOptionsSettings; - if(instanceResponse){ - selectedInstance = instanceResponse.id; + if (selectedInstance) { + const buOptionsList: InputOptionsSettings[] = credentials[ + selectedInstance + ].map((businessUnit: string) => ({ + id: businessUnit, + label: businessUnit, + detail: "", + })); + const buOptions: InputOptionsSettings[] | undefined = + (await editorInput.handleQuickPickSelection( + buOptionsList, + mainConfig.messages.selectBusinessUnit, + true + )) as InputOptionsSettings[]; + + if (buOptions) { + type FileCopyConfig = { + sourceFilePath: string; + targetFilePath: string; + }; + const buSelected: string[] = buOptions.map( + (bu: InputOptionsSettings) => bu.id + ); + + const filePathsConfigured: FileCopyConfig[] = supportedMetadataTypes + .map((configPath: DevToolsPathConfiguration) => { + const { absolutePath, businessUnit } = configPath; + + if (businessUnit) { + let paths: string[] = []; + + if (file.isPathADirectory(absolutePath)) { + paths = [...paths, absolutePath]; + } else { + const [currentFileExt]: string[] = + mainConfig.fileExtensions.filter((fileExt: string) => + absolutePath.endsWith(fileExt) + ); + if (currentFileExt) { + paths = [ + ...paths, + ...file.fileExists( + mainConfig.fileExtensions + .filter( + (fileExtension: string) => + !mainConfig.noCopyFileExtensions.includes( + fileExtension + ) + ) + .map((fileExtension: string) => + absolutePath.replace( + currentFileExt, + fileExtension + ) + ) + ), + ]; } + } + + return buSelected + .filter((buSelected: string) => buSelected !== businessUnit) + .map((buSelected: string) => + paths.map((keyFilePath: string) => ({ + sourceFilePath: keyFilePath, + targetFilePath: keyFilePath + .replace(/\/retrieve\//, "/deploy/") + .replace(businessUnit, buSelected), + })) + ) + .flat(); } + return; + }) + .filter( + (filePath: FileCopyConfig[] | undefined) => + filePath !== undefined + ) + .flat() as FileCopyConfig[]; + + const targetFilePaths: string[] = await file.copyFile( + filePathsConfigured as FileCopyConfig[], + (error: any) => { + if (error !== null) { + log( + "error", + `[main_handleCopyToBuCMCommand] Failed to copy file: ${error}` + ); + } + } + ); - if(selectedInstance){ - const buOptionsList: InputOptionsSettings[] = - credentials[selectedInstance].map((businessUnit: string) => ({ id: businessUnit, label: businessUnit, detail: "" })); - const buOptions: InputOptionsSettings[] | undefined = - await editorInput.handleQuickPickSelection(buOptionsList, mainConfig.messages.selectBusinessUnit, true) as InputOptionsSettings[]; - - if(buOptions){ - - type FileCopyConfig = { sourceFilePath: string; targetFilePath: string; }; - const buSelected: string[] = buOptions.map((bu: InputOptionsSettings) => bu.id); - - const filePathsConfigured: FileCopyConfig[] = - supportedMetadataTypes.map((configPath: DevToolsPathConfiguration) => { - - const { absolutePath, businessUnit } = configPath; - - if(businessUnit){ - let paths: string[] = []; - - if(file.isPathADirectory(absolutePath)){ - paths = [...paths, absolutePath]; - }else{ - const [ currentFileExt ]: string[] = - mainConfig.fileExtensions.filter((fileExt: string) => absolutePath.endsWith(fileExt)); - if(currentFileExt){ - paths = [ - ...paths, - ...file.fileExists( - mainConfig.fileExtensions - .filter((fileExtension: string) => !mainConfig.noCopyFileExtensions.includes(fileExtension)) - .map((fileExtension: string) => absolutePath.replace(currentFileExt, fileExtension)) - ) - ]; - } - } - - return buSelected - .filter((buSelected: string) => buSelected !== businessUnit) - .map((buSelected: string) => - paths.map((keyFilePath: string) => - ({ - sourceFilePath: keyFilePath, - targetFilePath: keyFilePath - .replace(/\/retrieve\//, "/deploy/") - .replace(businessUnit, buSelected) - })) - ) - .flat(); - } - return; - }) - .filter((filePath: FileCopyConfig[] | undefined) => filePath !== undefined) - .flat() as FileCopyConfig[]; - - const targetFilePaths: string[] = await file.copyFile(filePathsConfigured as FileCopyConfig[], (error: any) => { - if(error !== null){ - log("error", `[main_handleCopyToBuCMCommand] Failed to copy file: ${error}`); - } - }); - - if(selectedAction.label === CopyToBUInputOptions.COPY_AND_DEPLOY){ - handleDevToolsCMCommand("deploy", targetFilePaths); - } - - if(unsupportedMetadataTypes.length){ - logUnsupportedMtdtTypeNotification("deploy", unsupportedMetadataTypes); - } + if (selectedAction.label === CopyToBUInputOptions.COPY_AND_DEPLOY) { + handleDevToolsCMCommand("deploy", targetFilePaths); + } - log("info", - `Copying to the deploy folder`+ - `${selectedAction.label === CopyToBUInputOptions.COPY_AND_DEPLOY ? " and Deploying " : " "}`+ - `the following selected files:\n` + - editorWorkspace.getFileSystemPaths(targetFilePaths).join("\n") - ); - } - } - }else{ - log("error", `[main_handleCopyToBuCMCommand] Failed to retrieve DevTools credentials.`); + if (unsupportedMetadataTypes.length) { + logUnsupportedMtdtTypeNotification( + "deploy", + unsupportedMetadataTypes + ); } + + log( + "info", + `Copying to the deploy folder` + + `${selectedAction.label === CopyToBUInputOptions.COPY_AND_DEPLOY ? " and Deploying " : " "}` + + `the following selected files:\n` + + editorWorkspace.getFileSystemPaths(targetFilePaths).join("\n") + ); + } } - }catch(error){ - log("error", `[main_handleCopyToBuCMCommand] Error: ${error}`); + } else { + log( + "error", + `[main_handleCopyToBuCMCommand] Failed to retrieve DevTools credentials.` + ); + } } + } catch (error) { + log("error", `[main_handleCopyToBuCMCommand] Error: ${error}`); + } } export const devtoolsMain = { - initDevToolsExtension, - handleStatusBarActions, - handleContextMenuActions -}; \ No newline at end of file + initDevToolsExtension, + handleStatusBarActions, + handleContextMenuActions, +}; From 269e7ce9bbe5560327ec76d0d9e53475e1ebe97d Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Fri, 19 Apr 2024 16:17:32 +0200 Subject: [PATCH 05/25] amp extension added to package.json --- src/config/main.config.ts | 92 +-- src/devtools/main.ts | 1531 ++++++++++++++++--------------------- 2 files changed, 707 insertions(+), 916 deletions(-) diff --git a/src/config/main.config.ts b/src/config/main.config.ts index f88be3a..2b573d3 100644 --- a/src/config/main.config.ts +++ b/src/config/main.config.ts @@ -1,53 +1,43 @@ export const mainConfig: { - credentialsFilename: string; - requiredFiles: string[]; - fileExtensions: string[]; - noCopyFileExtensions: string[]; - allPlaceholder: string; - extensionsDependencies: string[]; - messages: { - selectedCredentialsBU: string; - selectCredential: string; - selectBusinessUnit: string; - selectCommandType: string; - selectCommand: string; - initDevTools: string; - initiatingDevTools: string; - copyToBUInput: string; - runningCommand: string; - successRunningCommand: string; - failureRunningCommand: string; - unsupportedMetadataType: string; - }; + credentialsFilename: string, + requiredFiles: string[], + fileExtensions: string[], + noCopyFileExtensions: string[], + allPlaceholder: string, + extensionsDependencies: string[], + messages: { + selectedCredentialsBU: string, + selectCredential: string, + selectBusinessUnit: string, + selectCommandType: string, + selectCommand: string, + initDevTools: string, + initiatingDevTools: string, + copyToBUInput: string, + runningCommand: string, + successRunningCommand: string, + failureRunningCommand: string, + unsupportedMetadataType: string + } } = { - credentialsFilename: ".mcdevrc.json", - requiredFiles: [".mcdevrc.json", ".mcdev-auth.json"], - fileExtensions: [ - "meta.json", - "meta.sql", - "meta.html", - "meta.ssjs", - "meta.amp", - "doc.md", - ], - noCopyFileExtensions: ["doc.md"], - allPlaceholder: "*All*", - extensionsDependencies: ["IBM.output-colorizer"], - messages: { - selectedCredentialsBU: "Select a Credential/BU before running the command", - selectCredential: "Select one of the credentials below...", - selectBusinessUnit: "Select all or one of the business units below...", - selectCommandType: "Select one DevTools command type...", - selectCommand: "Select one DevTools Command...", - initDevTools: - "Do you wish to initialize SFMC DevTools project in the current directory?", - initiatingDevTools: "Initiating SFMC DevTools project...", - copyToBUInput: "Select one of the actions below...", - runningCommand: "Running DevTools Command...", - successRunningCommand: "DevTools Command has run successfully.", - failureRunningCommand: - "Oh no. Something went wrong while running DevTools Command.", - unsupportedMetadataType: - "SFMC DevTools currently does not support one or more of the selected metadata types.", - }, -}; + credentialsFilename: ".mcdevrc.json", + requiredFiles: [".mcdevrc.json", ".mcdev-auth.json"], + fileExtensions: ["meta.json", "meta.sql", "meta.html", "meta.ssjs", "meta.amp", "doc.md"], + noCopyFileExtensions: ["doc.md"], + allPlaceholder: "*All*", + extensionsDependencies: ["IBM.output-colorizer"], + messages: { + selectedCredentialsBU: "Select a Credential/BU before running the command", + selectCredential: "Select one of the credentials below...", + selectBusinessUnit: "Select all or one of the business units below...", + selectCommandType: "Select one DevTools command type...", + selectCommand: "Select one DevTools Command...", + initDevTools: "Do you wish to initialize SFMC DevTools project in the current directory?", + initiatingDevTools: "Initiating SFMC DevTools project...", + copyToBUInput: "Select one of the actions below...", + runningCommand: "Running DevTools Command...", + successRunningCommand: "DevTools Command has run successfully.", + failureRunningCommand: "Oh no. Something went wrong while running DevTools Command.", + unsupportedMetadataType: "SFMC DevTools currently does not support one or more of the selected metadata types." + } +}; \ No newline at end of file diff --git a/src/devtools/main.ts b/src/devtools/main.ts index 8a18eb9..a98c71f 100644 --- a/src/devtools/main.ts +++ b/src/devtools/main.ts @@ -1,10 +1,7 @@ import { mainConfig } from "../config/main.config"; import { InstallDevToolsResponseOptions } from "../config/installer.config"; import DevToolsCommands from "./commands/DevToolsCommands"; -import { - PrerequisitesInstalledReturn, - devtoolsPrerequisites, -} from "./prerequisites"; +import { PrerequisitesInstalledReturn, devtoolsPrerequisites } from "./prerequisites"; import { devtoolsInstaller } from "./installer"; import { devtoolsContainers, StatusBarIcon } from "./containers"; import { editorInput } from "../editor/input"; @@ -18,944 +15,748 @@ import DevToolsPathComponents from "../shared/interfaces/devToolsPathComponents" import { lib } from "../shared/utils/lib"; import { file } from "../shared/utils/file"; -async function initDevToolsExtension(): Promise { - try { - log("info", "Running SFMC DevTools extension..."); - editorDependencies.activateExtensionDependencies( - mainConfig.extensionsDependencies - ); +async function initDevToolsExtension(): Promise{ - // activate the status bar - devtoolsContainers.activateStatusBar(); + try{ + log("info", "Running SFMC DevTools extension..."); - // activate the context menus options - devtoolsContainers.activateContextMenuCommands(); + editorDependencies.activateExtensionDependencies(mainConfig.extensionsDependencies); - // If it's already a mcdev project it will check if prerequisites and devtools are installed - if (await isADevToolsProject()) { - await handleDevToolsRequirements(); - } else { - // activate status bar immediately when isDevToolsProject is false - // devtoolsContainers.activateStatusBar(false, DevToolsCommands.commandPrefix); - if (await anySubFolderIsDevToolsProject()) { - // init DevTools Commands - DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); - } + // activate the status bar + devtoolsContainers.activateStatusBar(); + + // activate the context menus options + devtoolsContainers.activateContextMenuCommands(); + + // If it's already a mcdev project it will check if prerequisites and devtools are installed + if(await isADevToolsProject()){ + await handleDevToolsRequirements(); + }else{ + // activate status bar immediately when isDevToolsProject is false + // devtoolsContainers.activateStatusBar(false, DevToolsCommands.commandPrefix); + if(await anySubFolderIsDevToolsProject()){ + // init DevTools Commands + DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); + } + } + }catch(error){ + log("error", `[main_initDevToolsExtension] Error: ${error}`); } - } catch (error) { - log("error", `[main_initDevToolsExtension] Error: ${error}`); - } } async function isADevToolsProject(projectName?: string): Promise { - log("debug", "Checking if folder is a SFMC DevTools project..."); - log("debug", `DevTools files: [${mainConfig.requiredFiles}]`); - - const findMcdevFiles: boolean[] = await Promise.all( - mainConfig.requiredFiles.map(async (filename: string) => - editorWorkspace.isFileInFolder(`${projectName || ""}${filename}`) - ) - ); - log( - "debug", - `Folder ${findMcdevFiles.every((result: boolean) => result === true) ? "is" : "is not"} a SFMC DevTools project.` - ); - return findMcdevFiles.every((result: boolean) => result === true); + log("debug", "Checking if folder is a SFMC DevTools project..."); + log("debug", `DevTools files: [${mainConfig.requiredFiles}]`); + + const findMcdevFiles: boolean[] = await Promise.all(mainConfig.requiredFiles + .map(async(filename: string) => editorWorkspace.isFileInFolder( + `${projectName || '' }${filename}` + ))); + log("debug", + `Folder ${findMcdevFiles.every((result: boolean) => result === true) ? 'is' : 'is not'} a SFMC DevTools project.` + ); + return findMcdevFiles.every((result: boolean) => result === true); } -async function handleDevToolsRequirements(/*isDevToolsProject: boolean*/): Promise { - log("info", "Checking SFMC DevTools requirements..."); - const prerequisites: PrerequisitesInstalledReturn = - await devtoolsPrerequisites.arePrerequisitesInstalled(); - log( - "info", - `SFMC Pre-Requisites ${ - prerequisites.prerequisitesInstalled ? "are" : "are not" - } installed.` - ); - if (prerequisites.prerequisitesInstalled) { - const isDevToolsInstalled: boolean = - await devtoolsInstaller.isDevToolsInstalled(); - if (!isDevToolsInstalled) { - await devtoolsInstaller.noDevToolsHandler(); - return; - } - log("info", "SFMC DevTools is installed."); +async function handleDevToolsRequirements(/*isDevToolsProject: boolean*/): Promise{ + log("info", "Checking SFMC DevTools requirements..."); + const prerequisites: PrerequisitesInstalledReturn = await devtoolsPrerequisites.arePrerequisitesInstalled(); + log("info", `SFMC Pre-Requisites ${ + prerequisites.prerequisitesInstalled ? 'are' : 'are not' + } installed.`); + if(prerequisites.prerequisitesInstalled){ + const isDevToolsInstalled: boolean = await devtoolsInstaller.isDevToolsInstalled(); + if(!isDevToolsInstalled){ + await devtoolsInstaller.noDevToolsHandler(); + return; + } + log("info", "SFMC DevTools is installed."); - // Needs to check if it's a DevTools Project or not - // if(isDevToolsProject){ - // // activate status bar immediately when isDevToolsProject is true - // devtoolsContainers.activateStatusBar(true, DevToolsCommands.commandPrefix); - // } + // Needs to check if it's a DevTools Project or not + // if(isDevToolsProject){ + // // activate status bar immediately when isDevToolsProject is true + // devtoolsContainers.activateStatusBar(true, DevToolsCommands.commandPrefix); + // } - // init DevTools Commands - DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); - return; - } - log( - "debug", - `Missing Pre-requisites: [${prerequisites.missingPrerequisites}]` - ); - devtoolsPrerequisites.noPrerequisitesHandler( - editorContext.get().extensionPath, - prerequisites.missingPrerequisites - ); + // init DevTools Commands + DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); + return; + } + log("debug", `Missing Pre-requisites: [${prerequisites.missingPrerequisites}]`); + devtoolsPrerequisites.noPrerequisitesHandler( + editorContext.get().extensionPath, + prerequisites.missingPrerequisites + ); } async function anySubFolderIsDevToolsProject(): Promise { - const subFolders: string[] = await editorWorkspace.getWorkspaceSubFolders(); - if (subFolders.length) { - const subFolderProjects: boolean[] = await Promise.all( - subFolders.map(async (sf: string) => await isADevToolsProject(sf + "/")) - ); - return subFolderProjects.some((sfResult: boolean) => sfResult); - } else { - log("debug", "Workspace doesn't contain any sub folders."); - } - return false; + const subFolders: string[] = await editorWorkspace.getWorkspaceSubFolders(); + if(subFolders.length){ + const subFolderProjects: boolean[] = + await Promise.all(subFolders.map(async (sf: string) => await isADevToolsProject(sf + "/"))); + return subFolderProjects.some((sfResult: boolean) => sfResult); + }else{ + log("debug", "Workspace doesn't contain any sub folders."); + } + return false; } function handleStatusBarActions(action: string): void { - log("debug", "Setting Status Bar Actions..."); - log("debug", `Action: ${action}`); - switch (action.toLowerCase()) { - case "sbcredentialbu": - changeCredentialsBU(); - break; - case "sbcommand": - handleDevToolsSBCommand(); - break; - case "sbinitialize": - initialize(); - break; - case "sbmcdev": - handleMCDevSBCommand(); - break; - default: - log( - "error", - `main_handleStatusBarActions: Invalid Status Bar Action '${action}'` - ); - } + log("debug", "Setting Status Bar Actions..."); + log("debug", `Action: ${action}`); + switch(action.toLowerCase()){ + case "sbcredentialbu": + changeCredentialsBU(); + break; + case "sbcommand": + handleDevToolsSBCommand(); + break; + case "sbinitialize": + initialize(); + break; + case "sbmcdev": + handleMCDevSBCommand(); + break; + default: + log("error", `main_handleStatusBarActions: Invalid Status Bar Action '${action}'`); + } } -function handleContextMenuActions( - action: string, - selectedFiles: string[] -): void { - devtoolsContainers.modifyStatusBar("mcdev", "success"); - - log("debug", "Setting Context Menu Actions..."); - log( - "debug", - `Action: ${action} Number of Selected Files: ${selectedFiles.length}` - ); - switch (action.toLowerCase()) { - case "cmretrieve": - handleDevToolsCMCommand("retrieve", selectedFiles); - break; - case "cmdeploy": - handleDevToolsCMCommand("deploy", selectedFiles); - break; - case "cmcopytobu": - handleCopyToBuCMCommand(selectedFiles); - break; - default: - log( - "error", - `main_handleContextMenuActions: Invalid Context Menu Action '${action}'` - ); - } +function handleContextMenuActions(action: string, selectedFiles: string[]): void { + + devtoolsContainers.modifyStatusBar( "mcdev", "success"); + + log("debug", "Setting Context Menu Actions..."); + log("debug", `Action: ${action} Number of Selected Files: ${selectedFiles.length}`); + switch(action.toLowerCase()){ + case "cmretrieve": + handleDevToolsCMCommand("retrieve", selectedFiles); + break; + case "cmdeploy": + handleDevToolsCMCommand("deploy", selectedFiles); + break; + case "cmcopytobu": + handleCopyToBuCMCommand(selectedFiles); + break; + default: + log("error", `main_handleContextMenuActions: Invalid Context Menu Action '${action}'`); + } } -async function getCredentialsBU(): Promise< - { [key: string]: string[] } | undefined -> { - try { - // gets the project workspace uri path - const folderPath: string = editorWorkspace.getWorkspaceURIPath(); - - // retrieves all the content inside the file that contains the mcdev credentials - const credBUContent: string = await editorWorkspace.readFile( - `${folderPath}/${mainConfig.credentialsFilename}` - ); - - // parses the content from text to JSON - const parsedCredBUContent: any = JSON.parse(credBUContent); - - // return a json with each credential associated with a list of its business units - if (parsedCredBUContent && "credentials" in parsedCredBUContent) { - return Object.keys(parsedCredBUContent.credentials).reduce( - (prev: {}, credential: string) => { - const { businessUnits } = parsedCredBUContent.credentials[credential]; - if (businessUnits && Object.keys(businessUnits).length) { - return { ...prev, [credential]: Object.keys(businessUnits) }; - } else { - log( - "error", - `Could not find any business units for the credential '${credential}'` - ); - return { ...prev }; - } - }, - {} - ); +async function getCredentialsBU(): Promise<{[key: string]: string[] } | undefined >{ + try{ + // gets the project workspace uri path + const folderPath: string = editorWorkspace.getWorkspaceURIPath(); + + // retrieves all the content inside the file that contains the mcdev credentials + const credBUContent: string = + await editorWorkspace.readFile(`${folderPath}/${mainConfig.credentialsFilename}`); + + // parses the content from text to JSON + const parsedCredBUContent: any = JSON.parse(credBUContent); + + // return a json with each credential associated with a list of its business units + if(parsedCredBUContent && "credentials" in parsedCredBUContent){ + return Object.keys(parsedCredBUContent.credentials) + .reduce((prev: {}, credential: string) => { + const { businessUnits } = parsedCredBUContent.credentials[credential]; + if(businessUnits && Object.keys(businessUnits).length){ + return { ...prev, [credential]: Object.keys(businessUnits) }; + }else{ + log("error", `Could not find any business units for the credential '${credential}'`); + return {...prev }; + } + }, {}); + } + log("error", + `[main_getCredentialsBU] Error: Could not find any credentials in the '${mainConfig.credentialsFilename}' file.` + ); + }catch(error){ + log("error", `[main_getCredentialsBU] Error: ${error}`); } - log( - "error", - `[main_getCredentialsBU] Error: Could not find any credentials in the '${mainConfig.credentialsFilename}' file.` - ); - } catch (error) { - log("error", `[main_getCredentialsBU] Error: ${error}`); - } - return; + return; } -async function changeCredentialsBU(): Promise { - log("info", "Changing SFMC DevTools credententials/bu..."); - const credentialsBUList: { [key: string]: string[] } | undefined = - await getCredentialsBU(); - - if (credentialsBUList) { - // Configures all placeholder as an selectable option - const allPlaceholderOption: InputOptionsSettings = { - id: mainConfig.allPlaceholder.toLowerCase(), - label: mainConfig.allPlaceholder, - detail: "", - }; - // Configures all credential names as selectable options - const credentialsOptions: InputOptionsSettings[] = Object.keys( - credentialsBUList - ).map((credential: string) => ({ - id: credential.toLowerCase(), - label: credential, - detail: "", - })); - - // Requests user to select one credential option - const selectedCredential: - | InputOptionsSettings - | InputOptionsSettings[] - | undefined = await editorInput.handleQuickPickSelection( - [allPlaceholderOption, ...credentialsOptions], - mainConfig.messages.selectCredential, - false - ); +async function changeCredentialsBU(): Promise{ + log("info", "Changing SFMC DevTools credententials/bu..."); + const credentialsBUList: {[key: string]: string[]} | undefined = + await getCredentialsBU(); - if (selectedCredential && !Array.isArray(selectedCredential)) { - log("debug", `User selected '${selectedCredential.label}' credential.`); - if (selectedCredential.id === mainConfig.allPlaceholder.toLowerCase()) { - // if user selects *All* then status bar should be replaced with it - // devtoolsContainers.modifyStatusBar( - // "credentialbu", - // DevToolsCommands.commandPrefix, - // selectedCredential.label - // ); - } else { - const businessUnitsList: string[] = - credentialsBUList[selectedCredential.label]; - - // Configures all business units names as selectable options - const businessUnitOptions: InputOptionsSettings[] = - businessUnitsList.map((businessUnit: string) => ({ - id: businessUnit.toLowerCase(), - label: businessUnit, - detail: "", - })); - - // Requests user to select all or one Business Unit - const selectedBU: - | InputOptionsSettings - | InputOptionsSettings[] - | undefined = await editorInput.handleQuickPickSelection( - [allPlaceholderOption, ...businessUnitOptions], - mainConfig.messages.selectBusinessUnit, - false - ); + if(credentialsBUList){ + // Configures all placeholder as an selectable option + const allPlaceholderOption: InputOptionsSettings = { + id: mainConfig.allPlaceholder.toLowerCase(), + label: mainConfig.allPlaceholder, + detail: "" + }; + // Configures all credential names as selectable options + const credentialsOptions: InputOptionsSettings[] = Object.keys(credentialsBUList) + .map((credential: string) => ({ + id: credential.toLowerCase(), + label: credential, + detail: "" + })); - if (selectedBU && !Array.isArray(selectedBU)) { - log("debug", `User selected '${selectedBU.label}' business unit.`); + // Requests user to select one credential option + const selectedCredential: InputOptionsSettings | InputOptionsSettings[] | undefined = + await editorInput.handleQuickPickSelection( + [allPlaceholderOption, ...credentialsOptions], + mainConfig.messages.selectCredential, + false + ); - // Modify the credential status bar icon to contain the - // selected Credential + selected Business Unit - // devtoolsContainers.modifyStatusBar( - // "credentialbu", - // DevToolsCommands.commandPrefix, - // `${selectedCredential.label}/${selectedBU.label}` - // ); + if(selectedCredential && !Array.isArray(selectedCredential)){ + log("debug", `User selected '${selectedCredential.label}' credential.`); + if(selectedCredential.id === mainConfig.allPlaceholder.toLowerCase()){ + // if user selects *All* then status bar should be replaced with it + // devtoolsContainers.modifyStatusBar( + // "credentialbu", + // DevToolsCommands.commandPrefix, + // selectedCredential.label + // ); + }else{ + const businessUnitsList: string[] = credentialsBUList[selectedCredential.label]; + + // Configures all business units names as selectable options + const businessUnitOptions: InputOptionsSettings[] = businessUnitsList + .map((businessUnit: string) => ({ + id: businessUnit.toLowerCase(), + label: businessUnit, + detail: "" + })); + + // Requests user to select all or one Business Unit + const selectedBU: InputOptionsSettings | InputOptionsSettings[] | undefined = + await editorInput.handleQuickPickSelection( + [allPlaceholderOption, ...businessUnitOptions], + mainConfig.messages.selectBusinessUnit, + false + ); + + if(selectedBU && !Array.isArray(selectedBU)){ + log("debug", `User selected '${selectedBU.label}' business unit.`); + + // Modify the credential status bar icon to contain the + // selected Credential + selected Business Unit + // devtoolsContainers.modifyStatusBar( + // "credentialbu", + // DevToolsCommands.commandPrefix, + // `${selectedCredential.label}/${selectedBU.label}` + // ); + } + } } - } + }else{ + log("error", "[main_changeCredentialsBU] Error: CredentialBU List is undefined."); } - } else { - log( - "error", - "[main_changeCredentialsBU] Error: CredentialBU List is undefined." - ); - } } -async function handleDevToolsSBCommand(): Promise { - log("debug", "Selecting SB SFMC DevTools command..."); - const devToolsCommandTypes: { id: string; title: string }[] = - DevToolsCommands.getAllCommandTypes(); - - if (devToolsCommandTypes) { - // Configures all commandTypes names as selectable options - const commandTypesOptions: InputOptionsSettings[] = - devToolsCommandTypes.map( - ({ id, title }: { id: string; title: string }) => ({ - id: id.toLowerCase(), - label: title, - detail: "", - }) - ); - - // Requests user to select one DevTools Command Type - const selectedCommandType: - | InputOptionsSettings - | InputOptionsSettings[] - | undefined = await editorInput.handleQuickPickSelection( - commandTypesOptions, - mainConfig.messages.selectCommandType, - false - ); - - if (selectedCommandType && !Array.isArray(selectedCommandType)) { - log( - "debug", - `User selected in ${selectedCommandType.label} DevTools Command type.` - ); - const commands: DevToolsCommandSetting[] = - DevToolsCommands.getCommandsListByType(selectedCommandType.id); - - // Configures all devtools commands as selectable options - const commandsOptions: InputOptionsSettings[] = commands.map( - (command: DevToolsCommandSetting) => ({ - id: command.id.toLowerCase(), - label: command.title, - detail: command.description, - }) - ); - // Requests user to select one DevTools Command Type - const selectedCommandOption: - | InputOptionsSettings - | InputOptionsSettings[] - | undefined = await editorInput.handleQuickPickSelection( - commandsOptions, - mainConfig.messages.selectCommand, - false - ); - - if (selectedCommandOption && !Array.isArray(selectedCommandOption)) { - log( - "debug", - `User selected in ${selectedCommandOption.label} DevTools Command.` +async function handleDevToolsSBCommand(): Promise{ + log("debug", "Selecting SB SFMC DevTools command..."); + const devToolsCommandTypes: {id: string, title: string}[] = DevToolsCommands.getAllCommandTypes(); + + if(devToolsCommandTypes){ + // Configures all commandTypes names as selectable options + const commandTypesOptions: InputOptionsSettings[] = devToolsCommandTypes + .map(({ id, title }: {id: string, title: string}) => ({ + id: id.toLowerCase(), + label: title, + detail: "" + })); + + // Requests user to select one DevTools Command Type + const selectedCommandType: InputOptionsSettings | InputOptionsSettings[] | undefined = + await editorInput.handleQuickPickSelection( + commandTypesOptions, + mainConfig.messages.selectCommandType, + false ); - if (devtoolsContainers.isCredentialBUSelected()) { - log("info", "Credential/BU is selected..."); - const selectedCredentialBU: string | undefined = - devtoolsContainers.getCredentialsBUName( - DevToolsCommands.commandPrefix - ); - if (selectedCredentialBU) { - // execute DevTools Command - DevToolsCommands.runCommand( - selectedCommandType.id, - selectedCommandOption.id, - editorWorkspace.getWorkspaceURIPath(), - { - bu: selectedCredentialBU.replace( - mainConfig.allPlaceholder, - "'*'" - ), - }, - { handleCommandResult: (result: any) => log("info", result) } - ); - } else { - log( - "error", - `[main_handleDevToolsCommandSelection] Error: Failed to retrieve Credential/BU.` - ); - } - } else { - if (DevToolsCommands.requiresCredentials(selectedCommandType.id)) { - log( - "debug", - `Crendentials are required to be selected first for type '${selectedCommandType.id}'` - ); - editorInput.handleShowNotificationMessage( - "warning", - `${mainConfig.messages.selectedCredentialsBU} '${lib.capitalizeFirstLetter( - selectedCommandOption.id - )}'...`, - [] - ); - lib.waitTime(1000, () => changeCredentialsBU()); - } else { - // execute DevTools Command - DevToolsCommands.runCommand( - selectedCommandType.id, - selectedCommandOption.id, - editorWorkspace.getWorkspaceURIPath(), - {}, - { handleCommandResult: (result: any) => log("info", result) } + + if(selectedCommandType && !Array.isArray(selectedCommandType)){ + log("debug", `User selected in ${selectedCommandType.label} DevTools Command type.`); + const commands: DevToolsCommandSetting[] = + DevToolsCommands.getCommandsListByType(selectedCommandType.id); + + // Configures all devtools commands as selectable options + const commandsOptions: InputOptionsSettings[] = commands + .map((command: DevToolsCommandSetting) => ({ + id: command.id.toLowerCase(), + label: command.title, + detail: command.description + })); + // Requests user to select one DevTools Command Type + const selectedCommandOption: InputOptionsSettings | InputOptionsSettings[] | undefined = + await editorInput.handleQuickPickSelection( + commandsOptions, + mainConfig.messages.selectCommand, + false ); - } + + if(selectedCommandOption && !Array.isArray(selectedCommandOption)){ + log("debug", `User selected in ${selectedCommandOption.label} DevTools Command.`); + if(devtoolsContainers.isCredentialBUSelected()){ + log("info", "Credential/BU is selected..."); + const selectedCredentialBU: string | undefined = + devtoolsContainers.getCredentialsBUName(DevToolsCommands.commandPrefix); + if(selectedCredentialBU){ + // execute DevTools Command + DevToolsCommands.runCommand( + selectedCommandType.id, + selectedCommandOption.id, + editorWorkspace.getWorkspaceURIPath(), + { bu: selectedCredentialBU.replace(mainConfig.allPlaceholder, "'*'") }, + { handleCommandResult: (result: any) => log("info", result) } + ); + }else{ + log("error", + `[main_handleDevToolsCommandSelection] Error: Failed to retrieve Credential/BU.` + ); + } + }else{ + if(DevToolsCommands.requiresCredentials(selectedCommandType.id)){ + log("debug", + `Crendentials are required to be selected first for type '${selectedCommandType.id}'` + ); + editorInput.handleShowNotificationMessage("warning", + `${mainConfig.messages.selectedCredentialsBU} '${ + lib.capitalizeFirstLetter(selectedCommandOption.id) + }'...`, + [] + ); + lib.waitTime(1000, () => changeCredentialsBU()); + }else{ + // execute DevTools Command + DevToolsCommands.runCommand( + selectedCommandType.id, + selectedCommandOption.id, + editorWorkspace.getWorkspaceURIPath(), + {}, + { handleCommandResult: (result: any) => log("info", result) } + ); + } + } + } } - } } - } } -async function initialize(): Promise { - await handleDevToolsRequirements(); +async function initialize(): Promise{ + await handleDevToolsRequirements(); - const userResponse: string | undefined = - await editorInput.handleShowOptionsMessage( - mainConfig.messages.initDevTools, - Object.keys(InstallDevToolsResponseOptions).filter((v) => - isNaN(Number(v)) - ) + const userResponse: string | undefined = await editorInput.handleShowOptionsMessage( + mainConfig.messages.initDevTools, + Object.keys(InstallDevToolsResponseOptions).filter((v) => isNaN(Number(v))) ); - if ( - userResponse && - InstallDevToolsResponseOptions[ - userResponse as keyof typeof InstallDevToolsResponseOptions - ] - ) { - log("info", "Initializing SFMC DevTools project..."); - DevToolsCommands.runCommand( - null, - "init", - editorWorkspace.getWorkspaceURIPath(), - {}, - { - handleCommandResult: () => { - log("info", "Reloading VSCode workspace window..."); - lib.waitTime(5000, () => editorWorkspace.reloadWorkspace()); - }, - } - ); - } -} - -function handleMCDevSBCommand() { - editorOutput.showOuputChannel(); + if(userResponse && + InstallDevToolsResponseOptions[userResponse as keyof typeof InstallDevToolsResponseOptions]){ + log("info", "Initializing SFMC DevTools project..."); + DevToolsCommands.runCommand( + null, + "init", + editorWorkspace.getWorkspaceURIPath(), + {}, + { + handleCommandResult: () => { + log("info", "Reloading VSCode workspace window..."); + lib.waitTime(5000, () => editorWorkspace.reloadWorkspace()); + } + } + ); + } } -function getMCDevRelativePathComponents( - relativePath: string -): DevToolsPathComponents { - const [credentialName, businessUnit, metadataType, ...keys]: string[] = - relativePath.split("/"); - return { credentialName, businessUnit, metadataType, keys }; +function handleMCDevSBCommand(){ + editorOutput.showOuputChannel(); } -function logUnsupportedMtdtTypeNotification( - action: string, - unsupportedMtdtTypes: string | string[] -) { - [unsupportedMtdtTypes].flat().forEach((metadataType: string) => { - log( - "error", - `Error: SFMC DevTools currently does not support ${action} for the metadata type: '${metadataType}'` - ); - }); - devtoolsContainers.modifyStatusBar("mcdev", "error"); - editorInput.handleShowNotificationMessage( - "error", - mainConfig.messages.unsupportedMetadataType, - [] - ); +function getMCDevRelativePathComponents(relativePath: string): DevToolsPathComponents { + const [ + credentialName, + businessUnit, + metadataType, + ...keys + ]: string[] = relativePath.split("/"); + return { credentialName, businessUnit, metadataType, keys }; } -async function handleDevToolsCMCommand( - action: string, - selectedPaths: string[] -): Promise { - log("debug", "Selecting CM SFMC DevTools command..."); - try { - type ArgsConfig = { - bu: string; - mdtypes: string | string[]; - key: string | string[]; - fromRetrieve: boolean; - }; - type ProjectConfig = { path: string; args: ArgsConfig[] }; - let filesType: string[] = [], - folderType: string[] = []; - - // Separates files and folders into different arrays - for (const path of selectedPaths) { - (await editorWorkspace.isFile(path)) - ? filesType.push(path) - : folderType.push(path); - } +function logUnsupportedMtdtTypeNotification(action: string, unsupportedMtdtTypes: string | string[]){ + [unsupportedMtdtTypes] + .flat() + .forEach((metadataType: string) => { + log( + "error", + `Error: SFMC DevTools currently does not support ${action} for the metadata type: '${metadataType}'` + ); + }); + devtoolsContainers.modifyStatusBar("mcdev", "error"); + editorInput.handleShowNotificationMessage("error", mainConfig.messages.unsupportedMetadataType, []); +}; - // Removes duplicate files (eg. some files have the same name with md and json) - if (filesType.length) { - filesType = lib.removeDuplicates( - lib.removeExtensionFromFile(filesType, mainConfig.fileExtensions) - ) as string[]; - } +async function handleDevToolsCMCommand(action: string, selectedPaths: string[]): Promise{ + log("debug", "Selecting CM SFMC DevTools command..."); + try{ + type ArgsConfig = { bu: string, mdtypes: string | string[], key: string | string[], fromRetrieve: boolean}; + type ProjectConfig = { path: string, args: ArgsConfig[] }; + let filesType: string[] = [], folderType: string[] = []; + + // Separates files and folders into different arrays + for(const path of selectedPaths){ + await editorWorkspace.isFile(path) ? + filesType.push(path) : + folderType.push(path); + } - const configureArgsProject = async ( - action: string, - selectedPaths: string[] - ): Promise<{ [key: string]: ProjectConfig }> => { - const projectArgsMap: { [key: string]: ProjectConfig } = {}; - - // gets workspace directory - const workspaceFolderPath: string = editorWorkspace.getWorkspaceURIPath(); - - for (const filePath of selectedPaths) { - let projectName: string = ""; - let [projectPath, cmPath]: string[] = []; - let args: ArgsConfig[] = []; - let fromRetrieve: boolean = false; - - if (filePath.includes(action)) { - // Action Retrieve or Deploy were triggered from their folder - [projectPath, cmPath] = filePath.split(`/${action}`); - } else { - if (action === "deploy") { - log("debug", "Context Menu Command Deploy From Retrieve folder..."); - // Action Deploy from Retrieve was triggered (fromRetrieve) - [projectPath, cmPath] = filePath.split(`/retrieve`); - fromRetrieve = true; - } else { - // error - } + // Removes duplicate files (eg. some files have the same name with md and json) + if(filesType.length){ + filesType = lib.removeDuplicates( + lib.removeExtensionFromFile(filesType, mainConfig.fileExtensions) + ) as string[]; } - // Gets the project folder name - projectName = lib.getProjectNameFromPath(projectPath); + const configureArgsProject = async (action: string, selectedPaths: string[]): Promise<{[key: string]: ProjectConfig}> => { - log("debug", `Current workspace folder path: ${workspaceFolderPath}`); - log("debug", `Project Name: ${projectName}`); - log("debug", `Project path: ${projectPath}`); - log("debug", `Context Menu path: ${cmPath}`); + const projectArgsMap: {[key: string]: ProjectConfig} = {}; - log( - "debug", - `Project ${workspaceFolderPath === projectPath ? "is" : "is not"} the workspace folder.` - ); + // gets workspace directory + const workspaceFolderPath: string = editorWorkspace.getWorkspaceURIPath(); - // Check if context menu being triggered is from outside of the workspace folder - if (workspaceFolderPath !== projectPath) { - // Check if folder is a DevTools project - const isSubFolderDevToolsProject: boolean = await isADevToolsProject( - projectName + "/" - ); - log( - "debug", - `SubFolder project '${projectPath}' ${isSubFolderDevToolsProject ? "is" : "is not"} a DevTools Project.` - ); - if (!isSubFolderDevToolsProject) { - editorInput.handleShowNotificationMessage( - "error", - `Folder '${projectName}' is not a SFMC DevTools Project.`, - [] - ); - return {}; - } - } + for(const filePath of selectedPaths){ - // Checks if the project name is already in the map - if (!(projectName in projectArgsMap)) { - projectArgsMap[projectName] = { - path: projectPath, - args: [], - }; - } + let projectName: string = ""; + let [ projectPath, cmPath ]: string[] = []; + let args: ArgsConfig[] = []; + let fromRetrieve: boolean = false; - args = projectArgsMap[projectName].args; - - // When user only clicks on retrieve or deploy folder - if (projectPath && !cmPath) { - let filteredByBU: ArgsConfig[] = args.filter( - ({ bu }: ArgsConfig) => bu !== undefined && bu === `"*"` - ); - if (!filteredByBU.length) { - args = [...args, { bu: `"*"`, mdtypes: [], key: [], fromRetrieve }]; - } - log( - "debug", - `Updated project path for '${action} "*"': ${projectPath}.` - ); - } + if(filePath.includes(action)){ + // Action Retrieve or Deploy were triggered from their folder + [ projectPath, cmPath ] = filePath.split(`/${action}`); + }else{ + if(action === "deploy"){ + log("debug", "Context Menu Command Deploy From Retrieve folder..."); + // Action Deploy from Retrieve was triggered (fromRetrieve) + [ projectPath, cmPath ] = filePath.split(`/retrieve`); + fromRetrieve = true; + }else{ + // error + } + } - // When user clicks inside a retrieve or deploy folder - if (cmPath) { - let { credentialName, businessUnit, metadataType, keys } = - getMCDevRelativePathComponents(cmPath.substring(1)); - let key: string = ""; - - if ( - metadataType && - !DevToolsCommands.isSupportedMetadataType(action, metadataType) - ) { - logUnsupportedMtdtTypeNotification(action, metadataType); - continue; - } - - // If user selected to retrieve/deploy a subfolder/file inside metadata type asset folder - if (metadataType === "asset" && keys.length) { - // Gets the asset subfolder and asset key - const [assetFolder, assetKey] = keys; - if (!assetKey) { - // if user only selected an asset subfolder - // type will be changed to "asset-[name of the asset subfolder]" - metadataType = `${metadataType}-${assetFolder}`; - } - // if user selects a file inside a subfolder of asset - // the key will be the name of the file - keys = assetKey ? [assetKey] : []; - } else if (metadataType === "folder" && keys.length) { - // Nested folders are not supported as keys for the metadata type folder - keys = []; - } - - key = keys.length ? keys[0] : ""; - - let filteredByBU: ArgsConfig[] = args.filter( - ({ bu }: ArgsConfig) => - bu !== undefined && - bu === `${credentialName}/${businessUnit ? businessUnit : "*"}` - ); - - if (filteredByBU.length) { - let newArgs: ArgsConfig = { - bu: filteredByBU[0].bu, - mdtypes: lib.removeNonValues( - lib.removeDuplicates([ - ...filteredByBU[0]["mdtypes"], - metadataType, - ]) as string[] - ) as string[], - key: lib.removeNonValues( - lib.removeDuplicates([ - ...filteredByBU[0]["key"], - key, - ]) as string[] - ) as string[], - fromRetrieve: filteredByBU[0].fromRetrieve, - }; - args = [ - ...args.filter( - ({ bu }: ArgsConfig) => - bu !== - `${credentialName}/${businessUnit ? businessUnit : "*"}` - ), - newArgs, - ]; - } else { - args = [ - ...args, - { - bu: `${credentialName}/${businessUnit ? businessUnit : "*"}`, - mdtypes: lib.removeNonValues([metadataType]) as string[], - key: lib.removeNonValues([key]) as string[], - fromRetrieve, - }, - ]; - } - } - projectArgsMap[projectName].args = args; - } - return projectArgsMap; - }; - - for (const optionType of [filesType, folderType]) { - if (optionType.length) { - const projectMap: { [key: string]: ProjectConfig } = - await configureArgsProject(action, optionType); - await Promise.all( - Object.keys(projectMap).map(async (projName: string) => { - log("debug", `Running DevTools Command for project ${projName}`); - let { path, args }: ProjectConfig = projectMap[projName]; - args = args.map((arg: ArgsConfig) => ({ - ...arg, - mdtypes: arg.mdtypes.length - ? `"${(arg.mdtypes as string[]).join(",")}"` - : "", - key: arg.key.length ? `"${(arg.key as string[]).join(",")}"` : "", - })); + // Gets the project folder name + projectName = lib.getProjectNameFromPath(projectPath); + + log("debug", `Current workspace folder path: ${workspaceFolderPath}`); + log("debug", `Project Name: ${projectName}`); + log("debug", `Project path: ${projectPath}`); + log("debug", `Context Menu path: ${cmPath}`); + + log("debug", `Project ${workspaceFolderPath === projectPath ? 'is': 'is not'} the workspace folder.`); + + // Check if context menu being triggered is from outside of the workspace folder + if(workspaceFolderPath !== projectPath){ + // Check if folder is a DevTools project + const isSubFolderDevToolsProject: boolean = + await isADevToolsProject( projectName + "/" ); + log("debug", + `SubFolder project '${projectPath}' ${ isSubFolderDevToolsProject ? 'is': 'is not'} a DevTools Project.` + ); + if(!isSubFolderDevToolsProject){ + editorInput.handleShowNotificationMessage("error",`Folder '${projectName}' is not a SFMC DevTools Project.`, []); + return {}; + } + } - for (const dtArgs of args) { - log("debug", `Action: ${action} Args: ${JSON.stringify(dtArgs)}`); - devtoolsContainers.modifyStatusBar( - "mcdev", - action.toLowerCase() as keyof typeof StatusBarIcon - ); - await editorInput.handleInProgressMessage( - "Notification", - (progress) => { - return new Promise((resolve) => - DevToolsCommands.runCommand(null, action, path, dtArgs, { - loadingNotification: () => - progress.report({ - message: mainConfig.messages.runningCommand, - }), - handleCommandResult: ({ - success, - cancelled, - }: { - success: boolean; - cancelled: boolean; - }) => { - if (!cancelled) { - editorInput.handleShowNotificationMessage( - success ? "info" : "error", - success - ? mainConfig.messages.successRunningCommand - : mainConfig.messages.failureRunningCommand, - [] - ); - devtoolsContainers.modifyStatusBar( - "mcdev", - success ? "success" : "error" - ); - resolve(); + // Checks if the project name is already in the map + if(!(projectName in projectArgsMap)){ + projectArgsMap[projectName] = { + path: projectPath, + args: [] + }; + } + + args = projectArgsMap[projectName].args; + + // When user only clicks on retrieve or deploy folder + if(projectPath && !cmPath){ + let filteredByBU: ArgsConfig[] = + args.filter(({ bu }: ArgsConfig) => bu !== undefined && bu === `"*"`); + if(!filteredByBU.length){ + args = [...args, { bu: `"*"`, mdtypes: [], key: [], fromRetrieve}]; + } + log("debug", `Updated project path for '${action} "*"': ${projectPath}.`); + } + + // When user clicks inside a retrieve or deploy folder + if(cmPath){ + let { credentialName, businessUnit, metadataType, keys } = getMCDevRelativePathComponents(cmPath.substring(1)); + let key: string = ""; + + if(metadataType && !DevToolsCommands.isSupportedMetadataType(action, metadataType)){ + logUnsupportedMtdtTypeNotification(action, metadataType); + continue; + } + + // If user selected to retrieve/deploy a subfolder/file inside metadata type asset folder + if(metadataType === "asset" && keys.length){ + // Gets the asset subfolder and asset key + const [ assetFolder, assetKey ] = keys; + if(!assetKey){ + // if user only selected an asset subfolder + // type will be changed to "asset-[name of the asset subfolder]" + metadataType = `${metadataType}-${assetFolder}`; } - }, - }) - ); + // if user selects a file inside a subfolder of asset + // the key will be the name of the file + keys = assetKey ? [ assetKey ] : []; + }else if(metadataType === "folder" && keys.length){ + // Nested folders are not supported as keys for the metadata type folder + keys = []; + } + + key = keys.length ? keys[0] : ""; + + let filteredByBU: ArgsConfig[] = + args.filter(({ bu }: ArgsConfig) => bu !== undefined && bu === `${credentialName}/${businessUnit ? businessUnit : '*'}`); + + if(filteredByBU.length){ + let newArgs: ArgsConfig = { + bu: filteredByBU[0].bu, + mdtypes: lib.removeNonValues( + (lib.removeDuplicates([...filteredByBU[0]['mdtypes'], metadataType]) as string[]) + ) as string[], + key: lib.removeNonValues( + (lib.removeDuplicates([...filteredByBU[0]['key'], key]) as string[]) + ) as string[], + fromRetrieve: filteredByBU[0].fromRetrieve + }; + args = [ + ...args.filter(({ bu }: ArgsConfig) => bu !== `${credentialName}/${businessUnit ? businessUnit : '*'}`), + newArgs + ]; + }else{ + args = [ + ...args, + { + bu: `${credentialName}/${businessUnit ? businessUnit : '*'}`, + mdtypes: lib.removeNonValues([metadataType]) as string[], + key: lib.removeNonValues([key]) as string[], + fromRetrieve + } + ]; + } } - ); + projectArgsMap[projectName].args = args; } - }) - ); - } - } - } catch (error) { - log("error", `[main_handleDevToolsCMCommand] Error: ${error}`); - } -} + return projectArgsMap; + }; -async function handleCopyToBuCMCommand(selectedPaths: string[]) { - try { - enum CopyToBUInputOptions { - COPY = `$(${StatusBarIcon.copy_to_folder}) Copy`, - COPY_AND_DEPLOY = `$(${StatusBarIcon.deploy}) Copy & Deploy`, + for(const optionType of [filesType, folderType]){ + if(optionType.length){ + const projectMap: {[key: string]: ProjectConfig} = + await configureArgsProject(action, optionType); + await Promise.all(Object.keys(projectMap).map(async (projName: string) => { + log("debug", `Running DevTools Command for project ${projName}`); + let { path, args }: ProjectConfig = projectMap[projName]; + args = args.map((arg: ArgsConfig) => ({ + ...arg, + mdtypes: arg.mdtypes.length + ? `"${(arg.mdtypes as string[]).join(",")}"` + : "", + key: arg.key.length ? `"${(arg.key as string[]).join(",")}"`: "" + })); + + for(const dtArgs of args){ + log("debug", `Action: ${action} Args: ${JSON.stringify(dtArgs)}`); + devtoolsContainers.modifyStatusBar( + "mcdev", + action.toLowerCase() as keyof typeof StatusBarIcon + ); + await editorInput.handleInProgressMessage( + "Notification", + (progress) => { + return new Promise(resolve => DevToolsCommands.runCommand( + null, + action, + path, + dtArgs, + { + loadingNotification: () => progress.report({message: mainConfig.messages.runningCommand}), + handleCommandResult: ({ success, cancelled }: { success: boolean, cancelled: boolean }) => { + if(!cancelled){ + editorInput.handleShowNotificationMessage( + success ? "info" : "error", + success ? mainConfig.messages.successRunningCommand : + mainConfig.messages.failureRunningCommand, + [] + ); + devtoolsContainers.modifyStatusBar( "mcdev", success ? "success" : "error"); + resolve(); + } + } + } + )); + } + ); + } + })); + } + } + }catch(error){ + log("error", `[main_handleDevToolsCMCommand] Error: ${error}`); } +} - type DevToolsPathConfiguration = DevToolsPathComponents & { - absolutePath: string; - }; - type SupportedMetadataTypeConfiguration = { - supportedMetadataTypes: DevToolsPathConfiguration[]; - unsupportedMetadataTypes: string[]; - }; - - const actionOptionList: InputOptionsSettings[] = Object.values( - CopyToBUInputOptions - ).map((action: string) => ({ id: action, label: action, detail: "" })); - - const configuredSelectedPaths: DevToolsPathConfiguration[] = - selectedPaths.map((path: string) => { - const [_, relativeDevToolsPath]: string[] = path.split( - /\/retrieve\/|\/deploy\// - ); - return { - ...getMCDevRelativePathComponents(relativeDevToolsPath), - absolutePath: path, - }; - }); - - const { - supportedMetadataTypes, - unsupportedMetadataTypes, - }: SupportedMetadataTypeConfiguration = configuredSelectedPaths.reduce( - ( - accObj: SupportedMetadataTypeConfiguration, - configPath: DevToolsPathConfiguration - ) => { - if ( - DevToolsCommands.isSupportedMetadataType( - "deploy", - configPath.metadataType - ) - ) { - accObj.supportedMetadataTypes.push(configPath); - } else { - accObj.unsupportedMetadataTypes = lib.removeDuplicates([ - ...accObj.unsupportedMetadataTypes, - configPath.metadataType, - ]) as string[]; +async function handleCopyToBuCMCommand(selectedPaths: string[]){ + try{ + enum CopyToBUInputOptions { + COPY = `$(${StatusBarIcon.copy_to_folder}) Copy`, + COPY_AND_DEPLOY = `$(${StatusBarIcon.deploy}) Copy & Deploy` } - return accObj; - }, - { supportedMetadataTypes: [], unsupportedMetadataTypes: [] } - ); - if (unsupportedMetadataTypes.length && !supportedMetadataTypes.length) { - logUnsupportedMtdtTypeNotification("deploy", unsupportedMetadataTypes); - return; - } + type DevToolsPathConfiguration = DevToolsPathComponents & { absolutePath: string }; + type SupportedMetadataTypeConfiguration = { supportedMetadataTypes: DevToolsPathConfiguration[], unsupportedMetadataTypes: string[] }; - const selectedAction: InputOptionsSettings | undefined = - (await editorInput.handleQuickPickSelection( - actionOptionList, - mainConfig.messages.copyToBUInput, - false - )) as InputOptionsSettings; + const actionOptionList: InputOptionsSettings[] = + Object.values(CopyToBUInputOptions).map((action: string) => ({ id: action, label: action, detail: "" })); - if (selectedAction) { - const credentials: { [key: string]: string[] } | undefined = - await getCredentialsBU(); - if (credentials) { - const instances: string[] = Object.keys(credentials); - const singleInstance: boolean = instances.length === 1; - let selectedInstance: string = singleInstance ? instances[0] : ""; - - if (!singleInstance) { - const instanceOptions: InputOptionsSettings[] = instances.map( - (instance: string) => ({ - id: instance, - label: instance, - detail: "", - }) - ); - const instanceResponse: InputOptionsSettings | undefined = - (await editorInput.handleQuickPickSelection( - instanceOptions, - mainConfig.messages.selectCredential, - false - )) as InputOptionsSettings; - if (instanceResponse) { - selectedInstance = instanceResponse.id; - } - } + const configuredSelectedPaths: DevToolsPathConfiguration[] = selectedPaths.map((path: string) => { + const [ _ , relativeDevToolsPath ]: string[] = path.split(/\/retrieve\/|\/deploy\//); + return { ...getMCDevRelativePathComponents(relativeDevToolsPath), absolutePath: path }; + }); + + const { supportedMetadataTypes, unsupportedMetadataTypes }: SupportedMetadataTypeConfiguration = + configuredSelectedPaths.reduce((accObj: SupportedMetadataTypeConfiguration, configPath: DevToolsPathConfiguration) => { + + if(DevToolsCommands.isSupportedMetadataType("deploy", configPath.metadataType)){ + accObj.supportedMetadataTypes.push(configPath); + }else{ + accObj.unsupportedMetadataTypes = lib.removeDuplicates([...accObj.unsupportedMetadataTypes, configPath.metadataType]) as string[]; + } + return accObj; + + }, { supportedMetadataTypes: [], unsupportedMetadataTypes: [] }); - if (selectedInstance) { - const buOptionsList: InputOptionsSettings[] = credentials[ - selectedInstance - ].map((businessUnit: string) => ({ - id: businessUnit, - label: businessUnit, - detail: "", - })); - const buOptions: InputOptionsSettings[] | undefined = - (await editorInput.handleQuickPickSelection( - buOptionsList, - mainConfig.messages.selectBusinessUnit, - true - )) as InputOptionsSettings[]; - - if (buOptions) { - type FileCopyConfig = { - sourceFilePath: string; - targetFilePath: string; - }; - const buSelected: string[] = buOptions.map( - (bu: InputOptionsSettings) => bu.id - ); - const filePathsConfigured: FileCopyConfig[] = supportedMetadataTypes - .map((configPath: DevToolsPathConfiguration) => { - const { absolutePath, businessUnit } = configPath; - - if (businessUnit) { - let paths: string[] = []; - - if (file.isPathADirectory(absolutePath)) { - paths = [...paths, absolutePath]; - } else { - const [currentFileExt]: string[] = - mainConfig.fileExtensions.filter((fileExt: string) => - absolutePath.endsWith(fileExt) - ); - if (currentFileExt) { - paths = [ - ...paths, - ...file.fileExists( - mainConfig.fileExtensions - .filter( - (fileExtension: string) => - !mainConfig.noCopyFileExtensions.includes( - fileExtension - ) - ) - .map((fileExtension: string) => - absolutePath.replace( - currentFileExt, - fileExtension - ) - ) - ), - ]; + if(unsupportedMetadataTypes.length && !supportedMetadataTypes.length){ + logUnsupportedMtdtTypeNotification("deploy", unsupportedMetadataTypes); + return; + } + + const selectedAction: InputOptionsSettings | undefined = await editorInput.handleQuickPickSelection( + actionOptionList, + mainConfig.messages.copyToBUInput, + false + ) as InputOptionsSettings; + + if(selectedAction){ + const credentials: {[key: string]: string[]} | undefined = await getCredentialsBU(); + if(credentials){ + const instances: string[] = Object.keys(credentials); + const singleInstance: boolean = instances.length === 1; + let selectedInstance: string = singleInstance ? instances[0] : ""; + + if(!singleInstance){ + const instanceOptions: InputOptionsSettings[] = + instances.map((instance: string) => ({ id: instance, label: instance, detail: "" })); + const instanceResponse: InputOptionsSettings | undefined = + await editorInput.handleQuickPickSelection( + instanceOptions, + mainConfig.messages.selectCredential, + false + ) as InputOptionsSettings; + if(instanceResponse){ + selectedInstance = instanceResponse.id; } - } - - return buSelected - .filter((buSelected: string) => buSelected !== businessUnit) - .map((buSelected: string) => - paths.map((keyFilePath: string) => ({ - sourceFilePath: keyFilePath, - targetFilePath: keyFilePath - .replace(/\/retrieve\//, "/deploy/") - .replace(businessUnit, buSelected), - })) - ) - .flat(); } - return; - }) - .filter( - (filePath: FileCopyConfig[] | undefined) => - filePath !== undefined - ) - .flat() as FileCopyConfig[]; - - const targetFilePaths: string[] = await file.copyFile( - filePathsConfigured as FileCopyConfig[], - (error: any) => { - if (error !== null) { - log( - "error", - `[main_handleCopyToBuCMCommand] Failed to copy file: ${error}` - ); - } - } - ); - if (selectedAction.label === CopyToBUInputOptions.COPY_AND_DEPLOY) { - handleDevToolsCMCommand("deploy", targetFilePaths); - } + if(selectedInstance){ + const buOptionsList: InputOptionsSettings[] = + credentials[selectedInstance].map((businessUnit: string) => ({ id: businessUnit, label: businessUnit, detail: "" })); + const buOptions: InputOptionsSettings[] | undefined = + await editorInput.handleQuickPickSelection(buOptionsList, mainConfig.messages.selectBusinessUnit, true) as InputOptionsSettings[]; + + if(buOptions){ + + type FileCopyConfig = { sourceFilePath: string; targetFilePath: string; }; + const buSelected: string[] = buOptions.map((bu: InputOptionsSettings) => bu.id); + + const filePathsConfigured: FileCopyConfig[] = + supportedMetadataTypes.map((configPath: DevToolsPathConfiguration) => { + + const { absolutePath, businessUnit } = configPath; + + if(businessUnit){ + let paths: string[] = []; + + if(file.isPathADirectory(absolutePath)){ + paths = [...paths, absolutePath]; + }else{ + const [ currentFileExt ]: string[] = + mainConfig.fileExtensions.filter((fileExt: string) => absolutePath.endsWith(fileExt)); + if(currentFileExt){ + paths = [ + ...paths, + ...file.fileExists( + mainConfig.fileExtensions + .filter((fileExtension: string) => !mainConfig.noCopyFileExtensions.includes(fileExtension)) + .map((fileExtension: string) => absolutePath.replace(currentFileExt, fileExtension)) + ) + ]; + } + } + + return buSelected + .filter((buSelected: string) => buSelected !== businessUnit) + .map((buSelected: string) => + paths.map((keyFilePath: string) => + ({ + sourceFilePath: keyFilePath, + targetFilePath: keyFilePath + .replace(/\/retrieve\//, "/deploy/") + .replace(businessUnit, buSelected) + })) + ) + .flat(); + } + return; + }) + .filter((filePath: FileCopyConfig[] | undefined) => filePath !== undefined) + .flat() as FileCopyConfig[]; + + const targetFilePaths: string[] = await file.copyFile(filePathsConfigured as FileCopyConfig[], (error: any) => { + if(error !== null){ + log("error", `[main_handleCopyToBuCMCommand] Failed to copy file: ${error}`); + } + }); + + if(selectedAction.label === CopyToBUInputOptions.COPY_AND_DEPLOY){ + handleDevToolsCMCommand("deploy", targetFilePaths); + } - if (unsupportedMetadataTypes.length) { - logUnsupportedMtdtTypeNotification( - "deploy", - unsupportedMetadataTypes - ); - } + if(unsupportedMetadataTypes.length){ + logUnsupportedMtdtTypeNotification("deploy", unsupportedMetadataTypes); + } - log( - "info", - `Copying to the deploy folder` + - `${selectedAction.label === CopyToBUInputOptions.COPY_AND_DEPLOY ? " and Deploying " : " "}` + - `the following selected files:\n` + - editorWorkspace.getFileSystemPaths(targetFilePaths).join("\n") - ); - } + log("info", + `Copying to the deploy folder`+ + `${selectedAction.label === CopyToBUInputOptions.COPY_AND_DEPLOY ? " and Deploying " : " "}`+ + `the following selected files:\n` + + editorWorkspace.getFileSystemPaths(targetFilePaths).join("\n") + ); + } + } + }else{ + log("error", `[main_handleCopyToBuCMCommand] Failed to retrieve DevTools credentials.`); + } } - } else { - log( - "error", - `[main_handleCopyToBuCMCommand] Failed to retrieve DevTools credentials.` - ); - } + }catch(error){ + log("error", `[main_handleCopyToBuCMCommand] Error: ${error}`); } - } catch (error) { - log("error", `[main_handleCopyToBuCMCommand] Error: ${error}`); - } } export const devtoolsMain = { - initDevToolsExtension, - handleStatusBarActions, - handleContextMenuActions, -}; + initDevToolsExtension, + handleStatusBarActions, + handleContextMenuActions +}; \ No newline at end of file From 8b8945c953a3756ff49b71be80a0f18ce599ea34 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Mon, 22 Apr 2024 10:53:13 +0200 Subject: [PATCH 06/25] deactivate Compact Folders fix code --- .prettierignore | 1 + src/devtools/main.ts | 3 +++ src/editor/dependencies.ts | 19 +++++++++++++++---- src/editor/workspace.ts | 10 ++++++---- 4 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 .prettierignore diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..fa29cdf --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +** \ No newline at end of file diff --git a/src/devtools/main.ts b/src/devtools/main.ts index 9bb8402..48161db 100644 --- a/src/devtools/main.ts +++ b/src/devtools/main.ts @@ -23,6 +23,9 @@ async function initDevToolsExtension(): Promise{ editorDependencies.activateExtensionDependencies(mainConfig.extensionsDependencies); + // Deactivates Compact folders for command right execution + editorDependencies.deactivateCompactFolders(); + // activate the status bar devtoolsContainers.activateStatusBar(); diff --git a/src/editor/dependencies.ts b/src/editor/dependencies.ts index 0826692..4651e1b 100644 --- a/src/editor/dependencies.ts +++ b/src/editor/dependencies.ts @@ -18,8 +18,9 @@ async function activateExtensionDependencies(dependencies: string | string[]){ if(missingExtDependencies.length){ - const suggestRecommendedExtensions: string | boolean = - editorWorkspace.handleWorkspaceConfiguration("recommendExtensions", true).get(); + const workspaceConfiguration = editorWorkspace.handleWorkspaceConfiguration("sfmc-devtools-vscode", "Global"); + const suggestRecommendedExtensions: boolean = + Boolean(workspaceConfiguration.get("recommendExtensions", true)); if(suggestRecommendedExtensions){ const message: string = "There are some recommended extensions that can enhance your usage of SFMC DevTools. Would you like to install them?"; @@ -34,15 +35,25 @@ async function activateExtensionDependencies(dependencies: string | string[]){ ); }); }else if(selectedOption === RecommendedExtensionsInputOptions.DONT_ASK_AGAIN){ - editorWorkspace.handleWorkspaceConfiguration("recommendExtensions", false).set(); + workspaceConfiguration.set("recommendExtensions", false); } } } } } +function deactivateCompactFolders(){ + const workspaceConfiguration = editorWorkspace.handleWorkspaceConfiguration("explorer", "Workspace"); + const isCompactFoldersEnabled: boolean = Boolean(workspaceConfiguration.get("compactFolders", true)); + if(isCompactFoldersEnabled){ + // Disable Compact Folders + workspaceConfiguration.set("compactFolders", false); + } +} + const editorDependencies = { - activateExtensionDependencies + activateExtensionDependencies, + deactivateCompactFolders }; export { editorDependencies }; \ No newline at end of file diff --git a/src/editor/workspace.ts b/src/editor/workspace.ts index 2a2833c..8165357 100644 --- a/src/editor/workspace.ts +++ b/src/editor/workspace.ts @@ -1,6 +1,8 @@ import { workspace, Uri, TextDocument, WorkspaceFolder, FileType, FileStat, WorkspaceConfiguration, ConfigurationTarget } from "vscode"; import { editorCommands } from "./commands"; +type WorkspaceConfigurationTarget = "Global" | "Workspace" | "WorkspaceFolder"; + function getWorkspaceURI(): Uri { const wsFolder: readonly WorkspaceFolder[] | undefined = workspace.workspaceFolders; if(wsFolder){ @@ -53,12 +55,12 @@ async function isFile(file: string | Uri){ return fileType.toLowerCase() === "file"; } -function handleWorkspaceConfiguration(key: string, value: string | boolean){ - const workspaceConfiguration: WorkspaceConfiguration = workspace.getConfiguration("sfmc-devtools-vscode"); +function handleWorkspaceConfiguration(section: string, target: WorkspaceConfigurationTarget){ + const workspaceConfiguration: WorkspaceConfiguration = workspace.getConfiguration(section); if(workspaceConfiguration){ return { - get: () => workspaceConfiguration.get(key, value), - set: () => workspaceConfiguration.update(key, value, ConfigurationTarget.Global) + get: (key: string, value: string | boolean) => workspaceConfiguration.get(key, value), + set: (key: string, value: string | boolean) => workspaceConfiguration.update(key, value, ConfigurationTarget[target]) }; } throw new Error("Failed to handle Workspace Configuration."); From 378f21b11da4d78b074285d313bbded04281b28e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 09:16:03 +0000 Subject: [PATCH 07/25] Bump @typescript-eslint/parser from 7.1.0 to 7.7.0 Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 7.1.0 to 7.7.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.7.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 115 +++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 75 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index dfbc7f7..78feab8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@types/node": "^20.11.17", "@types/vscode": "^1.81.1", "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.1.0", + "@typescript-eslint/parser": "^7.7.0", "@vscode/test-electron": "^2.3.9", "chai": "^5.1.0", "eslint": "^8.56.0", @@ -1803,19 +1803,19 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.0.tgz", - "integrity": "sha512-V1EknKUubZ1gWFjiOZhDSNToOjs63/9O0puCgGS8aDOgpZY326fzFu15QAUjwaXzRZjf/qdsdBrckYdv9YxB8w==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.0.tgz", + "integrity": "sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.1.0", - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/typescript-estree": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1831,16 +1831,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.0.tgz", - "integrity": "sha512-6TmN4OJiohHfoOdGZ3huuLhpiUgOGTpgXNUPJgeZOZR3DnIpdSgtt83RS35OYNNXxM4TScVlpVKC9jyQSETR1A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.0.tgz", + "integrity": "sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0" + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1957,12 +1957,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.0.tgz", - "integrity": "sha512-qTWjWieJ1tRJkxgZYXx6WUYtWlBc48YRxgY2JN1aGeVpkhmnopq+SUC8UEVGNXIvWH7XyuTjwALfG6bFEgCkQA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.0.tgz", + "integrity": "sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -1970,22 +1970,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.0.tgz", - "integrity": "sha512-k7MyrbD6E463CBbSpcOnwa8oXRdHzH1WiVzOipK3L5KSML92ZKgUBrTlehdi7PEIMT8k0bQixHUGXggPAlKnOQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.0.tgz", + "integrity": "sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "@typescript-eslint/visitor-keys": "7.1.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -2006,10 +2006,22 @@ "balanced-match": "^1.0.0" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -2021,6 +2033,27 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/utils": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.4.0.tgz", @@ -2146,16 +2179,16 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.0.tgz", - "integrity": "sha512-FhUqNWluiGNzlvnDZiXad4mZRhtghdoKW6e98GoEOYSu5cND+E39rG5KwJMUzeENwm1ztYBRqof8wMLP+wNPIA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.0.tgz", + "integrity": "sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.1.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.7.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -8562,12 +8595,12 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" diff --git a/package.json b/package.json index 1c28570..63d36d8 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "@types/node": "^20.11.17", "@types/vscode": "^1.81.1", "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.1.0", + "@typescript-eslint/parser": "^7.7.0", "@vscode/test-electron": "^2.3.9", "chai": "^5.1.0", "eslint": "^8.56.0", From e2aac059a704a756ddddc7131ba2fe7e28a05f4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 09:17:20 +0000 Subject: [PATCH 08/25] Bump @types/chai from 4.3.11 to 4.3.14 Bumps [@types/chai](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai) from 4.3.11 to 4.3.14. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai) --- updated-dependencies: - dependency-name: "@types/chai" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2a5eef..5571107 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "winston": "^3.13.0" }, "devDependencies": { - "@types/chai": "^4.3.11", + "@types/chai": "^4.3.14", "@types/jest": "^29.5.11", "@types/node": "^20.11.17", "@types/vscode": "^1.81.1", @@ -1587,9 +1587,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.11.tgz", - "integrity": "sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==", + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.14.tgz", + "integrity": "sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==", "dev": true }, "node_modules/@types/eslint": { diff --git a/package.json b/package.json index c3eafe0..434b5eb 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "test": "jest --coverage" }, "devDependencies": { - "@types/chai": "^4.3.11", + "@types/chai": "^4.3.14", "@types/jest": "^29.5.11", "@types/node": "^20.11.17", "@types/vscode": "^1.81.1", From 3097d5e70d07d80d7c5ac9012b7a1768d1a7a3f5 Mon Sep 17 00:00:00 2001 From: Ana Silva <66126240+anasilva105@users.noreply.github.com> Date: Mon, 22 Apr 2024 18:10:41 +0200 Subject: [PATCH 09/25] Delete .prettierignore --- .prettierignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .prettierignore diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index fa29cdf..0000000 --- a/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -** \ No newline at end of file From f6478acba0687b56fe7cb96bb4db3b58b5fbf752 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Mon, 22 Apr 2024 18:49:06 +0200 Subject: [PATCH 10/25] updated devtools init logic --- package.json | 20 ++++++++++---------- src/devtools/main.ts | 40 ++++++++++++++++++---------------------- src/editor/commands.ts | 2 +- 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index d662c80..2bee34d 100644 --- a/package.json +++ b/package.json @@ -61,17 +61,17 @@ "menus": { "explorer/context": [ { - "when": "resourcePath =~ /retrieve/", + "when": "sfmc-devtools-vscode.isDevToolsProject && resourcePath =~ /retrieve/", "command": "sfmc-devtools-vscext.devtoolsCMRetrieve", "group": "devtools" }, { - "when": "resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript'))", + "when": "sfmc-devtools-vscode.isDevToolsProject && (resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown')))", "command": "sfmc-devtools-vscext.devtoolsCMDeploy", "group": "devtools" }, { - "when": "resourcePath =~ /retrieve/ && resourceFilename != 'retrieve' && resourceFilename != 'deploy'", + "when": "sfmc-devtools-vscode.isDevToolsProject && resourcePath =~ /retrieve/ && resourceFilename != 'retrieve' && resourceFilename != 'deploy'", "command": "sfmc-devtools-vscext.devtoolsCMCopyToBU", "group": "devtools" } @@ -92,17 +92,17 @@ ], "editor/title/context": [ { - "when": "resourcePath =~ /retrieve/", + "when": "sfmc-devtools-vscode.isDevToolsProject && resourcePath =~ /retrieve/", "command": "sfmc-devtools-vscext.devtoolsCMRetrieve", "group": "devtools" }, { - "when": "resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript'))", + "when": "sfmc-devtools-vscode.isDevToolsProject && (resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown')))", "command": "sfmc-devtools-vscext.devtoolsCMDeploy", "group": "devtools" }, { - "when": "resourcePath =~ /retrieve/ && resourceFilename != 'retrieve' && resourceFilename != 'deploy'", + "when": "sfmc-devtools-vscode.isDevToolsProject && resourcePath =~ /retrieve/ && resourceFilename != 'retrieve' && resourceFilename != 'deploy'", "command": "sfmc-devtools-vscext.devtoolsCMCopyToBU", "group": "devtools" } @@ -129,12 +129,12 @@ "test": "jest --coverage" }, "devDependencies": { - "@types/chai": "^4.3.14", + "@types/chai": "^4.3.11", "@types/jest": "^29.5.11", "@types/node": "^20.11.17", "@types/vscode": "^1.81.1", - "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.7.0", + "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", "@vscode/test-electron": "^2.3.9", "chai": "^5.1.0", "eslint": "^8.56.0", @@ -148,6 +148,6 @@ "dependencies": { "@salesforce-ux/design-system": "^2.23.2", "@vscode/codicons": "^0.0.35", - "winston": "^3.13.0" + "winston": "^3.11.0" } } diff --git a/src/devtools/main.ts b/src/devtools/main.ts index a98c71f..876d7c5 100644 --- a/src/devtools/main.ts +++ b/src/devtools/main.ts @@ -14,6 +14,7 @@ import DevToolsCommandSetting from "../shared/interfaces/devToolsCommandSetting" import DevToolsPathComponents from "../shared/interfaces/devToolsPathComponents"; import { lib } from "../shared/utils/lib"; import { file } from "../shared/utils/file"; +import { editorCommands } from "../editor/commands"; async function initDevToolsExtension(): Promise{ @@ -21,24 +22,12 @@ async function initDevToolsExtension(): Promise{ try{ log("info", "Running SFMC DevTools extension..."); - editorDependencies.activateExtensionDependencies(mainConfig.extensionsDependencies); + const anyDevToolsProject: boolean = await isADevToolsProject() || await anySubFolderIsDevToolsProject(); - // activate the status bar - devtoolsContainers.activateStatusBar(); - - // activate the context menus options - devtoolsContainers.activateContextMenuCommands(); - - // If it's already a mcdev project it will check if prerequisites and devtools are installed - if(await isADevToolsProject()){ + if(anyDevToolsProject){ await handleDevToolsRequirements(); - }else{ - // activate status bar immediately when isDevToolsProject is false - // devtoolsContainers.activateStatusBar(false, DevToolsCommands.commandPrefix); - if(await anySubFolderIsDevToolsProject()){ - // init DevTools Commands - DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); - } + activateDependencies(); + activateContainers(); } }catch(error){ log("error", `[main_initDevToolsExtension] Error: ${error}`); @@ -73,12 +62,6 @@ async function handleDevToolsRequirements(/*isDevToolsProject: boolean*/): Promi } log("info", "SFMC DevTools is installed."); - // Needs to check if it's a DevTools Project or not - // if(isDevToolsProject){ - // // activate status bar immediately when isDevToolsProject is true - // devtoolsContainers.activateStatusBar(true, DevToolsCommands.commandPrefix); - // } - // init DevTools Commands DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); return; @@ -102,6 +85,19 @@ async function anySubFolderIsDevToolsProject(): Promise { return false; } +function activateDependencies(){ + editorDependencies.activateExtensionDependencies(mainConfig.extensionsDependencies); + editorCommands.setCommandContext("sfmc-devtools-vscode.isDevToolsProject", true); +} + +function activateContainers(){ + // activate the status bar + devtoolsContainers.activateStatusBar(); + + // activate the context menus options + devtoolsContainers.activateContextMenuCommands(); +} + function handleStatusBarActions(action: string): void { log("debug", "Setting Status Bar Actions..."); log("debug", `Action: ${action}`); diff --git a/src/editor/commands.ts b/src/editor/commands.ts index 3d2fbd4..33c8e19 100644 --- a/src/editor/commands.ts +++ b/src/editor/commands.ts @@ -20,7 +20,7 @@ function executeCommand(command: string | string[], args: (string | boolean | st ); } -function setCommandContext(command: string | string[], args: (string | boolean | number)[]){ +function setCommandContext(command: string | string[], args: string | boolean | number){ [command] .flat() .forEach( From 1e60dc3bb3f53bededfb63599e2d8537fda5a300 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Wed, 24 Apr 2024 15:15:57 +0200 Subject: [PATCH 11/25] configured regex to detect folders inside the asset folders. --- package.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d662c80..aba6427 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,12 @@ "group": "devtools" }, { - "when": "resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript'))", + "when": "resourcePath =~ /deploy/", + "command": "sfmc-devtools-vscext.devtoolsCMDeploy", + "group": "devtools" + }, + { + "when": "resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript' || resourceDirname =~ /asset\\\\[a-zA-Z]*/)", "command": "sfmc-devtools-vscext.devtoolsCMDeploy", "group": "devtools" }, @@ -97,7 +102,12 @@ "group": "devtools" }, { - "when": "resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript'))", + "when": "resourcePath =~ /deploy/", + "command": "sfmc-devtools-vscext.devtoolsCMDeploy", + "group": "devtools" + }, + { + "when": "resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript')", "command": "sfmc-devtools-vscext.devtoolsCMDeploy", "group": "devtools" }, From aabb5fe25d313641342556eb50425ad4291fd4d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 20:20:29 +0000 Subject: [PATCH 12/25] Bump @types/vscode from 1.87.0 to 1.88.0 Bumps [@types/vscode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/vscode) from 1.87.0 to 1.88.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/vscode) --- updated-dependencies: - dependency-name: "@types/vscode" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 07122ad..f43931f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@types/chai": "^4.3.14", "@types/jest": "^29.5.11", "@types/node": "^20.11.17", - "@types/vscode": "^1.81.1", + "@types/vscode": "^1.88.0", "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.7.0", "@vscode/test-electron": "^2.3.9", @@ -1700,9 +1700,9 @@ "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "node_modules/@types/vscode": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.87.0.tgz", - "integrity": "sha512-y3yYJV2esWr8LNjp3VNbSMWG7Y43jC8pCldG8YwiHGAQbsymkkMMt0aDT1xZIOFM2eFcNiUc+dJMx1+Z0UT8fg==", + "version": "1.88.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.88.0.tgz", + "integrity": "sha512-rWY+Bs6j/f1lvr8jqZTyp5arRMfovdxolcqGi+//+cPDOh8SBvzXH90e7BiSXct5HJ9HGW6jATchbRTpTJpEkw==", "dev": true }, "node_modules/@types/yargs": { diff --git a/package.json b/package.json index aba6427..943a83e 100644 --- a/package.json +++ b/package.json @@ -142,7 +142,7 @@ "@types/chai": "^4.3.14", "@types/jest": "^29.5.11", "@types/node": "^20.11.17", - "@types/vscode": "^1.81.1", + "@types/vscode": "^1.88.0", "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.7.0", "@vscode/test-electron": "^2.3.9", From 7ae9aa16d401f18ac9ccfa5c6c7cdf82a963f25c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 20:20:59 +0000 Subject: [PATCH 13/25] Bump webpack from 5.90.3 to 5.91.0 Bumps [webpack](https://github.com/webpack/webpack) from 5.90.3 to 5.91.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.90.3...v5.91.0) --- updated-dependencies: - dependency-name: webpack dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 114 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index 07122ad..fa3ed9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "ts-jest": "^29.1.2", "ts-loader": "^9.5.1", "typescript": "^5.3.3", - "webpack": "^5.90.3", + "webpack": "^5.91.0", "webpack-cli": "^5.1.4" }, "engines": { @@ -2222,9 +2222,9 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -2244,9 +2244,9 @@ "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { @@ -2267,15 +2267,15 @@ "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { @@ -2303,28 +2303,28 @@ "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -2332,24 +2332,24 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -2358,12 +2358,12 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -3982,9 +3982,9 @@ "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -8876,9 +8876,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -8898,26 +8898,26 @@ } }, "node_modules/webpack": { - "version": "5.90.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", - "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.16.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -8925,7 +8925,7 @@ "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.0", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { diff --git a/package.json b/package.json index aba6427..8800c95 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "ts-jest": "^29.1.2", "ts-loader": "^9.5.1", "typescript": "^5.3.3", - "webpack": "^5.90.3", + "webpack": "^5.91.0", "webpack-cli": "^5.1.4" }, "dependencies": { From 1a016d34773bd3a3d07c106c9a6e659c1e150ecd Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Thu, 2 May 2024 11:16:25 +0200 Subject: [PATCH 14/25] SupportedMetadataTypes fixed types --- package-lock.json | 2958 +++++++++-------- src/devtools/commands/DevToolsCommands.ts | 1 - .../interfaces/supportedMetadataTypes.ts | 4 +- 3 files changed, 1534 insertions(+), 1429 deletions(-) diff --git a/package-lock.json b/package-lock.json index 07122ad..ceef6b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,15 +11,15 @@ "dependencies": { "@salesforce-ux/design-system": "^2.23.2", "@vscode/codicons": "^0.0.35", - "winston": "^3.13.0" + "winston": "^3.11.0" }, "devDependencies": { - "@types/chai": "^4.3.14", + "@types/chai": "^4.3.11", "@types/jest": "^29.5.11", "@types/node": "^20.11.17", "@types/vscode": "^1.81.1", - "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.7.0", + "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", "@vscode/test-electron": "^2.3.9", "chai": "^5.1.0", "eslint": "^8.56.0", @@ -37,62 +37,57 @@ "mcdev": ">=5.2.0" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", - "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.5", - "@babel/parser": "^7.23.5", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -107,78 +102,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/core/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/core/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/core/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/core/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/core/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -188,27 +111,15 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/core/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -216,14 +127,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -275,28 +186,28 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -306,51 +217,51 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -366,28 +277,29 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", - "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -465,9 +377,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -537,12 +449,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -639,12 +551,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -654,187 +566,40 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/template/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/template/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/template/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/traverse/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/traverse/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -844,35 +609,14 @@ "node": ">=4" } }, - "node_modules/@babel/traverse/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -959,47 +703,73 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@eslint/eslintrc/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": { - "argparse": "^2.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/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" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "*" } }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1014,9 +784,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { @@ -1035,6 +805,80 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -1332,45 +1176,45 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -1380,9 +1224,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1507,9 +1351,9 @@ } }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -1559,9 +1403,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -1578,9 +1422,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -1593,9 +1437,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.44.8", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", - "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", "dev": true, "dependencies": { "@types/estree": "*", @@ -1658,9 +1502,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", - "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -1674,9 +1518,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz", - "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -1700,9 +1544,9 @@ "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "node_modules/@types/vscode": { - "version": "1.87.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.87.0.tgz", - "integrity": "sha512-y3yYJV2esWr8LNjp3VNbSMWG7Y43jC8pCldG8YwiHGAQbsymkkMMt0aDT1xZIOFM2eFcNiUc+dJMx1+Z0UT8fg==", + "version": "1.88.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.88.0.tgz", + "integrity": "sha512-rWY+Bs6j/f1lvr8jqZTyp5arRMfovdxolcqGi+//+cPDOh8SBvzXH90e7BiSXct5HJ9HGW6jATchbRTpTJpEkw==", "dev": true }, "node_modules/@types/yargs": { @@ -1710,363 +1554,33 @@ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.4.0.tgz", - "integrity": "sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.4.0", - "@typescript-eslint/type-utils": "7.4.0", - "@typescript-eslint/utils": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz", - "integrity": "sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", - "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", - "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.4.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.0.tgz", - "integrity": "sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "7.7.0", - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/typescript-estree": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.0.tgz", - "integrity": "sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz", - "integrity": "sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "7.4.0", - "@typescript-eslint/utils": "7.4.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", - "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz", - "integrity": "sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", - "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.4.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.0.tgz", - "integrity": "sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.0.tgz", - "integrity": "sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, - "node_modules/@typescript-eslint/utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.4.0.tgz", - "integrity": "sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz", + "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.4.0", - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/typescript-estree": "7.4.0", - "semver": "^7.5.4" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/type-utils": "7.8.0", + "@typescript-eslint/utils": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2076,17 +1590,26 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz", - "integrity": "sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==", + "node_modules/@typescript-eslint/parser": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz", + "integrity": "sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0" + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/typescript-estree": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", + "debug": "^4.3.4" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2094,13 +1617,25 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", - "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", + "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0" + }, "engines": { "node": "^18.18.0 || >=20.0.0" }, @@ -2109,20 +1644,16 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz", - "integrity": "sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==", + "node_modules/@typescript-eslint/type-utils": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz", + "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", + "@typescript-eslint/typescript-estree": "7.8.0", + "@typescript-eslint/utils": "7.8.0", "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2131,21 +1662,20 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^8.56.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", - "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", + "node_modules/@typescript-eslint/types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", + "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.4.0", - "eslint-visitor-keys": "^3.4.1" - }, "engines": { "node": "^18.18.0 || >=20.0.0" }, @@ -2154,37 +1684,66 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", + "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@typescript-eslint/utils": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", + "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/typescript-estree": "7.8.0", + "semver": "^7.6.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.0.tgz", - "integrity": "sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", + "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/types": "7.8.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -2222,9 +1781,9 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -2244,9 +1803,9 @@ "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { @@ -2267,15 +1826,15 @@ "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { @@ -2303,28 +1862,28 @@ "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -2332,24 +1891,24 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -2358,12 +1917,12 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -2424,9 +1983,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2435,6 +1994,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -2490,15 +2058,15 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -2590,22 +2158,21 @@ } }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2620,6 +2187,28 @@ "node": ">=8" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "peer": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -2641,20 +2230,23 @@ "peer": true }, "node_modules/atomically": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.0.2.tgz", - "integrity": "sha512-Xfmb4q5QV7uqTlVdMSTtO5eF4DCHfNOdaPyKlbFShkzeNP+3lj3yjjcbdjSmEY4+pDBKJ9g26aP+ImTe88UHoQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.0.3.tgz", + "integrity": "sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==", "peer": true, "dependencies": { "stubborn-fs": "^1.2.5", - "when-exit": "^2.0.0" + "when-exit": "^2.1.1" } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "peer": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2663,12 +2255,12 @@ } }, "node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "peer": true, "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -2815,11 +2407,30 @@ ], "peer": true }, - "node_modules/beauty-amp-core": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/beauty-amp-core/-/beauty-amp-core-0.3.7.tgz", - "integrity": "sha512-/a3jRMN0IZ4SaV8PoVLqprk0sSEXvTOOVs4jdSQhgNBJYRkHau0PhUwju6PzfNvQpleZXWdechrPQAVAxIKnHA==", - "peer": true + "node_modules/beauty-amp-core2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/beauty-amp-core2/-/beauty-amp-core2-0.4.5.tgz", + "integrity": "sha512-mhmHf8/6qf1yCdqkL66j9T3C5Z0Q+jP+XWK6ajnA+L/cG3bEjnN6ywRy97eSzij5JVSRNxs8w2857whB6+o5jw==", + "peer": true, + "dependencies": { + "lodash": "^4.17.21", + "prettier": "^2.8.8" + } + }, + "node_modules/beauty-amp-core2/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } }, "node_modules/big-integer": { "version": "1.6.52", @@ -2993,13 +2604,12 @@ } }, "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==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -3015,9 +2625,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -3034,8 +2644,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -3125,14 +2735,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "peer": true, "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3157,9 +2772,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001566", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", - "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", + "version": "1.0.30001614", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", + "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", "dev": true, "funding": [ { @@ -3255,9 +2870,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, "node_modules/cli-boxes": { @@ -3477,37 +3092,38 @@ "dev": true }, "node_modules/conf": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/conf/-/conf-11.0.1.tgz", - "integrity": "sha512-WlLiQboEjKx0bYx2IIRGedBgNjLAxtwPaCSnsjWPST5xR0DB4q8lcsO/bEH9ZRYNcj63Y9vj/JG/5Fg6uWzI0Q==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-12.0.0.tgz", + "integrity": "sha512-fIWyWUXrJ45cHCIQX+Ck1hrZDIf/9DR0P0Zewn3uNht28hbt5OfGUq8rRWsxi96pZWPyBEd0eY9ama01JTaknA==", "peer": true, "dependencies": { "ajv": "^8.12.0", "ajv-formats": "^2.1.1", - "atomically": "^2.0.0", + "atomically": "^2.0.2", "debounce-fn": "^5.1.2", - "dot-prop": "^7.2.0", + "dot-prop": "^8.0.2", "env-paths": "^3.0.0", "json-schema-typed": "^8.0.1", - "semver": "^7.3.8" + "semver": "^7.5.4", + "uint8array-extras": "^0.3.0" }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/conf/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -3668,6 +3284,57 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debounce-fn": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-5.1.2.tgz", @@ -3727,9 +3394,9 @@ } }, "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -3750,15 +3417,15 @@ } }, "node_modules/deep-equal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", - "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "peer": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "is-arguments": "^1.1.1", "is-array-buffer": "^3.0.2", "is-date-object": "^1.0.5", @@ -3768,11 +3435,14 @@ "object-is": "^1.1.5", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", + "regexp.prototype.flags": "^1.5.1", "side-channel": "^1.0.4", "which-boxed-primitive": "^1.0.2", "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3824,17 +3494,20 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "peer": true, "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { @@ -3912,27 +3585,27 @@ } }, "node_modules/dot-prop": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-7.2.0.tgz", - "integrity": "sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-8.0.2.tgz", + "integrity": "sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==", "peer": true, "dependencies": { - "type-fest": "^2.11.2" + "type-fest": "^3.8.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/dot-prop/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "peer": true, "engines": { - "node": ">=12.20" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3954,9 +3627,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.603", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.603.tgz", - "integrity": "sha512-Dvo5OGjnl7AZTU632dFJtWj0uJK835eeOVQIuRcmBmsFsTNn3cL05FqOyHAfGQDIoHfLhyJ1Tya3PJ0ceMz54g==", + "version": "1.4.751", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz", + "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==", "dev": true }, "node_modules/emittery": { @@ -3982,9 +3655,9 @@ "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -4007,24 +3680,105 @@ } }, "node_modules/envinfo": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", - "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "dev": true, "bin": { "envinfo": "dist/cli.js" }, "engines": { - "node": ">=4" + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "peer": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "peer": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "peer": true, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-get-iterator": { @@ -4048,15 +3802,58 @@ } }, "node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz", + "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==", "dev": true }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "peer": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "peer": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } @@ -4086,16 +3883,16 @@ } }, "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -4141,37 +3938,6 @@ } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", @@ -4187,71 +3953,38 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/eslint/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": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/eslint/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": { - "p-limit": "^3.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, "node_modules/espree": { @@ -4296,15 +4029,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -4317,7 +4041,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -4326,15 +4050,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4492,9 +4207,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -4567,16 +4282,19 @@ } }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat": { @@ -4603,9 +4321,9 @@ } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/fn.name": { @@ -4614,9 +4332,9 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -4706,6 +4424,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -4742,16 +4478,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "peer": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4788,6 +4528,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4826,6 +4583,28 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, + "node_modules/glob/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/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", @@ -4842,9 +4621,9 @@ } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -4856,6 +4635,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "peer": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -4942,21 +4737,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "peer": true, "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "peer": true, "engines": { "node": ">= 0.4" @@ -4978,12 +4773,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "peer": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -5005,9 +4800,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -5109,9 +4904,9 @@ "peer": true }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -5238,12 +5033,12 @@ } }, "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "peer": true, "dependencies": { - "get-intrinsic": "^1.2.2", + "es-errors": "^1.3.0", "hasown": "^2.0.0", "side-channel": "^1.0.4" }, @@ -5277,14 +5072,16 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "peer": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5360,6 +5157,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "peer": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -5439,10 +5251,25 @@ } }, "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "peer": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5529,21 +5356,27 @@ } }, "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "peer": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "peer": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5591,12 +5424,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "peer": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -5624,22 +5457,40 @@ } }, "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "peer": true, + "dependencies": { + "call-bind": "^1.0.2" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5685,14 +5536,14 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -5729,9 +5580,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "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", @@ -6032,90 +5883,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/jest-message-util/node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/jest-message-util/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", @@ -6387,13 +6154,12 @@ "dev": true }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -6579,15 +6345,18 @@ } }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -6713,30 +6482,30 @@ } }, "node_modules/mcdev": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/mcdev/-/mcdev-6.0.0.tgz", - "integrity": "sha512-DljV+4u/F+wFEJQbEhwMwbIRenk4tN1H82DjZSa1TK/G9spvW1/5Abh/LfVA4u3FplRYL3bbyXJ1L+tFHygqZg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/mcdev/-/mcdev-6.0.2.tgz", + "integrity": "sha512-JD52RuUsDDWMa8IpnxGLMzDSAv9A5WJzXERjQZTtt0XaHQHPK56+7hh+wQ9wurFs+Hap1keVBYCXhe9bANU5aQ==", "peer": true, "dependencies": { - "beauty-amp-core": "0.3.7", + "beauty-amp-core2": "0.4.5", "cli-progress": "3.12.0", "command-exists": "1.2.9", - "conf": "11.0.1", + "conf": "12.0.0", "console.table": "0.10.0", - "deep-equal": "2.2.2", + "deep-equal": "2.2.3", "fs-extra": "11.1.1", "inquirer": "9.2.6", "json-to-table": "4.2.1", "mustache": "4.2.0", "p-limit": "4.0.0", - "prettier": "3.0.3", + "prettier": "3.2.4", "prettier-plugin-sql": "0.15.1", "semver": "7.5.4", "sfmc-sdk": "2.0.1", - "simple-git": "3.20.0", + "simple-git": "3.22.0", "toposort": "2.0.2", "update-notifier": "6.0.2", - "winston": "3.10.0", + "winston": "3.11.0", "yargs": "17.7.2" }, "bin": { @@ -6753,13 +6522,16 @@ "fsevents": "*" } }, - "node_modules/mcdev/node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "node_modules/mcdev/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.1.90" + "node": ">=10" } }, "node_modules/mcdev/node_modules/p-limit": { @@ -6791,13 +6563,28 @@ "node": ">= 6" } }, + "node_modules/mcdev/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mcdev/node_modules/winston": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.10.0.tgz", - "integrity": "sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", + "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", "peer": true, "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", @@ -6813,6 +6600,12 @@ "node": ">= 12.0.0" } }, + "node_modules/mcdev/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "peer": true + }, "node_modules/mcdev/node_modules/yocto-queue": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", @@ -6897,15 +6690,18 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -7011,9 +6807,9 @@ "dev": true }, "node_modules/node-sql-parser": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.12.0.tgz", - "integrity": "sha512-WvHzITmtN5fx201c/cHX7RJvDaS9tTMpjE0TeYPrjH2bDAkoqMcDAUBuPQb7DU2Lhi5EZLbuWoRZnZDYYpx07w==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.18.0.tgz", + "integrity": "sha512-2YEOR5qlI1zUFbGMLKNfsrR5JUvFg9LxIRVE+xJe962pfVLH0rnItqLzv96XVs1Y1UIR8FxsXAuvX/lYAWZ2BQ==", "peer": true, "dependencies": { "big-integer": "^1.6.48" @@ -7032,9 +6828,9 @@ } }, "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "peer": true, "engines": { "node": ">=14.16" @@ -7065,13 +6861,13 @@ } }, "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -7147,17 +6943,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -7232,27 +7028,15 @@ } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7389,31 +7173,92 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">= 6" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -7432,7 +7277,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -7448,9 +7293,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", + "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", "peer": true, "bin": { "prettier": "bin/prettier.cjs" @@ -7563,9 +7408,9 @@ } }, "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -7669,9 +7514,9 @@ } }, "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/readable-stream": { @@ -7708,14 +7553,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -7933,11 +7779,46 @@ "tslib": "^2.1.0" } }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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==" }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-stable-stringify": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", @@ -7971,9 +7852,9 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8025,29 +7906,32 @@ } }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "peer": true, "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "peer": true, "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8135,14 +8019,18 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "peer": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8154,9 +8042,9 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-git": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.20.0.tgz", - "integrity": "sha512-ozK8tl2hvLts8ijTs18iFruE+RoqmC/mqZhjs/+V7gS5W68JpJ3+FCTmLVqmR59MaUQ52MfGQuWsIqfsTbbJ0Q==", + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.22.0.tgz", + "integrity": "sha512-6JujwSs0ac82jkGjMHiCnTifvf1crOiY/+tfs/Pqih6iow7VrpNKRRNdWm6RtaXpvvv/JGNYhlUtLhGFqHF+Yw==", "peer": true, "dependencies": { "@kwsites/file-exists": "^1.1.1", @@ -8206,9 +8094,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "peer": true, "engines": { "node": ">=0.10.0" @@ -8244,12 +8132,6 @@ "sql-formatter": "bin/sql-formatter-cli.cjs" } }, - "node_modules/sql-formatter/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "peer": true - }, "node_modules/stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", @@ -8325,6 +8207,55 @@ "node": ">=8" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -8411,9 +8342,9 @@ } }, "node_modules/terser": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", - "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -8515,6 +8446,28 @@ "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/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-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -8578,10 +8531,18 @@ "peer": true }, "node_modules/traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", "peer": true, + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8717,6 +8678,79 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "peer": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -8726,10 +8760,30 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -8739,6 +8793,33 @@ "node": ">=14.17" } }, + "node_modules/uint8array-extras": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-0.3.0.tgz", + "integrity": "sha512-erJsJwQ0tKdwuqI0359U8ijkFmfiTcq25JvvzRVc1VP+2son1NJRXhxcAKJmAW3ajM8JSGAfsAXye8g4s+znxA==", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -8876,9 +8957,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -8898,26 +8979,26 @@ } }, "node_modules/webpack": { - "version": "5.90.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", - "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.16.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -8925,7 +9006,7 @@ "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.0", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -9021,19 +9102,32 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "peerDependencies": { - "acorn": "^8" + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" } }, "node_modules/when-exit": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.1.tgz", - "integrity": "sha512-XLipGldz/UcleuGaoQjbYuWwD+ICRnzIjlldtwTaTWr7aZz8yQW49rXk6MHQnh+KxOiWiJpM1vIyaxprOnlW4g==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.2.tgz", + "integrity": "sha512-u9J+toaf3CCxCAzM/484qNAxQE75rFdVgiFEEV8Xps2gzYhf0tx73s1WXDQhkwV17E3MxRMz40m7Ekd2/121Lg==", "peer": true }, "node_modules/which": { @@ -9068,31 +9162,34 @@ } }, "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "peer": true, "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "peer": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9232,6 +9329,15 @@ "node": ">= 6" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", diff --git a/src/devtools/commands/DevToolsCommands.ts b/src/devtools/commands/DevToolsCommands.ts index cac58ef..59a6445 100644 --- a/src/devtools/commands/DevToolsCommands.ts +++ b/src/devtools/commands/DevToolsCommands.ts @@ -135,7 +135,6 @@ abstract class DevToolsCommands { } log("debug", `DevToolsCommands: [${Object.keys(this.commandMap)}]`); - log("info", "Get DevTools Supported Metadata Types."); this.runCommand( "admin", "etypes", diff --git a/src/shared/interfaces/supportedMetadataTypes.ts b/src/shared/interfaces/supportedMetadataTypes.ts index 396128b..ca3715b 100644 --- a/src/shared/interfaces/supportedMetadataTypes.ts +++ b/src/shared/interfaces/supportedMetadataTypes.ts @@ -1,8 +1,8 @@ interface SupportedMetadataTypes { name: string, apiName: string, - retrieveByDefault: boolean, - supports: {[key: string]: boolean }, + retrieveByDefault: boolean | string[], + supports: {[key: string]: boolean | null }, description: string } From a79086cf2c3cb9ad6ab1fdedc3759c4025ddbf68 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Mon, 6 May 2024 09:55:41 +0200 Subject: [PATCH 15/25] fixed issue log error issue --- src/devtools/commands/DevToolsCommands.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devtools/commands/DevToolsCommands.ts b/src/devtools/commands/DevToolsCommands.ts index cac58ef..6954d78 100644 --- a/src/devtools/commands/DevToolsCommands.ts +++ b/src/devtools/commands/DevToolsCommands.ts @@ -216,7 +216,7 @@ abstract class DevToolsCommands { return; } log("error", - `[DevToolsCommands_runCommand] Error: Command Map is not configured configured.` + `[DevToolsCommands_runCommand] Error: Command Map is not configured.` ); } From 78be8b3414dede44f5570ddb835b2b39e8a4e30b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 09:31:28 +0000 Subject: [PATCH 16/25] Bump @types/node from 20.11.17 to 20.12.8 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.11.17 to 20.12.8. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index f43931f..5af8b9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "devDependencies": { "@types/chai": "^4.3.14", "@types/jest": "^29.5.11", - "@types/node": "^20.11.17", + "@types/node": "^20.12.8", "@types/vscode": "^1.88.0", "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.7.0", @@ -1674,9 +1674,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz", - "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==", + "version": "20.12.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.8.tgz", + "integrity": "sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==", "dev": true, "dependencies": { "undici-types": "~5.26.4" diff --git a/package.json b/package.json index 943a83e..006db93 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "devDependencies": { "@types/chai": "^4.3.14", "@types/jest": "^29.5.11", - "@types/node": "^20.11.17", + "@types/node": "^20.12.8", "@types/vscode": "^1.88.0", "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.7.0", From 86471f92a6ed8ddb88d9803fa5c5cdeb506f7d85 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 09:31:40 +0000 Subject: [PATCH 17/25] Bump @typescript-eslint/eslint-plugin from 7.4.0 to 7.8.0 Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 7.4.0 to 7.8.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.8.0/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 271 +++++++++++++++++++++++++++++++--------------- package.json | 2 +- 2 files changed, 186 insertions(+), 87 deletions(-) diff --git a/package-lock.json b/package-lock.json index f43931f..5623cf4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@types/jest": "^29.5.11", "@types/node": "^20.11.17", "@types/vscode": "^1.88.0", - "@typescript-eslint/eslint-plugin": "^7.4.0", + "@typescript-eslint/eslint-plugin": "^7.8.0", "@typescript-eslint/parser": "^7.7.0", "@vscode/test-electron": "^2.3.9", "chai": "^5.1.0", @@ -1721,22 +1721,22 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.4.0.tgz", - "integrity": "sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz", + "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.4.0", - "@typescript-eslint/type-utils": "7.4.0", - "@typescript-eslint/utils": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/type-utils": "7.8.0", + "@typescript-eslint/utils": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1756,13 +1756,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz", - "integrity": "sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", + "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0" + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1773,9 +1773,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", - "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", + "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1786,13 +1786,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", - "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", + "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.8.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1802,6 +1802,39 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/parser": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.0.tgz", @@ -1848,15 +1881,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz", - "integrity": "sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz", + "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.4.0", - "@typescript-eslint/utils": "7.4.0", + "@typescript-eslint/typescript-estree": "7.8.0", + "@typescript-eslint/utils": "7.8.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1875,9 +1908,9 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", - "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", + "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1888,19 +1921,19 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz", - "integrity": "sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", + "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1916,13 +1949,13 @@ } }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", - "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", + "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.8.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1941,10 +1974,22 @@ "balanced-match": "^1.0.0" } }, + "node_modules/@typescript-eslint/type-utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -1956,6 +2001,27 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@typescript-eslint/type-utils/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/types": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.0.tgz", @@ -2055,18 +2121,18 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.4.0.tgz", - "integrity": "sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", + "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.4.0", - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/typescript-estree": "7.4.0", - "semver": "^7.5.4" + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/typescript-estree": "7.8.0", + "semver": "^7.6.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2080,13 +2146,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz", - "integrity": "sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", + "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0" + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2097,9 +2163,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz", - "integrity": "sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", + "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2110,19 +2176,19 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz", - "integrity": "sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", + "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "@typescript-eslint/visitor-keys": "7.4.0", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2138,13 +2204,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz", - "integrity": "sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", + "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.4.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.8.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -2163,10 +2229,22 @@ "balanced-match": "^1.0.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -2178,6 +2256,27 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/visitor-keys": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.0.tgz", @@ -5109,9 +5208,9 @@ "peer": true }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" diff --git a/package.json b/package.json index 943a83e..7196628 100644 --- a/package.json +++ b/package.json @@ -143,7 +143,7 @@ "@types/jest": "^29.5.11", "@types/node": "^20.11.17", "@types/vscode": "^1.88.0", - "@typescript-eslint/eslint-plugin": "^7.4.0", + "@typescript-eslint/eslint-plugin": "^7.8.0", "@typescript-eslint/parser": "^7.7.0", "@vscode/test-electron": "^2.3.9", "chai": "^5.1.0", From cb01ab0f0d7f1a764010b13e277c6a376776b391 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Tue, 7 May 2024 10:41:06 +0200 Subject: [PATCH 18/25] added sort to md types by name --- src/devtools/commands/DevToolsCommands.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/devtools/commands/DevToolsCommands.ts b/src/devtools/commands/DevToolsCommands.ts index 6954d78..f2233dd 100644 --- a/src/devtools/commands/DevToolsCommands.ts +++ b/src/devtools/commands/DevToolsCommands.ts @@ -151,7 +151,9 @@ abstract class DevToolsCommands { Object.keys(this.commandMap).forEach((key: string) => { const devToolCommand: DevToolsCommands = this.commandMap[key]; - devToolCommand.setMetadataTypes(parsedResult); + const sortedSuppMdtByName: SupportedMetadataTypes[] = + parsedResult.sort((a, b) => a.name.localeCompare(b.name)); + devToolCommand.setMetadataTypes(sortedSuppMdtByName); }); }else{ log("error", "DevToolsCommands_init: Failed to parse supported metadata type result."); From 4e566b407f2d8a978755117f4f80f1d3c908bb1d Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Wed, 8 May 2024 10:26:35 +0200 Subject: [PATCH 19/25] metadata types file creation --- src/devtools/commands/DevToolsCommands.ts | 55 +++++++++++++--------- src/devtools/commands/commands.config.json | 4 +- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/src/devtools/commands/DevToolsCommands.ts b/src/devtools/commands/DevToolsCommands.ts index 59a6445..0781b66 100644 --- a/src/devtools/commands/DevToolsCommands.ts +++ b/src/devtools/commands/DevToolsCommands.ts @@ -7,6 +7,7 @@ import InputOptionsSettings from "../../shared/interfaces/inputOptionsSettings"; import { editorInput } from "../../editor/input"; import { log } from "../../editor/output"; import { lib } from "../../shared/utils/lib"; +import { file } from "../../shared/utils/file"; import { terminal } from "../../shared/utils/terminal"; abstract class DevToolsCommands { @@ -134,33 +135,41 @@ abstract class DevToolsCommands { }, {}); } - log("debug", `DevToolsCommands: [${Object.keys(this.commandMap)}]`); - this.runCommand( - "admin", - "etypes", - path, - { json: true }, - { - handleCommandResult: ({ success, data }: { success: boolean, data: string}) => { - if(success){ - // Parses the list of supported mtdata types - const parsedResult: SupportedMetadataTypes[] = JSON.parse(data); - if(parsedResult && parsedResult.length){ - // Sends the supported mtdata types to each DevTools Command - Object.keys(this.commandMap).forEach((key: string) => { - const devToolCommand: DevToolsCommands = - this.commandMap[key]; - devToolCommand.setMetadataTypes(parsedResult); - }); + const mdtFileExists: boolean = file.fileExists("metadatatypes.json").length > 0; + const setMetadataTypes = (mdtTypes: SupportedMetadataTypes[]) => { + // Sends the supported mtdata types to each DevTools Command + Object.keys(this.commandMap).forEach((key: string) => { + const devToolCommand: DevToolsCommands = + this.commandMap[key]; + devToolCommand.setMetadataTypes(mdtTypes); + }); + }; + + if(mdtFileExists){ + + }else{ + this.runCommand( + "admin", + "etypes", + path, + { json: true, file: " > metadatatypes.json" }, + { + handleCommandResult: ({ success, data }: { success: boolean, data: string}) => { + if(success){ + // Parses the list of supported mtdata types + const parsedResult: SupportedMetadataTypes[] = JSON.parse(data); + if(parsedResult && parsedResult.length){ + setMetadataTypes(parsedResult); + }else{ + log("error", "DevToolsCommands_init: Failed to parse supported metadata type result."); + } }else{ - log("error", "DevToolsCommands_init: Failed to parse supported metadata type result."); + log("error", "DevToolsCommands_init: Admin Command etypes failed."); } - }else{ - log("error", "DevToolsCommands_init: Admin Command etypes failed."); } } - } - ); + ); + } } static async runCommand( diff --git a/src/devtools/commands/commands.config.json b/src/devtools/commands/commands.config.json index 39abc9b..a86d75f 100644 --- a/src/devtools/commands/commands.config.json +++ b/src/devtools/commands/commands.config.json @@ -23,9 +23,9 @@ { "id":"etypes", "title": "Explain Types", - "command": "mcdev explainTypes {{json}} --skipInteraction", + "command": "mcdev explainTypes {{json}} --skipInteraction {{file}}", "requiredParams": [], - "optionalParams": ["json"], + "optionalParams": ["json", "file"], "description": "Explains metadata types that can be retrieved.", "isAvailable": true } From e915df93bd020331f119985a214a0672a68338f5 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Tue, 21 May 2024 17:48:04 +0200 Subject: [PATCH 20/25] removed explaintypes being called when starting extension --- src/config/metadatatypes.config.ts | 535 ++++++++++++++++++++++ src/devtools/commands/DevToolsCommands.ts | 45 +- src/devtools/main.ts | 2 +- 3 files changed, 544 insertions(+), 38 deletions(-) create mode 100644 src/config/metadatatypes.config.ts diff --git a/src/config/metadatatypes.config.ts b/src/config/metadatatypes.config.ts new file mode 100644 index 0000000..a7bb80e --- /dev/null +++ b/src/config/metadatatypes.config.ts @@ -0,0 +1,535 @@ +export const metadatatypes = [ + { + "name": "Asset-[Subtype]", + "apiName": "asset", + "retrieveByDefault": [ + "asset", + "code", + "textfile", + "block", + "message", + "template", + "other" + ], + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": false, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": true + }, + "description": "Assets from Content Builder grouped into subtypes." + }, + { + "name": "Data Designer Attribute Groups", + "apiName": "attributeGroup", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Groupings of Attribute Sets (Data Extensions) in Data Designer." + }, + { + "name": "Data Designer Attribute Sets", + "apiName": "attributeSet", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Data Extensions linked together in Attribute Groups in Data Designer." + }, + { + "name": "Automation", + "apiName": "automation", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": true + }, + "description": "Used via Automation Studio directly - or indirectly via Journey Builder & MC Connect." + }, + { + "name": "Campaign Tag", + "apiName": "campaign", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Way of tagging/categorizing emails, journeys and alike." + }, + { + "name": "Content Area (Classic)", + "apiName": "contentArea", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "DEPRECATED: Old way of saving Content Blocks; please migrate these to new Content Blocks (`Asset: ...`)." + }, + { + "name": "Data Extension", + "apiName": "dataExtension", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": true + }, + "description": "Database table schemas." + }, + { + "name": "Data Extension Field", + "apiName": "dataExtensionField", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": true, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Internal Type: Fields for type dataExtension." + }, + { + "name": "Data Extension Template", + "apiName": "dataExtensionTemplate", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Templates used for special DE use cases like Triggered Send." + }, + { + "name": "Automation: Data Extract Activity", + "apiName": "dataExtract", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": false, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": true + }, + "description": "Creates zipped files in your FTP directory or convert XML into CSV." + }, + { + "name": "Data Extract Type", + "apiName": "dataExtractType", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Types of Data Extracts enabled for a specific business unit. This normally should not be stored." + }, + { + "name": "API Discovery", + "apiName": "discovery", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Description of all API endpoints accessible via REST API; only relevant for developers of Accenture SFMC DevTools." + }, + { + "name": "E-Mail (Classic)", + "apiName": "email", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "DEPRECATED: Old way of saving E-Mails; please migrate these to new E-Mail (`Asset: message`)." + }, + { + "name": "E-Mail Send Definition", + "apiName": "emailSend", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "Mainly used in Automations as \"Send Email Activity\"." + }, + { + "name": "Journey: Entry Event Definition", + "apiName": "event", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": true + }, + "description": "Used in Journeys (Interactions) to define Entry Events." + }, + { + "name": "File Location", + "apiName": "fileLocation", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Used for export or import of files to/from Marketing Cloud. Previously this was labeled ftpLocation." + }, + { + "name": "Automation: File Transfer Activity", + "apiName": "fileTransfer", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": false, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": true + }, + "description": "Unzip, decrypt a file or move a file from secure location into FTP directory." + }, + { + "name": "Automation: Filter Activity", + "apiName": "filter", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "BETA: Part of how filtered Data Extensions are created. Depends on type \"FilterDefinitions\"." + }, + { + "name": "Folder", + "apiName": "folder", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": false, + "changeKey": false, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "Used to structure all kinds of other metadata." + }, + { + "name": "Automation: Import File Activity", + "apiName": "importFile", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": false, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": true + }, + "description": "Reads files in FTP directory for further processing." + }, + { + "name": "Journey", + "apiName": "journey", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": false, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "Journey (internally called \"Interaction\")." + }, + { + "name": "List", + "apiName": "list", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": true, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Old way of storing data. Still used for central Email Subscriber DB." + }, + { + "name": "Mobile Code", + "apiName": "mobileCode", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Used to send SMS Messages" + }, + { + "name": "Mobile Keyword", + "apiName": "mobileKeyword", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": false, + "buildTemplate": true, + "retrieveAsTemplate": true + }, + "description": "Used for managing subscriptions for Mobile numbers in Mobile Connect" + }, + { + "name": "MobileConnect SMS", + "apiName": "mobileMessage", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": false, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "Used by Journey Builder and to send SMS from MobileConnect triggered by API or manually on-the-fly" + }, + { + "name": "Automation: SQL Query Activity", + "apiName": "query", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": true + }, + "description": "Select & transform data using SQL." + }, + { + "name": "Role", + "apiName": "role", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": false, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "User Roles define groups that are used to grant users access to SFMC systems." + }, + { + "name": "Automation: Script Activity", + "apiName": "script", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": false, + "changeKey": null, + "buildTemplate": true, + "retrieveAsTemplate": true + }, + "description": "Execute more complex tasks via SSJS or AMPScript." + }, + { + "name": "Send Classification", + "apiName": "sendClassification", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": false, + "update": false, + "delete": false, + "changeKey": false, + "buildTemplate": false, + "retrieveAsTemplate": false + }, + "description": "Lets admins define Delivery Profile, Sender Profile and CAN-SPAM for an email job in a central location." + }, + { + "name": "Transactional Email", + "apiName": "transactionalEmail", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": false, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "Lets you send immediate Email messages via API events" + }, + { + "name": "Transactional Push", + "apiName": "transactionalPush", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": false, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "Lets you send immediate Push messages via API events" + }, + { + "name": "Transactional SMS", + "apiName": "transactionalSMS", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": false, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "Lets you send immediate SMS messages via API events" + }, + { + "name": "Triggered Send", + "apiName": "triggeredSend", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "DEPRECATED: Sends emails via API or DataExtension Event." + }, + { + "name": "User", + "apiName": "user", + "retrieveByDefault": false, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": false, + "changeKey": true, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "Marketing Cloud users" + }, + { + "name": "Automation: Verification Activity", + "apiName": "verification", + "retrieveByDefault": true, + "supports": { + "retrieve": true, + "create": true, + "update": true, + "delete": true, + "changeKey": false, + "buildTemplate": true, + "retrieveAsTemplate": false + }, + "description": "Check DataExtension for a row count" + } +]; \ No newline at end of file diff --git a/src/devtools/commands/DevToolsCommands.ts b/src/devtools/commands/DevToolsCommands.ts index 0781b66..575ad79 100644 --- a/src/devtools/commands/DevToolsCommands.ts +++ b/src/devtools/commands/DevToolsCommands.ts @@ -7,8 +7,8 @@ import InputOptionsSettings from "../../shared/interfaces/inputOptionsSettings"; import { editorInput } from "../../editor/input"; import { log } from "../../editor/output"; import { lib } from "../../shared/utils/lib"; -import { file } from "../../shared/utils/file"; import { terminal } from "../../shared/utils/terminal"; +import { metadatatypes } from "../../config/metadatatypes.config"; abstract class DevToolsCommands { @@ -115,7 +115,7 @@ abstract class DevToolsCommands { return response; } - static init(path: string){ + static init(){ log("info", "Initializing DevTools Commands..."); if(!this.commandMap){ const commandTypes: {id: string}[] = this.getAllCommandTypes(); @@ -135,41 +135,12 @@ abstract class DevToolsCommands { }, {}); } - const mdtFileExists: boolean = file.fileExists("metadatatypes.json").length > 0; - const setMetadataTypes = (mdtTypes: SupportedMetadataTypes[]) => { - // Sends the supported mtdata types to each DevTools Command - Object.keys(this.commandMap).forEach((key: string) => { - const devToolCommand: DevToolsCommands = - this.commandMap[key]; - devToolCommand.setMetadataTypes(mdtTypes); - }); - }; - - if(mdtFileExists){ - - }else{ - this.runCommand( - "admin", - "etypes", - path, - { json: true, file: " > metadatatypes.json" }, - { - handleCommandResult: ({ success, data }: { success: boolean, data: string}) => { - if(success){ - // Parses the list of supported mtdata types - const parsedResult: SupportedMetadataTypes[] = JSON.parse(data); - if(parsedResult && parsedResult.length){ - setMetadataTypes(parsedResult); - }else{ - log("error", "DevToolsCommands_init: Failed to parse supported metadata type result."); - } - }else{ - log("error", "DevToolsCommands_init: Admin Command etypes failed."); - } - } - } - ); - } + // Sends the supported mtdata types to each DevTools Command + Object.keys(this.commandMap).forEach((key: string) => { + const devToolCommand: DevToolsCommands = + this.commandMap[key]; + devToolCommand.setMetadataTypes(metadatatypes); + }); } static async runCommand( diff --git a/src/devtools/main.ts b/src/devtools/main.ts index c03dfc5..2a42b82 100644 --- a/src/devtools/main.ts +++ b/src/devtools/main.ts @@ -65,7 +65,7 @@ async function handleDevToolsRequirements(/*isDevToolsProject: boolean*/): Promi // Deactivates Compact folders for command right execution editorDependencies.deactivateCompactFolders(); // init DevTools Commands - DevToolsCommands.init(editorWorkspace.getWorkspaceURIPath()); + DevToolsCommands.init(); return; } log("debug", `Missing Pre-requisites: [${prerequisites.missingPrerequisites}]`); From 6439add14f7867f93b526c93a3f94925515437f8 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Tue, 21 May 2024 21:53:53 +0200 Subject: [PATCH 21/25] updated packages and add sorted mdtypes list --- package-lock.json | 595 +++++---------------- package.json | 4 +- src/devtools/commands/DevToolsCommands.ts | 4 +- src/devtools/commands/commands.config.json | 4 +- 4 files changed, 134 insertions(+), 473 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7b41eed..7f8c25a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,10 +11,10 @@ "dependencies": { "@salesforce-ux/design-system": "^2.23.2", "@vscode/codicons": "^0.0.35", - "winston": "^3.11.0" + "winston": "^3.13.0" }, "devDependencies": { - "@types/chai": "^4.3.11", + "@types/chai": "^4.3.16", "@types/jest": "^29.5.11", "@types/node": "^20.12.8", "@types/vscode": "^1.88.0", @@ -1325,9 +1325,9 @@ } }, "node_modules/@salesforce-ux/design-system": { - "version": "2.23.2", - "resolved": "https://registry.npmjs.org/@salesforce-ux/design-system/-/design-system-2.23.2.tgz", - "integrity": "sha512-Mw6xvAC7K+66dBvqY9Uk7euUrwIEaT1J7gLfKC0VLajepAWZKVfOI+Oovc39RivO5K2zYDFD8LYNAO3wfzD1AA==", + "version": "2.24.2", + "resolved": "https://registry.npmjs.org/@salesforce-ux/design-system/-/design-system-2.24.2.tgz", + "integrity": "sha512-EcAeoa705VTz6rve5Dm84Oh6ACGL44FUtEj/nhY9EshPmHy4L4I3E05XNG4Y7svOzMn/uV0Vn7qLU4vXaq+2FQ==", "peerDependencies": { "postcss": "^8.3.5" } @@ -1431,9 +1431,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.14.tgz", - "integrity": "sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==", + "version": "4.3.16", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", + "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", "dev": true }, "node_modules/@types/eslint": { @@ -1518,20 +1518,14 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.12.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.8.tgz", - "integrity": "sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==", + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -1544,9 +1538,9 @@ "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "node_modules/@types/vscode": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.88.0.tgz", - "integrity": "sha512-rWY+Bs6j/f1lvr8jqZTyp5arRMfovdxolcqGi+//+cPDOh8SBvzXH90e7BiSXct5HJ9HGW6jATchbRTpTJpEkw==", + "version": "1.89.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.89.0.tgz", + "integrity": "sha512-TMfGKLSVxfGfoO8JfIE/neZqv7QLwS4nwPwL/NwMvxtAY2230H2I4Z5xx6836pmJvMAzqooRQ4pmLm7RUicP3A==", "dev": true }, "node_modules/@types/yargs": { @@ -1565,21 +1559,19 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz", - "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.10.0.tgz", + "integrity": "sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/type-utils": "7.8.0", - "@typescript-eslint/utils": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", - "debug": "^4.3.4", + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/type-utils": "7.10.0", + "@typescript-eslint/utils": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { @@ -1599,96 +1591,16 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", - "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", - "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", - "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.8.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/parser": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz", - "integrity": "sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.10.0.tgz", + "integrity": "sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "debug": "^4.3.4" }, "engines": { @@ -1708,13 +1620,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", - "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz", + "integrity": "sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0" + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1725,13 +1637,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz", - "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.10.0.tgz", + "integrity": "sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/utils": "7.8.0", + "@typescript-eslint/typescript-estree": "7.10.0", + "@typescript-eslint/utils": "7.10.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -1751,125 +1663,10 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", - "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", - "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", - "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.8.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", - "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.10.0.tgz", + "integrity": "sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1880,13 +1677,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", - "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz", + "integrity": "sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/visitor-keys": "7.10.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1908,18 +1705,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", - "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.10.0.tgz", + "integrity": "sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.15", - "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "semver": "^7.6.0" + "@typescript-eslint/scope-manager": "7.10.0", + "@typescript-eslint/types": "7.10.0", + "@typescript-eslint/typescript-estree": "7.10.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1932,145 +1726,13 @@ "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", - "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", - "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", - "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", - "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.8.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", - "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz", + "integrity": "sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/types": "7.10.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -2093,9 +1755,9 @@ "integrity": "sha512-7iiKdA5wHVYSbO7/Mm0hiHD3i4h+9hKUe1O4hISAe/nHhagMwb2ZbFC8jU6d7Cw+JNT2dWXN2j+WHbkhT5/l2w==" }, "node_modules/@vscode/test-electron": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.9.tgz", - "integrity": "sha512-z3eiChaCQXMqBnk2aHHSEkobmC2VRalFQN0ApOAtydL172zXGxTwGrRtviT5HnUB+Q+G3vtEYFtuQkYqBzYgMA==", + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.10.tgz", + "integrity": "sha512-FxMqrvUm6a8S5tP4CymNJ40e6kD+wUTWTc6K32U629yrCCa+kl/rmpkC2gKpN4F4zjg1r+0Hnk9sl0+N2atsYA==", "dev": true, "dependencies": { "http-proxy-agent": "^4.0.1", @@ -2582,9 +2244,9 @@ } }, "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "peer": true, "dependencies": { "follow-redirects": "^1.15.6", @@ -2940,12 +2602,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -3099,9 +2761,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001614", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", - "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", + "version": "1.0.30001620", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", + "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", "dev": true, "funding": [ { @@ -3119,13 +2781,13 @@ ] }, "node_modules/chai": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.0.tgz", - "integrity": "sha512-kDZ7MZyM6Q1DhR9jy7dalKohXQ2yrlXkk59CR52aRKxJrobmlBNqnFQxX9xOX8w+4mz8SYlKJa/7D7ddltFXCw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", + "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", "dev": true, "dependencies": { "assertion-error": "^2.0.1", - "check-error": "^2.0.0", + "check-error": "^2.1.1", "deep-eql": "^5.0.1", "loupe": "^3.1.0", "pathval": "^2.0.0" @@ -3165,9 +2827,9 @@ "peer": true }, "node_modules/check-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.0.0.tgz", - "integrity": "sha512-tjLAOBHKVxtPoHe/SA7kNOMvhCRdCJ3vETdeY0RuAc9popf+hyaSV6ZEg9hr4cpWF7jmo/JSWEnLDrnijS9Tog==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, "engines": { "node": ">= 16" @@ -3954,9 +3616,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.751", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz", - "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==", + "version": "1.4.777", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.777.tgz", + "integrity": "sha512-n02NCwLJ3wexLfK/yQeqfywCblZqLcXphzmid5e8yVPdtEcida7li0A5WQKghHNG0FeOMCzeFOzEbtAh5riXFw==", "dev": true }, "node_modules/emittery": { @@ -3982,9 +3644,9 @@ "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -4129,9 +3791,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz", - "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz", + "integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==", "dev": true }, "node_modules/es-object-atoms": { @@ -4597,9 +4259,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -6749,9 +6411,9 @@ } }, "node_modules/loupe": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.0.tgz", - "integrity": "sha512-qKl+FrLXUhFuHUoDJG7f8P8gEMHq9NFS0c6ghXG1J0rldmZFQZoNVv/vyirE9qwCIhWZDsvEFd1sbFu3GvRQFg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", + "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", "dev": true, "dependencies": { "get-func-name": "^2.0.1" @@ -6961,18 +6623,30 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.6.tgz", + "integrity": "sha512-Y4Ypn3oujJYxJcMacVgcs92wofTHxp9FzfDpQON4msDefoC0lb3ETvQLOdLcbhSwU1bz8HrL/1sygfBIHudrkQ==", "dev": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "braces": "^3.0.3", + "picomatch": "^4.0.2" }, "engines": { "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -7484,9 +7158,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -8179,12 +7853,9 @@ } }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -8207,22 +7878,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -8895,9 +8550,9 @@ } }, "node_modules/ts-jest": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", - "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", + "version": "29.1.3", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.3.tgz", + "integrity": "sha512-6L9qz3ginTd1NKhOxmkP0qU3FyKjj5CPoY+anszfVn6Pmv/RIKzhiMCsH7Yb7UvJR9I2A64rm4zQl531s2F1iw==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -8913,10 +8568,11 @@ "ts-jest": "cli.js" }, "engines": { - "node": "^16.10.0 || ^18.0.0 || >=20.0.0" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", @@ -8926,6 +8582,9 @@ "@babel/core": { "optional": true }, + "@jest/transform": { + "optional": true + }, "@jest/types": { "optional": true }, @@ -9178,9 +8837,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -9197,8 +8856,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" diff --git a/package.json b/package.json index 7056f7f..4b55ee1 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "test": "jest --coverage" }, "devDependencies": { - "@types/chai": "^4.3.11", + "@types/chai": "^4.3.16", "@types/jest": "^29.5.11", "@types/node": "^20.12.8", "@types/vscode": "^1.88.0", @@ -148,6 +148,6 @@ "dependencies": { "@salesforce-ux/design-system": "^2.23.2", "@vscode/codicons": "^0.0.35", - "winston": "^3.11.0" + "winston": "^3.13.0" } } diff --git a/src/devtools/commands/DevToolsCommands.ts b/src/devtools/commands/DevToolsCommands.ts index 00a8095..fc89c09 100644 --- a/src/devtools/commands/DevToolsCommands.ts +++ b/src/devtools/commands/DevToolsCommands.ts @@ -139,7 +139,9 @@ abstract class DevToolsCommands { Object.keys(this.commandMap).forEach((key: string) => { const devToolCommand: DevToolsCommands = this.commandMap[key]; - devToolCommand.setMetadataTypes(metadatatypes); + const sortedSuppMdtByName: SupportedMetadataTypes[] = + metadatatypes.sort((a, b) => a.name.localeCompare(b.name)); + devToolCommand.setMetadataTypes(sortedSuppMdtByName); }); } diff --git a/src/devtools/commands/commands.config.json b/src/devtools/commands/commands.config.json index a86d75f..39abc9b 100644 --- a/src/devtools/commands/commands.config.json +++ b/src/devtools/commands/commands.config.json @@ -23,9 +23,9 @@ { "id":"etypes", "title": "Explain Types", - "command": "mcdev explainTypes {{json}} --skipInteraction {{file}}", + "command": "mcdev explainTypes {{json}} --skipInteraction", "requiredParams": [], - "optionalParams": ["json", "file"], + "optionalParams": ["json"], "description": "Explains metadata types that can be retrieved.", "isAvailable": true } From b94645fe0d7428a405866e987b07e2865287de54 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Wed, 22 May 2024 18:05:54 +0200 Subject: [PATCH 22/25] change isDevtoolsProject method name and added ampscript to package.json --- package.json | 4 ++-- src/devtools/main.ts | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 4b55ee1..cfc9066 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "group": "devtools" }, { - "when": "sfmc-devtools-vscode.isDevToolsProject && (resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript' || resourceDirname =~ /asset\\\\[a-zA-Z]*/)))", + "when": "sfmc-devtools-vscode.isDevToolsProject && (resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript' || resourceLangId == 'ampscript' || resourceDirname =~ /asset\\\\[a-zA-Z]*/)))", "command": "sfmc-devtools-vscext.devtoolsCMDeploy", "group": "devtools" }, @@ -97,7 +97,7 @@ "group": "devtools" }, { - "when": "sfmc-devtools-vscode.isDevToolsProject && (resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript')))", + "when": "sfmc-devtools-vscode.isDevToolsProject && (resourcePath =~ /deploy/ || (resourcePath =~ /retrieve/ && (resourceExtname == '.json' || resourceExtname == '.html' || resourceExtname == '.sql' || resourceExtname == '.ssjs' || resourceLangId == 'markdown' || resourceLangId == 'AMPscript' || resourceLangId == 'ampscript')))", "command": "sfmc-devtools-vscext.devtoolsCMDeploy", "group": "devtools" }, diff --git a/src/devtools/main.ts b/src/devtools/main.ts index 2a42b82..345d8f7 100644 --- a/src/devtools/main.ts +++ b/src/devtools/main.ts @@ -22,7 +22,7 @@ async function initDevToolsExtension(): Promise{ try{ log("info", "Running SFMC DevTools extension..."); - const anyDevToolsProject: boolean = await isADevToolsProject() || await anySubFolderIsDevToolsProject(); + const anyDevToolsProject: boolean = await isDevToolsProject() || await anySubFolderIsDevToolsProject(); if(anyDevToolsProject){ await handleDevToolsRequirements(); @@ -34,7 +34,7 @@ async function initDevToolsExtension(): Promise{ } } -async function isADevToolsProject(projectName?: string): Promise { +async function isDevToolsProject(projectName?: string): Promise { log("debug", "Checking if folder is a SFMC DevTools project..."); log("debug", `DevTools files: [${mainConfig.requiredFiles}]`); @@ -79,7 +79,7 @@ async function anySubFolderIsDevToolsProject(): Promise { const subFolders: string[] = await editorWorkspace.getWorkspaceSubFolders(); if(subFolders.length){ const subFolderProjects: boolean[] = - await Promise.all(subFolders.map(async (sf: string) => await isADevToolsProject(sf + "/"))); + await Promise.all(subFolders.map(async (sf: string) => await isDevToolsProject(sf + "/"))); return subFolderProjects.some((sfResult: boolean) => sfResult); }else{ log("debug", "Workspace doesn't contain any sub folders."); @@ -455,7 +455,7 @@ async function handleDevToolsCMCommand(action: string, selectedPaths: string[]): if(workspaceFolderPath !== projectPath){ // Check if folder is a DevTools project const isSubFolderDevToolsProject: boolean = - await isADevToolsProject( projectName + "/" ); + await isDevToolsProject( projectName + "/" ); log("debug", `SubFolder project '${projectPath}' ${ isSubFolderDevToolsProject ? 'is': 'is not'} a DevTools Project.` ); From 9bb217e79a9b791c50910fdae98a60ae462a8bf2 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Thu, 23 May 2024 09:50:13 +0200 Subject: [PATCH 23/25] change configuration in package.json --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index cfc9066..d1022fb 100644 --- a/package.json +++ b/package.json @@ -109,11 +109,12 @@ ] }, "configuration": { - "title": "sfmc-devtools-vscode", + "title": "SFMC DevTools", "properties": { "sfmc-devtools-vscode.recommendExtensions": { "type": "boolean", - "default": true + "default": true, + "description": "Indicates if recommended extensions popup should be shown to user or not." } } } From 5279e78367fe04d6d9dd99bda88ab747ed59e163 Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Fri, 24 May 2024 11:13:55 +0200 Subject: [PATCH 24/25] align types/vscode with vscode engine --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f8c25a..c3b0c0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@types/chai": "^4.3.16", "@types/jest": "^29.5.11", "@types/node": "^20.12.8", - "@types/vscode": "^1.88.0", + "@types/vscode": "^1.81.1", "@typescript-eslint/eslint-plugin": "^7.8.0", "@typescript-eslint/parser": "^7.7.0", "@vscode/test-electron": "^2.3.9", diff --git a/package.json b/package.json index d1022fb..80f7bee 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "@types/chai": "^4.3.16", "@types/jest": "^29.5.11", "@types/node": "^20.12.8", - "@types/vscode": "^1.88.0", + "@types/vscode": "^1.81.1", "@typescript-eslint/eslint-plugin": "^7.8.0", "@typescript-eslint/parser": "^7.7.0", "@vscode/test-electron": "^2.3.9", From 5f9d0f1597af8fa4ef84dc9115b2a1834743280c Mon Sep 17 00:00:00 2001 From: Ana Silva Date: Fri, 24 May 2024 11:14:35 +0200 Subject: [PATCH 25/25] 1.0.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c3b0c0d..3f3f704 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sfmc-devtools-vscode", - "version": "1.0.1", + "version": "1.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sfmc-devtools-vscode", - "version": "1.0.1", + "version": "1.0.2", "license": "MIT", "dependencies": { "@salesforce-ux/design-system": "^2.23.2", diff --git a/package.json b/package.json index 80f7bee..e03df30 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "sfmc-devtools-vscode", "displayName": "SFMC DevTools", "description": "Unofficial IDE for Salesforce Marketing Cloud", - "version": "1.0.1", + "version": "1.0.2", "license": "MIT", "publisher": "Accenture-oss", "peerDependencies": {