diff --git a/.gitignore b/.gitignore index 4dd985482a..3f6cae12ee 100644 --- a/.gitignore +++ b/.gitignore @@ -76,7 +76,9 @@ dist *.sass.ts # Visual Studio Code -.vscode +.vscode/** +!.vscode/launch.json +!.vscode/tasks.json # Heft .heft diff --git a/.vscode/launch.json b/.vscode/launch.json index aa60c38f8d..d90f39cdaa 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -48,6 +48,19 @@ "type": "node", "request": "attach", "port": 5858 + }, + { + "name": "Launch Rush Extension", + "type": "extensionHost", + "request": "launch", + "cwd": "${workspaceFolder}/apps/vscode-extension", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}/apps/vscode-extension" + ], + "outFiles": [ + "${workspaceFolder}/apps/vscode-extension/out/**/*.js" + ], + "preLaunchTask": "npm: build:watch - apps/vscode-extension" } ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000000..60c52c20aa --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,45 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "build", + "path": "apps/vscode-extension/", + "group": "build", + "problemMatcher": [], + "label": "npm: build - apps/vscode-extension", + "detail": "heft build --clean" + }, + { + "type": "npm", + "script": "build:watch", + "path": "apps/vscode-extension/", + "group": "build", + "isBackground": true, + "presentation": { + "reveal": "never", + }, + "problemMatcher": [ + { + "owner": "heft", + "fileLocation": ["relative", "${workspaceFolder}"], + "background": { + "activeOnStart": true, + "beginsPattern": "File change detected\\. Starting incremental compilation\\.\\.\\.", + "endsPattern": "Found\\s+\\d+\\s+errors\\. Watching for file changes\\." + }, + "pattern": { + "regexp": "^(Error):\\s+(.*):(\\d+):(\\d+)\\s+-\\s+(.*)$", + "file": 2, + "line": 3, + "column": 4, + "severity": 1, + "message": 5, + } + } + ], + "label": "npm: build:watch - apps/vscode-extension", + "detail": "heft build --watch" + } + ] +} \ No newline at end of file diff --git a/apps/vscode-extension/.eslintrc.js b/apps/vscode-extension/.eslintrc.js new file mode 100644 index 0000000000..1f3bbaf247 --- /dev/null +++ b/apps/vscode-extension/.eslintrc.js @@ -0,0 +1,11 @@ +// This is a workaround for https://github.com/eslint/eslint/issues/3458 +require('@rushstack/eslint-config/patch/modern-module-resolution'); + +module.exports = { + ignorePatterns: ['out', 'dist', '**/*.d.ts'], + extends: [ + '@rushstack/eslint-config/profile/node-trusted-tool', + '@rushstack/eslint-config/mixins/friendly-locals' + ], + parserOptions: { tsconfigRootDir: __dirname } +}; diff --git a/apps/vscode-extension/.gitignore b/apps/vscode-extension/.gitignore new file mode 100644 index 0000000000..0b60dfa12f --- /dev/null +++ b/apps/vscode-extension/.gitignore @@ -0,0 +1,5 @@ +out +dist +node_modules +.vscode-test/ +*.vsix diff --git a/apps/vscode-extension/.vscodeignore b/apps/vscode-extension/.vscodeignore new file mode 100644 index 0000000000..d0c18a9821 --- /dev/null +++ b/apps/vscode-extension/.vscodeignore @@ -0,0 +1,11 @@ +.vscode/** +.vscode-test/** +src/** +config/** +.gitignore +.yarnrc +vsc-extension-quickstart.md +**/tsconfig.json +**/.eslintrc.json +**/*.map +**/*.ts diff --git a/apps/vscode-extension/config/rush-project.json b/apps/vscode-extension/config/rush-project.json new file mode 100644 index 0000000000..ac0bc3fa59 --- /dev/null +++ b/apps/vscode-extension/config/rush-project.json @@ -0,0 +1,3 @@ +{ + "projectOutputFolderNames": ["dist", "out"] +} diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json new file mode 100644 index 0000000000..ccc8ffca2e --- /dev/null +++ b/apps/vscode-extension/package.json @@ -0,0 +1,51 @@ +{ + "name": "rushstack-vscode-extension", + "displayName": "RushStack", + "version": "0.0.0", + "description": "Visual Studio Extension for RushStack", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/rushstack.git", + "directory": "apps/vscode-extension" + }, + "license": "MIT", + "author": "Cheng Liu", + "main": "./out/extension.js", + "scripts": { + "build": "heft build --clean", + "build:watch": "heft build --watch", + "pretest": "npm run build", + "test": "node ./out/test/runTest.js" + }, + "contributes": { + "commands": [ + { + "command": "rushstack.helloWorld", + "title": "Hello World" + } + ] + }, + "activationEvents": [ + "onCommand:rushstack.helloWorld" + ], + "devDependencies": { + "@rushstack/eslint-config": "workspace:*", + "@rushstack/heft": "workspace:*", + "@rushstack/heft-node-rig": "workspace:*", + "@types/glob": "7.1.1", + "@types/heft-jest": "1.0.1", + "@types/mocha": "^9.0.0", + "@types/node": "12.20.24", + "@types/vscode": "^1.63.0", + "@typescript-eslint/eslint-plugin": "~5.6.0", + "@typescript-eslint/parser": "~5.6.0", + "@vscode/test-electron": "^1.6.2", + "eslint": "~8.3.0", + "glob": "~7.0.5", + "mocha": "^9.1.3", + "typescript": "^4.4.4" + }, + "engines": { + "vscode": "^1.63.0" + } +} diff --git a/apps/vscode-extension/src/extension.ts b/apps/vscode-extension/src/extension.ts new file mode 100644 index 0000000000..7c89683f7c --- /dev/null +++ b/apps/vscode-extension/src/extension.ts @@ -0,0 +1,25 @@ +// The module 'vscode' contains the VS Code extensibility API +// Import the module and reference it with the alias vscode in your code below +import * as vscode from 'vscode'; + +// this method is called when your extension is activated +// your extension is activated the very first time the command is executed +export function activate(context: vscode.ExtensionContext): void { + // Use the console to output diagnostic information (console.log) and errors (console.error) + // This line of code will only be executed once when your extension is activated + console.log('Congratulations, your extension "vscode-hello-world" is now active!'); + + // The command has been defined in the package.json file + // Now provide the implementation of the command with registerCommand + // The commandId parameter must match the command field in package.json + const disposable: vscode.Disposable = vscode.commands.registerCommand('rushstack.helloWorld', async () => { + // The code you place here will be executed every time your command is executed + // Display a message box to the user + await vscode.window.showInformationMessage('Hello World from RushStack!'); + }); + + context.subscriptions.push(disposable); +} + +// this method is called when your extension is deactivated +export function deactivate(): void {} diff --git a/apps/vscode-extension/src/test/runTest.ts b/apps/vscode-extension/src/test/runTest.ts new file mode 100644 index 0000000000..1ccd223929 --- /dev/null +++ b/apps/vscode-extension/src/test/runTest.ts @@ -0,0 +1,24 @@ +import * as path from 'path'; + +import { runTests } from '@vscode/test-electron'; + +async function main(): Promise { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + const extensionDevelopmentPath: string = path.resolve(__dirname, '../../'); + + // The path to test runner + // Passed to --extensionTestsPath + const extensionTestsPath: string = path.resolve(__dirname, './suite/index'); + + // Download VS Code, unzip it and run the integration test + await runTests({ extensionDevelopmentPath, extensionTestsPath }); + } catch (err) { + console.error('Failed to run tests'); + process.exit(1); + } +} + +// eslint-disable-next-line @typescript-eslint/no-floating-promises +main(); diff --git a/apps/vscode-extension/src/test/suite/extension.test.ts b/apps/vscode-extension/src/test/suite/extension.test.ts new file mode 100644 index 0000000000..8b0fd861a7 --- /dev/null +++ b/apps/vscode-extension/src/test/suite/extension.test.ts @@ -0,0 +1,16 @@ +import * as assert from 'assert'; + +// You can import and use all API from the 'vscode' module +// as well as import your extension to test it +import * as vscode from 'vscode'; +// import * as myExtension from '../../extension'; + +suite('Extension Test Suite', () => { + // eslint-disable-next-line @typescript-eslint/no-floating-promises + vscode.window.showInformationMessage('Start all tests.'); + + test('Sample test', () => { + assert.strictEqual(-1, [1, 2, 3].indexOf(5)); + assert.strictEqual(-1, [1, 2, 3].indexOf(0)); + }); +}); diff --git a/apps/vscode-extension/src/test/suite/index.ts b/apps/vscode-extension/src/test/suite/index.ts new file mode 100644 index 0000000000..7c7a9a4c71 --- /dev/null +++ b/apps/vscode-extension/src/test/suite/index.ts @@ -0,0 +1,38 @@ +import * as path from 'path'; +import Mocha from 'mocha'; +import glob from 'glob'; + +export function run(): Promise { + // Create the mocha test + const mocha: Mocha = new Mocha({ + ui: 'tdd', + color: true + }); + + const testsRoot: string = path.resolve(__dirname, '..'); + + return new Promise((resolve, reject) => { + glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { + if (err) { + return reject(err); + } + + // Add files to the test suite + files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f))); + + try { + // Run the mocha test + mocha.run((failures) => { + if (failures > 0) { + reject(new Error(`${failures} tests failed.`)); + } else { + resolve(); + } + }); + } catch (err) { + console.error(err); + reject(err); + } + }); + }); +} diff --git a/apps/vscode-extension/tsconfig.json b/apps/vscode-extension/tsconfig.json new file mode 100644 index 0000000000..0d32bcbb16 --- /dev/null +++ b/apps/vscode-extension/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "./node_modules/@rushstack/heft-node-rig/profiles/default/tsconfig-base.json", + "compilerOptions": { + "outDir": "out", + "types": ["mocha", "node"] + } +} diff --git a/common/config/rush/nonbrowser-approved-packages.json b/common/config/rush/nonbrowser-approved-packages.json index c78505f88a..020ec93d8d 100644 --- a/common/config/rush/nonbrowser-approved-packages.json +++ b/common/config/rush/nonbrowser-approved-packages.json @@ -15,11 +15,11 @@ "allowedCategories": [ "tests" ] }, { - "name": "@jest/create-cache-key-function", + "name": "@jest/core", "allowedCategories": [ "libraries" ] }, { - "name": "@jest/core", + "name": "@jest/create-cache-key-function", "allowedCategories": [ "libraries" ] }, { @@ -242,6 +242,10 @@ "name": "@typescript-eslint/typescript-estree", "allowedCategories": [ "libraries" ] }, + { + "name": "@vscode/test-electron", + "allowedCategories": [ "libraries" ] + }, { "name": "@yarnpkg/lockfile", "allowedCategories": [ "libraries" ] @@ -474,6 +478,10 @@ "name": "minimatch", "allowedCategories": [ "libraries" ] }, + { + "name": "mocha", + "allowedCategories": [ "libraries" ] + }, { "name": "node-fetch", "allowedCategories": [ "libraries" ] diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 684bde5b5b..062d8e3ac6 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -322,6 +322,40 @@ importers: '@types/strict-uri-encode': 2.0.0 '@types/tar': 4.0.3 + ../../apps/vscode-extension: + specifiers: + '@rushstack/eslint-config': workspace:* + '@rushstack/heft': workspace:* + '@rushstack/heft-node-rig': workspace:* + '@types/glob': 7.1.1 + '@types/heft-jest': 1.0.1 + '@types/mocha': ^9.0.0 + '@types/node': 12.20.24 + '@types/vscode': ^1.63.0 + '@typescript-eslint/eslint-plugin': ~5.6.0 + '@typescript-eslint/parser': ~5.6.0 + '@vscode/test-electron': ^1.6.2 + eslint: ~8.3.0 + glob: ~7.0.5 + mocha: ^9.1.3 + typescript: ~4.5.2 + devDependencies: + '@rushstack/eslint-config': link:../../eslint/eslint-config + '@rushstack/heft': link:../heft + '@rushstack/heft-node-rig': link:../../rigs/heft-node-rig + '@types/glob': 7.1.1 + '@types/heft-jest': 1.0.1 + '@types/mocha': 9.0.0 + '@types/node': 12.20.24 + '@types/vscode': 1.63.1 + '@typescript-eslint/eslint-plugin': 5.6.0_7d727cadaff2de2813cd41f6e2d8a801 + '@typescript-eslint/parser': 5.6.0_eslint@8.3.0+typescript@4.5.2 + '@vscode/test-electron': 1.6.2 + eslint: 8.3.0 + glob: 7.0.6 + mocha: 9.1.4 + typescript: 4.5.2 + ../../build-tests-samples/heft-node-basic-tutorial: specifiers: '@rushstack/eslint-config': workspace:* @@ -6491,6 +6525,10 @@ packages: '@types/node': 12.20.24 dev: true + /@types/mocha/9.0.0: + resolution: {integrity: sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==} + dev: true + /@types/node-fetch/1.6.9: resolution: {integrity: sha512-n2r6WLoY7+uuPT7pnEtKJCmPUGyJ+cbyBR8Avnu4+m1nzz7DwBVuyIvvlBzCZ/nrpC7rIgb3D6pNavL7rFEa9g==} dependencies: @@ -6681,6 +6719,10 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true + /@types/vscode/1.63.1: + resolution: {integrity: sha512-Z+ZqjRcnGfHP86dvx/BtSwWyZPKQ/LBdmAVImY82TphyjOw2KgTKcp7Nx92oNwCTsHzlshwexAG/WiY2JuUm3g==} + dev: true + /@types/webpack-dev-middleware/5.0.2: resolution: {integrity: sha512-S3WUtef//Vx6WETyWZkM45WqgRxWSaqbpWtPcKySNRhiQNyhCqM9EueggaMX3L9N2IbG4dJIK5PgYcAWUifUbA==} dependencies: @@ -6857,7 +6899,6 @@ packages: typescript: 4.5.2 transitivePeerDependencies: - supports-color - dev: false /@typescript-eslint/experimental-utils/5.3.1_eslint@7.30.0: resolution: {integrity: sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==} @@ -6893,7 +6934,6 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: false /@typescript-eslint/parser/5.3.1_eslint@7.30.0: resolution: {integrity: sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==} @@ -7046,6 +7086,22 @@ packages: transitivePeerDependencies: - typescript + /@ungap/promise-all-settled/1.1.2: + resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} + dev: true + + /@vscode/test-electron/1.6.2: + resolution: {integrity: sha512-W01ajJEMx6223Y7J5yaajGjVs1QfW3YGkkOJHVKfAMEqNB1ZHN9wCcViehv5ZwVSSJnjhu6lYEYgwBdHtCxqhQ==} + engines: {node: '>=8.9.3'} + dependencies: + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.0 + rimraf: 3.0.2 + unzipper: 0.10.11 + transitivePeerDependencies: + - supports-color + dev: true + /@webassemblyjs/ast/1.11.0: resolution: {integrity: sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==} dependencies: @@ -8223,6 +8279,11 @@ packages: tryer: 1.0.1 dev: false + /big-integer/1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + /big.js/3.2.0: resolution: {integrity: sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==} dev: false @@ -8238,12 +8299,23 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + /binary/0.3.0: + resolution: {integrity: sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=} + dependencies: + buffers: 0.1.1 + chainsaw: 0.1.0 + dev: true + /bindings/1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: file-uri-to-path: 1.0.0 optional: true + /bluebird/3.4.7: + resolution: {integrity: sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=} + dev: true + /bluebird/3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} @@ -8356,6 +8428,10 @@ packages: resolve: 1.1.7 dev: true + /browser-stdout/1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true + /browserify-aes/1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: @@ -8443,6 +8519,11 @@ packages: /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer-indexof-polyfill/1.0.2: + resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} + engines: {node: '>=0.10'} + dev: true + /buffer-indexof/1.1.1: resolution: {integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==} dev: false @@ -8457,6 +8538,11 @@ packages: ieee754: 1.2.1 isarray: 1.0.0 + /buffers/0.1.1: + resolution: {integrity: sha1-skV5w77U1tOWru5tmorn9Ugqt7s=} + engines: {node: '>=0.2.0'} + dev: true + /builtin-modules/1.1.1: resolution: {integrity: sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=} engines: {node: '>=0.10.0'} @@ -8642,6 +8728,12 @@ packages: resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} dev: true + /chainsaw/0.1.0: + resolution: {integrity: sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=} + dependencies: + traverse: 0.3.9 + dev: true + /chalk/1.1.3: resolution: {integrity: sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=} engines: {node: '>=0.10.0'} @@ -9353,6 +9445,19 @@ packages: dependencies: ms: 2.1.3 + /debug/4.3.2_supports-color@8.1.1: + resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + dev: true + /debug/4.3.3: resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} @@ -9398,6 +9503,11 @@ packages: resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} engines: {node: '>=0.10.0'} + /decamelize/4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true + /decimal.js/10.3.1: resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} @@ -9604,7 +9714,6 @@ packages: /diff/5.0.0: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} engines: {node: '>=0.3.1'} - dev: false /diffie-hellman/5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} @@ -9761,6 +9870,12 @@ packages: /duplexer/0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + /duplexer2/0.1.4: + resolution: {integrity: sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=} + dependencies: + readable-stream: 2.3.7 + dev: true + /duplexer3/0.1.4: resolution: {integrity: sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=} dev: true @@ -10783,6 +10898,11 @@ packages: flatted: 3.2.4 rimraf: 3.0.2 + /flat/5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + /flatstr/1.0.12: resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} dev: false @@ -10994,6 +11114,16 @@ packages: os: [darwin] optional: true + /fstream/1.0.12: + resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} + engines: {node: '>=0.6'} + dependencies: + graceful-fs: 4.2.8 + inherits: 2.0.4 + mkdirp: 0.5.5 + rimraf: 2.7.1 + dev: true + /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} @@ -11341,6 +11471,11 @@ packages: /graceful-fs/4.2.8: resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} + /growl/1.10.5: + resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} + engines: {node: '>=4.x'} + dev: true + /growly/1.3.0: resolution: {integrity: sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=} dev: true @@ -12414,6 +12549,11 @@ packages: /is-typedarray/1.0.0: resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} + /is-unicode-supported/0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + /is-weakref/1.0.1: resolution: {integrity: sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==} dependencies: @@ -14151,6 +14291,10 @@ packages: /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + /listenercount/1.0.1: + resolution: {integrity: sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=} + dev: true + /load-json-file/6.2.0: resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} engines: {node: '>=8'} @@ -14256,6 +14400,14 @@ packages: /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + /log-symbols/4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + /loglevel/1.8.0: resolution: {integrity: sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==} engines: {node: '>= 0.6.0'} @@ -14638,6 +14790,37 @@ packages: engines: {node: '>=10'} hasBin: true + /mocha/9.1.4: + resolution: {integrity: sha512-+q2aV5VlJZuLgCWoBvGI5zEwPF9eEI0kr/sAA9Jm4xMND7RfIEyF8JE7C0JIg8WXRG+P1sdIAb5ccoHPlXLzcw==} + engines: {node: '>= 12.0.0'} + hasBin: true + dependencies: + '@ungap/promise-all-settled': 1.1.2 + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.2 + debug: 4.3.2_supports-color@8.1.1 + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.1.7 + growl: 1.10.5 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 3.0.4 + ms: 2.1.3 + nanoid: 3.1.25 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + which: 2.0.2 + workerpool: 6.1.5 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + /move-concurrently/1.0.1: resolution: {integrity: sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=} dependencies: @@ -14694,6 +14877,12 @@ packages: /nan/2.15.0: resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==} + /nanoid/3.1.25: + resolution: {integrity: sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /nanomatch/1.2.13: resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} engines: {node: '>=0.10.0'} @@ -18171,6 +18360,10 @@ packages: dependencies: punycode: 2.1.1 + /traverse/0.3.9: + resolution: {integrity: sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=} + dev: true + /trim-newlines/3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -18540,6 +18733,21 @@ packages: has-value: 0.3.1 isobject: 3.0.1 + /unzipper/0.10.11: + resolution: {integrity: sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==} + dependencies: + big-integer: 1.6.51 + binary: 0.3.0 + bluebird: 3.4.7 + buffer-indexof-polyfill: 1.0.2 + duplexer2: 0.1.4 + fstream: 1.0.12 + graceful-fs: 4.2.8 + listenercount: 1.0.1 + readable-stream: 2.3.7 + setimmediate: 1.0.5 + dev: true + /upath/1.2.0: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} @@ -19339,6 +19547,10 @@ packages: microevent.ts: 0.1.1 dev: true + /workerpool/6.1.5: + resolution: {integrity: sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==} + dev: true + /wrap-ansi/5.1.0: resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} engines: {node: '>=6'} @@ -19487,10 +19699,25 @@ packages: decamelize: 1.2.0 dev: true + /yargs-parser/20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} + /yargs-unparser/2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.2.1 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + /yargs/13.3.2: resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} dependencies: diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json index 58296ca417..440a5694e5 100644 --- a/common/config/rush/repo-state.json +++ b/common/config/rush/repo-state.json @@ -1,5 +1,5 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "f12214a1ca307d5f3529088a4a4f0ff66db0f03d", + "pnpmShrinkwrapHash": "6bfdaca3ee54eed75bafbd92f4682cf8d3dd836c", "preferredVersionsHash": "87aab8e8f0a6545cb9d0ea30194ba68279d285a8" } diff --git a/rush.json b/rush.json index 180c4ff9cd..d8152c255a 100644 --- a/rush.json +++ b/rush.json @@ -494,6 +494,11 @@ "reviewCategory": "libraries", "versionPolicyName": "rush" }, + { + "packageName": "rushstack-vscode-extension", + "projectFolder": "apps/vscode-extension", + "reviewCategory": "libraries" + }, // "build-tests" folder (alphabetical order) {