@theia/plugin-ext 1.65.0-next.19 → 1.65.0-next.39

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 (112) hide show
  1. package/lib/common/plugin-protocol.d.ts +5 -5
  2. package/lib/common/plugin-protocol.d.ts.map +1 -1
  3. package/lib/common/plugin-protocol.js.map +1 -1
  4. package/lib/hosted/browser/hosted-plugin.d.ts +1 -1
  5. package/lib/hosted/browser/hosted-plugin.d.ts.map +1 -1
  6. package/lib/hosted/browser/hosted-plugin.js +1 -1
  7. package/lib/hosted/browser/hosted-plugin.js.map +1 -1
  8. package/lib/hosted/node/scanners/scanner-theia.d.ts +41 -0
  9. package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
  10. package/lib/hosted/node/scanners/scanner-theia.js +38 -5
  11. package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
  12. package/lib/main/browser/custom-editors/custom-editor-opener.d.ts +2 -1
  13. package/lib/main/browser/custom-editors/custom-editor-opener.d.ts.map +1 -1
  14. package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
  15. package/lib/main/browser/custom-editors/custom-editors-main.d.ts +1 -1
  16. package/lib/main/browser/custom-editors/custom-editors-main.d.ts.map +1 -1
  17. package/lib/main/browser/custom-editors/custom-editors-main.js +2 -2
  18. package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
  19. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.d.ts +2 -1
  20. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.d.ts.map +1 -1
  21. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js +1 -1
  22. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js.map +1 -1
  23. package/lib/main/browser/debug/debug-main.js +1 -1
  24. package/lib/main/browser/debug/debug-main.js.map +1 -1
  25. package/lib/main/browser/debug/plugin-debug-session-factory.d.ts +1 -1
  26. package/lib/main/browser/debug/plugin-debug-session-factory.d.ts.map +1 -1
  27. package/lib/main/browser/menus/menus-contribution-handler.d.ts.map +1 -1
  28. package/lib/main/browser/menus/menus-contribution-handler.js +1 -1
  29. package/lib/main/browser/menus/menus-contribution-handler.js.map +1 -1
  30. package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts.map +1 -1
  31. package/lib/main/browser/menus/vscode-theia-menu-mappings.js +1 -0
  32. package/lib/main/browser/menus/vscode-theia-menu-mappings.js.map +1 -1
  33. package/lib/main/browser/plugin-contribution-handler.d.ts +2 -3
  34. package/lib/main/browser/plugin-contribution-handler.d.ts.map +1 -1
  35. package/lib/main/browser/plugin-contribution-handler.js +11 -28
  36. package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
  37. package/lib/main/browser/plugin-ext-argument-processor.d.ts +12 -0
  38. package/lib/main/browser/plugin-ext-argument-processor.d.ts.map +1 -0
  39. package/lib/main/browser/plugin-ext-argument-processor.js +41 -0
  40. package/lib/main/browser/plugin-ext-argument-processor.js.map +1 -0
  41. package/lib/main/browser/plugin-ext-frontend-module.d.ts.map +1 -1
  42. package/lib/main/browser/plugin-ext-frontend-module.js +7 -1
  43. package/lib/main/browser/plugin-ext-frontend-module.js.map +1 -1
  44. package/lib/main/browser/preference-registry-main.d.ts +1 -1
  45. package/lib/main/browser/preference-registry-main.d.ts.map +1 -1
  46. package/lib/main/browser/preference-registry-main.js +10 -8
  47. package/lib/main/browser/preference-registry-main.js.map +1 -1
  48. package/lib/main/browser/view/plugin-view-registry.d.ts.map +1 -1
  49. package/lib/main/browser/view/plugin-view-registry.js +3 -0
  50. package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
  51. package/lib/main/browser/view/tree-views-main.js +1 -1
  52. package/lib/main/browser/view/tree-views-main.js.map +1 -1
  53. package/lib/main/browser/webview/webview-frontend-preference-contribution.d.ts +5 -0
  54. package/lib/main/browser/webview/webview-frontend-preference-contribution.d.ts.map +1 -0
  55. package/lib/main/browser/webview/webview-frontend-preference-contribution.js +40 -0
  56. package/lib/main/browser/webview/webview-frontend-preference-contribution.js.map +1 -0
  57. package/lib/main/browser/webview/webview-theme-data-provider.d.ts +1 -1
  58. package/lib/main/browser/webview/webview-theme-data-provider.d.ts.map +1 -1
  59. package/lib/main/browser/webview/webview-theme-data-provider.js +1 -1
  60. package/lib/main/browser/webview/webview-theme-data-provider.js.map +1 -1
  61. package/lib/main/browser/webview/webview.d.ts +1 -1
  62. package/lib/main/browser/webview/webview.d.ts.map +1 -1
  63. package/lib/main/browser/webview/webview.js +1 -1
  64. package/lib/main/browser/webview/webview.js.map +1 -1
  65. package/lib/main/browser/workspace-main.js +3 -3
  66. package/lib/main/browser/workspace-main.js.map +1 -1
  67. package/lib/main/{browser/webview → common}/webview-preferences.d.ts +1 -1
  68. package/lib/main/common/webview-preferences.d.ts.map +1 -0
  69. package/lib/main/{browser/webview → common}/webview-preferences.js +1 -12
  70. package/lib/main/common/webview-preferences.js.map +1 -0
  71. package/lib/main/node/plugin-ext-backend-module.d.ts.map +1 -1
  72. package/lib/main/node/plugin-ext-backend-module.js +2 -0
  73. package/lib/main/node/plugin-ext-backend-module.js.map +1 -1
  74. package/lib/plugin/plugin-context.js +1 -1
  75. package/lib/plugin/plugin-context.js.map +1 -1
  76. package/lib/plugin/status-bar/status-bar-item.d.ts +3 -1
  77. package/lib/plugin/status-bar/status-bar-item.d.ts.map +1 -1
  78. package/lib/plugin/status-bar/status-bar-item.js +46 -1
  79. package/lib/plugin/status-bar/status-bar-item.js.map +1 -1
  80. package/lib/plugin/status-bar-message-registry.d.ts +3 -1
  81. package/lib/plugin/status-bar-message-registry.d.ts.map +1 -1
  82. package/lib/plugin/status-bar-message-registry.js +3 -2
  83. package/lib/plugin/status-bar-message-registry.js.map +1 -1
  84. package/package.json +29 -29
  85. package/src/common/plugin-protocol.ts +5 -5
  86. package/src/hosted/browser/hosted-plugin.ts +1 -1
  87. package/src/hosted/node/scanners/scanner-theia.ts +87 -5
  88. package/src/main/browser/custom-editors/custom-editor-opener.tsx +2 -2
  89. package/src/main/browser/custom-editors/custom-editors-main.ts +1 -1
  90. package/src/main/browser/custom-editors/plugin-custom-editor-registry.ts +2 -2
  91. package/src/main/browser/debug/debug-main.ts +1 -1
  92. package/src/main/browser/debug/plugin-debug-session-factory.ts +1 -1
  93. package/src/main/browser/menus/menus-contribution-handler.ts +2 -2
  94. package/src/main/browser/menus/vscode-theia-menu-mappings.ts +2 -1
  95. package/src/main/browser/plugin-contribution-handler.ts +14 -30
  96. package/src/main/browser/plugin-ext-argument-processor.ts +39 -0
  97. package/src/main/browser/plugin-ext-frontend-module.ts +9 -2
  98. package/src/main/browser/preference-registry-main.ts +9 -7
  99. package/src/main/browser/view/plugin-view-registry.ts +3 -0
  100. package/src/main/browser/view/tree-views-main.ts +1 -1
  101. package/src/main/browser/webview/pre/main.js +13 -10
  102. package/src/main/browser/webview/webview-frontend-preference-contribution.ts +37 -0
  103. package/src/main/browser/webview/webview-theme-data-provider.ts +1 -1
  104. package/src/main/browser/webview/webview.ts +1 -1
  105. package/src/main/browser/workspace-main.ts +2 -2
  106. package/src/main/{browser/webview → common}/webview-preferences.ts +3 -16
  107. package/src/main/node/plugin-ext-backend-module.ts +2 -0
  108. package/src/plugin/plugin-context.ts +1 -1
  109. package/src/plugin/status-bar/status-bar-item.ts +54 -0
  110. package/src/plugin/status-bar-message-registry.ts +3 -2
  111. package/lib/main/browser/webview/webview-preferences.d.ts.map +0 -1
  112. package/lib/main/browser/webview/webview-preferences.js.map +0 -1
@@ -15,20 +15,16 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { interfaces } from '@theia/core/shared/inversify';
18
- import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
19
18
  import {
20
19
  createPreferenceProxy,
20
+ PreferenceContribution,
21
21
  PreferenceProxy,
22
+ PreferenceSchema,
22
23
  PreferenceService,
23
- PreferenceContribution,
24
- PreferenceSchema
25
- } from '@theia/core/lib/browser/preferences';
24
+ } from '@theia/core/lib/common/preferences';
26
25
  import { nls } from '@theia/core/lib/common/nls';
27
26
 
28
- const frontendConfig = FrontendApplicationConfigProvider.get();
29
-
30
27
  export const WebviewConfigSchema: PreferenceSchema = {
31
- type: 'object',
32
28
  properties: {
33
29
  'webview.trace': {
34
30
  type: 'string',
@@ -39,15 +35,6 @@ export const WebviewConfigSchema: PreferenceSchema = {
39
35
  }
40
36
  };
41
37
 
42
- if (frontendConfig.securityWarnings) {
43
- WebviewConfigSchema.properties['webview.warnIfUnsecure'] = {
44
- scope: 'application',
45
- type: 'boolean',
46
- description: nls.localize('theia/plugin-ext/webviewWarnIfUnsecure', 'Warns users that webviews are currently deployed unsecurely.'),
47
- default: true,
48
- };
49
- }
50
-
51
38
  export interface WebviewConfiguration {
52
39
  'webview.trace': 'off' | 'on' | 'verbose'
53
40
  'webview.warnIfUnsecure'?: boolean
@@ -46,6 +46,7 @@ import { PluginRemoteCliContribution } from './plugin-remote-cli-contribution';
46
46
  import { RemoteCliContribution } from '@theia/core/lib/node/remote/remote-cli-contribution';
47
47
  import { PluginRemoteCopyContribution } from './plugin-remote-copy-contribution';
48
48
  import { RemoteCopyContribution } from '@theia/core/lib/node/remote/remote-copy-contribution';
49
+ import { bindWebviewPreferences } from '../common/webview-preferences';
49
50
 
50
51
  export function bindMainBackend(bind: interfaces.Bind, unbind: interfaces.Unbind, isBound: interfaces.IsBound, rebind: interfaces.Rebind): void {
51
52
  bind(PluginApiContribution).toSelf().inSingletonScope();
@@ -102,5 +103,6 @@ export function bindMainBackend(bind: interfaces.Bind, unbind: interfaces.Unbind
102
103
  bind(BackendApplicationContribution).toService(WebviewBackendSecurityWarnings);
103
104
 
104
105
  rebind(LocalizationServerImpl).to(PluginLocalizationServer).inSingletonScope();
106
+ bindWebviewPreferences(bind);
105
107
 
106
108
  }
@@ -333,7 +333,7 @@ export function createAPIFactory(
333
333
  const notebookRenderers = rpc.set(MAIN_RPC_CONTEXT.NOTEBOOK_RENDERERS_EXT, new NotebookRenderersExtImpl(rpc, notebooksExt));
334
334
  const notebookKernels = rpc.set(MAIN_RPC_CONTEXT.NOTEBOOK_KERNELS_EXT, new NotebookKernelsExtImpl(rpc, notebooksExt, commandRegistry, webviewExt, workspaceExt));
335
335
  const notebookDocuments = rpc.set(MAIN_RPC_CONTEXT.NOTEBOOK_DOCUMENTS_EXT, new NotebookDocumentsExtImpl(notebooksExt));
336
- const statusBarMessageRegistryExt = new StatusBarMessageRegistryExt(rpc);
336
+ const statusBarMessageRegistryExt = new StatusBarMessageRegistryExt(rpc, commandRegistry);
337
337
  const terminalExt = rpc.set(MAIN_RPC_CONTEXT.TERMINAL_EXT, new TerminalServiceExtImpl(rpc));
338
338
  const outputChannelRegistryExt = rpc.set(MAIN_RPC_CONTEXT.OUTPUT_CHANNEL_REGISTRY_EXT, new OutputChannelRegistryExtImpl(rpc));
339
339
  const treeViewsExt = rpc.set(MAIN_RPC_CONTEXT.TREE_VIEWS_EXT, new TreeViewsExtImpl(rpc, commandRegistry));
@@ -17,6 +17,9 @@ import * as theia from '@theia/plugin';
17
17
  import { ThemeColor, StatusBarAlignment } from '../types-impl';
18
18
  import { StatusBarMessageRegistryMain } from '../../common/plugin-api-rpc';
19
19
  import { UUID } from '@theia/core/shared/@lumino/coreutils';
20
+ import { CommandRegistryImpl } from '../command-registry';
21
+ import { MarkdownString } from '../markdown-string';
22
+ import { DisposableCollection } from '@theia/core/lib/common/disposable';
20
23
 
21
24
  export class StatusBarItemImpl implements theia.StatusBarItem {
22
25
 
@@ -45,6 +48,7 @@ export class StatusBarItemImpl implements theia.StatusBarItem {
45
48
  _proxy: StatusBarMessageRegistryMain;
46
49
 
47
50
  constructor(_proxy: StatusBarMessageRegistryMain,
51
+ private readonly commandRegistry: CommandRegistryImpl,
48
52
  alignment: StatusBarAlignment = StatusBarAlignment.Left,
49
53
  priority: number = 0,
50
54
  id = StatusBarItemImpl.nextId()) {
@@ -105,6 +109,56 @@ export class StatusBarItemImpl implements theia.StatusBarItem {
105
109
  }
106
110
 
107
111
  public set tooltip(tooltip: string | theia.MarkdownString | undefined) {
112
+ if (tooltip && MarkdownString.isMarkdownString(tooltip)) {
113
+ const markdownTooltip = tooltip;
114
+ const content = markdownTooltip.value;
115
+ // Find all command links in the markdown content
116
+ const regex = /\[([^\]]+)\]\(command:([^?\s\)]+)(?:\?([^\s\)]+))?([^\)]*)\)/g;
117
+ let match;
118
+ let updatedContent = content;
119
+
120
+ while ((match = regex.exec(content)) !== null) {
121
+ const linkText = match[1];
122
+ const commandId = match[2];
123
+ const argsEncoded = match[3]; // This captures the encoded arguments
124
+ const tooltipPart = match[4] || ''; // This captures any tooltip or additional content after the command and args
125
+
126
+ let args: unknown[] = [];
127
+ if (argsEncoded) {
128
+ try {
129
+ const decoded = decodeURIComponent(argsEncoded);
130
+ args = JSON.parse(decoded);
131
+ } catch (e) {
132
+ console.error('Failed to parse command arguments:', e);
133
+ }
134
+ }
135
+
136
+ const safeCommand = this.commandRegistry.converter.toSafeCommand(
137
+ {
138
+ command: commandId,
139
+ title: linkText,
140
+ arguments: Array.isArray(args) ? args : [args]
141
+ },
142
+ new DisposableCollection()
143
+ );
144
+
145
+ if (safeCommand?.id) {
146
+ let newArgsPart = '';
147
+ if (safeCommand.arguments && safeCommand.arguments.length > 0) {
148
+ newArgsPart = `?${encodeURIComponent(JSON.stringify(safeCommand.arguments))}`;
149
+ }
150
+
151
+ const argsPart = argsEncoded ? `?${argsEncoded}` : '';
152
+ const originalLink = `[${linkText}](command:${commandId}${argsPart}${tooltipPart})`;
153
+ const safeLink = `[${linkText}](command:${safeCommand.id}${newArgsPart}${tooltipPart})`;
154
+ updatedContent = updatedContent.replace(originalLink, safeLink);
155
+ }
156
+ }
157
+
158
+ if (updatedContent !== content) {
159
+ markdownTooltip.value = updatedContent;
160
+ }
161
+ }
108
162
  this._tooltip = tooltip;
109
163
  this.update();
110
164
  }
@@ -20,6 +20,7 @@ import {
20
20
  } from '../common/plugin-api-rpc';
21
21
  import { RPCProtocol } from '../common/rpc-protocol';
22
22
  import { StatusBarItemImpl } from './status-bar/status-bar-item';
23
+ import { CommandRegistryImpl } from './command-registry';
23
24
 
24
25
  /*---------------------------------------------------------------------------------------------
25
26
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -32,7 +33,7 @@ export class StatusBarMessageRegistryExt {
32
33
 
33
34
  protected readonly statusMessage: StatusBarMessage;
34
35
 
35
- constructor(rpc: RPCProtocol) {
36
+ constructor(rpc: RPCProtocol, readonly commandRegistry: CommandRegistryImpl) {
36
37
  this.proxy = rpc.getProxy(Ext.STATUS_BAR_MESSAGE_REGISTRY_MAIN);
37
38
  this.statusMessage = new StatusBarMessage(this);
38
39
  }
@@ -58,7 +59,7 @@ export class StatusBarMessageRegistryExt {
58
59
  }
59
60
 
60
61
  createStatusBarItem(alignment?: StatusBarAlignment, priority?: number, id?: string): StatusBarItem {
61
- return new StatusBarItemImpl(this.proxy, alignment, priority, id);
62
+ return new StatusBarItemImpl(this.proxy, this.commandRegistry, alignment, priority, id);
62
63
  }
63
64
 
64
65
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"webview-preferences.d.ts","sourceRoot":"","sources":["../../../../src/main/browser/webview/webview-preferences.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAEH,eAAe,EACf,iBAAiB,EAEjB,gBAAgB,EACnB,MAAM,qCAAqC,CAAC;AAK7C,eAAO,MAAM,mBAAmB,EAAE,gBAUjC,CAAC;AAWF,MAAM,WAAW,oBAAoB;IACjC,eAAe,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,CAAA;IACzC,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACrC;AAED,eAAO,MAAM,6BAA6B,eAA0C,CAAC;AACrF,eAAO,MAAM,kBAAkB,eAA+B,CAAC;AAC/D,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAC;AAEvE,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,GAAE,gBAAsC,GAAG,kBAAkB,CAE3I;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAQlE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"webview-preferences.js","sourceRoot":"","sources":["../../../../src/main/browser/webview/webview-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAGhF,uHAAiH;AACjH,qEAM6C;AAC7C,oDAAiD;AAEjD,MAAM,cAAc,GAAG,wEAAiC,CAAC,GAAG,EAAE,CAAC;AAElD,QAAA,mBAAmB,GAAqB;IACjD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,eAAe,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC;YAC9B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,+BAA+B,EAAE,+CAA+C,CAAC;YAC3G,OAAO,EAAE,KAAK;SACjB;KACJ;CACJ,CAAC;AAEF,IAAI,cAAc,CAAC,gBAAgB,EAAE,CAAC;IAClC,2BAAmB,CAAC,UAAU,CAAC,wBAAwB,CAAC,GAAG;QACvD,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,wCAAwC,EAAE,8DAA8D,CAAC;QACnI,OAAO,EAAE,IAAI;KAChB,CAAC;AACN,CAAC;AAOY,QAAA,6BAA6B,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AACxE,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAG/D,SAAgB,wBAAwB,CAAC,WAA8B,EAAE,SAA2B,2BAAmB;IACnH,OAAO,IAAA,mCAAqB,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAFD,4DAEC;AAED,SAAgB,sBAAsB,CAAC,IAAqB;IACxD,IAAI,CAAC,0BAAkB,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QAC1C,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAoB,+BAAiB,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAyB,qCAA6B,CAAC,CAAC;QAC9F,OAAO,wBAAwB,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtB,IAAI,CAAC,qCAA6B,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,2BAAmB,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,oCAAsB,CAAC,CAAC,SAAS,CAAC,qCAA6B,CAAC,CAAC;AAC1E,CAAC;AARD,wDAQC"}