@theia/plugin-ext 1.75.0-next.25 → 1.75.0-next.29

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 (73) hide show
  1. package/lib/common/errors.d.ts +1 -14
  2. package/lib/common/errors.d.ts.map +1 -1
  3. package/lib/common/errors.js +3 -16
  4. package/lib/common/errors.js.map +1 -1
  5. package/lib/common/plugin-protocol.d.ts +44 -719
  6. package/lib/common/plugin-protocol.d.ts.map +1 -1
  7. package/lib/common/plugin-protocol.js +11 -34
  8. package/lib/common/plugin-protocol.js.map +1 -1
  9. package/lib/hosted/browser/worker/plugin-manifest-loader.d.ts.map +1 -1
  10. package/lib/hosted/browser/worker/plugin-manifest-loader.js +5 -36
  11. package/lib/hosted/browser/worker/plugin-manifest-loader.js.map +1 -1
  12. package/lib/hosted/browser/worker/worker-main.js +2 -1
  13. package/lib/hosted/browser/worker/worker-main.js.map +1 -1
  14. package/lib/hosted/node/hosted-plugin-localization-service.d.ts.map +1 -1
  15. package/lib/hosted/node/hosted-plugin-localization-service.js +4 -68
  16. package/lib/hosted/node/hosted-plugin-localization-service.js.map +1 -1
  17. package/lib/hosted/node/plugin-host-rpc.d.ts.map +1 -1
  18. package/lib/hosted/node/plugin-host-rpc.js +2 -2
  19. package/lib/hosted/node/plugin-host-rpc.js.map +1 -1
  20. package/lib/hosted/node/plugin-reader.d.ts.map +1 -1
  21. package/lib/hosted/node/plugin-reader.js +4 -3
  22. package/lib/hosted/node/plugin-reader.js.map +1 -1
  23. package/lib/hosted/node/scanners/grammars-reader.d.ts +3 -2
  24. package/lib/hosted/node/scanners/grammars-reader.d.ts.map +1 -1
  25. package/lib/hosted/node/scanners/grammars-reader.js +5 -23
  26. package/lib/hosted/node/scanners/grammars-reader.js.map +1 -1
  27. package/lib/hosted/node/scanners/scanner-theia.d.ts +37 -72
  28. package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
  29. package/lib/hosted/node/scanners/scanner-theia.js +114 -854
  30. package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
  31. package/lib/hosted/node/scanners/scanner-theia.spec.js +4 -4
  32. package/lib/hosted/node/scanners/scanner-theia.spec.js.map +1 -1
  33. package/lib/main/browser/plugin-contribution-handler.js +1 -1
  34. package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
  35. package/lib/main/browser/plugin-icon-service.d.ts.map +1 -1
  36. package/lib/main/browser/plugin-icon-service.js +2 -1
  37. package/lib/main/browser/plugin-icon-service.js.map +1 -1
  38. package/lib/main/browser/plugin-icon-theme-service.d.ts.map +1 -1
  39. package/lib/main/browser/plugin-icon-theme-service.js +2 -1
  40. package/lib/main/browser/plugin-icon-theme-service.js.map +1 -1
  41. package/lib/main/browser/plugin-shared-style.d.ts.map +1 -1
  42. package/lib/main/browser/plugin-shared-style.js +2 -1
  43. package/lib/main/browser/plugin-shared-style.js.map +1 -1
  44. package/package.json +31 -30
  45. package/src/common/errors.ts +1 -25
  46. package/src/common/plugin-protocol.ts +194 -719
  47. package/src/hosted/browser/worker/plugin-manifest-loader.ts +8 -41
  48. package/src/hosted/browser/worker/worker-main.ts +2 -1
  49. package/src/hosted/node/hosted-plugin-localization-service.ts +3 -82
  50. package/src/hosted/node/plugin-host-rpc.ts +3 -3
  51. package/src/hosted/node/plugin-reader.ts +4 -3
  52. package/src/hosted/node/scanners/grammars-reader.ts +14 -23
  53. package/src/hosted/node/scanners/scanner-theia.spec.ts +4 -4
  54. package/src/hosted/node/scanners/scanner-theia.ts +200 -972
  55. package/src/main/browser/plugin-contribution-handler.ts +1 -1
  56. package/src/main/browser/plugin-icon-service.ts +2 -1
  57. package/src/main/browser/plugin-icon-theme-service.ts +2 -1
  58. package/src/main/browser/plugin-shared-style.ts +2 -1
  59. package/lib/hosted/node/plugin-activation-events.d.ts +0 -7
  60. package/lib/hosted/node/plugin-activation-events.d.ts.map +0 -1
  61. package/lib/hosted/node/plugin-activation-events.js +0 -95
  62. package/lib/hosted/node/plugin-activation-events.js.map +0 -1
  63. package/lib/hosted/node/plugin-manifest-loader.d.ts +0 -3
  64. package/lib/hosted/node/plugin-manifest-loader.d.ts.map +0 -1
  65. package/lib/hosted/node/plugin-manifest-loader.js +0 -34
  66. package/lib/hosted/node/plugin-manifest-loader.js.map +0 -1
  67. package/lib/main/node/errors.spec.d.ts +0 -2
  68. package/lib/main/node/errors.spec.d.ts.map +0 -1
  69. package/lib/main/node/errors.spec.js +0 -36
  70. package/lib/main/node/errors.spec.js.map +0 -1
  71. package/src/hosted/node/plugin-activation-events.ts +0 -112
  72. package/src/hosted/node/plugin-manifest-loader.ts +0 -32
  73. package/src/main/node/errors.spec.ts +0 -37
@@ -2,370 +2,48 @@ import { RpcServer } from '@theia/core/lib/common/messaging/proxy-factory';
2
2
  import { RPCProtocol } from './rpc-protocol';
3
3
  import { Disposable } from '@theia/core/lib/common/disposable';
4
4
  import { LogPart, KeysToAnyValues, KeysToKeysToAnyValue } from './types';
5
- import { CharacterPair, CommentRule, PluginAPIFactory, Plugin, ThemeIcon } from './plugin-api-rpc';
5
+ import { PluginAPIFactory, Plugin } from './plugin-api-rpc';
6
6
  import { ExtPluginApi } from './plugin-ext-api-contribution';
7
- import { IJSONSchema, IJSONSchemaSnippet } from '@theia/core/lib/common/json-schema';
8
7
  import { ProblemMatcherContribution, ProblemPatternContribution, TaskDefinition } from '@theia/task/lib/common';
9
8
  import { ColorDefinition } from '@theia/core/lib/common/color';
10
9
  import { ResourceLabelFormatter } from '@theia/core/lib/common/label-protocol';
11
- import { PluginIdentifiers } from './plugin-identifiers';
12
- import { JSONObject } from '@theia/core/shared/@lumino/coreutils';
13
10
  import { PreferenceSchema } from '@theia/core';
11
+ import { PluginIdentifiers } from './plugin-identifiers';
12
+ import { getPluginId, toPluginUrl as toPluginUrlFromUtils } from '@theia/plugin-utils/lib/common/plugin-model';
13
+ import { PLUGIN_HOST_BACKEND, PluginEntryPoint, PluginLifecycle, PluginManifest, PluginMetadata, PluginModel, PluginPackageCapabilities, PluginType, DeployedPlugin as DeployedPluginBase } from '@theia/plugin-utils/lib/common/manifest-types';
14
+ import { AutoClosingPair, AutoClosingPairConditional, CustomEditorPriority, CustomEditorSelector, EnterAction, FoldingMarkers, FoldingRules, IndentationRules, OnEnterRule, PluginColorContribution, PluginIconContribution, PluginIconThemeContribution, PluginJsonValidationContribution, PluginManifestContribution, PluginNotebookRendererContribution, PluginPackageAuthenticationProvider, PluginPackageCommand, PluginPackageCustomEditor, PluginPackageDebuggersContribution, PluginPackageGrammarsContribution, PluginPackageKeybinding, PluginPackageLanguageContribution, PluginPackageLanguageContributionConfiguration, PluginPackageLanguageModelToolContribution, PluginPackageLocalization, PluginPackageMcpServerDefinitionProviderContribution, PluginPackageMenu, PluginPackageNotebook, PluginPackageNotebookPreload, PluginPackageSnippetsContribution, PluginPackageSubmenu, PluginPackageTerminal, PluginPackageTerminalProfile, PluginPackageTranslation, PluginPackageView, PluginPackageViewContainer, PluginPackageViewWelcome, PluginPackageWalkthrough, PluginPackageWalkthroughStep, PluginPackageWalkthroughStepMedia, PluginTaskDefinitionContribution, PluginThemeContribution, PluginUiTheme, PluginViewType, PlatformSpecificAdapterContribution, RegExpOptions, ScopeMap, type GrammarsContribution, type IconUrl, type JSONObject, type NormalizedCommand, type NormalizedCustomEditor, type NormalizedIcon, type NormalizedIconTheme, type NormalizedKeybinding, type NormalizedLanguage, type NormalizedLanguageConfiguration, type NormalizedLocalization, type NormalizedPluginContribution, type NormalizedSnippet, type NormalizedSubmenu, type NormalizedTerminalProfile, type NormalizedTheme, type NormalizedTranslation, type NormalizedViewContainer, type NormalizedViewWelcome, type WalkthroughContribution, type WalkthroughStepContribution, type WalkthroughStepMedia } from '@theia/plugin-utils/lib/common/contribution-types';
14
15
  export { PluginIdentifiers };
16
+ export { getPluginId };
17
+ export { toPluginUrlFromUtils as toPluginUrl };
18
+ export { PLUGIN_HOST_BACKEND, PluginEntryPoint, PluginLifecycle, PluginManifest, PluginModel, PluginPackageCapabilities, PluginMetadata, PluginType };
15
19
  export declare const hostedServicePath = "/services/hostedPlugin";
16
20
  /**
17
21
  * Plugin engine (API) type, i.e. 'theiaPlugin', 'vscode', 'theiaHeadlessPlugin', etc.
18
22
  */
19
23
  export type PluginEngine = string;
20
24
  /**
21
- * This interface describes a package.json object.
25
+ * Loaded plugin package with stricter fields used by `@theia/plugin-ext`.
22
26
  */
23
- export interface PluginPackage {
24
- name: string;
27
+ export interface PluginPackage extends PluginManifest {
25
28
  publisher: string | undefined;
26
- version: string;
27
29
  engines: {
28
30
  [type in PluginEngine]: string;
29
31
  };
30
- theiaPlugin?: {
31
- frontend?: string;
32
- backend?: string;
33
- headless?: string;
34
- };
35
- main?: string;
36
- browser?: string;
37
32
  displayName: string;
38
33
  description: string;
39
34
  contributes?: PluginPackageContribution;
40
- packagePath: string;
41
- activationEvents?: string[];
42
- extensionDependencies?: string[];
43
- extensionPack?: string[];
44
- l10n?: string;
45
- icon?: string;
46
- type?: 'module' | 'commonjs';
47
- extensionKind?: Array<'ui' | 'workspace'>;
48
- capabilities?: {
49
- untrustedWorkspaces?: {
50
- supported: boolean | 'limited';
51
- description?: string;
52
- restrictedConfigurations?: string[];
53
- };
54
- };
55
35
  }
56
36
  export declare namespace PluginPackage {
57
- function toPluginUrl(pck: PluginPackage | PluginModel, relativePath: string): string;
37
+ const toPluginUrl: typeof toPluginUrlFromUtils;
58
38
  }
39
+ export { AutoClosingPair, AutoClosingPairConditional, CustomEditorPriority, CustomEditorSelector, EnterAction, FoldingMarkers, FoldingRules, type GrammarsContribution, IndentationRules, OnEnterRule, PluginColorContribution, PluginIconContribution, PluginIconThemeContribution, PluginJsonValidationContribution, PluginManifestContribution, PluginNotebookRendererContribution, PluginPackageAuthenticationProvider, PluginPackageCommand, PluginPackageCustomEditor, PluginPackageDebuggersContribution, PluginPackageGrammarsContribution, PluginPackageKeybinding, PluginPackageLanguageContribution, PluginPackageLanguageContributionConfiguration, PluginPackageLanguageModelToolContribution, PluginPackageLocalization, PluginPackageMcpServerDefinitionProviderContribution, PluginPackageMenu, PluginPackageNotebook, PluginPackageNotebookPreload, PluginPackageSnippetsContribution, PluginPackageSubmenu, PluginPackageTerminal, PluginPackageTerminalProfile, PluginPackageTranslation, PluginPackageView, PluginPackageViewContainer, PluginPackageViewWelcome, PluginPackageWalkthrough, PluginPackageWalkthroughStep, PluginPackageWalkthroughStepMedia, PluginTaskDefinitionContribution, PluginThemeContribution, PluginUiTheme, PluginViewType, PlatformSpecificAdapterContribution, RegExpOptions, ScopeMap, type IconUrl, type JSONObject, type WalkthroughContribution, type WalkthroughStepContribution, type WalkthroughStepMedia, };
59
40
  /**
60
- * This interface describes a package.json contribution section object.
41
+ * Strict `contributes` typing for scanned plugin packages.
61
42
  */
62
- export interface PluginPackageContribution {
63
- authentication?: PluginPackageAuthenticationProvider[];
64
- configuration?: JSONObject | JSONObject[];
65
- configurationDefaults?: JSONObject;
66
- languages?: PluginPackageLanguageContribution[];
67
- grammars?: PluginPackageGrammarsContribution[];
68
- customEditors?: PluginPackageCustomEditor[];
69
- viewsContainers?: {
70
- [location: string]: PluginPackageViewContainer[];
71
- };
72
- views?: {
73
- [location: string]: PluginPackageView[];
74
- };
75
- viewsWelcome?: PluginPackageViewWelcome[];
76
- commands?: PluginPackageCommand | PluginPackageCommand[];
77
- menus?: {
78
- [location: string]: PluginPackageMenu[];
79
- };
80
- submenus?: PluginPackageSubmenu[];
81
- keybindings?: PluginPackageKeybinding | PluginPackageKeybinding[];
82
- debuggers?: PluginPackageDebuggersContribution[];
83
- snippets?: PluginPackageSnippetsContribution[];
84
- themes?: PluginThemeContribution[];
85
- iconThemes?: PluginIconThemeContribution[];
86
- icons?: PluginIconContribution[];
87
- colors?: PluginColorContribution[];
88
- taskDefinitions?: PluginTaskDefinitionContribution[];
43
+ export interface PluginPackageContribution extends PluginManifestContribution {
89
44
  problemMatchers?: PluginProblemMatcherContribution[];
90
45
  problemPatterns?: PluginProblemPatternContribution[];
91
- jsonValidation?: PluginJsonValidationContribution[];
92
46
  resourceLabelFormatters?: ResourceLabelFormatter[];
93
- localizations?: PluginPackageLocalization[];
94
- terminal?: PluginPackageTerminal;
95
- notebooks?: PluginPackageNotebook[];
96
- notebookRenderer?: PluginNotebookRendererContribution[];
97
- notebookPreload?: PluginPackageNotebookPreload[];
98
- mcpServerDefinitionProviders?: PluginPackageMcpServerDefinitionProviderContribution[];
99
- languageModelTools?: PluginPackageLanguageModelToolContribution[];
100
- walkthroughs?: PluginPackageWalkthrough[];
101
- }
102
- /**
103
- * Media of a walkthrough step as contributed in `package.json`. Only the light and dark variant of an
104
- * image are mandatory, the high contrast ones were added to the VS Code schema later.
105
- */
106
- export type PluginPackageWalkthroughStepMedia = {
107
- markdown: string;
108
- } | {
109
- image: string | {
110
- dark: string;
111
- light: string;
112
- hc?: string;
113
- hcLight?: string;
114
- };
115
- altText?: string;
116
- } | {
117
- svg: string;
118
- altText?: string;
119
- };
120
- export interface PluginPackageWalkthroughStep {
121
- id: string;
122
- title: string;
123
- description: string;
124
- media?: PluginPackageWalkthroughStepMedia;
125
- completionEvents?: string[];
126
- when?: string;
127
- }
128
- export interface PluginPackageWalkthrough {
129
- id: string;
130
- title: string;
131
- description: string;
132
- steps: PluginPackageWalkthroughStep[];
133
- when?: string;
134
- icon?: string;
135
- }
136
- export interface PluginPackageNotebook {
137
- type: string;
138
- displayName: string;
139
- selector?: readonly {
140
- filenamePattern?: string;
141
- excludeFileNamePattern?: string;
142
- }[];
143
- priority?: string;
144
- }
145
- export interface PluginNotebookRendererContribution {
146
- readonly id: string;
147
- readonly displayName: string;
148
- readonly mimeTypes: string[];
149
- readonly entrypoint: string | {
150
- readonly extends: string;
151
- readonly path: string;
152
- };
153
- readonly requiresMessaging?: 'always' | 'optional' | 'never';
154
- }
155
- export interface PluginPackageNotebookPreload {
156
- type: string;
157
- entrypoint: string;
158
- }
159
- export interface PluginPackageMcpServerDefinitionProviderContribution {
160
- id: string;
161
- label: string;
162
- description?: string;
163
- }
164
- export interface PluginPackageLanguageModelToolContribution {
165
- name: string;
166
- modelDescription?: string;
167
- userDescription?: string;
168
- inputSchema?: object;
169
- tags?: string[];
170
- }
171
- export interface PluginPackageAuthenticationProvider {
172
- id: string;
173
- label: string;
174
- }
175
- export interface PluginPackageTerminalProfile {
176
- title: string;
177
- id: string;
178
- icon?: string;
179
- }
180
- export interface PluginPackageTerminal {
181
- profiles: PluginPackageTerminalProfile[];
182
- }
183
- export interface PluginPackageLocalization {
184
- languageId: string;
185
- languageName?: string;
186
- localizedLanguageName?: string;
187
- translations: PluginPackageTranslation[];
188
- minimalTranslations?: {
189
- [key: string]: string;
190
- };
191
- }
192
- export interface PluginPackageTranslation {
193
- id: string;
194
- path: string;
195
- }
196
- export interface PluginPackageCustomEditor {
197
- viewType: string;
198
- displayName: string;
199
- selector?: CustomEditorSelector[];
200
- priority?: CustomEditorPriority;
201
- }
202
- export interface CustomEditorSelector {
203
- readonly filenamePattern?: string;
204
- }
205
- export declare enum CustomEditorPriority {
206
- default = "default",
207
- builtin = "builtin",
208
- option = "option"
209
- }
210
- export interface PluginPackageViewContainer {
211
- id: string;
212
- title: string;
213
- icon: string;
214
- when?: string;
215
- }
216
- export declare enum PluginViewType {
217
- Tree = "tree",
218
- Webview = "webview"
219
- }
220
- export interface PluginPackageView {
221
- id: string;
222
- name: string;
223
- when?: string;
224
- type?: string;
225
- }
226
- export interface PluginPackageViewWelcome {
227
- view: string;
228
- contents: string;
229
- when?: string;
230
- enablement?: string;
231
- }
232
- export interface PluginPackageCommand {
233
- command: string;
234
- title: string;
235
- shortTitle?: string;
236
- original?: string;
237
- category?: string;
238
- icon?: string | {
239
- light: string;
240
- dark: string;
241
- };
242
- enablement?: string;
243
- }
244
- export interface PluginPackageMenu {
245
- command?: string;
246
- submenu?: string;
247
- alt?: string;
248
- group?: string;
249
- when?: string;
250
- }
251
- export interface PluginPackageSubmenu {
252
- id: string;
253
- label: string;
254
- icon: IconUrl;
255
- }
256
- export interface PluginPackageKeybinding {
257
- key?: string;
258
- command: string;
259
- when?: string;
260
- mac?: string;
261
- linux?: string;
262
- win?: string;
263
- args?: any;
264
- }
265
- export interface PluginPackageGrammarsContribution {
266
- language?: string;
267
- scopeName: string;
268
- path: string;
269
- embeddedLanguages?: ScopeMap;
270
- tokenTypes?: ScopeMap;
271
- injectTo?: string[];
272
- }
273
- export interface ScopeMap {
274
- [scopeName: string]: string;
275
- }
276
- export interface PluginPackageSnippetsContribution {
277
- language?: string;
278
- path?: string;
279
- }
280
- export interface PluginColorContribution {
281
- id?: string;
282
- description?: string;
283
- defaults?: {
284
- light?: string;
285
- dark?: string;
286
- highContrast?: string;
287
- };
288
- }
289
- export type PluginUiTheme = 'vs' | 'vs-dark' | 'hc-black';
290
- export interface PluginThemeContribution {
291
- id?: string;
292
- label?: string;
293
- description?: string;
294
- path?: string;
295
- uiTheme?: PluginUiTheme;
296
- }
297
- export interface PluginIconThemeContribution {
298
- id?: string;
299
- label?: string;
300
- description?: string;
301
- path?: string;
302
- uiTheme?: PluginUiTheme;
303
- }
304
- export interface PluginIconContribution {
305
- [id: string]: {
306
- description: string;
307
- default: {
308
- fontPath: string;
309
- fontCharacter: string;
310
- } | string;
311
- };
312
- }
313
- export interface PlatformSpecificAdapterContribution {
314
- program?: string;
315
- args?: string[];
316
- runtime?: string;
317
- runtimeArgs?: string[];
318
- }
319
- /**
320
- * This interface describes a package.json debuggers contribution section object.
321
- */
322
- export interface PluginPackageDebuggersContribution extends PlatformSpecificAdapterContribution {
323
- type: string;
324
- label?: string;
325
- languages?: string[];
326
- enableBreakpointsFor?: {
327
- languageIds: string[];
328
- };
329
- configurationAttributes: {
330
- [request: string]: IJSONSchema;
331
- };
332
- configurationSnippets: IJSONSchemaSnippet[];
333
- variables?: ScopeMap;
334
- adapterExecutableCommand?: string;
335
- win?: PlatformSpecificAdapterContribution;
336
- winx86?: PlatformSpecificAdapterContribution;
337
- windows?: PlatformSpecificAdapterContribution;
338
- osx?: PlatformSpecificAdapterContribution;
339
- linux?: PlatformSpecificAdapterContribution;
340
- }
341
- /**
342
- * This interface describes a package.json languages contribution section object.
343
- */
344
- export interface PluginPackageLanguageContribution {
345
- id: string;
346
- extensions?: string[];
347
- filenames?: string[];
348
- filenamePatterns?: string[];
349
- firstLine?: string;
350
- aliases?: string[];
351
- mimetypes?: string[];
352
- configuration?: string;
353
- icon?: IconUrl;
354
- }
355
- export interface PluginPackageLanguageContributionConfiguration {
356
- comments?: CommentRule;
357
- brackets?: CharacterPair[];
358
- autoClosingPairs?: (CharacterPair | AutoClosingPairConditional)[];
359
- surroundingPairs?: (CharacterPair | AutoClosingPair)[];
360
- wordPattern?: string;
361
- indentationRules?: IndentationRules;
362
- folding?: FoldingRules;
363
- onEnterRules?: OnEnterRule[];
364
- }
365
- export interface PluginTaskDefinitionContribution {
366
- type: string;
367
- required: string[];
368
- properties?: IJSONSchema['properties'];
369
47
  }
370
48
  export interface PluginProblemMatcherContribution extends ProblemMatcherContribution {
371
49
  name: string;
@@ -373,10 +51,6 @@ export interface PluginProblemMatcherContribution extends ProblemMatcherContribu
373
51
  export interface PluginProblemPatternContribution extends ProblemPatternContribution {
374
52
  name: string;
375
53
  }
376
- export interface PluginJsonValidationContribution {
377
- fileMatch: string | string[];
378
- url: string;
379
- }
380
54
  export declare const PluginScanner: unique symbol;
381
55
  /**
382
56
  * This scanner process package.json object and returns plugin metadata objects.
@@ -455,13 +129,6 @@ export declare enum PluginDeployerEntryType {
455
129
  BACKEND = 1,
456
130
  HEADLESS = 2
457
131
  }
458
- /**
459
- * Whether a plugin installed by a user or system.
460
- */
461
- export declare enum PluginType {
462
- System = 0,
463
- User = 1
464
- }
465
132
  export interface UnresolvedPluginEntry {
466
133
  id: string;
467
134
  type?: PluginType;
@@ -523,393 +190,68 @@ export interface PluginDeployerDirectoryHandlerContext {
523
190
  pluginEntry(): PluginDeployerEntry;
524
191
  }
525
192
  /**
526
- * This interface describes a plugin model object, which is populated from package.json.
193
+ * Static plugin contributions after normalization.
194
+ * Narrows shim/`unknown` fields from {@link NormalizedPluginContribution} to core/task types.
527
195
  */
528
- export interface PluginModel {
529
- id: string;
530
- name: string;
531
- publisher: string;
532
- version: string;
533
- displayName: string;
534
- description: string;
535
- engine: {
536
- type: PluginEngine;
537
- version: string;
538
- };
539
- entryPoint: PluginEntryPoint;
540
- packageUri: string;
541
- /**
542
- * @deprecated since 1.1.0 - because it lead to problems with getting a relative path
543
- * needed by Icon Themes to correctly load Fonts, use packageUri instead.
544
- */
545
- packagePath: string;
546
- iconUrl?: string;
547
- l10n?: string;
548
- readmeUrl?: string;
549
- licenseUrl?: string;
550
- untrustedWorkspacesSupport?: boolean | 'limited';
551
- }
552
- export interface PluginEntryPoint {
553
- frontend?: string;
554
- backend?: string;
555
- headless?: string;
556
- }
557
- /**
558
- * This interface describes some static plugin contributions.
559
- */
560
- export interface PluginContribution {
561
- activationEvents?: string[];
562
- authentication?: AuthenticationProviderInformation[];
196
+ export type PluginContribution = Omit<NormalizedPluginContribution, 'configuration' | 'colors' | 'taskDefinitions' | 'problemMatchers' | 'problemPatterns' | 'resourceLabelFormatters'> & {
563
197
  configuration?: PreferenceSchema[];
564
- configurationDefaults?: JSONObject;
565
- languages?: LanguageContribution[];
566
- grammars?: GrammarsContribution[];
567
- customEditors?: CustomEditor[];
568
- viewsContainers?: {
569
- [location: string]: ViewContainer[];
570
- };
571
- views?: {
572
- [location: string]: View[];
573
- };
574
- viewsWelcome?: ViewWelcome[];
575
- commands?: PluginCommand[];
576
- menus?: {
577
- [location: string]: Menu[];
578
- };
579
- submenus?: Submenu[];
580
- keybindings?: Keybinding[];
581
- debuggers?: DebuggerContribution[];
582
- snippets?: SnippetContribution[];
583
- themes?: ThemeContribution[];
584
- iconThemes?: IconThemeContribution[];
585
- icons?: IconContribution[];
586
198
  colors?: ColorDefinition[];
587
199
  taskDefinitions?: TaskDefinition[];
588
200
  problemMatchers?: ProblemMatcherContribution[];
589
201
  problemPatterns?: ProblemPatternContribution[];
590
202
  resourceLabelFormatters?: ResourceLabelFormatter[];
591
- localizations?: Localization[];
592
- terminalProfiles?: TerminalProfile[];
593
- notebooks?: NotebookContribution[];
594
- notebookRenderer?: NotebookRendererContribution[];
595
- notebookPreload?: notebookPreloadContribution[];
596
- walkthroughs?: WalkthroughContribution[];
597
- }
598
- export interface NotebookContribution {
599
- type: string;
600
- displayName: string;
601
- selector?: readonly {
602
- filenamePattern?: string;
603
- excludeFileNamePattern?: string;
604
- }[];
605
- priority?: string;
606
- }
607
- export interface NotebookRendererContribution {
608
- readonly id: string;
609
- readonly displayName: string;
610
- readonly mimeTypes: string[];
611
- readonly entrypoint: string | {
612
- readonly extends: string;
613
- readonly path: string;
614
- };
615
- readonly requiresMessaging?: 'always' | 'optional' | 'never';
616
- }
617
- export interface notebookPreloadContribution {
618
- type: string;
619
- entrypoint: string;
620
- }
621
- /**
622
- * Media of a walkthrough step with every path resolved and every image variant filled in.
623
- */
624
- export type WalkthroughStepMedia = {
625
- markdown: string;
626
- } | {
627
- image: string | {
628
- dark: string;
629
- light: string;
630
- hc: string;
631
- hcLight: string;
632
- };
633
- altText?: string;
634
- } | {
635
- svg: string;
636
- altText?: string;
637
203
  };
638
- export interface WalkthroughStepContribution {
639
- id: string;
640
- title: string;
641
- description: string;
642
- media?: WalkthroughStepMedia;
643
- completionEvents?: string[];
644
- when?: string;
645
- }
646
- export interface WalkthroughContribution {
647
- id: string;
648
- title: string;
649
- description: string;
650
- steps: WalkthroughStepContribution[];
651
- when?: string;
652
- icon?: string;
653
- pluginId: string;
654
- /** Icon of the contributing extension, as a backend relative path. */
655
- pluginIcon?: string;
656
- }
657
- export interface AuthenticationProviderInformation {
658
- id: string;
659
- label: string;
660
- }
661
- export interface TerminalProfile {
662
- title: string;
663
- id: string;
664
- icon?: string;
665
- }
666
- export interface Localization {
667
- languageId: string;
668
- languageName?: string;
669
- localizedLanguageName?: string;
670
- translations: Translation[];
671
- minimalTranslations?: {
672
- [key: string]: string;
673
- };
674
- }
675
- export interface Translation {
676
- id: string;
677
- path: string;
678
- cachedContents?: {
679
- [scope: string]: {
680
- [key: string]: string;
681
- };
682
- };
683
- }
684
- export interface SnippetContribution {
685
- uri: string;
686
- source: string;
687
- language?: string;
688
- }
689
- export type UiTheme = 'vs' | 'vs-dark' | 'hc-black';
690
- export interface ThemeContribution {
691
- id?: string;
692
- label?: string;
693
- description?: string;
694
- uri: string;
695
- uiTheme?: UiTheme;
696
- }
697
- export interface IconThemeContribution {
698
- id: string;
699
- label?: string;
700
- description?: string;
701
- uri: string;
702
- uiTheme?: UiTheme;
703
- }
704
- export interface IconDefinition {
204
+ export type NotebookContribution = PluginPackageNotebook;
205
+ export type NotebookRendererContribution = PluginNotebookRendererContribution;
206
+ export type notebookPreloadContribution = PluginPackageNotebookPreload;
207
+ export type AuthenticationProviderInformation = PluginPackageAuthenticationProvider;
208
+ export type TerminalProfile = NormalizedTerminalProfile;
209
+ export type Localization = NormalizedLocalization;
210
+ export type Translation = NormalizedTranslation;
211
+ export type SnippetContribution = NormalizedSnippet;
212
+ export type UiTheme = PluginUiTheme;
213
+ export type ThemeContribution = NormalizedTheme;
214
+ export type IconThemeContribution = NormalizedIconTheme;
215
+ export type IconDefinition = Extract<NormalizedIcon['defaults'], {
705
216
  fontCharacter: string;
706
- location: string;
707
- }
708
- export type IconDefaults = ThemeIcon | IconDefinition;
709
- export interface IconContribution {
710
- id: string;
711
- extensionId: string;
712
- description: string | undefined;
713
- defaults: IconDefaults;
714
- }
217
+ }>;
218
+ export type IconDefaults = NormalizedIcon['defaults'];
219
+ export type IconContribution = NormalizedIcon;
715
220
  export declare namespace IconContribution {
716
221
  function isIconDefinition(defaults: IconDefaults): defaults is IconDefinition;
717
222
  }
718
- export interface GrammarsContribution {
719
- format: 'json' | 'plist';
720
- language?: string;
721
- scope: string;
722
- grammar?: string | object;
723
- grammarLocation?: string;
724
- embeddedLanguages?: ScopeMap;
725
- tokenTypes?: ScopeMap;
726
- injectTo?: string[];
727
- balancedBracketScopes?: string[];
728
- unbalancedBracketScopes?: string[];
729
- }
730
223
  /**
731
224
  * The language contribution
732
225
  */
733
- export interface LanguageContribution {
734
- id: string;
735
- extensions?: string[];
736
- filenames?: string[];
737
- filenamePatterns?: string[];
738
- firstLine?: string;
739
- aliases?: string[];
740
- mimetypes?: string[];
741
- configuration?: LanguageConfiguration;
742
- /**
743
- * @internal
744
- */
745
- icon?: IconUrl;
746
- }
747
- export interface RegExpOptions {
748
- pattern: string;
749
- flags?: string;
750
- }
751
- export interface LanguageConfiguration {
752
- brackets?: CharacterPair[];
753
- indentationRules?: IndentationRules;
754
- surroundingPairs?: AutoClosingPair[];
755
- autoClosingPairs?: AutoClosingPairConditional[];
756
- comments?: CommentRule;
757
- folding?: FoldingRules;
758
- wordPattern?: string | RegExpOptions;
759
- onEnterRules?: OnEnterRule[];
760
- }
761
- /**
762
- * This interface describes a package.json debuggers contribution section object.
763
- */
764
- export interface DebuggerContribution extends PlatformSpecificAdapterContribution {
765
- type: string;
766
- label?: string;
767
- languages?: string[];
768
- enableBreakpointsFor?: {
769
- languageIds: string[];
770
- };
771
- configurationAttributes?: {
772
- [request: string]: IJSONSchema;
773
- };
774
- configurationSnippets?: IJSONSchemaSnippet[];
775
- variables?: ScopeMap;
776
- adapterExecutableCommand?: string;
777
- win?: PlatformSpecificAdapterContribution;
778
- winx86?: PlatformSpecificAdapterContribution;
779
- windows?: PlatformSpecificAdapterContribution;
780
- osx?: PlatformSpecificAdapterContribution;
781
- linux?: PlatformSpecificAdapterContribution;
782
- }
783
- export interface IndentationRules {
784
- increaseIndentPattern: string | RegExpOptions;
785
- decreaseIndentPattern: string | RegExpOptions;
786
- unIndentedLinePattern?: string | RegExpOptions;
787
- indentNextLinePattern?: string | RegExpOptions;
788
- }
789
- export interface AutoClosingPair {
790
- close: string;
791
- open: string;
792
- }
793
- export interface AutoClosingPairConditional extends AutoClosingPair {
794
- notIn?: string[];
795
- }
796
- export interface FoldingMarkers {
797
- start: string | RegExpOptions;
798
- end: string | RegExpOptions;
799
- }
800
- export interface FoldingRules {
801
- offSide?: boolean;
802
- markers?: FoldingMarkers;
803
- }
804
- export interface OnEnterRule {
805
- beforeText: string | RegExpOptions;
806
- afterText?: string | RegExpOptions;
807
- previousLineText?: string | RegExpOptions;
808
- action: EnterAction;
809
- }
810
- export interface EnterAction {
811
- indent: 'none' | 'indent' | 'outdent' | 'indentOutdent';
812
- appendText?: string;
813
- removeText?: number;
814
- }
226
+ export type LanguageContribution = NormalizedLanguage;
227
+ export type LanguageConfiguration = NormalizedLanguageConfiguration;
228
+ export type DebuggerContribution = PluginPackageDebuggersContribution;
815
229
  /**
816
230
  * Custom Editors contribution
817
231
  */
818
- export interface CustomEditor {
819
- viewType: string;
820
- displayName: string;
821
- selector: CustomEditorSelector[];
822
- priority: CustomEditorPriority;
823
- }
232
+ export type CustomEditor = NormalizedCustomEditor;
824
233
  /**
825
234
  * Views Containers contribution
826
235
  */
827
- export interface ViewContainer {
828
- id: string;
829
- title: string;
830
- iconUrl: string;
831
- themeIcon?: string;
832
- when?: string;
833
- }
236
+ export type ViewContainer = NormalizedViewContainer;
834
237
  /**
835
238
  * View contribution
836
239
  */
837
- export interface View {
838
- id: string;
839
- name: string;
840
- when?: string;
841
- type?: string;
842
- }
240
+ export type View = PluginPackageView;
843
241
  /**
844
242
  * View Welcome contribution
845
243
  */
846
- export interface ViewWelcome {
847
- view: string;
848
- content: string;
849
- when?: string;
850
- enablement?: string;
851
- order: number;
852
- }
853
- export interface PluginCommand {
854
- command: string;
855
- title: string;
856
- shortTitle?: string;
857
- originalTitle?: string;
858
- category?: string;
859
- iconUrl?: IconUrl;
860
- themeIcon?: string;
861
- enablement?: string;
862
- }
863
- export type IconUrl = string | {
864
- light: string;
865
- dark: string;
866
- };
244
+ export type ViewWelcome = NormalizedViewWelcome;
245
+ export type PluginCommand = NormalizedCommand;
867
246
  /**
868
247
  * Menu contribution
869
248
  */
870
- export interface Menu {
871
- command?: string;
872
- submenu?: string;
873
- alt?: string;
874
- group?: string;
875
- when?: string;
876
- }
877
- export interface Submenu {
878
- id: string;
879
- label: string;
880
- icon?: IconUrl;
881
- }
249
+ export type Menu = PluginPackageMenu;
250
+ export type Submenu = NormalizedSubmenu;
882
251
  /**
883
252
  * Keybinding contribution
884
253
  */
885
- export interface Keybinding {
886
- keybinding?: string;
887
- command: string;
888
- when?: string;
889
- mac?: string;
890
- linux?: string;
891
- win?: string;
892
- args?: any;
893
- }
894
- /**
895
- * This interface describes a plugin lifecycle object.
896
- */
897
- export interface PluginLifecycle {
898
- startMethod: string;
899
- stopMethod: string;
900
- /**
901
- * Frontend module name, frontend plugin should expose this name.
902
- */
903
- frontendModuleName?: string;
904
- /**
905
- * Path to the script which should do some initialization before frontend plugin is loaded.
906
- */
907
- frontendInitPath?: string;
908
- /**
909
- * Path to the script which should do some initialization before backend plugin is loaded.
910
- */
911
- backendInitPath?: string;
912
- }
254
+ export type Keybinding = NormalizedKeybinding;
913
255
  /**
914
256
  * The export function of initialization module of backend plugin.
915
257
  */
@@ -925,19 +267,10 @@ export interface PluginContext {
925
267
  export interface ExtensionContext {
926
268
  subscriptions: Disposable[];
927
269
  }
928
- export interface PluginMetadata {
929
- host: string;
930
- model: PluginModel;
931
- lifecycle: PluginLifecycle;
932
- isUnderDevelopment?: boolean;
933
- outOfSync: boolean;
934
- }
935
270
  export declare const MetadataProcessor: unique symbol;
936
271
  export interface MetadataProcessor {
937
272
  process(pluginMetadata: PluginMetadata): void;
938
273
  }
939
- export declare function getPluginId(plugin: PluginPackage | PluginModel): string;
940
- export declare function buildFrontendModuleName(plugin: PluginPackage | PluginModel): string;
941
274
  export declare const HostedPluginClient: unique symbol;
942
275
  export interface HostedPluginClient {
943
276
  postMessage(pluginHost: string, buffer: Uint8Array): Promise<void>;
@@ -986,14 +319,7 @@ export interface PluginDeployerHandler {
986
319
  */
987
320
  enablePlugin(pluginId: PluginIdentifiers.UnversionedId): Promise<boolean>;
988
321
  }
989
- export interface DeployedPlugin {
990
- /**
991
- * defaults to system
992
- */
993
- type?: PluginType;
994
- metadata: PluginMetadata;
995
- contributes?: PluginContribution;
996
- }
322
+ export type DeployedPlugin = DeployedPluginBase<PluginContribution>;
997
323
  export declare const HostedPluginServer: unique symbol;
998
324
  export interface HostedPluginServer extends RpcServer<HostedPluginClient> {
999
325
  getDeployedPluginIds(): Promise<PluginIdentifiers.VersionedId[]>;
@@ -1004,7 +330,6 @@ export interface HostedPluginServer extends RpcServer<HostedPluginClient> {
1004
330
  getExtPluginAPI(): Promise<ExtPluginApi[]>;
1005
331
  onMessage(targetHost: string, message: Uint8Array): Promise<void>;
1006
332
  }
1007
- export declare const PLUGIN_HOST_BACKEND = "main";
1008
333
  export interface WorkspaceStorageKind {
1009
334
  workspace?: string | undefined;
1010
335
  roots: string[];