diff --git a/.vscode/launch.json b/.vscode/launch.json index ba209eeed00..389246a6c2d 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -82,6 +82,34 @@ "${workspaceFolder}/vscode-extensions/rush-vscode-extension/dist/**/*.js" ] // "preLaunchTask": "npm: build:watch - vscode-extensions/rush-vscode-extension" + }, + { + "name": "Launch TLS Certification UI", + "type": "extensionHost", + "request": "launch", + "cwd": "${workspaceFolder}/vscode-extensions/tls-certification-ui", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}/vscode-extensions/tls-certification-ui", + "--extensionDevelopmentPath=${workspaceFolder}/vscode-extensions/tls-certification-workspace" + ], + "outFiles": [ + "${workspaceFolder}/vscode-extensions/tls-certification-ui/dist/**/*.js", + "${workspaceFolder}/vscode-extensions/tls-certification-workspace/dist/**/*.js"` + ] + // "preLaunchTask": "npm: build:watch - vscode-extensions/tls-certification-ui" + }, + { + "name": "Launch TLS Certification Workspace", + "type": "extensionHost", + "request": "launch", + "cwd": "${workspaceFolder}/vscode-extensions/tls-certification-workspace", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}/vscode-extensions/tls-certification-workspace" + ], + "outFiles": [ + "${workspaceFolder}/vscode-extensions/tls-certification-workspace/dist/**/*.js" + ] + // "preLaunchTask": "npm: build:watch - vscode-extensions/tls-certification-workspace" } ] } diff --git a/README.md b/README.md index e9172a2c4ce..cd984c2f278 100644 --- a/README.md +++ b/README.md @@ -192,6 +192,8 @@ These GitHub repositories provide supplementary resources for Rush Stack: | [/rush-plugins/rush-litewatch-plugin](./rush-plugins/rush-litewatch-plugin/) | An experimental alternative approach for multi-project watch mode | | [/vscode-extensions/rush-vscode-command-webview](./vscode-extensions/rush-vscode-command-webview/) | Part of the Rush Stack VSCode extension, provides a UI for invoking Rush commands | | [/vscode-extensions/rush-vscode-extension](./vscode-extensions/rush-vscode-extension/) | Enhanced experience for monorepos that use the Rush Stack toolchain | +| [/vscode-extensions/tls-certification-ui](./vscode-extensions/tls-certification-ui/) | Creates TLS Certificates as a UI Extension | +| [/vscode-extensions/tls-certification-workspace](./vscode-extensions/tls-certification-workspace/) | Creates TLS Certificates as a Workspace Extension | | [/webpack/webpack-deep-imports-plugin](./webpack/webpack-deep-imports-plugin/) | This plugin creates a bundle and commonJS files in a 'lib' folder mirroring modules in another 'lib' folder. | diff --git a/build-tests/install-test-workspace/workspace/common/pnpm-lock.yaml b/build-tests/install-test-workspace/workspace/common/pnpm-lock.yaml index b2f6a8706d4..b6812ff7fc4 100644 --- a/build-tests/install-test-workspace/workspace/common/pnpm-lock.yaml +++ b/build-tests/install-test-workspace/workspace/common/pnpm-lock.yaml @@ -14,8 +14,8 @@ importers: specifier: file:microsoft-rush-lib-5.115.0.tgz version: file:../temp/tarballs/microsoft-rush-lib-5.115.0.tgz(@types/node@18.17.15) '@rushstack/terminal': - specifier: file:rushstack-terminal-0.9.0.tgz - version: file:../temp/tarballs/rushstack-terminal-0.9.0.tgz(@types/node@18.17.15) + specifier: file:rushstack-terminal-0.10.0.tgz + version: file:../temp/tarballs/rushstack-terminal-0.10.0.tgz(@types/node@18.17.15) devDependencies: '@types/node': specifier: 18.17.15 @@ -52,14 +52,14 @@ importers: specifier: file:rushstack-eslint-config-3.6.4.tgz version: file:../temp/tarballs/rushstack-eslint-config-3.6.4.tgz(eslint@8.7.0)(typescript@5.3.3) '@rushstack/heft': - specifier: file:rushstack-heft-0.65.4.tgz - version: file:../temp/tarballs/rushstack-heft-0.65.4.tgz + specifier: file:rushstack-heft-0.65.5.tgz + version: file:../temp/tarballs/rushstack-heft-0.65.5.tgz '@rushstack/heft-lint-plugin': - specifier: file:rushstack-heft-lint-plugin-0.3.13.tgz - version: file:../temp/tarballs/rushstack-heft-lint-plugin-0.3.13.tgz(@rushstack/heft@0.65.4) + specifier: file:rushstack-heft-lint-plugin-0.3.14.tgz + version: file:../temp/tarballs/rushstack-heft-lint-plugin-0.3.14.tgz(@rushstack/heft@0.65.5) '@rushstack/heft-typescript-plugin': - specifier: file:rushstack-heft-typescript-plugin-0.3.13.tgz - version: file:../temp/tarballs/rushstack-heft-typescript-plugin-0.3.13.tgz(@rushstack/heft@0.65.4) + specifier: file:rushstack-heft-typescript-plugin-0.3.14.tgz + version: file:../temp/tarballs/rushstack-heft-typescript-plugin-0.3.14.tgz(@rushstack/heft@0.65.5) eslint: specifier: ~8.7.0 version: 8.7.0 @@ -76,14 +76,14 @@ importers: specifier: file:rushstack-eslint-config-3.6.4.tgz version: file:../temp/tarballs/rushstack-eslint-config-3.6.4.tgz(eslint@8.7.0)(typescript@4.7.4) '@rushstack/heft': - specifier: file:rushstack-heft-0.65.4.tgz - version: file:../temp/tarballs/rushstack-heft-0.65.4.tgz + specifier: file:rushstack-heft-0.65.5.tgz + version: file:../temp/tarballs/rushstack-heft-0.65.5.tgz '@rushstack/heft-lint-plugin': - specifier: file:rushstack-heft-lint-plugin-0.3.13.tgz - version: file:../temp/tarballs/rushstack-heft-lint-plugin-0.3.13.tgz(@rushstack/heft@0.65.4) + specifier: file:rushstack-heft-lint-plugin-0.3.14.tgz + version: file:../temp/tarballs/rushstack-heft-lint-plugin-0.3.14.tgz(@rushstack/heft@0.65.5) '@rushstack/heft-typescript-plugin': - specifier: file:rushstack-heft-typescript-plugin-0.3.13.tgz - version: file:../temp/tarballs/rushstack-heft-typescript-plugin-0.3.13.tgz(@rushstack/heft@0.65.4) + specifier: file:rushstack-heft-typescript-plugin-0.3.14.tgz + version: file:../temp/tarballs/rushstack-heft-typescript-plugin-0.3.14.tgz(@rushstack/heft@0.65.5) eslint: specifier: ~8.7.0 version: 8.7.0 @@ -1179,10 +1179,6 @@ packages: resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} engines: {node: '>=0.1.90'} - /colors@1.2.5: - resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} - engines: {node: '>=0.1.90'} - /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -4248,14 +4244,14 @@ packages: dependencies: '@pnpm/dependency-path': 2.1.2 '@pnpm/link-bins': 5.3.25 - '@rushstack/heft-config-file': file:../temp/tarballs/rushstack-heft-config-file-0.14.13.tgz(@types/node@18.17.15) + '@rushstack/heft-config-file': file:../temp/tarballs/rushstack-heft-config-file-0.14.14.tgz(@types/node@18.17.15) '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) - '@rushstack/package-deps-hash': file:../temp/tarballs/rushstack-package-deps-hash-4.1.31.tgz(@types/node@18.17.15) - '@rushstack/package-extractor': file:../temp/tarballs/rushstack-package-extractor-0.6.33.tgz(@types/node@18.17.15) + '@rushstack/package-deps-hash': file:../temp/tarballs/rushstack-package-deps-hash-4.1.32.tgz(@types/node@18.17.15) + '@rushstack/package-extractor': file:../temp/tarballs/rushstack-package-extractor-0.6.34.tgz(@types/node@18.17.15) '@rushstack/rig-package': file:../temp/tarballs/rushstack-rig-package-0.5.2.tgz - '@rushstack/stream-collator': file:../temp/tarballs/rushstack-stream-collator-4.1.31.tgz(@types/node@18.17.15) - '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.9.0.tgz(@types/node@18.17.15) - '@rushstack/ts-command-line': file:../temp/tarballs/rushstack-ts-command-line-4.17.3.tgz(@types/node@18.17.15) + '@rushstack/stream-collator': file:../temp/tarballs/rushstack-stream-collator-4.1.32.tgz(@types/node@18.17.15) + '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.10.0.tgz(@types/node@18.17.15) + '@rushstack/ts-command-line': file:../temp/tarballs/rushstack-ts-command-line-4.17.4.tgz(@types/node@18.17.15) '@types/node-fetch': 2.6.2 '@yarnpkg/lockfile': 1.0.2 builtin-modules: 3.1.0 @@ -4441,19 +4437,19 @@ packages: - typescript dev: true - file:../temp/tarballs/rushstack-heft-0.65.4.tgz: - resolution: {tarball: file:../temp/tarballs/rushstack-heft-0.65.4.tgz} + file:../temp/tarballs/rushstack-heft-0.65.5.tgz: + resolution: {tarball: file:../temp/tarballs/rushstack-heft-0.65.5.tgz} name: '@rushstack/heft' - version: 0.65.4 + version: 0.65.5 engines: {node: '>=10.13.0'} hasBin: true dependencies: - '@rushstack/heft-config-file': file:../temp/tarballs/rushstack-heft-config-file-0.14.13.tgz(@types/node@18.17.15) + '@rushstack/heft-config-file': file:../temp/tarballs/rushstack-heft-config-file-0.14.14.tgz(@types/node@18.17.15) '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) - '@rushstack/operation-graph': file:../temp/tarballs/rushstack-operation-graph-0.2.13.tgz + '@rushstack/operation-graph': file:../temp/tarballs/rushstack-operation-graph-0.2.14.tgz '@rushstack/rig-package': file:../temp/tarballs/rushstack-rig-package-0.5.2.tgz - '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.9.0.tgz(@types/node@18.17.15) - '@rushstack/ts-command-line': file:../temp/tarballs/rushstack-ts-command-line-4.17.3.tgz(@types/node@18.17.15) + '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.10.0.tgz(@types/node@18.17.15) + '@rushstack/ts-command-line': file:../temp/tarballs/rushstack-ts-command-line-4.17.4.tgz(@types/node@18.17.15) '@types/tapable': 1.0.6 fast-glob: 3.3.1 git-repo-info: 2.1.1 @@ -4465,45 +4461,45 @@ packages: - '@types/node' dev: true - file:../temp/tarballs/rushstack-heft-config-file-0.14.13.tgz(@types/node@18.17.15): - resolution: {tarball: file:../temp/tarballs/rushstack-heft-config-file-0.14.13.tgz} - id: file:../temp/tarballs/rushstack-heft-config-file-0.14.13.tgz + file:../temp/tarballs/rushstack-heft-config-file-0.14.14.tgz(@types/node@18.17.15): + resolution: {tarball: file:../temp/tarballs/rushstack-heft-config-file-0.14.14.tgz} + id: file:../temp/tarballs/rushstack-heft-config-file-0.14.14.tgz name: '@rushstack/heft-config-file' - version: 0.14.13 + version: 0.14.14 engines: {node: '>=10.13.0'} dependencies: '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) '@rushstack/rig-package': file:../temp/tarballs/rushstack-rig-package-0.5.2.tgz - '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.9.0.tgz(@types/node@18.17.15) + '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.10.0.tgz(@types/node@18.17.15) jsonpath-plus: 4.0.0 transitivePeerDependencies: - '@types/node' - file:../temp/tarballs/rushstack-heft-lint-plugin-0.3.13.tgz(@rushstack/heft@0.65.4): - resolution: {tarball: file:../temp/tarballs/rushstack-heft-lint-plugin-0.3.13.tgz} - id: file:../temp/tarballs/rushstack-heft-lint-plugin-0.3.13.tgz + file:../temp/tarballs/rushstack-heft-lint-plugin-0.3.14.tgz(@rushstack/heft@0.65.5): + resolution: {tarball: file:../temp/tarballs/rushstack-heft-lint-plugin-0.3.14.tgz} + id: file:../temp/tarballs/rushstack-heft-lint-plugin-0.3.14.tgz name: '@rushstack/heft-lint-plugin' - version: 0.3.13 + version: 0.3.14 peerDependencies: '@rushstack/heft': '*' dependencies: - '@rushstack/heft': file:../temp/tarballs/rushstack-heft-0.65.4.tgz + '@rushstack/heft': file:../temp/tarballs/rushstack-heft-0.65.5.tgz '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) semver: 7.5.4 transitivePeerDependencies: - '@types/node' dev: true - file:../temp/tarballs/rushstack-heft-typescript-plugin-0.3.13.tgz(@rushstack/heft@0.65.4): - resolution: {tarball: file:../temp/tarballs/rushstack-heft-typescript-plugin-0.3.13.tgz} - id: file:../temp/tarballs/rushstack-heft-typescript-plugin-0.3.13.tgz + file:../temp/tarballs/rushstack-heft-typescript-plugin-0.3.14.tgz(@rushstack/heft@0.65.5): + resolution: {tarball: file:../temp/tarballs/rushstack-heft-typescript-plugin-0.3.14.tgz} + id: file:../temp/tarballs/rushstack-heft-typescript-plugin-0.3.14.tgz name: '@rushstack/heft-typescript-plugin' - version: 0.3.13 + version: 0.3.14 peerDependencies: '@rushstack/heft': '*' dependencies: - '@rushstack/heft': file:../temp/tarballs/rushstack-heft-0.65.4.tgz - '@rushstack/heft-config-file': file:../temp/tarballs/rushstack-heft-config-file-0.14.13.tgz(@types/node@18.17.15) + '@rushstack/heft': file:../temp/tarballs/rushstack-heft-0.65.5.tgz + '@rushstack/heft-config-file': file:../temp/tarballs/rushstack-heft-config-file-0.14.14.tgz(@types/node@18.17.15) '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) '@types/tapable': 1.0.6 semver: 7.5.4 @@ -4531,10 +4527,10 @@ packages: semver: 7.5.4 z-schema: 5.0.3 - file:../temp/tarballs/rushstack-operation-graph-0.2.13.tgz: - resolution: {tarball: file:../temp/tarballs/rushstack-operation-graph-0.2.13.tgz} + file:../temp/tarballs/rushstack-operation-graph-0.2.14.tgz: + resolution: {tarball: file:../temp/tarballs/rushstack-operation-graph-0.2.14.tgz} name: '@rushstack/operation-graph' - version: 0.2.13 + version: 0.2.14 peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -4542,28 +4538,28 @@ packages: optional: true dependencies: '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) - '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.9.0.tgz(@types/node@18.17.15) + '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.10.0.tgz(@types/node@18.17.15) dev: true - file:../temp/tarballs/rushstack-package-deps-hash-4.1.31.tgz(@types/node@18.17.15): - resolution: {tarball: file:../temp/tarballs/rushstack-package-deps-hash-4.1.31.tgz} - id: file:../temp/tarballs/rushstack-package-deps-hash-4.1.31.tgz + file:../temp/tarballs/rushstack-package-deps-hash-4.1.32.tgz(@types/node@18.17.15): + resolution: {tarball: file:../temp/tarballs/rushstack-package-deps-hash-4.1.32.tgz} + id: file:../temp/tarballs/rushstack-package-deps-hash-4.1.32.tgz name: '@rushstack/package-deps-hash' - version: 4.1.31 + version: 4.1.32 dependencies: '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) transitivePeerDependencies: - '@types/node' - file:../temp/tarballs/rushstack-package-extractor-0.6.33.tgz(@types/node@18.17.15): - resolution: {tarball: file:../temp/tarballs/rushstack-package-extractor-0.6.33.tgz} - id: file:../temp/tarballs/rushstack-package-extractor-0.6.33.tgz + file:../temp/tarballs/rushstack-package-extractor-0.6.34.tgz(@types/node@18.17.15): + resolution: {tarball: file:../temp/tarballs/rushstack-package-extractor-0.6.34.tgz} + id: file:../temp/tarballs/rushstack-package-extractor-0.6.34.tgz name: '@rushstack/package-extractor' - version: 0.6.33 + version: 0.6.34 dependencies: '@pnpm/link-bins': 5.3.25 '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) - '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.9.0.tgz(@types/node@18.17.15) + '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.10.0.tgz(@types/node@18.17.15) ignore: 5.1.9 jszip: 3.8.0 minimatch: 3.0.8 @@ -4587,29 +4583,29 @@ packages: version: 5.115.0 dependencies: '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) - '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.9.0.tgz(@types/node@18.17.15) + '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.10.0.tgz(@types/node@18.17.15) '@types/node-fetch': 2.6.2 tapable: 2.2.1 transitivePeerDependencies: - '@types/node' dev: false - file:../temp/tarballs/rushstack-stream-collator-4.1.31.tgz(@types/node@18.17.15): - resolution: {tarball: file:../temp/tarballs/rushstack-stream-collator-4.1.31.tgz} - id: file:../temp/tarballs/rushstack-stream-collator-4.1.31.tgz + file:../temp/tarballs/rushstack-stream-collator-4.1.32.tgz(@types/node@18.17.15): + resolution: {tarball: file:../temp/tarballs/rushstack-stream-collator-4.1.32.tgz} + id: file:../temp/tarballs/rushstack-stream-collator-4.1.32.tgz name: '@rushstack/stream-collator' - version: 4.1.31 + version: 4.1.32 dependencies: '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) - '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.9.0.tgz(@types/node@18.17.15) + '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.10.0.tgz(@types/node@18.17.15) transitivePeerDependencies: - '@types/node' - file:../temp/tarballs/rushstack-terminal-0.9.0.tgz(@types/node@18.17.15): - resolution: {tarball: file:../temp/tarballs/rushstack-terminal-0.9.0.tgz} - id: file:../temp/tarballs/rushstack-terminal-0.9.0.tgz + file:../temp/tarballs/rushstack-terminal-0.10.0.tgz(@types/node@18.17.15): + resolution: {tarball: file:../temp/tarballs/rushstack-terminal-0.10.0.tgz} + id: file:../temp/tarballs/rushstack-terminal-0.10.0.tgz name: '@rushstack/terminal' - version: 0.9.0 + version: 0.10.0 peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -4618,7 +4614,6 @@ packages: dependencies: '@rushstack/node-core-library': file:../temp/tarballs/rushstack-node-core-library-4.0.2.tgz(@types/node@18.17.15) '@types/node': 18.17.15 - colors: 1.2.5 supports-color: 8.1.1 file:../temp/tarballs/rushstack-tree-pattern-0.3.3.tgz: @@ -4627,13 +4622,13 @@ packages: version: 0.3.3 dev: true - file:../temp/tarballs/rushstack-ts-command-line-4.17.3.tgz(@types/node@18.17.15): - resolution: {tarball: file:../temp/tarballs/rushstack-ts-command-line-4.17.3.tgz} - id: file:../temp/tarballs/rushstack-ts-command-line-4.17.3.tgz + file:../temp/tarballs/rushstack-ts-command-line-4.17.4.tgz(@types/node@18.17.15): + resolution: {tarball: file:../temp/tarballs/rushstack-ts-command-line-4.17.4.tgz} + id: file:../temp/tarballs/rushstack-ts-command-line-4.17.4.tgz name: '@rushstack/ts-command-line' - version: 4.17.3 + version: 4.17.4 dependencies: - '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.9.0.tgz(@types/node@18.17.15) + '@rushstack/terminal': file:../temp/tarballs/rushstack-terminal-0.10.0.tgz(@types/node@18.17.15) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.1 diff --git a/common/changes/@microsoft/rush/ating-tls-certification-sync_2024-03-12-18-53.json b/common/changes/@microsoft/rush/ating-tls-certification-sync_2024-03-12-18-53.json new file mode 100644 index 00000000000..3a3e4f42ec5 --- /dev/null +++ b/common/changes/@microsoft/rush/ating-tls-certification-sync_2024-03-12-18-53.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Added new extension projects tls-certification-ui and tls-certification-workspace", + "type": "none" + } + ], + "packageName": "@microsoft/rush" +} \ No newline at end of file diff --git a/common/config/azure-pipelines/tls-certification-ui-publish.yaml b/common/config/azure-pipelines/tls-certification-ui-publish.yaml new file mode 100644 index 00000000000..428737b8cb3 --- /dev/null +++ b/common/config/azure-pipelines/tls-certification-ui-publish.yaml @@ -0,0 +1,70 @@ +variables: + - name: FORCE_COLOR + value: 1 + +resources: + repositories: + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines + parameters: + pool: + name: Azure-Pipelines-1ESPT-ExDShared + os: windows + stages: + - stage: + jobs: + - job: + pool: + name: publish-tls-certification-ui + os: linux + steps: + - checkout: self + persistCredentials: true + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - template: /common/config/azure-pipelines/templates/build.yaml@self + parameters: + BuildParameters: > + --to rushstack + PerformValidation: false + + - script: node $(Build.SourcesDirectory)/common/scripts/install-run-rushx.js package + workingDirectory: $(Build.SourcesDirectory)/vscode-extensions/tls-certification-ui + displayName: 'Package tls certification ui extension' + + - script: node $(Build.SourcesDirectory)/common/scripts/install-run-rushx.js deploy + workingDirectory: $(Build.SourcesDirectory)/vscode-extensions/tls-certification-ui + displayName: 'Publish tls certification ui extension' + env: + VSCE_PAT: $(vscePat) + - job: + pool: + name: publish-tls-certification-workspace + os: linux + steps: + - checkout: self + persistCredentials: true + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - template: /common/config/azure-pipelines/templates/build.yaml@self + parameters: + BuildParameters: > + --to rushstack + PerformValidation: false + + - script: node $(Build.SourcesDirectory)/common/scripts/install-run-rushx.js package + workingDirectory: $(Build.SourcesDirectory)/vscode-extensions/tls-certification-workspace + displayName: 'Package tls certification workspace extension' + + - script: node $(Build.SourcesDirectory)/common/scripts/install-run-rushx.js deploy + workingDirectory: $(Build.SourcesDirectory)/vscode-extensions/tls-certification-workspace + displayName: 'Publish tls certification workspace extension' + env: + VSCE_PAT: $(vscePat) diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json index e3f7ddb1205..4dc40e902e6 100644 --- a/common/config/rush/browser-approved-packages.json +++ b/common/config/rush/browser-approved-packages.json @@ -48,7 +48,15 @@ }, { "name": "@rushstack/rush-vscode-command-webview", - "allowedCategories": [ "vscode-extensions" ] + "allowedCategories": [ "tests", "vscode-extensions" ] + }, + { + "name": "@rushstack/tls-certification-ui", + "allowedCategories": [ "tests" ] + }, + { + "name": "@rushstack/tls-certificcation-ui", + "allowedCategories": [ "tests" ] }, { "name": "axios", @@ -94,6 +102,10 @@ "name": "scheduler", "allowedCategories": [ "vscode-extensions" ] }, + { + "name": "tls-certification-workspace", + "allowedCategories": [ "tests" ] + }, { "name": "tslib", "allowedCategories": [ "libraries", "tests", "vscode-extensions" ] diff --git a/common/config/rush/nonbrowser-approved-packages.json b/common/config/rush/nonbrowser-approved-packages.json index c96b93283f7..54b40b7ec85 100644 --- a/common/config/rush/nonbrowser-approved-packages.json +++ b/common/config/rush/nonbrowser-approved-packages.json @@ -96,7 +96,7 @@ }, { "name": "@rushstack/debug-certificate-manager", - "allowedCategories": [ "libraries" ] + "allowedCategories": [ "libraries", "tests", "vscode-extensions" ] }, { "name": "@rushstack/eslint-config", @@ -204,7 +204,7 @@ }, { "name": "@rushstack/package-extractor", - "allowedCategories": [ "libraries", "vscode-extensions" ] + "allowedCategories": [ "libraries", "tests", "vscode-extensions" ] }, { "name": "@rushstack/rig-package", @@ -264,7 +264,7 @@ }, { "name": "@rushstack/webpack-preserve-dynamic-require-plugin", - "allowedCategories": [ "libraries", "vscode-extensions" ] + "allowedCategories": [ "libraries", "tests", "vscode-extensions" ] }, { "name": "@rushstack/webpack4-localization-plugin", @@ -356,7 +356,7 @@ }, { "name": "@vscode/test-electron", - "allowedCategories": [ "vscode-extensions" ] + "allowedCategories": [ "tests", "vscode-extensions" ] }, { "name": "@yarnpkg/lockfile", @@ -516,7 +516,7 @@ }, { "name": "glob", - "allowedCategories": [ "libraries", "vscode-extensions" ] + "allowedCategories": [ "libraries", "tests", "vscode-extensions" ] }, { "name": "glob-escape", @@ -672,7 +672,7 @@ }, { "name": "mocha", - "allowedCategories": [ "vscode-extensions" ] + "allowedCategories": [ "tests", "vscode-extensions" ] }, { "name": "node-fetch", @@ -852,7 +852,7 @@ }, { "name": "vsce", - "allowedCategories": [ "vscode-extensions" ] + "allowedCategories": [ "tests", "vscode-extensions" ] }, { "name": "watchpack", diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index fdc2aa7f187..55d10d4e4b2 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1774,7 +1774,7 @@ importers: version: 29.5.12 '@types/node': specifier: ts4.9 - version: 20.11.20 + version: 20.11.26 eslint: specifier: ~8.7.0 version: 8.7.0(supports-color@8.1.1) @@ -4120,6 +4120,119 @@ importers: specifier: ~2.14.0 version: 2.14.0 + ../../vscode-extensions/tls-certification-ui: + dependencies: + '@rushstack/debug-certificate-manager': + specifier: workspace:* + version: link:../../libraries/debug-certificate-manager + '@rushstack/node-core-library': + specifier: workspace:* + version: link:../../libraries/node-core-library + '@rushstack/terminal': + specifier: workspace:* + version: link:../../libraries/terminal + tls-certification-workspace: + specifier: workspace:* + version: link:../tls-certification-workspace + devDependencies: + '@microsoft/rush-lib': + specifier: workspace:* + version: link:../../libraries/rush-lib + '@rushstack/heft': + specifier: workspace:* + version: link:../../apps/heft + '@rushstack/heft-webpack5-plugin': + specifier: workspace:* + version: link:../../heft-plugins/heft-webpack5-plugin + '@rushstack/package-extractor': + specifier: workspace:* + version: link:../../libraries/package-extractor + '@rushstack/webpack-preserve-dynamic-require-plugin': + specifier: workspace:* + version: link:../../webpack/preserve-dynamic-require-plugin + '@types/glob': + specifier: 7.1.1 + version: 7.1.1 + '@types/mocha': + specifier: ^9.0.0 + version: 9.1.1 + '@types/vscode': + specifier: ^1.63.0 + version: 1.86.0 + '@types/webpack-env': + specifier: 1.18.0 + version: 1.18.0 + '@vscode/test-electron': + specifier: ^1.6.2 + version: 1.6.2 + glob: + specifier: ~7.0.5 + version: 7.0.6 + local-node-rig: + specifier: workspace:* + version: link:../../rigs/local-node-rig + mocha: + specifier: ^9.1.3 + version: 9.2.2 + vsce: + specifier: ~2.14.0 + version: 2.14.0 + + ../../vscode-extensions/tls-certification-workspace: + dependencies: + '@rushstack/debug-certificate-manager': + specifier: workspace:* + version: link:../../libraries/debug-certificate-manager + '@rushstack/node-core-library': + specifier: workspace:* + version: link:../../libraries/node-core-library + '@rushstack/terminal': + specifier: workspace:* + version: link:../../libraries/terminal + devDependencies: + '@microsoft/rush-lib': + specifier: workspace:* + version: link:../../libraries/rush-lib + '@rushstack/heft': + specifier: workspace:* + version: link:../../apps/heft + '@rushstack/heft-webpack5-plugin': + specifier: workspace:* + version: link:../../heft-plugins/heft-webpack5-plugin + '@rushstack/package-extractor': + specifier: workspace:* + version: link:../../libraries/package-extractor + '@rushstack/webpack-preserve-dynamic-require-plugin': + specifier: workspace:* + version: link:../../webpack/preserve-dynamic-require-plugin + '@types/glob': + specifier: 7.1.1 + version: 7.1.1 + '@types/mocha': + specifier: ^9.0.0 + version: 9.1.1 + '@types/vscode': + specifier: ^1.63.0 + version: 1.86.0 + '@types/webpack-env': + specifier: 1.18.0 + version: 1.18.0 + '@vscode/test-electron': + specifier: ^1.6.2 + version: 1.6.2 + glob: + specifier: ~7.0.5 + version: 7.0.6 + local-node-rig: + specifier: workspace:* + version: link:../../rigs/local-node-rig + mocha: + specifier: ^9.1.3 + version: 9.2.2 + vsce: + specifier: ~2.14.0 + version: 2.14.0 + ../../webpack/hashed-folder-copy-plugin: dependencies: '@rushstack/node-core-library': @@ -8588,7 +8701,7 @@ packages: dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2(@types/node@18.17.15) jest-haste-map: 29.7.0 jest-resolve: 29.7.0 @@ -11774,8 +11887,8 @@ packages: /@types/node@18.17.15: resolution: {integrity: sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==} - /@types/node@20.11.20: - resolution: {integrity: sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==} + /@types/node@20.11.26: + resolution: {integrity: sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==} dependencies: undici-types: 5.26.5 dev: true @@ -13900,7 +14013,7 @@ packages: resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} dependencies: base64-js: 1.5.1 - ieee754: 1.1.13 + ieee754: 1.2.1 isarray: 1.0.0 /buffer@5.7.1: @@ -18381,6 +18494,7 @@ packages: /ieee754@1.1.13: resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} + dev: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -25891,7 +26005,7 @@ packages: engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.22 - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 /validate-npm-package-license@3.0.4: @@ -26535,7 +26649,7 @@ packages: /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: - string-width: 1.0.2 + string-width: 4.2.3 dev: true /widest-line@3.1.0: @@ -26711,7 +26825,7 @@ packages: resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} engines: {node: '>=4.0.0'} dependencies: - sax: 1.2.1 + sax: 1.3.0 xmlbuilder: 11.0.1 dev: true @@ -26778,6 +26892,7 @@ packages: /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==} @@ -26839,7 +26954,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 20.2.4 + yargs-parser: 20.2.9 /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json index 73e287bc5fd..95f5e026e12 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": "eea8b6e9184ef13a202936a9b855668654757e62", + "pnpmShrinkwrapHash": "ccb0e132cffc3151312a4b5f11a0fb10b11f45fa", "preferredVersionsHash": "40d4640a94cff77f7808a2f1960cc76231eb6f86" } diff --git a/rush.json b/rush.json index 99df570f7ac..8f51f367aae 100644 --- a/rush.json +++ b/rush.json @@ -919,6 +919,18 @@ "reviewCategory": "tests", "shouldPublish": false }, + { + "packageName": "tls-certification-ui", + "projectFolder": "vscode-extensions/tls-certification-ui", + "reviewCategory": "tests", + "shouldPublish": false + }, + { + "packageName": "tls-certification-workspace", + "projectFolder": "vscode-extensions/tls-certification-workspace", + "reviewCategory": "tests", + "shouldPublish": false + }, { "packageName": "ts-command-line-test", "projectFolder": "build-tests/ts-command-line-test", diff --git a/vscode-extensions/tls-certification-ui/.gitignore b/vscode-extensions/tls-certification-ui/.gitignore new file mode 100644 index 00000000000..a9abfdf2fa7 --- /dev/null +++ b/vscode-extensions/tls-certification-ui/.gitignore @@ -0,0 +1,4 @@ +webview/ +.vscode-test/ +*.vsix +.vscodeignore \ No newline at end of file diff --git a/vscode-extensions/tls-certification-ui/.npmignore b/vscode-extensions/tls-certification-ui/.npmignore new file mode 100644 index 00000000000..4724baf483e --- /dev/null +++ b/vscode-extensions/tls-certification-ui/.npmignore @@ -0,0 +1,20 @@ +# Ignore all files by default, to avoid accidentally publishing unintended files. +* + +# Use negative patterns to bring back the specific things we want to publish. +!/bin/** +!/lib/** +!/lib-*/** +!/dist/** +!ThirdPartyNotice.txt +!resources/** +!webview/** + +# Ignore certain patterns that should not get published. +/dist/*.stats.* +/lib/**/test/ +/lib-*/**/test/ +lib/scripts/ +lib-*/scripts/ +*.test.js +*.map diff --git a/vscode-extensions/tls-certification-ui/LICENSE b/vscode-extensions/tls-certification-ui/LICENSE new file mode 100644 index 00000000000..1af4866b855 --- /dev/null +++ b/vscode-extensions/tls-certification-ui/LICENSE @@ -0,0 +1,24 @@ +tls-certification-ui vscode extension + +Copyright (c) Microsoft Corporation. All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vscode-extensions/tls-certification-ui/README.md b/vscode-extensions/tls-certification-ui/README.md new file mode 100644 index 00000000000..a47c3976d4f --- /dev/null +++ b/vscode-extensions/tls-certification-ui/README.md @@ -0,0 +1,26 @@ +# Rush Stack monorepo tools + + + +This VS Code extension provides various enhancements when working with a TypeScript monorepo +that uses the [Rush Stack](https://rushstack.io/) family of tools. + + +> 🚨 *EARLY PREVIEW RELEASE* 🚨 +> +> Not all features are implemented yet. If you have questions or ideas +> to improve this extension, please [let us know](https://rushstack.io/pages/help/support/). +> Thanks! + + +## Installation + +Install through VS Code extensions. Search for `Rush Stack monorepo tools` + +[Visual Studio Code Market Place: Rush Stack monorepo tools](https://marketplace.visualstudio.com/items?itemName=RushStack.rushstack) + +Can also be installed in VS Code: Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter. + +``` +ext install rushstack.tls-certification-ui +``` diff --git a/vscode-extensions/tls-certification-ui/config/heft.json b/vscode-extensions/tls-certification-ui/config/heft.json new file mode 100644 index 00000000000..cbe6219e953 --- /dev/null +++ b/vscode-extensions/tls-certification-ui/config/heft.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/heft/v0/heft.schema.json", + + "extends": "local-node-rig/profiles/default/config/heft.json", + + "aliasesByName": { + "start": { + "actionName": "build-watch", + "defaultParameters": ["--serve"] + } + }, + + "phasesByName": { + "build": { + "cleanFiles": [{ "includeGlobs": ["webview"] }], + "tasksByName": { + "webpack": { + "taskDependencies": ["typescript"], + "taskPlugin": { + "pluginPackage": "@rushstack/heft-webpack5-plugin" + } + }, + "copy-webview": { + "taskPlugin": { + "pluginName": "copy-files-plugin", + "pluginPackage": "@rushstack/heft", + "options": { + "copyOperations": [ + { + "sourcePath": "node_modules/@rushstack/rush-vscode-command-webview/dist", + "destinationFolders": ["webview/rush-command-webview"], + "includeGlobs": ["*.{html,js,txt}"] + } + ] + } + } + } + } + } + } +} diff --git a/vscode-extensions/tls-certification-ui/config/rig.json b/vscode-extensions/tls-certification-ui/config/rig.json new file mode 100644 index 00000000000..9d412b88354 --- /dev/null +++ b/vscode-extensions/tls-certification-ui/config/rig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json", + + "rigPackageName": "local-node-rig" +} diff --git a/vscode-extensions/tls-certification-ui/package.json b/vscode-extensions/tls-certification-ui/package.json new file mode 100644 index 00000000000..bb9d5eeeea2 --- /dev/null +++ b/vscode-extensions/tls-certification-ui/package.json @@ -0,0 +1,144 @@ +{ + "name": "tls-certification-ui", + "version": "0.0.1", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/rushstack.git", + "directory": "vscode-extensions/tls-certification-ui" + }, + "license": "MIT", + "publisher": "rushstack", + "preview": true, + "displayName": "TLS Certification UI", + "description": "Creates TLS Certificates as a UI Extension", + "homepage": "https://rushstack.io", + "api": "none", + "categories": [ + "Formatters", + "Other", + "Extension Packs", + "Visualization" + ], + "keywords": [ + "api-extractor", + "build", + "heft", + "js", + "lockfile", + "monorepo", + "orchestrator", + "rig", + "rush", + "ts", + "tsdoc", + "typescript", + "web" + ], + "galleryBanner": { + "color": "#f0f0f0", + "theme": "light" + }, + "icon": "resources/rushstack-icon.png", + "badges": [ + { + "url": "https://img.shields.io/badge/Rush-db714a", + "href": "https://rushjs.io/", + "description": "Rush build orchestrator" + }, + { + "url": "https://img.shields.io/badge/Heft-db714a", + "href": "https://heft.rushstack.io/", + "description": "Heft toolchain" + }, + { + "url": "https://img.shields.io/badge/Lockfile%20Explorer-db714a", + "href": "https://lfx.rushstack.io/", + "description": "Lockfile Explorer dependency visualizer" + }, + { + "url": "https://img.shields.io/badge/API%20Extractor-db714a", + "href": "https://api-extractor.com/", + "description": "API Extractor review and documentation engine" + }, + { + "url": "https://img.shields.io/badge/TSDoc-db714a", + "href": "https://tsdoc.org", + "description": "TSDoc standard for API doc comments" + }, + { + "url": "https://img.shields.io/badge/Get%20Help-0078d4?label=%F0%9F%97%A8%EF%B8%8F", + "href": "https://rushstack.io/pages/help/support/", + "description": "Rush Stack community support" + } + ], + "main": "./dist/extension.js", + "scripts": { + "build": "heft build --clean", + "build:watch": "heft build-watch", + "vscode:prepublish": "heft build --clean --production", + "deploy": "vsce publish --no-dependencies", + "package": "vsce package --no-dependencies", + "start": "heft start", + "pretest": "npm run build", + "test": "node ./lib/test/runTest.js", + "_phase:build": "heft build --clean", + "_phase:test": "" + }, + "contributes": { + "commands": [ + { + "command": "rushstack.ensureDebugCertificate", + "category": "RushStack", + "title": "Ensure Debug Certificate" + } + ], + "configuration": { + "title": "TLS Certificate UI monorepo tools", + "properties": { + "rushstack.logLevelTLS": { + "type": "string", + "default": "info", + "enum": [ + "info", + "debug" + ], + "description": "The log level to use for the VS Code extension" + } + } + } + }, + "activationEvents": [ + "onView:rushCommands" + ], + "dependencies": { + "@rushstack/node-core-library": "workspace:*", + "@rushstack/terminal": "workspace:*", + "@rushstack/debug-certificate-manager": "workspace:*", + "tls-certification-workspace": "workspace:*" + }, + "devDependencies": { + "@microsoft/rush-lib": "workspace:*", + "local-node-rig": "workspace:*", + "@rushstack/heft-webpack5-plugin": "workspace:*", + "@rushstack/heft": "workspace:*", + "@rushstack/package-extractor": "workspace:*", + "@rushstack/webpack-preserve-dynamic-require-plugin": "workspace:*", + "@types/glob": "7.1.1", + "@types/mocha": "^9.0.0", + "@types/vscode": "^1.63.0", + "@types/webpack-env": "1.18.0", + "@vscode/test-electron": "^1.6.2", + "glob": "~7.0.5", + "mocha": "^9.1.3", + "vsce": "~2.14.0" + }, + "extensionKind": [ + "ui" + ], + "extensionDependencies": [ + "rushstack.tls-certification-workspace" + ], + "engines": { + "vscode": "^1.63.0" + } +} diff --git a/vscode-extensions/tls-certification-ui/src/extension.ts b/vscode-extensions/tls-certification-ui/src/extension.ts new file mode 100644 index 00000000000..d1c9f5b00ed --- /dev/null +++ b/vscode-extensions/tls-certification-ui/src/extension.ts @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +// 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'; +import { CertificateManager } from '@rushstack/debug-certificate-manager'; +import { ConsoleTerminalProvider, Terminal } from '@rushstack/terminal'; + +const consoleTerminalProvider: ConsoleTerminalProvider = new ConsoleTerminalProvider(); + +export const terminal: Terminal = new Terminal(consoleTerminalProvider); + +// this method is called when your extension is activated +// your extension is activated the very first time the command is executed +export async function activate(context: vscode.ExtensionContext): Promise { + context.subscriptions.push( + vscode.commands.registerCommand('rushstack.ensureDebugCertificate', async () => { + try { + const manager: CertificateManager = new CertificateManager(); + const { pemCaCertificate, pemCertificate, pemKey } = await manager.ensureCertificateAsync( + true, + terminal + ); + + await vscode.commands.executeCommand( + 'rushstack.saveDebugCertificate', + pemCaCertificate, + pemCertificate, + pemKey + ); + } catch (error) { + vscode.window.showErrorMessage(`Certificate was not generated with error: ${error}`); + } + + vscode.window.showInformationMessage('TLS UI finished running'); + }) + ); +} + +// this method is called when your extension is deactivated +export function deactivate(): void {} diff --git a/vscode-extensions/tls-certification-ui/src/logic/logger.ts b/vscode-extensions/tls-certification-ui/src/logic/logger.ts new file mode 100644 index 00000000000..cc281933961 --- /dev/null +++ b/vscode-extensions/tls-certification-ui/src/logic/logger.ts @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import { ConsoleTerminalProvider, Terminal } from '@rushstack/terminal'; + +const consoleTerminalProvider: ConsoleTerminalProvider = new ConsoleTerminalProvider(); + +export const terminal: Terminal = new Terminal(consoleTerminalProvider); + +export type LogLevel = 'info' | 'debug'; + +export const setLogLevel = (level: LogLevel): void => { + switch (level) { + case 'debug': { + consoleTerminalProvider.debugEnabled = true; + break; + } + case 'info': + default: { + consoleTerminalProvider.debugEnabled = false; + break; + } + } +}; diff --git a/vscode-extensions/tls-certification-ui/tsconfig.json b/vscode-extensions/tls-certification-ui/tsconfig.json new file mode 100644 index 00000000000..a42ac59b34b --- /dev/null +++ b/vscode-extensions/tls-certification-ui/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "./node_modules/local-node-rig/profiles/default/tsconfig-base.json", + "compilerOptions": { + "lib": ["es2015", "DOM"], + "types": ["mocha", "node", "webpack-env"] + } +} diff --git a/vscode-extensions/tls-certification-ui/webpack.config.js b/vscode-extensions/tls-certification-ui/webpack.config.js new file mode 100644 index 00000000000..371b60ad49e --- /dev/null +++ b/vscode-extensions/tls-certification-ui/webpack.config.js @@ -0,0 +1,47 @@ +// @ts-check +/* eslint-env es6 */ + +'use strict'; + +const path = require('path'); +// eslint-disable-next-line @typescript-eslint/naming-convention +const { PreserveDynamicRequireWebpackPlugin } = require('@rushstack/webpack-preserve-dynamic-require-plugin'); + +// @ts-check +/** @typedef {import('webpack').Configuration} WebpackConfig **/ + +function createExtensionConfig({ production, webpack }) { + /** @type WebpackConfig */ + const extensionConfig = { + target: 'node', // VS Code extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ + mode: production ? 'production' : 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production') + + entry: './lib/extension.js', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ + output: { + // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/ + path: path.resolve(__dirname, 'dist'), + filename: 'extension.js', + libraryTarget: 'commonjs2' + }, + externals: { + vscode: 'commonjs vscode' // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ + // modules added here also need to be added in the .vscodeignore file + }, + devtool: production ? 'hidden-source-map' : 'source-map', + infrastructureLogging: { + level: 'log' // enables logging required for problem matchers + }, + plugins: [ + // @ts-ignore + new PreserveDynamicRequireWebpackPlugin(), + new webpack.DefinePlugin({ + ___DEV___: JSON.stringify(!production) + }) + ], + optimization: { + minimize: false // Ensure licenses are included in the bundle + } + }; + return extensionConfig; +} +module.exports = createExtensionConfig; diff --git a/vscode-extensions/tls-certification-workspace/.gitignore b/vscode-extensions/tls-certification-workspace/.gitignore new file mode 100644 index 00000000000..a9abfdf2fa7 --- /dev/null +++ b/vscode-extensions/tls-certification-workspace/.gitignore @@ -0,0 +1,4 @@ +webview/ +.vscode-test/ +*.vsix +.vscodeignore \ No newline at end of file diff --git a/vscode-extensions/tls-certification-workspace/.npmignore b/vscode-extensions/tls-certification-workspace/.npmignore new file mode 100644 index 00000000000..4724baf483e --- /dev/null +++ b/vscode-extensions/tls-certification-workspace/.npmignore @@ -0,0 +1,20 @@ +# Ignore all files by default, to avoid accidentally publishing unintended files. +* + +# Use negative patterns to bring back the specific things we want to publish. +!/bin/** +!/lib/** +!/lib-*/** +!/dist/** +!ThirdPartyNotice.txt +!resources/** +!webview/** + +# Ignore certain patterns that should not get published. +/dist/*.stats.* +/lib/**/test/ +/lib-*/**/test/ +lib/scripts/ +lib-*/scripts/ +*.test.js +*.map diff --git a/vscode-extensions/tls-certification-workspace/LICENSE b/vscode-extensions/tls-certification-workspace/LICENSE new file mode 100644 index 00000000000..2e80bfe6fdf --- /dev/null +++ b/vscode-extensions/tls-certification-workspace/LICENSE @@ -0,0 +1,24 @@ +tls-certification-workspace vscode extension + +Copyright (c) Microsoft Corporation. All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vscode-extensions/tls-certification-workspace/README.md b/vscode-extensions/tls-certification-workspace/README.md new file mode 100644 index 00000000000..c9d942f656f --- /dev/null +++ b/vscode-extensions/tls-certification-workspace/README.md @@ -0,0 +1,26 @@ +# Rush Stack monorepo tools + + + +This VS Code extension provides various enhancements when working with a TypeScript monorepo +that uses the [Rush Stack](https://rushstack.io/) family of tools. + + +> 🚨 *EARLY PREVIEW RELEASE* 🚨 +> +> Not all features are implemented yet. If you have questions or ideas +> to improve this extension, please [let us know](https://rushstack.io/pages/help/support/). +> Thanks! + + +## Installation + +Install through VS Code extensions. Search for `Rush Stack monorepo tools` + +[Visual Studio Code Market Place: Rush Stack monorepo tools](https://marketplace.visualstudio.com/items?itemName=RushStack.rushstack) + +Can also be installed in VS Code: Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter. + +``` +ext install rushstack.tls-certification-workspace +``` diff --git a/vscode-extensions/tls-certification-workspace/config/heft.json b/vscode-extensions/tls-certification-workspace/config/heft.json new file mode 100644 index 00000000000..cbe6219e953 --- /dev/null +++ b/vscode-extensions/tls-certification-workspace/config/heft.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/heft/v0/heft.schema.json", + + "extends": "local-node-rig/profiles/default/config/heft.json", + + "aliasesByName": { + "start": { + "actionName": "build-watch", + "defaultParameters": ["--serve"] + } + }, + + "phasesByName": { + "build": { + "cleanFiles": [{ "includeGlobs": ["webview"] }], + "tasksByName": { + "webpack": { + "taskDependencies": ["typescript"], + "taskPlugin": { + "pluginPackage": "@rushstack/heft-webpack5-plugin" + } + }, + "copy-webview": { + "taskPlugin": { + "pluginName": "copy-files-plugin", + "pluginPackage": "@rushstack/heft", + "options": { + "copyOperations": [ + { + "sourcePath": "node_modules/@rushstack/rush-vscode-command-webview/dist", + "destinationFolders": ["webview/rush-command-webview"], + "includeGlobs": ["*.{html,js,txt}"] + } + ] + } + } + } + } + } + } +} diff --git a/vscode-extensions/tls-certification-workspace/config/rig.json b/vscode-extensions/tls-certification-workspace/config/rig.json new file mode 100644 index 00000000000..9d412b88354 --- /dev/null +++ b/vscode-extensions/tls-certification-workspace/config/rig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json", + + "rigPackageName": "local-node-rig" +} diff --git a/vscode-extensions/tls-certification-workspace/package.json b/vscode-extensions/tls-certification-workspace/package.json new file mode 100644 index 00000000000..c7779ebf46c --- /dev/null +++ b/vscode-extensions/tls-certification-workspace/package.json @@ -0,0 +1,140 @@ +{ + "name": "tls-certification-workspace", + "version": "0.0.1", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/rushstack.git", + "directory": "vscode-extensions/tls-certification-workspace" + }, + "license": "MIT", + "publisher": "rushstack", + "preview": true, + "displayName": "TLS Certification Workspace", + "description": "Creates TLS Certificates as a Workspace Extension", + "homepage": "https://rushstack.io", + "categories": [ + "Formatters", + "Other", + "Extension Packs", + "Visualization" + ], + "api": "none", + "keywords": [ + "api-extractor", + "build", + "heft", + "js", + "lockfile", + "monorepo", + "orchestrator", + "rig", + "rush", + "ts", + "tsdoc", + "typescript", + "web" + ], + "galleryBanner": { + "color": "#f0f0f0", + "theme": "light" + }, + "icon": "resources/rushstack-icon.png", + "badges": [ + { + "url": "https://img.shields.io/badge/Rush-db714a", + "href": "https://rushjs.io/", + "description": "Rush build orchestrator" + }, + { + "url": "https://img.shields.io/badge/Heft-db714a", + "href": "https://heft.rushstack.io/", + "description": "Heft toolchain" + }, + { + "url": "https://img.shields.io/badge/Lockfile%20Explorer-db714a", + "href": "https://lfx.rushstack.io/", + "description": "Lockfile Explorer dependency visualizer" + }, + { + "url": "https://img.shields.io/badge/API%20Extractor-db714a", + "href": "https://api-extractor.com/", + "description": "API Extractor review and documentation engine" + }, + { + "url": "https://img.shields.io/badge/TSDoc-db714a", + "href": "https://tsdoc.org", + "description": "TSDoc standard for API doc comments" + }, + { + "url": "https://img.shields.io/badge/Get%20Help-0078d4?label=%F0%9F%97%A8%EF%B8%8F", + "href": "https://rushstack.io/pages/help/support/", + "description": "Rush Stack community support" + } + ], + "main": "./dist/extension.js", + "scripts": { + "build": "heft build --clean", + "build:watch": "heft build-watch", + "vscode:prepublish": "heft build --clean --production", + "deploy": "vsce publish --no-dependencies", + "package": "vsce package --no-dependencies", + "start": "heft start", + "pretest": "npm run build", + "test": "node ./lib/test/runTest.js", + "_phase:build": "heft build --clean", + "_phase:test": "" + }, + "contributes": { + "commands": [ + { + "command": "rushstack.saveDebugCertificate", + "category": "RushStack", + "title": "Save Debug Certificate" + } + ], + "configuration": { + "title": "TLS Certificate Workspace monorepo tools", + "properties": { + "rushstack.logLevelTLSWorkspace": { + "type": "string", + "default": "info", + "enum": [ + "info", + "debug" + ], + "description": "The log level to use for the VS Code extension" + } + } + } + }, + "activationEvents": [ + "onView:rushCommands" + ], + "dependencies": { + "@rushstack/node-core-library": "workspace:*", + "@rushstack/terminal": "workspace:*", + "@rushstack/debug-certificate-manager": "workspace:*" + }, + "extensionKind": [ + "workspace" + ], + "devDependencies": { + "@microsoft/rush-lib": "workspace:*", + "local-node-rig": "workspace:*", + "@rushstack/heft-webpack5-plugin": "workspace:*", + "@rushstack/heft": "workspace:*", + "@rushstack/package-extractor": "workspace:*", + "@rushstack/webpack-preserve-dynamic-require-plugin": "workspace:*", + "@types/glob": "7.1.1", + "@types/mocha": "^9.0.0", + "@types/vscode": "^1.63.0", + "@types/webpack-env": "1.18.0", + "@vscode/test-electron": "^1.6.2", + "glob": "~7.0.5", + "mocha": "^9.1.3", + "vsce": "~2.14.0" + }, + "engines": { + "vscode": "^1.63.0" + } +} diff --git a/vscode-extensions/tls-certification-workspace/src/extension.ts b/vscode-extensions/tls-certification-workspace/src/extension.ts new file mode 100644 index 00000000000..1b8798af471 --- /dev/null +++ b/vscode-extensions/tls-certification-workspace/src/extension.ts @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +// 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'; +import { CertificateStore } from '@rushstack/debug-certificate-manager'; +import { ConsoleTerminalProvider, Terminal } from '@rushstack/terminal'; + +const consoleTerminalProvider: ConsoleTerminalProvider = new ConsoleTerminalProvider(); + +export const terminal: Terminal = new Terminal(consoleTerminalProvider); + +// this method is called when your extension is activated +// your extension is activated the very first time the command is executed +export async function activate(context: vscode.ExtensionContext): Promise { + vscode.window.showInformationMessage('TLS Cetification Workspace Extension is now active!'); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'rushstack.saveDebugCertificate', + async (pemCaCertificate: string, pemCertificate: string, pemKey: string) => { + const store: CertificateStore = new CertificateStore(); + + store.caCertificateData = pemCaCertificate; + store.certificateData = pemCertificate; + store.keyData = pemKey; + + vscode.window.showInformationMessage('Certificate successfully saved'); + } + ) + ); +} + +// this method is called when your extension is deactivated +export function deactivate(): void {} diff --git a/vscode-extensions/tls-certification-workspace/tsconfig.json b/vscode-extensions/tls-certification-workspace/tsconfig.json new file mode 100644 index 00000000000..a42ac59b34b --- /dev/null +++ b/vscode-extensions/tls-certification-workspace/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "./node_modules/local-node-rig/profiles/default/tsconfig-base.json", + "compilerOptions": { + "lib": ["es2015", "DOM"], + "types": ["mocha", "node", "webpack-env"] + } +} diff --git a/vscode-extensions/tls-certification-workspace/webpack.config.js b/vscode-extensions/tls-certification-workspace/webpack.config.js new file mode 100644 index 00000000000..371b60ad49e --- /dev/null +++ b/vscode-extensions/tls-certification-workspace/webpack.config.js @@ -0,0 +1,47 @@ +// @ts-check +/* eslint-env es6 */ + +'use strict'; + +const path = require('path'); +// eslint-disable-next-line @typescript-eslint/naming-convention +const { PreserveDynamicRequireWebpackPlugin } = require('@rushstack/webpack-preserve-dynamic-require-plugin'); + +// @ts-check +/** @typedef {import('webpack').Configuration} WebpackConfig **/ + +function createExtensionConfig({ production, webpack }) { + /** @type WebpackConfig */ + const extensionConfig = { + target: 'node', // VS Code extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ + mode: production ? 'production' : 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production') + + entry: './lib/extension.js', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ + output: { + // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/ + path: path.resolve(__dirname, 'dist'), + filename: 'extension.js', + libraryTarget: 'commonjs2' + }, + externals: { + vscode: 'commonjs vscode' // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ + // modules added here also need to be added in the .vscodeignore file + }, + devtool: production ? 'hidden-source-map' : 'source-map', + infrastructureLogging: { + level: 'log' // enables logging required for problem matchers + }, + plugins: [ + // @ts-ignore + new PreserveDynamicRequireWebpackPlugin(), + new webpack.DefinePlugin({ + ___DEV___: JSON.stringify(!production) + }) + ], + optimization: { + minimize: false // Ensure licenses are included in the bundle + } + }; + return extensionConfig; +} +module.exports = createExtensionConfig;