@codingame/monaco-vscode-extension-gallery-service-override 2.2.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (17) hide show
  1. package/extensionGallery.js +23 -8
  2. package/package.json +9 -9
  3. package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js +123 -163
  4. package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.js +1 -1
  5. package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +42 -7
  6. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +43 -827
  7. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.js +542 -0
  8. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +63 -54
  9. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.js +0 -1
  10. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +10 -13
  11. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +36 -8
  12. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.js +2 -2
  13. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +1 -5
  14. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extension.css.js +1 -1
  15. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css.js +1 -1
  16. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService.js +234 -0
  17. package/vscode/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.js +2 -2
@@ -1,6 +1,6 @@
1
1
  import n from '../../../../../../../../external/rollup-plugin-styles/dist/runtime/inject-css.js';
2
2
 
3
- var css = ".extension-editor{display:flex;flex-direction:column;height:100%;margin:0 auto;max-width:80%;overflow:hidden}.extension-editor .clickable{cursor:pointer}.extension-editor>.header{display:flex;font-size:14px;overflow:hidden;padding:20px 20px 14px}.extension-editor>.header>.icon-container{position:relative}.extension-editor>.header>.icon-container .icon{height:128px;object-fit:contain;width:128px}.extension-editor>.header>.icon-container .extension-remote-badge{align-items:center;border-radius:20px;display:flex;height:38px;justify-content:center;line-height:38px;position:absolute;right:0;text-align:center;top:88px;width:38px}.extension-editor>.header>.icon-container .extension-remote-badge .codicon{color:currentColor;font-size:28px}.extension-editor>.header>.details{overflow:hidden;padding-left:20px;user-select:text;-webkit-user-select:text}.extension-editor>.header>.details>.title{align-items:center;display:flex}.extension-editor>.header>.details>.title>.name{flex:0;font-size:26px;font-weight:600;line-height:30px;white-space:nowrap}.extension-editor>.header>.details>.title>.name.deprecated{text-decoration:line-through}.extension-editor>.header>.details>.title>.version{margin-left:10px;user-select:text;-webkit-user-select:text;white-space:nowrap}.extension-editor>.header>.details>.title>.builtin{font-size:10px;font-style:italic;margin-left:10px}.extension-editor>.header>.details>.title>.pre-release{align-items:center;background-color:var(--vscode-extensionIcon-preReleaseForeground);border-radius:4px;color:#fff;display:flex;margin-left:10px;padding:0 4px}.extension-editor>.header>.details>.title>.pre-release>.codicon.codicon-extensions-pre-release{color:#fff;font-size:14px}.extension-editor>.header>.details>.title>.pre-release>.pre-release-text{font-size:10px;padding-left:3px}.monaco-workbench.vs .extension-editor>.header>.details>.title>.preview{color:#fff}.extension-editor>.header>.details>.title>.preview{background:#d63f26;border-radius:4px;font-size:10px;font-style:italic;margin-left:10px;padding:0 4px;user-select:none;-webkit-user-select:none}.extension-editor>.header>.details>.subtitle{height:20px;line-height:20px;padding-top:6px;white-space:nowrap}.extension-editor>.header>.details>.subtitle .hide{display:none}.extension-editor>.header>.details>.subtitle .publisher{align-items:center;display:flex}.extension-editor>.header>.details>.subtitle .publisher .verified-publisher:not(:empty){margin-left:4px}.extension-editor>.header>.details>.subtitle,.extension-editor>.header>.details>.subtitle .install,.extension-editor>.header>.details>.subtitle .rating,.extension-editor>.header>.details>.subtitle .sponsor{align-items:center;display:flex}.extension-editor>.header>.details>.subtitle .sponsor .codicon{padding-right:3px}.extension-editor>.header>.details>.subtitle .install>.count{margin-left:6px}.extension-editor>.header>.details>.subtitle>div:not(:first-child):not(:empty){border-left:1px solid hsla(0,0%,50%,.7);margin-left:14px;padding-left:14px}.extension-editor>.header>.details>.description{margin-top:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.extension-editor>.header>.details>.actions-status-container{display:flex;margin-top:10px}.extension-editor>.header>.details>.actions-status-container.list-layout{display:inherit}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar{text-align:initial}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item{flex-shrink:0;margin-right:0;overflow:hidden}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.disabled{min-width:0}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item .extension-action{margin-bottom:2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item>.extension-action:not(.icon){margin-left:2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.monaco-dropdown .extension-action.action-dropdown{margin-right:2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item:not(.checkbox-action-item) .extension-action:not(.icon){border-radius:0;padding-bottom:0;padding-top:0}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.monaco-dropdown .extension-action.action-dropdown,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item>.extension-action{line-height:22px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.checkbox-action-item,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item:not(.action-dropdown-item):not(.checkbox-action-item)>.extension-action{margin-right:6px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.checkbox-action-item>.extension-action{height:18px;margin-top:2px;width:18px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item .extension-action.label,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item>.extension-action.label{font-weight:600;max-width:300px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.extension-action.label{border-right-width:0}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.action-dropdown-item-separator{height:22px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.action-dropdown-item-separator>div{height:16px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item.empty>.extension-action.label{margin-right:2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item.empty>.action-dropdown-item-separator{display:none}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item.empty>.extension-action.label,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item>.extension-action.label{border-radius:2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item:not(.empty)>.extension-action.label{border-radius:2px 0 0 2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item:not(.empty)>.monaco-dropdown .extension-action.label{border-left-width:0;border-radius:0 2px 2px 0}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item>.action-label.extension-status{margin-right:0}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar .action-item .action-label.disable-status,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar .action-item .action-label.extension-status-label{font-weight:400}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar .action-item .action-label.disable-status:hover,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar .action-item .action-label.extension-status-label:hover{opacity:.9}.extension-editor>.header>.details>.actions-status-container>.status{font-size:90%;line-height:22px;margin-top:3px}.extension-editor>.header>.details>.actions-status-container.list-layout>.status{margin-top:5px}.extension-editor>.header>.details>.actions-status-container>.status .codicon{vertical-align:text-bottom}.extension-editor>.header>.details>.actions-status-container>.status p,.extension-editor>.header>.details>.pre-release-text p{margin-bottom:0;margin-top:0}.extension-editor>.header>.details>.actions-status-container>.status a,.extension-editor>.header>.details>.pre-release-text a{color:var(--vscode-textLink-foreground)}.extension-editor>.header>.details>.actions-status-container>.status a:hover,.extension-editor>.header>.details>.pre-release-text a:hover{color:var(--vscode-textLink-activeForeground);text-decoration:underline}.extension-editor>.header>.details>.actions-status-container>.status a:active,.extension-editor>.header>.details>.pre-release-text a:active{color:var(--vscode-textLink-activeForeground)}.extension-editor>.header>.details>.pre-release-text:not(:empty){display:flex;font-size:90%;margin-top:5px}.extension-editor>.header>.details>.recommendation{display:flex;margin-top:5px}.extension-editor>.header>.details>.recommendation .codicon{font-size:inherit;margin-right:5px}.extension-editor>.header>.details>.recommendation .recommendation-text{font-size:90%;vertical-align:text-bottom}.extension-editor>.body{flex:1;overflow:hidden}.extension-editor>.body>.navbar{border-bottom:1px solid var(--vscode-panelSection-border);font-size:14px;font-weight:700;height:36px;line-height:36px;padding-left:20px}.extension-editor>.body>.navbar>.monaco-action-bar>.actions-container{justify-content:normal}.extension-editor>.body>.navbar>.monaco-action-bar>.actions-container>.action-item{height:100%}.extension-editor>.body>.navbar>.monaco-action-bar>.actions-container>.action-item>.action-label{background:none!important;border-radius:0!important;color:var(--vscode-panelTitle-inactiveForeground);font-size:11px;font-weight:400;padding:0 10px;text-transform:uppercase}.extension-editor>.body>.navbar>.monaco-action-bar>.actions-container>.action-item>.action-label.checked{border-bottom:1px solid var(--vscode-panelTitle-activeBorder);color:var(--vscode-panelTitle-activeForeground)}.extension-editor>.body>.navbar>.monaco-action-bar>.actions-container>.action-item>.action-label:hover{color:var(--vscode-panelTitle-activeForeground)}.extension-editor>.body>.content{height:calc(100% - 36px);overflow:hidden;position:relative;user-select:text;-webkit-user-select:text}.extension-editor>.body>.content.loading{background:url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHN0eWxlPmNpcmNsZXthbmltYXRpb246YmFsbCAuNnMgbGluZWFyIGluZmluaXRlfWNpcmNsZTpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi4wNzVzfWNpcmNsZTpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi4xNXN9Y2lyY2xlOm50aC1jaGlsZCg0KXthbmltYXRpb24tZGVsYXk6LjIyNXN9Y2lyY2xlOm50aC1jaGlsZCg1KXthbmltYXRpb24tZGVsYXk6LjNzfWNpcmNsZTpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi4zNzVzfWNpcmNsZTpudGgtY2hpbGQoNyl7YW5pbWF0aW9uLWRlbGF5Oi40NXN9Y2lyY2xlOm50aC1jaGlsZCg4KXthbmltYXRpb24tZGVsYXk6LjUyNXN9PC9zdHlsZT48Y2lyY2xlIGN4PSI1IiBjeT0iMSIgcj0iMSIgc3R5bGU9Im9wYWNpdHk6LjMiLz48Y2lyY2xlIGN4PSI3LjgyOCIgY3k9IjIuMTcyIiByPSIxIiBzdHlsZT0ib3BhY2l0eTouMyIvPjxjaXJjbGUgY3g9IjkiIGN5PSI1IiByPSIxIiBzdHlsZT0ib3BhY2l0eTouMyIvPjxjaXJjbGUgY3g9IjcuODI4IiBjeT0iNy44MjgiIHI9IjEiIHN0eWxlPSJvcGFjaXR5Oi4zIi8+PGNpcmNsZSBjeD0iNSIgY3k9IjkiIHI9IjEiIHN0eWxlPSJvcGFjaXR5Oi4zIi8+PGNpcmNsZSBjeD0iMi4xNzIiIGN5PSI3LjgyOCIgcj0iMSIgc3R5bGU9Im9wYWNpdHk6LjMiLz48Y2lyY2xlIGN4PSIxIiBjeT0iNSIgcj0iMSIgc3R5bGU9Im9wYWNpdHk6LjMiLz48Y2lyY2xlIGN4PSIyLjE3MiIgY3k9IjIuMTcyIiByPSIxIiBzdHlsZT0ib3BhY2l0eTouMyIvPjwvc3ZnPg==\") 50% no-repeat}.extension-editor>.body>.content>.monaco-scrollable-element{height:100%}.extension-editor>.body>.content>.nocontent{margin-left:20px}.extension-editor>.body>.content>.details{display:flex;height:100%}.extension-editor>.body>.content>.details>.readme-container{flex:1;height:100%;margin:0 auto;max-width:75%}.extension-editor>.body>.content>.details.narrow>.readme-container{margin:inherit;max-width:inherit}.extension-editor>.body>.content>.details>.additional-details-container{height:100%;min-width:175px;width:25%}.extension-editor>.body>.content>.details.narrow>.additional-details-container{display:none}.extension-editor>.body>.content>.details>.additional-details-container>.monaco-scrollable-element{height:100%}.extension-editor>.body>.content>.details>.additional-details-container>.monaco-scrollable-element>.additional-details-content{box-sizing:border-box;height:100%;overflow-y:scroll;padding:20px}.extension-editor>.body>.content>.details>.additional-details-container .additional-details-element:not(:first-child){padding-top:15px}.extension-editor>.body>.content>.details>.additional-details-container .additional-details-element{padding-bottom:15px}.extension-editor>.body>.content>.details>.additional-details-container .additional-details-element:not(:last-child){border-bottom:1px solid hsla(0,0%,50%,.22)}.extension-editor>.body>.content>.details>.additional-details-container .additional-details-element>.additional-details-title{font-size:120%;padding-bottom:15px}.extension-editor>.body>.content>.details>.additional-details-container .categories-container>.categories>.category,.extension-editor>.body>.content>.details>.additional-details-container .tags-container>.tags>.tag{border:1px solid hsla(0,0%,53%,.45);border-radius:2px;cursor:pointer;display:inline-block;font-size:90%;margin:0 6px 3px 0;padding:2px 4px}.extension-editor>.body>.content>.details>.additional-details-container .resources-container>.resources>.resource{cursor:pointer;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.extension-editor>.body>.content>.details>.additional-details-container .resources-container>.resources>.resource:hover{text-decoration:underline}.extension-editor>.body>.content>.details>.additional-details-container .more-info-container>.more-info>.more-info-entry{display:flex;font-size:90%}.extension-editor>.body>.content>.details>.additional-details-container .more-info-container>.more-info>.more-info-entry :first-child{width:40%}.extension-editor>.body>.content>.details>.additional-details-container .more-info-container>.more-info>.more-info-entry :last-child{width:60%}.extension-editor>.body>.content>.details>.additional-details-container .more-info-container>.more-info>.more-info-entry code{background-color:transparent;padding:0}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme{height:100%}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack{height:224px;padding-left:20px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.one-row>.extension-pack{height:142px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.two-rows>.extension-pack{height:224px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.three-rows>.extension-pack{height:306px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.more-rows>.extension-pack{height:326px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.one-row>.readme-content{height:calc(100% - 142px)}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.two-rows>.readme-content{height:calc(100% - 224px)}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.three-rows>.readme-content{height:calc(100% - 306px)}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.more-rows>.readme-content{height:calc(100% - 326px)}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack>.footer,.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack>.header{border-bottom:1px solid hsla(0,0%,50%,.22);font-size:120%;font-weight:700;line-height:22px;margin-bottom:10px;margin-right:30px;padding:4px 6px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack>.extension-pack-content{height:calc(100% - 60px)}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack>.extension-pack-content>.monaco-scrollable-element{height:100%}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack>.extension-pack-content>.monaco-scrollable-element>.subcontent{box-sizing:border-box;height:100%;overflow-y:scroll}.extension-editor>.body>.content>.monaco-scrollable-element>.subcontent{box-sizing:border-box;height:100%;overflow-y:scroll;padding:20px}.extension-editor>.body>.content table{border-collapse:separate;border-spacing:0;width:100%}.extension-editor>.body>.content details:not(:first-child){margin-top:20px}.extension-editor>.body>.content details>summary{border-bottom:1px solid hsla(0,0%,50%,.22);cursor:pointer;font-size:120%;font-weight:700;line-height:22px;margin-bottom:10px;padding:3px 6px}.extension-editor>.body>.content table tr:nth-child(odd){background-color:hsla(0,0%,51%,.04)}.extension-editor>.body>.content table tr:not(:first-child):hover{background-color:hsla(0,0%,50%,.15)}.extension-editor>.body>.content table td,.extension-editor>.body>.content table th{padding:2px 16px 2px 4px}.extension-editor>.body>.content table td:last-child,.extension-editor>.body>.content table th:last-child{padding:2px 4px}.extension-editor>.body>.content table th{text-align:left;word-break:keep-all}.extension-editor>.body>.content table td>div,.extension-editor>.body>.content table td>div>p{margin:0;padding:0}.extension-editor code:not(:empty){background-color:hsla(0,0%,50%,.17);border-radius:4px;font-family:var(--monaco-monospace-font);font-size:90%;padding:1px 4px}.extension-editor>.body>.content table .colorBox{border:.1em solid #000;box-sizing:border-box;display:inline-block;height:.8em;margin:0 .2em;vertical-align:middle;width:.8em}.monaco-workbench.hc-black .extension-editor>.body>.content table .colorBox,.monaco-workbench.vs-dark .extension-editor>.body>.content table .colorBox{border-color:#eee}.extension-editor .subcontent .monaco-list-row .content .unknown-extension{line-height:62px}.extension-editor .subcontent .monaco-list-row .content .unknown-extension>.error-marker{background-color:#be1100;color:#ccc;font-size:11px;font-weight:700;padding:2px 4px}.extension-editor .subcontent .monaco-list-row .unknown-extension>.message{font-size:14px;font-weight:700;padding-left:10px}.extension-editor .subcontent .monaco-list-row .extension{align-items:center;display:flex}.extension-editor .subcontent .monaco-list-row .extension>.details{flex:1;overflow:hidden;padding-left:10px}.extension-editor .subcontent .monaco-list-row .extension>.details>.header{align-items:center;display:flex;line-height:19px;overflow:hidden}.extension-editor .subcontent .monaco-list-row .extension>.icon{height:40px;object-fit:contain;width:40px}.extension-editor .subcontent .monaco-list-row .extension>.details>.header>.name{font-size:16px;font-weight:700}.extension-editor .subcontent .monaco-list-row .extension>.details>.header>.name:hover{text-decoration:underline}.extension-editor .subcontent .monaco-list-row .extension>.details>.header>.identifier{background:hsla(0,0%,68%,.31);border-radius:4px;font-size:90%;margin-left:10px;opacity:.6;padding:0 4px}.extension-editor .subcontent .monaco-list-row .extension>.details>.footer{display:flex;line-height:19px;overflow:hidden;padding-top:5px}.extension-editor .subcontent .monaco-list-row .extension>.details>.footer>.author{font-size:90%;font-weight:600;opacity:.6}.extension-editor .extensions-grid-view{display:flex;flex-wrap:wrap}.extension-editor .extensions-grid-view>.extension-container{margin:0 10px 20px 0;width:350px}.extension-editor .extensions-grid-view .extension-list-item{cursor:default}.extension-editor .extensions-grid-view .extension-list-item>.details .header>.name{cursor:pointer}.extension-editor .extensions-grid-view .extension-list-item>.details>.header-container>.header>.install-count,.extension-editor .extensions-grid-view .extension-list-item>.details>.header-container>.header>.ratings,.extension-editor .extensions-grid-view .extension-list-item>.details>.header-container>.header>.version{display:none}.extension-editor .extensions-grid-view>.extension-container:focus>.extension-list-item>.details .header>.name,.extension-editor .extensions-grid-view>.extension-container:hover>.extension-list-item>.details .header>.name{text-decoration:underline}.monaco-workbench.vs .extension-editor .extensions-grid-view>.extension-container.disabled>.extension-list-item>.details>.header-container .codicon,.monaco-workbench.vs .extension-editor .extensions-grid-view>.extension-container.disabled>.extension-list-item>.icon-container>.icon,.monaco-workbench.vs-dark .extension-editor .extensions-grid-view>.extension-container.disabled>.extension-list-item>.details>.header-container .codicon,.monaco-workbench.vs-dark .extension-editor .extensions-grid-view>.extension-container.disabled>.extension-list-item>.icon-container>.icon{opacity:.5}.extension-editor>.body>.content .runtime-status .activation-details>.activation-element-entry>.activation-message-title{padding-right:10px}.extension-editor>.body>.content .runtime-status .message-entry{align-items:center;display:flex;margin:5px}.extension-editor>.body>.content .runtime-status .message-entry .codicon{padding-right:2px}.monaco-workbench .extension-editor>.header>.details>.recommendation .codicon{color:var(--vscode-extensionButton-prominentBackground)}";
3
+ var css = ".extension-editor{display:flex;flex-direction:column;height:100%;margin:0 auto;max-width:80%;overflow:hidden}.extension-editor .clickable{cursor:pointer}.extension-editor>.header{display:flex;font-size:14px;overflow:hidden;padding:20px 20px 14px}.extension-editor>.header>.icon-container{position:relative}.extension-editor>.header>.icon-container .icon{height:128px;object-fit:contain;width:128px}.extension-editor>.header>.icon-container .extension-remote-badge{align-items:center;border-radius:20px;display:flex;height:38px;justify-content:center;line-height:38px;position:absolute;right:0;text-align:center;top:88px;width:38px}.extension-editor>.header>.icon-container .extension-remote-badge .codicon{color:currentColor;font-size:28px}.extension-editor>.header>.details{overflow:hidden;padding-left:20px;user-select:text;-webkit-user-select:text}.extension-editor>.header>.details>.title{align-items:center;display:flex}.extension-editor>.header>.details>.title>.name{flex:0;font-size:26px;font-weight:600;line-height:30px;white-space:nowrap}.extension-editor>.header>.details>.title>.name.deprecated{text-decoration:line-through}.extension-editor>.header>.details>.title>.version{margin-left:10px;user-select:text;-webkit-user-select:text;white-space:nowrap}.extension-editor>.header>.details>.title>.builtin{font-size:10px;font-style:italic;margin-left:10px}.extension-editor>.header>.details>.title>.pre-release{align-items:center;background-color:var(--vscode-extensionIcon-preReleaseForeground);border-radius:4px;color:#fff;display:flex;margin-left:10px;padding:0 4px}.extension-editor>.header>.details>.title>.pre-release>.codicon.codicon-extensions-pre-release{color:#fff;font-size:14px}.extension-editor>.header>.details>.title>.pre-release>.pre-release-text{font-size:10px;padding-left:3px}.monaco-workbench.vs .extension-editor>.header>.details>.title>.preview{color:#fff}.extension-editor>.header>.details>.title>.preview{background:#d63f26;border-radius:4px;font-size:10px;font-style:italic;margin-left:10px;padding:0 4px;user-select:none;-webkit-user-select:none}.extension-editor>.header>.details>.subtitle{height:20px;line-height:20px;padding-top:6px;white-space:nowrap}.extension-editor>.header>.details>.subtitle .hide{display:none}.extension-editor>.header>.details>.subtitle .publisher{align-items:center;display:flex}.extension-editor>.header>.details>.subtitle .publisher .verified-publisher:not(:empty){margin-left:4px}.extension-editor>.header>.details>.subtitle,.extension-editor>.header>.details>.subtitle .install,.extension-editor>.header>.details>.subtitle .rating,.extension-editor>.header>.details>.subtitle .sponsor{align-items:center;display:flex}.extension-editor>.header>.details>.subtitle .sponsor .codicon{padding-right:3px}.extension-editor>.header>.details>.subtitle .install>.count{margin-left:6px}.extension-editor>.header>.details>.subtitle>div:not(:first-child):not(:empty){border-left:1px solid hsla(0,0%,50%,.7);margin-left:14px;padding-left:14px}.extension-editor>.header>.details>.description{margin-top:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.extension-editor>.header>.details>.actions-status-container{display:flex;margin-top:10px}.extension-editor>.header>.details>.actions-status-container.list-layout{display:inherit}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar{text-align:initial}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item{flex-shrink:0;margin-right:0;overflow:hidden}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.disabled{min-width:0}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item .extension-action{margin-bottom:2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item>.extension-action:not(.icon){margin-left:2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.monaco-dropdown .extension-action.action-dropdown{margin-right:2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item:not(.checkbox-action-item) .extension-action:not(.icon){border-radius:0;padding-bottom:0;padding-top:0}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.monaco-dropdown .extension-action.action-dropdown,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item>.extension-action{line-height:22px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.checkbox-action-item,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item:not(.action-dropdown-item):not(.checkbox-action-item)>.extension-action{margin-right:6px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.checkbox-action-item>.extension-action{height:18px;margin-top:2px;width:18px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item .extension-action.label,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item>.extension-action.label{font-weight:600;max-width:300px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.extension-action.label{border-right-width:0}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.action-dropdown-item-separator{height:22px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.action-dropdown-item-separator>div{height:16px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item.empty>.extension-action.label{margin-right:2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item.empty>.action-dropdown-item-separator{display:none}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item.empty>.extension-action.label,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item>.extension-action.label{border-radius:2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item:not(.empty)>.extension-action.label{border-radius:2px 0 0 2px}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item.action-dropdown-item:not(.empty)>.monaco-dropdown .extension-action.label{border-left-width:0;border-radius:0 2px 2px 0}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar>.actions-container>.action-item>.action-label.extension-status{margin-right:0}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar .action-item .action-label.disable-status,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar .action-item .action-label.extension-status-label{font-weight:400}.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar .action-item .action-label.disable-status:hover,.extension-editor>.header>.details>.actions-status-container>.monaco-action-bar .action-item .action-label.extension-status-label:hover{opacity:.9}.extension-editor>.header>.details>.actions-status-container>.status{font-size:90%;line-height:22px;margin-top:3px}.extension-editor>.header>.details>.actions-status-container.list-layout>.status{margin-top:5px}.extension-editor>.header>.details>.actions-status-container>.status .codicon{vertical-align:text-bottom}.extension-editor>.header>.details>.actions-status-container>.status p,.extension-editor>.header>.details>.pre-release-text p{margin-bottom:0;margin-top:0}.extension-editor>.header>.details>.actions-status-container>.status a,.extension-editor>.header>.details>.pre-release-text a{color:var(--vscode-textLink-foreground)}.extension-editor>.header>.details>.actions-status-container>.status a:hover,.extension-editor>.header>.details>.pre-release-text a:hover{color:var(--vscode-textLink-activeForeground);text-decoration:underline}.extension-editor>.header>.details>.actions-status-container>.status a:active,.extension-editor>.header>.details>.pre-release-text a:active{color:var(--vscode-textLink-activeForeground)}.extension-editor>.header>.details>.pre-release-text:not(:empty){display:flex;font-size:90%;margin-top:5px}.extension-editor>.header>.details>.recommendation{display:flex;margin-top:5px}.extension-editor>.header>.details>.recommendation .codicon{font-size:inherit;margin-right:5px}.extension-editor>.header>.details>.recommendation .recommendation-text{font-size:90%;vertical-align:text-bottom}.extension-editor>.body{flex:1;overflow:hidden}.extension-editor>.body>.navbar{border-bottom:1px solid var(--vscode-panelSection-border);font-size:14px;font-weight:700;height:36px;line-height:36px;padding-left:20px}.extension-editor>.body>.navbar>.monaco-action-bar>.actions-container{justify-content:normal}.extension-editor>.body>.navbar>.monaco-action-bar>.actions-container>.action-item{height:100%}.extension-editor>.body>.navbar>.monaco-action-bar>.actions-container>.action-item>.action-label{background:none!important;border-radius:0!important;color:var(--vscode-panelTitle-inactiveForeground);font-size:11px;font-weight:400;padding:0 10px;text-transform:uppercase}.extension-editor>.body>.navbar>.monaco-action-bar>.actions-container>.action-item>.action-label.checked{border-bottom:1px solid var(--vscode-panelTitle-activeBorder);color:var(--vscode-panelTitle-activeForeground)}.extension-editor>.body>.navbar>.monaco-action-bar>.actions-container>.action-item>.action-label:hover{color:var(--vscode-panelTitle-activeForeground)}.extension-editor>.body>.content{height:calc(100% - 36px);overflow:hidden;position:relative;user-select:text;-webkit-user-select:text}.extension-editor>.body>.content.loading{background:url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHN0eWxlPmNpcmNsZXthbmltYXRpb246YmFsbCAuNnMgbGluZWFyIGluZmluaXRlfWNpcmNsZTpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi4wNzVzfWNpcmNsZTpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi4xNXN9Y2lyY2xlOm50aC1jaGlsZCg0KXthbmltYXRpb24tZGVsYXk6LjIyNXN9Y2lyY2xlOm50aC1jaGlsZCg1KXthbmltYXRpb24tZGVsYXk6LjNzfWNpcmNsZTpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi4zNzVzfWNpcmNsZTpudGgtY2hpbGQoNyl7YW5pbWF0aW9uLWRlbGF5Oi40NXN9Y2lyY2xlOm50aC1jaGlsZCg4KXthbmltYXRpb24tZGVsYXk6LjUyNXN9PC9zdHlsZT48Y2lyY2xlIGN4PSI1IiBjeT0iMSIgcj0iMSIgc3R5bGU9Im9wYWNpdHk6LjMiLz48Y2lyY2xlIGN4PSI3LjgyOCIgY3k9IjIuMTcyIiByPSIxIiBzdHlsZT0ib3BhY2l0eTouMyIvPjxjaXJjbGUgY3g9IjkiIGN5PSI1IiByPSIxIiBzdHlsZT0ib3BhY2l0eTouMyIvPjxjaXJjbGUgY3g9IjcuODI4IiBjeT0iNy44MjgiIHI9IjEiIHN0eWxlPSJvcGFjaXR5Oi4zIi8+PGNpcmNsZSBjeD0iNSIgY3k9IjkiIHI9IjEiIHN0eWxlPSJvcGFjaXR5Oi4zIi8+PGNpcmNsZSBjeD0iMi4xNzIiIGN5PSI3LjgyOCIgcj0iMSIgc3R5bGU9Im9wYWNpdHk6LjMiLz48Y2lyY2xlIGN4PSIxIiBjeT0iNSIgcj0iMSIgc3R5bGU9Im9wYWNpdHk6LjMiLz48Y2lyY2xlIGN4PSIyLjE3MiIgY3k9IjIuMTcyIiByPSIxIiBzdHlsZT0ib3BhY2l0eTouMyIvPjwvc3ZnPg==\") 50% no-repeat}.extension-editor>.body>.content>.monaco-scrollable-element{height:100%}.extension-editor>.body>.content>.nocontent{margin-left:20px}.extension-editor>.body>.content>.details{display:flex;height:100%}.extension-editor>.body>.content>.details>.readme-container{flex:1;height:100%;margin:0 auto;max-width:75%}.extension-editor>.body>.content>.details.narrow>.readme-container{margin:inherit;max-width:inherit}.extension-editor>.body>.content>.details>.additional-details-container{height:100%;min-width:175px;width:25%}.extension-editor>.body>.content>.details.narrow>.additional-details-container{display:none}.extension-editor>.body>.content>.details>.additional-details-container>.monaco-scrollable-element{height:100%}.extension-editor>.body>.content>.details>.additional-details-container>.monaco-scrollable-element>.additional-details-content{box-sizing:border-box;height:100%;overflow-y:scroll;padding:20px}.extension-editor>.body>.content>.details>.additional-details-container .additional-details-element:not(:first-child){padding-top:15px}.extension-editor>.body>.content>.details>.additional-details-container .additional-details-element{padding-bottom:15px}.extension-editor>.body>.content>.details>.additional-details-container .additional-details-element:not(:last-child){border-bottom:1px solid hsla(0,0%,50%,.22)}.extension-editor>.body>.content>.details>.additional-details-container .additional-details-element>.additional-details-title{font-size:120%;padding-bottom:15px}.extension-editor>.body>.content>.details>.additional-details-container .categories-container>.categories>.category,.extension-editor>.body>.content>.details>.additional-details-container .tags-container>.tags>.tag{border:1px solid hsla(0,0%,53%,.45);border-radius:2px;cursor:pointer;display:inline-block;font-size:90%;margin:0 6px 3px 0;padding:2px 4px}.extension-editor>.body>.content>.details>.additional-details-container .resources-container>.resources>.resource{cursor:pointer;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.extension-editor>.body>.content>.details>.additional-details-container .resources-container>.resources>.resource:hover{text-decoration:underline}.extension-editor>.body>.content>.details>.additional-details-container .more-info-container>.more-info>.more-info-entry{display:grid;font-size:90%;gap:6px;grid-template-columns:40% 60%;padding:2px 4px}.extension-editor>.body>.content>.details>.additional-details-container .more-info-container>.more-info>.more-info-entry:nth-child(odd){background-color:hsla(0,0%,51%,.04)}.extension-editor>.body>.content>.details>.additional-details-container .more-info-container>.more-info>.more-info-entry code{background-color:transparent;padding:0}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme{height:100%}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack{height:224px;padding-left:20px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.one-row>.extension-pack{height:142px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.two-rows>.extension-pack{height:224px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.three-rows>.extension-pack{height:306px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.more-rows>.extension-pack{height:326px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.one-row>.readme-content{height:calc(100% - 142px)}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.two-rows>.readme-content{height:calc(100% - 224px)}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.three-rows>.readme-content{height:calc(100% - 306px)}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme.more-rows>.readme-content{height:calc(100% - 326px)}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack>.footer,.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack>.header{border-bottom:1px solid hsla(0,0%,50%,.22);font-size:120%;font-weight:700;line-height:22px;margin-bottom:10px;margin-right:30px;padding:4px 6px}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack>.extension-pack-content{height:calc(100% - 60px)}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack>.extension-pack-content>.monaco-scrollable-element{height:100%}.extension-editor>.body>.content>.details>.readme-container>.extension-pack-readme>.extension-pack>.extension-pack-content>.monaco-scrollable-element>.subcontent{box-sizing:border-box;height:100%;overflow-y:scroll}.extension-editor>.body>.content>.monaco-scrollable-element>.subcontent{box-sizing:border-box;height:100%;overflow-y:scroll;padding:20px}.extension-editor>.body>.content table{border-collapse:separate;border-spacing:0;width:100%}.extension-editor>.body>.content details:not(:first-child){margin-top:20px}.extension-editor>.body>.content details>summary{border-bottom:1px solid hsla(0,0%,50%,.22);cursor:pointer;font-size:120%;font-weight:700;line-height:22px;margin-bottom:10px;padding:3px 6px}.extension-editor>.body>.content table tr:nth-child(odd){background-color:hsla(0,0%,51%,.04)}.extension-editor>.body>.content table tr:not(:first-child):hover{background-color:hsla(0,0%,50%,.15)}.extension-editor>.body>.content table td,.extension-editor>.body>.content table th{padding:2px 16px 2px 4px}.extension-editor>.body>.content table td{vertical-align:top}.extension-editor>.body>.content table td:last-child,.extension-editor>.body>.content table th:last-child{padding:2px 4px}.extension-editor>.body>.content table th{text-align:left;word-break:keep-all}.extension-editor>.body>.content table td>div,.extension-editor>.body>.content table td>div>p{margin:0;padding:0}.extension-editor code:not(:empty){background-color:hsla(0,0%,50%,.17);border-radius:4px;font-family:var(--monaco-monospace-font);font-size:90%;padding:1px 4px}.extension-editor>.body>.content table .colorBox{border:.1em solid #000;box-sizing:border-box;display:inline-block;height:.8em;margin:0 .2em;vertical-align:middle;width:.8em}.monaco-workbench.hc-black .extension-editor>.body>.content table .colorBox,.monaco-workbench.vs-dark .extension-editor>.body>.content table .colorBox{border-color:#eee}.extension-editor .subcontent .monaco-list-row .content .unknown-extension{line-height:62px}.extension-editor .subcontent .monaco-list-row .content .unknown-extension>.error-marker{background-color:#be1100;color:#ccc;font-size:11px;font-weight:700;padding:2px 4px}.extension-editor .subcontent .monaco-list-row .unknown-extension>.message{font-size:14px;font-weight:700;padding-left:10px}.extension-editor .subcontent .monaco-list-row .extension{align-items:center;display:flex}.extension-editor .subcontent .monaco-list-row .extension>.details{flex:1;overflow:hidden;padding-left:10px}.extension-editor .subcontent .monaco-list-row .extension>.details>.header{align-items:center;display:flex;line-height:19px;overflow:hidden}.extension-editor .subcontent .monaco-list-row .extension>.icon{height:40px;object-fit:contain;width:40px}.extension-editor .subcontent .monaco-list-row .extension>.details>.header>.name{font-size:16px;font-weight:700}.extension-editor .subcontent .monaco-list-row .extension>.details>.header>.name:hover{text-decoration:underline}.extension-editor .subcontent .monaco-list-row .extension>.details>.header>.identifier{background:hsla(0,0%,68%,.31);border-radius:4px;font-size:90%;margin-left:10px;opacity:.6;padding:0 4px}.extension-editor .subcontent .monaco-list-row .extension>.details>.footer{display:flex;line-height:19px;overflow:hidden;padding-top:5px}.extension-editor .subcontent .monaco-list-row .extension>.details>.footer>.author{font-size:90%;font-weight:600;opacity:.6}.extension-editor .extensions-grid-view{display:flex;flex-wrap:wrap}.extension-editor .extensions-grid-view>.extension-container{margin:0 10px 20px 0;width:350px}.extension-editor .extensions-grid-view .extension-list-item{cursor:default}.extension-editor .extensions-grid-view .extension-list-item>.details .header>.name{cursor:pointer}.extension-editor .extensions-grid-view .extension-list-item>.details>.header-container>.header>.install-count,.extension-editor .extensions-grid-view .extension-list-item>.details>.header-container>.header>.ratings,.extension-editor .extensions-grid-view .extension-list-item>.details>.header-container>.header>.version{display:none}.extension-editor .extensions-grid-view>.extension-container:focus>.extension-list-item>.details .header>.name,.extension-editor .extensions-grid-view>.extension-container:hover>.extension-list-item>.details .header>.name{text-decoration:underline}.monaco-workbench.vs .extension-editor .extensions-grid-view>.extension-container.disabled>.extension-list-item>.details>.header-container .codicon,.monaco-workbench.vs .extension-editor .extensions-grid-view>.extension-container.disabled>.extension-list-item>.icon-container>.icon,.monaco-workbench.vs-dark .extension-editor .extensions-grid-view>.extension-container.disabled>.extension-list-item>.details>.header-container .codicon,.monaco-workbench.vs-dark .extension-editor .extensions-grid-view>.extension-container.disabled>.extension-list-item>.icon-container>.icon{opacity:.5}.extension-editor>.body>.content .runtime-status .activation-details>.activation-element-entry>.activation-message-title{padding-right:10px}.extension-editor>.body>.content .runtime-status .message-entry{align-items:center;display:flex;margin:5px}.extension-editor>.body>.content .runtime-status .message-entry .codicon{padding-right:2px}.monaco-workbench .extension-editor>.header>.details>.recommendation .codicon{color:var(--vscode-extensionButton-prominentBackground)}.extension-editor .subcontent.feature-contributions{margin-top:14px}.extension-editor .subcontent.feature-contributions .features-list-container{height:100%}.extension-editor .subcontent.feature-contributions .features-list-container>.features-list-wrapper{height:100%;padding-left:24px}.extension-editor .subcontent.feature-contributions .features-list-container>.features-list-wrapper .monaco-list-row.extension-feature-list-item{align-items:center;display:flex;padding-left:10px;padding-right:10px}.extension-editor .subcontent.feature-contributions .features-list-container>.features-list-wrapper .monaco-list-row.extension-feature-list-item .extension-feature-label{flex:1}.extension-editor .subcontent.feature-contributions .features-list-container>.features-list-wrapper .monaco-list-row.extension-feature-list-item .extension-feature-disabled-label{font-size:12px;opacity:.8}.extension-editor .subcontent.feature-contributions .features-list-container>.features-list-wrapper .monaco-list-row.extension-feature-list-item .extension-feature-status{padding-left:5px}.extension-editor .subcontent.feature-contributions .feature-view-container{height:100%}.extension-editor .subcontent.feature-contributions .extension-feature-content .feature-body-content .feature-description{margin-bottom:10px}.extension-editor .subcontent.feature-contributions .extension-feature-content{box-sizing:border-box;height:100%;padding-left:24px}.extension-editor .subcontent.feature-contributions .extension-feature-content .feature-header{align-items:center;display:flex;line-height:20px;margin:0 10px 10px 0}.extension-editor .subcontent.feature-contributions .extension-feature-content .feature-header>.feature-title{box-sizing:border-box;display:inline-block;flex:1;font-size:26px;font-weight:600;height:100%;margin:0;overflow:hidden;padding:10px 10px 10px 0;position:relative;text-overflow:ellipsis}.extension-editor .subcontent.feature-contributions .feature-view-container .extension-feature-content .feature-body{height:calc(100% - 50px)}.extension-editor .subcontent.feature-contributions .feature-view-container .extension-feature-content .monaco-scrollable-element{height:100%}.extension-editor .subcontent.feature-contributions .feature-view-container .extension-feature-content .feature-body .feature-body-content{box-sizing:border-box;height:100%;overflow-y:scroll}.extension-editor .subcontent.feature-contributions .extension-feature-content .feature-body .feature-body-content .feature-status{align-items:center;display:flex}.extension-editor .subcontent.feature-contributions .extension-feature-content .feature-body .feature-body-content .feature-content.markdown .codicon{vertical-align:sub}";
4
4
  n(css,{});
5
5
 
6
6
  export { css, css as default };
@@ -0,0 +1,234 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { Emitter } from 'vscode/vscode/vs/base/common/event';
3
+ import { ExtensionIdentifier } from 'vscode/vscode/vs/platform/extensions/common/extensions';
4
+ import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
5
+ import { Extensions } from 'vscode/vscode/vs/workbench/services/extensionManagement/common/extensionFeatures';
6
+ import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
7
+ import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
8
+ import { isBoolean } from 'vscode/vscode/vs/base/common/types';
9
+ import '../../../../../../../override/vs/platform/dialogs/common/dialogs.js';
10
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
11
+ import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
12
+ import { distinct } from 'vscode/vscode/vs/base/common/arrays';
13
+ import { equals } from 'vscode/vscode/vs/base/common/objects';
14
+ import { IDialogService } from 'vscode/vscode/vs/platform/dialogs/common/dialogs';
15
+
16
+ const FEATURES_STATE_KEY = 'extension.features.state';
17
+ let ExtensionFeaturesManagementService = class ExtensionFeaturesManagementService extends Disposable {
18
+ constructor(storageService, dialogService, extensionService) {
19
+ super();
20
+ this.storageService = storageService;
21
+ this.dialogService = dialogService;
22
+ this.extensionService = extensionService;
23
+ this._onDidChangeEnablement = this._register(( new Emitter()));
24
+ this.onDidChangeEnablement = this._onDidChangeEnablement.event;
25
+ this._onDidChangeAccessData = this._register(( new Emitter()));
26
+ this.onDidChangeAccessData = this._onDidChangeAccessData.event;
27
+ this.extensionFeaturesState = ( new Map());
28
+ this.registry = ( Registry.as(Extensions.ExtensionFeaturesRegistry));
29
+ this.extensionFeaturesState = this.loadState();
30
+ this._register(storageService.onDidChangeValue(0 , FEATURES_STATE_KEY, this._store)(e => this.onDidStorageChange(e)));
31
+ }
32
+ isEnabled(extension, featureId) {
33
+ const feature = this.registry.getExtensionFeature(featureId);
34
+ if (!feature) {
35
+ return false;
36
+ }
37
+ const isDisabled = this.getExtensionFeatureState(extension, featureId)?.disabled;
38
+ if (isBoolean(isDisabled)) {
39
+ return !isDisabled;
40
+ }
41
+ const defaultExtensionAccess = feature.access.extensionsList?.[extension.value];
42
+ if (isBoolean(defaultExtensionAccess)) {
43
+ return defaultExtensionAccess;
44
+ }
45
+ return !feature.access.requireUserConsent;
46
+ }
47
+ setEnablement(extension, featureId, enabled) {
48
+ const feature = this.registry.getExtensionFeature(featureId);
49
+ if (!feature) {
50
+ throw new Error(`No feature with id '${featureId}'`);
51
+ }
52
+ const featureState = this.getAndSetIfNotExistsExtensionFeatureState(extension, featureId);
53
+ if (featureState.disabled !== !enabled) {
54
+ featureState.disabled = !enabled;
55
+ this._onDidChangeEnablement.fire({ extension, featureId, enabled });
56
+ this.saveState();
57
+ }
58
+ }
59
+ getEnablementData(featureId) {
60
+ const result = [];
61
+ const feature = this.registry.getExtensionFeature(featureId);
62
+ if (feature) {
63
+ for (const [extension, featuresStateMap] of this.extensionFeaturesState) {
64
+ const featureState = featuresStateMap.get(featureId);
65
+ if (featureState?.disabled !== undefined) {
66
+ result.push({ extension: ( new ExtensionIdentifier(extension)), enabled: !featureState.disabled });
67
+ }
68
+ }
69
+ }
70
+ return result;
71
+ }
72
+ async getAccess(extension, featureId, justification) {
73
+ const feature = this.registry.getExtensionFeature(featureId);
74
+ if (!feature) {
75
+ return false;
76
+ }
77
+ const featureState = this.getAndSetIfNotExistsExtensionFeatureState(extension, featureId);
78
+ if (featureState.disabled) {
79
+ return false;
80
+ }
81
+ if (featureState.disabled === undefined) {
82
+ let enabled = true;
83
+ if (feature.access.requireUserConsent) {
84
+ const extensionDescription = this.extensionService.extensions.find(e => ExtensionIdentifier.equals(e.identifier, extension));
85
+ const confirmationResult = await this.dialogService.confirm({
86
+ title: ( localizeWithPath(
87
+ 'vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService',
88
+ 'accessExtensionFeature',
89
+ "Access '{0}' Feature",
90
+ feature.label
91
+ )),
92
+ message: ( localizeWithPath(
93
+ 'vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService',
94
+ 'accessExtensionFeatureMessage',
95
+ "'{0}' extension would like to access the '{1}' feature.",
96
+ extensionDescription?.displayName ?? extension.value,
97
+ feature.label
98
+ )),
99
+ detail: justification ?? feature.description,
100
+ custom: true,
101
+ primaryButton: ( localizeWithPath(
102
+ 'vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService',
103
+ 'allow',
104
+ "Allow"
105
+ )),
106
+ cancelButton: ( localizeWithPath(
107
+ 'vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService',
108
+ 'disallow',
109
+ "Don't Allow"
110
+ )),
111
+ });
112
+ enabled = confirmationResult.confirmed;
113
+ }
114
+ this.setEnablement(extension, featureId, enabled);
115
+ if (!enabled) {
116
+ return false;
117
+ }
118
+ }
119
+ featureState.accessData.current = {
120
+ count: featureState.accessData.current?.count ? featureState.accessData.current?.count + 1 : 1,
121
+ lastAccessed: Date.now(),
122
+ status: featureState.accessData.current?.status
123
+ };
124
+ featureState.accessData.totalCount = featureState.accessData.totalCount + 1;
125
+ this.saveState();
126
+ this._onDidChangeAccessData.fire({ extension, featureId, accessData: featureState.accessData });
127
+ return true;
128
+ }
129
+ getAccessData(extension, featureId) {
130
+ const feature = this.registry.getExtensionFeature(featureId);
131
+ if (!feature) {
132
+ return;
133
+ }
134
+ return this.getExtensionFeatureState(extension, featureId)?.accessData;
135
+ }
136
+ setStatus(extension, featureId, status) {
137
+ const feature = this.registry.getExtensionFeature(featureId);
138
+ if (!feature) {
139
+ throw new Error(`No feature with id '${featureId}'`);
140
+ }
141
+ const featureState = this.getAndSetIfNotExistsExtensionFeatureState(extension, featureId);
142
+ featureState.accessData.current = {
143
+ count: featureState.accessData.current?.count ?? 0,
144
+ lastAccessed: featureState.accessData.current?.lastAccessed ?? 0,
145
+ status
146
+ };
147
+ this._onDidChangeAccessData.fire({ extension, featureId, accessData: this.getAccessData(extension, featureId) });
148
+ }
149
+ getExtensionFeatureState(extension, featureId) {
150
+ return this.extensionFeaturesState.get(extension.value)?.get(featureId);
151
+ }
152
+ getAndSetIfNotExistsExtensionFeatureState(extension, featureId) {
153
+ let extensionState = this.extensionFeaturesState.get(extension.value);
154
+ if (!extensionState) {
155
+ extensionState = ( new Map());
156
+ this.extensionFeaturesState.set(extension.value, extensionState);
157
+ }
158
+ let featureState = extensionState.get(featureId);
159
+ if (!featureState) {
160
+ featureState = { accessData: { totalCount: 0 } };
161
+ extensionState.set(featureId, featureState);
162
+ }
163
+ return featureState;
164
+ }
165
+ onDidStorageChange(e) {
166
+ if (e.external) {
167
+ const oldState = this.extensionFeaturesState;
168
+ this.extensionFeaturesState = this.loadState();
169
+ for (const extensionId of distinct([...( oldState.keys()), ...( this.extensionFeaturesState.keys())])) {
170
+ const extension = ( new ExtensionIdentifier(extensionId));
171
+ const oldExtensionFeaturesState = oldState.get(extensionId);
172
+ const newExtensionFeaturesState = this.extensionFeaturesState.get(extensionId);
173
+ for (const featureId of distinct([...(oldExtensionFeaturesState?.keys() ?? []), ...(newExtensionFeaturesState?.keys() ?? [])])) {
174
+ const isEnabled = this.isEnabled(extension, featureId);
175
+ const wasEnabled = !oldExtensionFeaturesState?.get(featureId)?.disabled;
176
+ if (isEnabled !== wasEnabled) {
177
+ this._onDidChangeEnablement.fire({ extension, featureId, enabled: isEnabled });
178
+ }
179
+ const newAccessData = this.getAccessData(extension, featureId);
180
+ const oldAccessData = oldExtensionFeaturesState?.get(featureId)?.accessData;
181
+ if (!equals(newAccessData, oldAccessData)) {
182
+ this._onDidChangeAccessData.fire({ extension, featureId, accessData: newAccessData ?? { totalCount: 0 } });
183
+ }
184
+ }
185
+ }
186
+ }
187
+ }
188
+ loadState() {
189
+ let data = {};
190
+ const raw = this.storageService.get(FEATURES_STATE_KEY, 0 , '{}');
191
+ try {
192
+ data = JSON.parse(raw);
193
+ }
194
+ catch (e) {
195
+ }
196
+ const result = ( new Map());
197
+ for (const extensionId in data) {
198
+ const extensionFeatureState = ( new Map());
199
+ const extensionFeatures = data[extensionId];
200
+ for (const featureId in extensionFeatures) {
201
+ const extensionFeature = extensionFeatures[featureId];
202
+ extensionFeatureState.set(featureId, {
203
+ disabled: extensionFeature.disabled,
204
+ accessData: {
205
+ totalCount: extensionFeature.accessCount
206
+ }
207
+ });
208
+ }
209
+ result.set(extensionId, extensionFeatureState);
210
+ }
211
+ return result;
212
+ }
213
+ saveState() {
214
+ const data = {};
215
+ this.extensionFeaturesState.forEach((extensionState, extensionId) => {
216
+ const extensionFeatures = {};
217
+ extensionState.forEach((featureState, featureId) => {
218
+ extensionFeatures[featureId] = {
219
+ disabled: featureState.disabled,
220
+ accessCount: featureState.accessData.totalCount
221
+ };
222
+ });
223
+ data[extensionId] = extensionFeatures;
224
+ });
225
+ this.storageService.store(FEATURES_STATE_KEY, JSON.stringify(data), 0 , 0 );
226
+ }
227
+ };
228
+ ExtensionFeaturesManagementService = ( __decorate([
229
+ ( __param(0, IStorageService)),
230
+ ( __param(1, IDialogService)),
231
+ ( __param(2, IExtensionService))
232
+ ], ExtensionFeaturesManagementService));
233
+
234
+ export { ExtensionFeaturesManagementService };
@@ -78,8 +78,8 @@ let WebExtensionManagementService = class WebExtensionManagementService extends
78
78
  async install(location, options = {}) {
79
79
  this.logService.trace('ExtensionManagementService#install', ( location.toString()));
80
80
  const manifest = await this.webExtensionsScannerService.scanExtensionManifest(location);
81
- if (!manifest) {
82
- throw new Error(`Cannot find packageJSON from the location ${location.toString()}`);
81
+ if (!manifest || !manifest.name || !manifest.version) {
82
+ throw new Error(`Cannot find a valid extension from the location ${location.toString()}`);
83
83
  }
84
84
  const result = await this.installExtensions([{ manifest, extension: location, options }]);
85
85
  if (result[0]?.local) {