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;