@codingame/monaco-vscode-update-service-override 2.2.0-next.1

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.
@@ -0,0 +1,3 @@
1
+ var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=( Object.keys(r.attributes)),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
2
+
3
+ export { n as default };
@@ -0,0 +1,11 @@
1
+ function __decorate(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ }
7
+ function __param(paramIndex, decorator) {
8
+ return function (target, key) { decorator(target, key, paramIndex); }
9
+ }
10
+
11
+ export { __decorate, __param };
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { default } from './update.js';
package/index.js ADDED
@@ -0,0 +1 @@
1
+ export { default } from './update.js';
@@ -0,0 +1,8 @@
1
+ var ConfirmResult;
2
+ ( (function(ConfirmResult) {
3
+ ConfirmResult[ConfirmResult["SAVE"] = 0] = "SAVE";
4
+ ConfirmResult[ConfirmResult["DONT_SAVE"] = 1] = "DONT_SAVE";
5
+ ConfirmResult[ConfirmResult["CANCEL"] = 2] = "CANCEL";
6
+ })(ConfirmResult || (ConfirmResult = {})));
7
+
8
+ export { ConfirmResult };
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@codingame/monaco-vscode-update-service-override",
3
+ "version": "2.2.0-next.1",
4
+ "keywords": [],
5
+ "author": {
6
+ "name": "CodinGame",
7
+ "url": "http://www.codingame.com"
8
+ },
9
+ "license": "MIT",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git@github.com:CodinGame/monaco-vscode-api.git"
13
+ },
14
+ "type": "module",
15
+ "private": false,
16
+ "description": "VSCode public API plugged on the monaco editor - update service-override",
17
+ "main": "index.js",
18
+ "module": "index.js",
19
+ "types": "index.d.ts",
20
+ "dependencies": {
21
+ "vscode": "npm:@codingame/monaco-vscode-api@2.2.0-next.1",
22
+ "vscode-marked": "npm:marked@=3.0.2"
23
+ }
24
+ }
package/update.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { IEditorOverrideServices } from 'vscode/vscode/vs/editor/standalone/browser/standaloneServices';
2
+
3
+ declare function getServiceOverride(): IEditorOverrideServices;
4
+
5
+ export { getServiceOverride as default };
package/update.js ADDED
@@ -0,0 +1,7 @@
1
+ import './vscode/src/vs/workbench/contrib/update/browser/update.contribution.js';
2
+
3
+ function getServiceOverride() {
4
+ return {};
5
+ }
6
+
7
+ export { getServiceOverride as default };
@@ -0,0 +1,99 @@
1
+ import { isWindows, isWeb } from 'vscode/vscode/vs/base/common/platform';
2
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
3
+ import { Extensions } from 'vscode/vscode/vs/platform/configuration/common/configurationRegistry';
4
+ import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
5
+
6
+ const configurationRegistry = ( Registry.as(Extensions.Configuration));
7
+ configurationRegistry.registerConfiguration({
8
+ id: 'update',
9
+ order: 15,
10
+ title: ( localizeWithPath(
11
+ 'vs/platform/update/common/update.config.contribution',
12
+ 'updateConfigurationTitle',
13
+ "Update"
14
+ )),
15
+ type: 'object',
16
+ properties: {
17
+ 'update.mode': {
18
+ type: 'string',
19
+ enum: ['none', 'manual', 'start', 'default'],
20
+ default: 'default',
21
+ scope: 1 ,
22
+ description: ( localizeWithPath(
23
+ 'vs/platform/update/common/update.config.contribution',
24
+ 'updateMode',
25
+ "Configure whether you receive automatic updates. Requires a restart after change. The updates are fetched from a Microsoft online service."
26
+ )),
27
+ tags: ['usesOnlineServices'],
28
+ enumDescriptions: [
29
+ ( localizeWithPath(
30
+ 'vs/platform/update/common/update.config.contribution',
31
+ 'none',
32
+ "Disable updates."
33
+ )),
34
+ ( localizeWithPath(
35
+ 'vs/platform/update/common/update.config.contribution',
36
+ 'manual',
37
+ "Disable automatic background update checks. Updates will be available if you manually check for updates."
38
+ )),
39
+ ( localizeWithPath(
40
+ 'vs/platform/update/common/update.config.contribution',
41
+ 'start',
42
+ "Check for updates only on startup. Disable automatic background update checks."
43
+ )),
44
+ ( localizeWithPath(
45
+ 'vs/platform/update/common/update.config.contribution',
46
+ 'default',
47
+ "Enable automatic update checks. Code will check for updates automatically and periodically."
48
+ ))
49
+ ],
50
+ policy: {
51
+ name: 'UpdateMode',
52
+ minimumVersion: '1.67',
53
+ }
54
+ },
55
+ 'update.channel': {
56
+ type: 'string',
57
+ default: 'default',
58
+ scope: 1 ,
59
+ description: ( localizeWithPath(
60
+ 'vs/platform/update/common/update.config.contribution',
61
+ 'updateMode',
62
+ "Configure whether you receive automatic updates. Requires a restart after change. The updates are fetched from a Microsoft online service."
63
+ )),
64
+ deprecationMessage: ( localizeWithPath(
65
+ 'vs/platform/update/common/update.config.contribution',
66
+ 'deprecated',
67
+ "This setting is deprecated, please use '{0}' instead.",
68
+ 'update.mode'
69
+ ))
70
+ },
71
+ 'update.enableWindowsBackgroundUpdates': {
72
+ type: 'boolean',
73
+ default: true,
74
+ scope: 1 ,
75
+ title: ( localizeWithPath(
76
+ 'vs/platform/update/common/update.config.contribution',
77
+ 'enableWindowsBackgroundUpdatesTitle',
78
+ "Enable Background Updates on Windows"
79
+ )),
80
+ description: ( localizeWithPath(
81
+ 'vs/platform/update/common/update.config.contribution',
82
+ 'enableWindowsBackgroundUpdates',
83
+ "Enable to download and install new VS Code versions in the background on Windows."
84
+ )),
85
+ included: isWindows && !isWeb
86
+ },
87
+ 'update.showReleaseNotes': {
88
+ type: 'boolean',
89
+ default: true,
90
+ scope: 1 ,
91
+ description: ( localizeWithPath(
92
+ 'vs/platform/update/common/update.config.contribution',
93
+ 'showReleaseNotes',
94
+ "Show Release Notes after an update. The Release Notes are fetched from a Microsoft online service."
95
+ )),
96
+ tags: ['usesOnlineServices']
97
+ }
98
+ }
99
+ });
@@ -0,0 +1,6 @@
1
+ import n from '../../../../../../../../external/rollup-plugin-styles/dist/runtime/inject-css.js';
2
+
3
+ var css = ".file-icons-enabled .show-file-icons .webview-vs_code_release_notes-name-file-icon.file-icon:before{background-image:url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiPjxwYXRoIGQ9Ik0xMDI0IDEwMjRIMFYwaDEwMjR2MTAyNHoiIHN0eWxlPSJmaWxsOiNmNmY2ZjY7ZmlsbC1vcGFjaXR5OjAiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTAyNCA4NS4zMzN2ODUzLjMzM0gwVjg1LjMzM2gxMDI0eiIgc3R5bGU9ImZpbGw6I2ZmZiIvPjxwYXRoIGQ9Ik0wIDg1LjMzM2gyOTguNjY3djg1My4zMzNIMFY4NS4zMzN6bTEwMjQgMHY4NTMuMzMzSDM4NFY4NS4zMzNoNjQwem0tNTU0LjY2NyAxNjBoMzQxLjMzM3YtNjRINDY5LjMzM3Y2NHptMzQxLjMzNCA1MzMuMzM0SDQ2OS4zMzN2NjRoMzQxLjMzM2wuMDAxLTY0em0xMjgtMTQ5LjMzNEg1OTcuMzMzdjY0aDM0MS4zMzNsLjAwMS02NHptMC0xNDkuMzMzSDU5Ny4zMzN2NjRoMzQxLjMzM2wuMDAxLTY0em0wLTE0OS4zMzNINTk3LjMzM3Y2NGgzNDEuMzMzbC4wMDEtNjR6IiBzdHlsZT0iZmlsbDojMTY3YWJmIi8+PC9zdmc+\");content:\" \"}";
4
+ n(css,{});
5
+
6
+ export { css, css as default };
@@ -0,0 +1,283 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import './media/releasenoteseditor.css.js';
3
+ import { CancellationToken } from 'vscode/vscode/vs/base/common/cancellation';
4
+ import { onUnexpectedError } from 'vscode/vscode/vs/base/common/errors';
5
+ import { escapeMarkdownSyntaxTokens } from 'vscode/vscode/vs/base/common/htmlContent';
6
+ import { KeybindingParser } from 'vscode/vscode/vs/base/common/keybindingParser';
7
+ import { escape } from 'vscode/vscode/vs/base/common/strings';
8
+ import { URI } from 'vscode/vscode/vs/base/common/uri';
9
+ import { generateUuid } from 'vscode/vscode/vs/base/common/uuid';
10
+ import { TokenizationRegistry } from 'vscode/vscode/vs/editor/common/languages';
11
+ import { generateTokensCSSForColorMap } from 'vscode/vscode/vs/editor/common/languages/supports/tokenization';
12
+ import { ILanguageService } from 'vscode/vscode/vs/editor/common/languages/language';
13
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
14
+ import { IEnvironmentService } from 'vscode/vscode/vs/platform/environment/common/environment';
15
+ import { IKeybindingService } from 'vscode/vscode/vs/platform/keybinding/common/keybinding';
16
+ import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
17
+ import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService';
18
+ import { IRequestService, asTextOrError } from 'vscode/vscode/vs/platform/request/common/request';
19
+ import { renderMarkdownDocument, DEFAULT_MARKDOWN_STYLES } from 'vscode/vscode/vs/workbench/contrib/markdown/browser/markdownDocumentRenderer';
20
+ import { IWebviewWorkbenchService } from 'vscode/vscode/vs/workbench/contrib/webviewPanel/browser/webviewWorkbenchService';
21
+ import { IEditorGroupsService } from 'vscode/vscode/vs/workbench/services/editor/common/editorGroupsService';
22
+ import { ACTIVE_GROUP, IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
23
+ import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
24
+ import { supportsTelemetry, getTelemetryLevel } from 'vscode/vscode/vs/platform/telemetry/common/telemetryUtils';
25
+ import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
26
+ import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
27
+
28
+ let ReleaseNotesManager = class ReleaseNotesManager {
29
+ constructor(_environmentService, _keybindingService, _languageService, _openerService, _requestService, _configurationService, _editorService, _editorGroupService, _webviewWorkbenchService, _extensionService, _productService) {
30
+ this._environmentService = _environmentService;
31
+ this._keybindingService = _keybindingService;
32
+ this._languageService = _languageService;
33
+ this._openerService = _openerService;
34
+ this._requestService = _requestService;
35
+ this._configurationService = _configurationService;
36
+ this._editorService = _editorService;
37
+ this._editorGroupService = _editorGroupService;
38
+ this._webviewWorkbenchService = _webviewWorkbenchService;
39
+ this._extensionService = _extensionService;
40
+ this._productService = _productService;
41
+ this._releaseNotesCache = ( new Map());
42
+ this._currentReleaseNotes = undefined;
43
+ this.disposables = ( new DisposableStore());
44
+ TokenizationRegistry.onDidChange(async () => {
45
+ if (!this._currentReleaseNotes || !this._lastText) {
46
+ return;
47
+ }
48
+ const html = await this.renderBody(this._lastText);
49
+ if (this._currentReleaseNotes) {
50
+ this._currentReleaseNotes.webview.setHtml(html);
51
+ }
52
+ });
53
+ _configurationService.onDidChangeConfiguration(this.onDidChangeConfiguration, this, this.disposables);
54
+ _webviewWorkbenchService.onDidChangeActiveWebviewEditor(this.onDidChangeActiveWebviewEditor, this, this.disposables);
55
+ }
56
+ async show(version) {
57
+ const releaseNoteText = await this.loadReleaseNotes(version);
58
+ this._lastText = releaseNoteText;
59
+ const html = await this.renderBody(releaseNoteText);
60
+ const title = ( localizeWithPath(
61
+ 'vs/workbench/contrib/update/browser/releaseNotesEditor',
62
+ 'releaseNotesInputName',
63
+ "Release Notes: {0}",
64
+ version
65
+ ));
66
+ const activeEditorPane = this._editorService.activeEditorPane;
67
+ if (this._currentReleaseNotes) {
68
+ this._currentReleaseNotes.setName(title);
69
+ this._currentReleaseNotes.webview.setHtml(html);
70
+ this._webviewWorkbenchService.revealWebview(this._currentReleaseNotes, activeEditorPane ? activeEditorPane.group : this._editorGroupService.activeGroup, false);
71
+ }
72
+ else {
73
+ this._currentReleaseNotes = this._webviewWorkbenchService.openWebview({
74
+ title,
75
+ options: {
76
+ tryRestoreScrollPosition: true,
77
+ enableFindWidget: true,
78
+ disableServiceWorker: true,
79
+ },
80
+ contentOptions: {
81
+ localResourceRoots: [],
82
+ allowScripts: true
83
+ },
84
+ extension: undefined
85
+ }, 'releaseNotes', title, { group: ACTIVE_GROUP, preserveFocus: false });
86
+ this._currentReleaseNotes.webview.onDidClickLink(uri => this.onDidClickLink(( URI.parse(uri))));
87
+ const disposables = ( new DisposableStore());
88
+ disposables.add(this._currentReleaseNotes.webview.onMessage(e => {
89
+ if (e.message.type === 'showReleaseNotes') {
90
+ this._configurationService.updateValue('update.showReleaseNotes', e.message.value);
91
+ }
92
+ }));
93
+ disposables.add(this._currentReleaseNotes.onWillDispose(() => {
94
+ disposables.dispose();
95
+ this._currentReleaseNotes = undefined;
96
+ }));
97
+ this._currentReleaseNotes.webview.setHtml(html);
98
+ }
99
+ return true;
100
+ }
101
+ async loadReleaseNotes(version) {
102
+ const match = /^(\d+\.\d+)\./.exec(version);
103
+ if (!match) {
104
+ throw new Error('not found');
105
+ }
106
+ const versionLabel = match[1].replace(/\./g, '_');
107
+ const baseUrl = 'https://code.visualstudio.com/raw';
108
+ const url = `${baseUrl}/v${versionLabel}.md`;
109
+ const unassigned = ( localizeWithPath(
110
+ 'vs/workbench/contrib/update/browser/releaseNotesEditor',
111
+ 'unassigned',
112
+ "unassigned"
113
+ ));
114
+ const escapeMdHtml = (text) => {
115
+ return escape(text).replace(/\\/g, '\\\\');
116
+ };
117
+ const patchKeybindings = (text) => {
118
+ const kb = (match, kb) => {
119
+ const keybinding = this._keybindingService.lookupKeybinding(kb);
120
+ if (!keybinding) {
121
+ return unassigned;
122
+ }
123
+ return keybinding.getLabel() || unassigned;
124
+ };
125
+ const kbstyle = (match, kb) => {
126
+ const keybinding = KeybindingParser.parseKeybinding(kb);
127
+ if (!keybinding) {
128
+ return unassigned;
129
+ }
130
+ const resolvedKeybindings = this._keybindingService.resolveKeybinding(keybinding);
131
+ if (resolvedKeybindings.length === 0) {
132
+ return unassigned;
133
+ }
134
+ return resolvedKeybindings[0].getLabel() || unassigned;
135
+ };
136
+ const kbCode = (match, binding) => {
137
+ const resolved = kb(match, binding);
138
+ return resolved ? `<code title="${binding}">${escapeMdHtml(resolved)}</code>` : resolved;
139
+ };
140
+ const kbstyleCode = (match, binding) => {
141
+ const resolved = kbstyle(match, binding);
142
+ return resolved ? `<code title="${binding}">${escapeMdHtml(resolved)}</code>` : resolved;
143
+ };
144
+ return text
145
+ .replace(/`kb\(([a-z.\d\-]+)\)`/gi, kbCode)
146
+ .replace(/`kbstyle\(([^\)]+)\)`/gi, kbstyleCode)
147
+ .replace(/kb\(([a-z.\d\-]+)\)/gi, (match, binding) => escapeMarkdownSyntaxTokens(kb(match, binding)))
148
+ .replace(/kbstyle\(([^\)]+)\)/gi, (match, binding) => escapeMarkdownSyntaxTokens(kbstyle(match, binding)));
149
+ };
150
+ const fetchReleaseNotes = async () => {
151
+ let text;
152
+ try {
153
+ text = await asTextOrError(await this._requestService.request({ url }, CancellationToken.None));
154
+ }
155
+ catch {
156
+ throw new Error('Failed to fetch release notes');
157
+ }
158
+ if (!text || !/^#\s/.test(text)) {
159
+ throw new Error('Invalid release notes');
160
+ }
161
+ return patchKeybindings(text);
162
+ };
163
+ if (!( this._releaseNotesCache.has(version))) {
164
+ this._releaseNotesCache.set(version, (async () => {
165
+ try {
166
+ return await fetchReleaseNotes();
167
+ }
168
+ catch (err) {
169
+ this._releaseNotesCache.delete(version);
170
+ throw err;
171
+ }
172
+ })());
173
+ }
174
+ return this._releaseNotesCache.get(version);
175
+ }
176
+ onDidClickLink(uri) {
177
+ this.addGAParameters(uri, 'ReleaseNotes')
178
+ .then(updated => this._openerService.open(updated))
179
+ .then(undefined, onUnexpectedError);
180
+ }
181
+ async addGAParameters(uri, origin, experiment = '1') {
182
+ if (supportsTelemetry(this._productService, this._environmentService) && getTelemetryLevel(this._configurationService) === 3 ) {
183
+ if (uri.scheme === 'https' && uri.authority === 'code.visualstudio.com') {
184
+ return uri.with({ query: `${uri.query ? uri.query + '&' : ''}utm_source=VsCode&utm_medium=${encodeURIComponent(origin)}&utm_content=${encodeURIComponent(experiment)}` });
185
+ }
186
+ }
187
+ return uri;
188
+ }
189
+ async renderBody(text) {
190
+ const nonce = generateUuid();
191
+ const content = await renderMarkdownDocument(text, this._extensionService, this._languageService, false);
192
+ const colorMap = TokenizationRegistry.getColorMap();
193
+ const css = colorMap ? generateTokensCSSForColorMap(colorMap) : '';
194
+ const showReleaseNotes = Boolean(this._configurationService.getValue('update.showReleaseNotes'));
195
+ return `<!DOCTYPE html>
196
+ <html>
197
+ <head>
198
+ <base href="https://code.visualstudio.com/raw/">
199
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
200
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src https: data:; media-src https:; style-src 'nonce-${nonce}' https://code.visualstudio.com; script-src 'nonce-${nonce}';">
201
+ <style nonce="${nonce}">
202
+ ${DEFAULT_MARKDOWN_STYLES}
203
+ ${css}
204
+ header { display: flex; align-items: center; padding-top: 1em; }
205
+ </style>
206
+ </head>
207
+ <body>
208
+ ${content}
209
+ <script nonce="${nonce}">
210
+ const vscode = acquireVsCodeApi();
211
+ const container = document.createElement('p');
212
+ container.style.display = 'flex';
213
+ container.style.alignItems = 'center';
214
+
215
+ const input = document.createElement('input');
216
+ input.type = 'checkbox';
217
+ input.id = 'showReleaseNotes';
218
+ input.checked = ${showReleaseNotes};
219
+ container.appendChild(input);
220
+
221
+ const label = document.createElement('label');
222
+ label.htmlFor = 'showReleaseNotes';
223
+ label.textContent = '${( localizeWithPath(
224
+ 'vs/workbench/contrib/update/browser/releaseNotesEditor',
225
+ 'showOnUpdate',
226
+ "Show release notes after an update"
227
+ ))}';
228
+ container.appendChild(label);
229
+
230
+ const beforeElement = document.querySelector("body > h1")?.nextElementSibling;
231
+ if (beforeElement) {
232
+ document.body.insertBefore(container, beforeElement);
233
+ } else {
234
+ document.body.appendChild(container);
235
+ }
236
+
237
+ window.addEventListener('message', event => {
238
+ if (event.data.type === 'showReleaseNotes') {
239
+ input.checked = event.data.value;
240
+ }
241
+ });
242
+
243
+ input.addEventListener('change', event => {
244
+ vscode.postMessage({ type: 'showReleaseNotes', value: input.checked }, '*');
245
+ });
246
+ </script>
247
+ </body>
248
+ </html>`;
249
+ }
250
+ onDidChangeConfiguration(e) {
251
+ if (e.affectsConfiguration('update.showReleaseNotes')) {
252
+ this.updateWebview();
253
+ }
254
+ }
255
+ onDidChangeActiveWebviewEditor(input) {
256
+ if (input && input === this._currentReleaseNotes) {
257
+ this.updateWebview();
258
+ }
259
+ }
260
+ updateWebview() {
261
+ if (this._currentReleaseNotes) {
262
+ this._currentReleaseNotes.webview.postMessage({
263
+ type: 'showReleaseNotes',
264
+ value: this._configurationService.getValue('update.showReleaseNotes')
265
+ });
266
+ }
267
+ }
268
+ };
269
+ ReleaseNotesManager = ( __decorate([
270
+ ( __param(0, IEnvironmentService)),
271
+ ( __param(1, IKeybindingService)),
272
+ ( __param(2, ILanguageService)),
273
+ ( __param(3, IOpenerService)),
274
+ ( __param(4, IRequestService)),
275
+ ( __param(5, IConfigurationService)),
276
+ ( __param(6, IEditorService)),
277
+ ( __param(7, IEditorGroupsService)),
278
+ ( __param(8, IWebviewWorkbenchService)),
279
+ ( __param(9, IExtensionService)),
280
+ ( __param(10, IProductService))
281
+ ], ReleaseNotesManager));
282
+
283
+ export { ReleaseNotesManager };