@theia/plugin-utils 1.75.0-next.28

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 (122) hide show
  1. package/README.md +30 -0
  2. package/lib/common/constants.d.ts +12 -0
  3. package/lib/common/constants.d.ts.map +1 -0
  4. package/lib/common/constants.js +30 -0
  5. package/lib/common/constants.js.map +1 -0
  6. package/lib/common/constants.spec.d.ts +2 -0
  7. package/lib/common/constants.spec.d.ts.map +1 -0
  8. package/lib/common/constants.spec.js +33 -0
  9. package/lib/common/constants.spec.js.map +1 -0
  10. package/lib/common/contribution-types.d.ts +648 -0
  11. package/lib/common/contribution-types.d.ts.map +1 -0
  12. package/lib/common/contribution-types.js +30 -0
  13. package/lib/common/contribution-types.js.map +1 -0
  14. package/lib/common/manifest-types.d.ts +105 -0
  15. package/lib/common/manifest-types.d.ts.map +1 -0
  16. package/lib/common/manifest-types.js +31 -0
  17. package/lib/common/manifest-types.js.map +1 -0
  18. package/lib/common/manifest-types.spec.d.ts +2 -0
  19. package/lib/common/manifest-types.spec.d.ts.map +1 -0
  20. package/lib/common/manifest-types.spec.js +35 -0
  21. package/lib/common/manifest-types.spec.js.map +1 -0
  22. package/lib/common/package-nls.d.ts +24 -0
  23. package/lib/common/package-nls.d.ts.map +1 -0
  24. package/lib/common/package-nls.js +82 -0
  25. package/lib/common/package-nls.js.map +1 -0
  26. package/lib/common/package-nls.spec.d.ts +2 -0
  27. package/lib/common/package-nls.spec.d.ts.map +1 -0
  28. package/lib/common/package-nls.spec.js +98 -0
  29. package/lib/common/package-nls.spec.js.map +1 -0
  30. package/lib/common/plugin-activation-events.d.ts +7 -0
  31. package/lib/common/plugin-activation-events.d.ts.map +1 -0
  32. package/lib/common/plugin-activation-events.js +95 -0
  33. package/lib/common/plugin-activation-events.js.map +1 -0
  34. package/lib/common/plugin-activation-events.spec.d.ts +2 -0
  35. package/lib/common/plugin-activation-events.spec.d.ts.map +1 -0
  36. package/lib/common/plugin-activation-events.spec.js +89 -0
  37. package/lib/common/plugin-activation-events.spec.js.map +1 -0
  38. package/lib/common/plugin-manifest.d.ts +10 -0
  39. package/lib/common/plugin-manifest.d.ts.map +1 -0
  40. package/lib/common/plugin-manifest.js +35 -0
  41. package/lib/common/plugin-manifest.js.map +1 -0
  42. package/lib/common/plugin-manifest.spec.d.ts +2 -0
  43. package/lib/common/plugin-manifest.spec.d.ts.map +1 -0
  44. package/lib/common/plugin-manifest.spec.js +83 -0
  45. package/lib/common/plugin-manifest.spec.js.map +1 -0
  46. package/lib/common/plugin-model.d.ts +33 -0
  47. package/lib/common/plugin-model.d.ts.map +1 -0
  48. package/lib/common/plugin-model.js +166 -0
  49. package/lib/common/plugin-model.js.map +1 -0
  50. package/lib/common/plugin-model.spec.d.ts +2 -0
  51. package/lib/common/plugin-model.spec.d.ts.map +1 -0
  52. package/lib/common/plugin-model.spec.js +204 -0
  53. package/lib/common/plugin-model.spec.js.map +1 -0
  54. package/lib/common/protocol-shims.d.ts +128 -0
  55. package/lib/common/protocol-shims.d.ts.map +1 -0
  56. package/lib/common/protocol-shims.js +29 -0
  57. package/lib/common/protocol-shims.js.map +1 -0
  58. package/lib/common/test-helpers.d.ts +5 -0
  59. package/lib/common/test-helpers.d.ts.map +1 -0
  60. package/lib/common/test-helpers.js +41 -0
  61. package/lib/common/test-helpers.js.map +1 -0
  62. package/lib/common/utils.d.ts +20 -0
  63. package/lib/common/utils.d.ts.map +1 -0
  64. package/lib/common/utils.js +74 -0
  65. package/lib/common/utils.js.map +1 -0
  66. package/lib/common/utils.spec.d.ts +2 -0
  67. package/lib/common/utils.spec.d.ts.map +1 -0
  68. package/lib/common/utils.spec.js +77 -0
  69. package/lib/common/utils.spec.js.map +1 -0
  70. package/lib/node/normalize-contributions.d.ts +54 -0
  71. package/lib/node/normalize-contributions.d.ts.map +1 -0
  72. package/lib/node/normalize-contributions.js +985 -0
  73. package/lib/node/normalize-contributions.js.map +1 -0
  74. package/lib/node/normalize-contributions.spec.d.ts +2 -0
  75. package/lib/node/normalize-contributions.spec.d.ts.map +1 -0
  76. package/lib/node/normalize-contributions.spec.js +850 -0
  77. package/lib/node/normalize-contributions.spec.js.map +1 -0
  78. package/lib/node/package-nls.d.ts +3 -0
  79. package/lib/node/package-nls.d.ts.map +1 -0
  80. package/lib/node/package-nls.js +45 -0
  81. package/lib/node/package-nls.js.map +1 -0
  82. package/lib/node/plugin-manifest.d.ts +6 -0
  83. package/lib/node/plugin-manifest.d.ts.map +1 -0
  84. package/lib/node/plugin-manifest.js +26 -0
  85. package/lib/node/plugin-manifest.js.map +1 -0
  86. package/lib/node/plugin-model.d.ts +5 -0
  87. package/lib/node/plugin-model.d.ts.map +1 -0
  88. package/lib/node/plugin-model.js +36 -0
  89. package/lib/node/plugin-model.js.map +1 -0
  90. package/lib/node/read-grammars.d.ts +10 -0
  91. package/lib/node/read-grammars.d.ts.map +1 -0
  92. package/lib/node/read-grammars.js +83 -0
  93. package/lib/node/read-grammars.js.map +1 -0
  94. package/lib/node/read-grammars.spec.d.ts +2 -0
  95. package/lib/node/read-grammars.spec.d.ts.map +1 -0
  96. package/lib/node/read-grammars.spec.js +109 -0
  97. package/lib/node/read-grammars.spec.js.map +1 -0
  98. package/package.json +42 -0
  99. package/src/common/constants.spec.ts +34 -0
  100. package/src/common/constants.ts +35 -0
  101. package/src/common/contribution-types.ts +677 -0
  102. package/src/common/manifest-types.spec.ts +36 -0
  103. package/src/common/manifest-types.ts +126 -0
  104. package/src/common/package-nls.spec.ts +122 -0
  105. package/src/common/package-nls.ts +95 -0
  106. package/src/common/plugin-activation-events.spec.ts +104 -0
  107. package/src/common/plugin-activation-events.ts +102 -0
  108. package/src/common/plugin-manifest.spec.ts +94 -0
  109. package/src/common/plugin-manifest.ts +44 -0
  110. package/src/common/plugin-model.spec.ts +246 -0
  111. package/src/common/plugin-model.ts +194 -0
  112. package/src/common/protocol-shims.ts +148 -0
  113. package/src/common/test-helpers.ts +44 -0
  114. package/src/common/utils.spec.ts +86 -0
  115. package/src/common/utils.ts +81 -0
  116. package/src/node/normalize-contributions.spec.ts +931 -0
  117. package/src/node/normalize-contributions.ts +1098 -0
  118. package/src/node/package-nls.ts +45 -0
  119. package/src/node/plugin-manifest.ts +30 -0
  120. package/src/node/plugin-model.ts +33 -0
  121. package/src/node/read-grammars.spec.ts +128 -0
  122. package/src/node/read-grammars.ts +97 -0
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 Maksim Kachurin and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai_1 = require("chai");
19
+ const plugin_activation_events_1 = require("./plugin-activation-events");
20
+ function manifest(partial) {
21
+ return {
22
+ activationEvents: partial.activationEvents ? [...partial.activationEvents] : undefined,
23
+ contributes: partial.contributes
24
+ };
25
+ }
26
+ describe('plugin-activation-events', () => {
27
+ it('no-ops when contributes is missing or invalid', () => {
28
+ const empty = manifest({});
29
+ (0, plugin_activation_events_1.updateActivationEvents)(empty);
30
+ (0, chai_1.expect)(empty.activationEvents).to.equal(undefined);
31
+ const invalid = manifest({ contributes: 'bad' });
32
+ (0, plugin_activation_events_1.updateActivationEvents)(invalid);
33
+ (0, chai_1.expect)(invalid.activationEvents).to.equal(undefined);
34
+ });
35
+ it('derives activation events from contributed commands and languages', () => {
36
+ const pkg = manifest({
37
+ activationEvents: ['onStartupFinished'],
38
+ contributes: {
39
+ commands: [{ command: 'sample.run', title: 'Run' }],
40
+ languages: [{ id: 'typescript', extensions: ['.ts'] }]
41
+ }
42
+ });
43
+ (0, plugin_activation_events_1.updateActivationEvents)(pkg);
44
+ (0, chai_1.expect)(pkg.activationEvents).to.include.members([
45
+ 'onStartupFinished',
46
+ 'onCommand:sample.run',
47
+ 'onLanguage:typescript'
48
+ ]);
49
+ });
50
+ it('derives activation events from views, custom editors, auth, and notebooks', () => {
51
+ const pkg = manifest({
52
+ contributes: {
53
+ views: {
54
+ explorer: [{ id: 'sample.view', name: 'Sample' }]
55
+ },
56
+ customEditors: [{ viewType: 'sample.editor', displayName: 'Editor', selector: [] }],
57
+ authentication: [{ id: 'github', label: 'GitHub' }],
58
+ notebooks: [{ type: 'sample-notebook', displayName: 'Notebook' }]
59
+ }
60
+ });
61
+ (0, plugin_activation_events_1.updateActivationEvents)(pkg);
62
+ (0, chai_1.expect)(pkg.activationEvents).to.include.members([
63
+ 'onView:sample.view',
64
+ 'onCustomEditor:sample.editor',
65
+ 'onAuthenticationRequest:github',
66
+ 'onNotebookSerializer:sample-notebook'
67
+ ]);
68
+ });
69
+ it('supports a single command object instead of an array', () => {
70
+ const pkg = manifest({
71
+ contributes: {
72
+ commands: { command: 'solo.run', title: 'Solo' }
73
+ }
74
+ });
75
+ (0, plugin_activation_events_1.updateActivationEvents)(pkg);
76
+ (0, chai_1.expect)(pkg.activationEvents).to.include('onCommand:solo.run');
77
+ });
78
+ it('ignores malformed views contributions that are not plain objects', () => {
79
+ const pkg = manifest({
80
+ contributes: {
81
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+ views: 'not-an-object'
83
+ }
84
+ });
85
+ (0, plugin_activation_events_1.updateActivationEvents)(pkg);
86
+ (0, chai_1.expect)(pkg.activationEvents ?? []).to.be.empty;
87
+ });
88
+ });
89
+ //# sourceMappingURL=plugin-activation-events.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-activation-events.spec.js","sourceRoot":"","sources":["../../src/common/plugin-activation-events.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { PluginManifest } from './manifest-types';
2
+ export interface PrepareLoadedManifestOptions {
3
+ /** @default true */
4
+ updateActivationEvents?: boolean;
5
+ }
6
+ type LoadedManifest = Pick<PluginManifest, 'name' | 'publisher' | 'contributes' | 'activationEvents'>;
7
+ export declare function stripVscodeBuiltinNamePrefix(manifest: Pick<PluginManifest, 'name'>): void;
8
+ export declare function prepareLoadedManifest<T extends LoadedManifest>(manifest: T, options?: PrepareLoadedManifestOptions): T;
9
+ export {};
10
+ //# sourceMappingURL=plugin-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-manifest.d.ts","sourceRoot":"","sources":["../../src/common/plugin-manifest.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,MAAM,WAAW,4BAA4B;IACzC,oBAAoB;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,KAAK,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,kBAAkB,CAAC,CAAC;AAEtG,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,IAAI,CAIzF;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,cAAc,EAC1D,QAAQ,EAAE,CAAC,EACX,OAAO,CAAC,EAAE,4BAA4B,GACvC,CAAC,CAOH"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 Maksim Kachurin and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.stripVscodeBuiltinNamePrefix = stripVscodeBuiltinNamePrefix;
19
+ exports.prepareLoadedManifest = prepareLoadedManifest;
20
+ const constants_1 = require("./constants");
21
+ const plugin_activation_events_1 = require("./plugin-activation-events");
22
+ function stripVscodeBuiltinNamePrefix(manifest) {
23
+ if (manifest?.name?.startsWith(constants_1.VSCODE_BUILTIN_NAME_PREFIX)) {
24
+ manifest.name = manifest.name.substring(constants_1.VSCODE_BUILTIN_NAME_PREFIX.length);
25
+ }
26
+ }
27
+ function prepareLoadedManifest(manifest, options) {
28
+ stripVscodeBuiltinNamePrefix(manifest);
29
+ manifest.publisher ??= constants_1.UNPUBLISHED;
30
+ if (options?.updateActivationEvents !== false) {
31
+ (0, plugin_activation_events_1.updateActivationEvents)(manifest);
32
+ }
33
+ return manifest;
34
+ }
35
+ //# sourceMappingURL=plugin-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-manifest.js","sourceRoot":"","sources":["../../src/common/plugin-manifest.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,iDAAiD;AACjD,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;;AAahF,oEAIC;AAED,sDAUC;AA3BD,2CAAsE;AAEtE,yEAAoE;AASpE,SAAgB,4BAA4B,CAAC,QAAsC;IAC/E,IAAI,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,sCAA0B,CAAC,EAAE,CAAC;QACzD,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,sCAA0B,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;AACL,CAAC;AAED,SAAgB,qBAAqB,CACjC,QAAW,EACX,OAAsC;IAEtC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACvC,QAAQ,CAAC,SAAS,KAAK,uBAAW,CAAC;IACnC,IAAI,OAAO,EAAE,sBAAsB,KAAK,KAAK,EAAE,CAAC;QAC5C,IAAA,iDAAsB,EAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plugin-manifest.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-manifest.spec.d.ts","sourceRoot":"","sources":["../../src/common/plugin-manifest.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 Maksim Kachurin and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai_1 = require("chai");
19
+ const constants_1 = require("./constants");
20
+ const plugin_manifest_1 = require("./plugin-manifest");
21
+ const plugin_manifest_2 = require("../node/plugin-manifest");
22
+ const fs = require("fs-extra");
23
+ const os = require("os");
24
+ const path = require("path");
25
+ describe('plugin-manifest', () => {
26
+ describe('stripVscodeBuiltinNamePrefix', () => {
27
+ it('removes the vscode builtin prefix from package names', () => {
28
+ const manifest = {
29
+ name: `${constants_1.VSCODE_BUILTIN_NAME_PREFIX}json`
30
+ };
31
+ (0, plugin_manifest_1.stripVscodeBuiltinNamePrefix)(manifest);
32
+ (0, chai_1.expect)(manifest.name).to.equal('json');
33
+ });
34
+ });
35
+ describe('prepareLoadedManifest', () => {
36
+ it('defaults publisher and derives activation events', () => {
37
+ const manifest = (0, plugin_manifest_1.prepareLoadedManifest)({
38
+ name: 'sample',
39
+ version: '1.0.0',
40
+ packagePath: '/tmp/sample',
41
+ contributes: {
42
+ commands: [{ command: 'sample.run', title: 'Run' }]
43
+ }
44
+ });
45
+ (0, chai_1.expect)(manifest.publisher).to.equal(constants_1.UNPUBLISHED);
46
+ (0, chai_1.expect)(manifest.activationEvents).to.include('onCommand:sample.run');
47
+ });
48
+ it('can skip activation event derivation', () => {
49
+ const manifest = (0, plugin_manifest_1.prepareLoadedManifest)({
50
+ name: 'sample',
51
+ version: '1.0.0',
52
+ packagePath: '/tmp/sample',
53
+ contributes: {
54
+ commands: [{ command: 'sample.run', title: 'Run' }]
55
+ }
56
+ }, { updateActivationEvents: false });
57
+ (0, chai_1.expect)(manifest.activationEvents).to.equal(undefined);
58
+ });
59
+ });
60
+ describe('loadManifest', () => {
61
+ let pluginRoot;
62
+ beforeEach(async () => {
63
+ pluginRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'plugin-manifest-'));
64
+ });
65
+ afterEach(async () => {
66
+ await fs.remove(pluginRoot);
67
+ });
68
+ it('reads and prepares package.json from disk', async () => {
69
+ await fs.writeJson(path.join(pluginRoot, 'package.json'), {
70
+ name: `${constants_1.VSCODE_BUILTIN_NAME_PREFIX}json`,
71
+ version: '1.0.0',
72
+ contributes: {
73
+ commands: [{ command: 'json.format', title: 'Format JSON' }]
74
+ }
75
+ });
76
+ const manifest = await (0, plugin_manifest_2.loadManifest)(pluginRoot);
77
+ (0, chai_1.expect)(manifest.name).to.equal('json');
78
+ (0, chai_1.expect)(manifest.publisher).to.equal(constants_1.UNPUBLISHED);
79
+ (0, chai_1.expect)(manifest.activationEvents).to.include('onCommand:json.format');
80
+ });
81
+ });
82
+ });
83
+ //# sourceMappingURL=plugin-manifest.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-manifest.spec.js","sourceRoot":"","sources":["../../src/common/plugin-manifest.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { PluginEntryPoint, PluginLifecycle, PluginModel, PluginManifest, PluginPackageCapabilities } from './manifest-types';
2
+ export interface PluginIdentifierSource {
3
+ publisher?: string;
4
+ name: string;
5
+ }
6
+ export interface VsCodeBuildOptions {
7
+ /** When `'web'`, UI-only extensions prefer the browser entry point (Codespaces behavior). */
8
+ uiKind?: 'web' | 'desktop';
9
+ }
10
+ export declare function getPluginId(plugin: PluginIdentifierSource): string;
11
+ /**
12
+ * Builds a static-friendly plugin asset URL: `hostedPlugin/<id>/<segments...>`.
13
+ * Path separators stay literal `/`; each segment is `encodeURIComponent`'d so plain
14
+ * static file servers (browser-only) resolve assets without needing Express `:path(*)` decoding.
15
+ * `.` is dropped and `..` is resolved within the plugin root (leading `..` is ignored).
16
+ */
17
+ export declare function toPluginUrl(pck: PluginIdentifierSource, relativePath: string): string;
18
+ /**
19
+ * Explicit `theiaPlugin` engine takes priority over `vscode`.
20
+ */
21
+ export declare function pickEngineType(manifest: PluginManifest): 'theiaPlugin' | 'vscode';
22
+ export declare function applyTrustExtraction(manifest: {
23
+ capabilities?: PluginPackageCapabilities;
24
+ }, result: {
25
+ untrustedWorkspacesSupport?: boolean | 'limited';
26
+ }): void;
27
+ export declare function buildEntryPointForTheia(manifest: PluginManifest): PluginEntryPoint;
28
+ export declare function buildEntryPointForVsCode(manifest: PluginManifest, options?: VsCodeBuildOptions): PluginEntryPoint;
29
+ export declare function buildModelForTheia(manifest: PluginManifest): PluginModel;
30
+ export declare function buildModelForVsCode(manifest: PluginManifest, options?: VsCodeBuildOptions): PluginModel;
31
+ export declare function buildModel(manifest: PluginManifest, engineType: 'theiaPlugin' | 'vscode', options?: VsCodeBuildOptions): PluginModel;
32
+ export declare function buildLifecycle(manifest: PluginManifest, engineType: 'theiaPlugin' | 'vscode'): PluginLifecycle;
33
+ //# sourceMappingURL=plugin-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-model.d.ts","sourceRoot":"","sources":["../../src/common/plugin-model.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACR,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,cAAc,EACd,yBAAyB,EAC5B,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,sBAAsB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAC/B,6FAA6F;IAC7F,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAElE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAerF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,aAAa,GAAG,QAAQ,CAQjF;AAED,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE;IAAE,YAAY,CAAC,EAAE,yBAAyB,CAAA;CAAE,EACtD,MAAM,EAAE;IAAE,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GAC7D,IAAI,CAKN;AAWD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,GAAG,gBAAgB,CASlF;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,CAejH;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,WAAW,CAoBxE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAoBvG;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAEpI;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,GAAG,QAAQ,GAAG,eAAe,CAe9G"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 Maksim Kachurin and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.getPluginId = getPluginId;
19
+ exports.toPluginUrl = toPluginUrl;
20
+ exports.pickEngineType = pickEngineType;
21
+ exports.applyTrustExtraction = applyTrustExtraction;
22
+ exports.buildEntryPointForTheia = buildEntryPointForTheia;
23
+ exports.buildEntryPointForVsCode = buildEntryPointForVsCode;
24
+ exports.buildModelForTheia = buildModelForTheia;
25
+ exports.buildModelForVsCode = buildModelForVsCode;
26
+ exports.buildModel = buildModel;
27
+ exports.buildLifecycle = buildLifecycle;
28
+ const constants_1 = require("./constants");
29
+ function getPluginId(plugin) {
30
+ return `${plugin.publisher ?? constants_1.UNPUBLISHED}_${plugin.name}`.replace(/\W/g, '_');
31
+ }
32
+ /**
33
+ * Builds a static-friendly plugin asset URL: `hostedPlugin/<id>/<segments...>`.
34
+ * Path separators stay literal `/`; each segment is `encodeURIComponent`'d so plain
35
+ * static file servers (browser-only) resolve assets without needing Express `:path(*)` decoding.
36
+ * `.` is dropped and `..` is resolved within the plugin root (leading `..` is ignored).
37
+ */
38
+ function toPluginUrl(pck, relativePath) {
39
+ const segments = [];
40
+ for (const segment of relativePath.replace(/\\/g, '/').split('/')) {
41
+ if (!segment || segment === '.') {
42
+ continue;
43
+ }
44
+ if (segment === '..') {
45
+ // Drop parent segment when present; ignore leading `..` so URLs never contain
46
+ // literal `..` (encodeURIComponent does not encode dots).
47
+ segments.pop();
48
+ continue;
49
+ }
50
+ segments.push(encodeURIComponent(segment));
51
+ }
52
+ return `${constants_1.PLUGINS_BASE_PATH}/${getPluginId(pck)}/${segments.join('/')}`;
53
+ }
54
+ /**
55
+ * Explicit `theiaPlugin` engine takes priority over `vscode`.
56
+ */
57
+ function pickEngineType(manifest) {
58
+ if (manifest.engines?.theiaPlugin !== undefined) {
59
+ return 'theiaPlugin';
60
+ }
61
+ if (manifest.engines?.vscode !== undefined) {
62
+ return 'vscode';
63
+ }
64
+ throw new Error(`No vscode or theiaPlugin engine in ${manifest.name}`);
65
+ }
66
+ function applyTrustExtraction(manifest, result) {
67
+ const untrustedWorkspacesSupport = manifest.capabilities?.untrustedWorkspaces?.supported;
68
+ if (untrustedWorkspacesSupport !== undefined) {
69
+ result.untrustedWorkspacesSupport = untrustedWorkspacesSupport;
70
+ }
71
+ }
72
+ /** Minimal `pathToFileURL(...).href` without importing Node's `url` (keeps this module worker-safe). */
73
+ function pathToFileUrlHref(absolutePath) {
74
+ const normalized = absolutePath.replace(/\\/g, '/');
75
+ if (/^[a-zA-Z]:\//.test(normalized)) {
76
+ return `file:///${normalized}`;
77
+ }
78
+ return `file://${normalized.startsWith('/') ? normalized : `/${normalized}`}`;
79
+ }
80
+ function buildEntryPointForTheia(manifest) {
81
+ const result = {
82
+ frontend: manifest.theiaPlugin?.frontend,
83
+ backend: manifest.theiaPlugin?.backend
84
+ };
85
+ if (manifest.theiaPlugin?.headless) {
86
+ result.headless = manifest.theiaPlugin.headless;
87
+ }
88
+ return result;
89
+ }
90
+ function buildEntryPointForVsCode(manifest, options) {
91
+ const entryPoint = {};
92
+ const preferFrontend = options?.uiKind === 'web'
93
+ && manifest.extensionKind?.length === 1
94
+ && manifest.extensionKind[0] === 'ui';
95
+ if (manifest.browser && (!manifest.main || preferFrontend)) {
96
+ entryPoint.frontend = manifest.browser;
97
+ }
98
+ else {
99
+ entryPoint.backend = manifest.main;
100
+ }
101
+ if (manifest.theiaPlugin?.headless) {
102
+ entryPoint.headless = manifest.theiaPlugin.headless;
103
+ }
104
+ return entryPoint;
105
+ }
106
+ function buildModelForTheia(manifest) {
107
+ const publisher = manifest.publisher ?? constants_1.UNPUBLISHED;
108
+ const packageUri = manifest.packageUri ?? pathToFileUrlHref(manifest.packagePath);
109
+ return {
110
+ packagePath: manifest.packagePath,
111
+ packageUri,
112
+ id: `${publisher.toLowerCase()}.${manifest.name.toLowerCase()}`,
113
+ name: manifest.name,
114
+ publisher,
115
+ version: manifest.version,
116
+ displayName: manifest.displayName ?? manifest.name,
117
+ description: manifest.description ?? '',
118
+ l10n: manifest.l10n,
119
+ engine: {
120
+ type: 'theiaPlugin',
121
+ version: manifest.engines?.theiaPlugin ?? '*'
122
+ },
123
+ entryPoint: buildEntryPointForTheia(manifest),
124
+ };
125
+ }
126
+ function buildModelForVsCode(manifest, options) {
127
+ const publisher = manifest.publisher ?? constants_1.UNPUBLISHED;
128
+ const packageUri = manifest.packageUri ?? pathToFileUrlHref(manifest.packagePath);
129
+ return {
130
+ packagePath: manifest.packagePath,
131
+ packageUri,
132
+ id: `${publisher.toLowerCase()}.${manifest.name.toLowerCase()}`,
133
+ name: manifest.name,
134
+ publisher,
135
+ version: manifest.version,
136
+ displayName: manifest.displayName ?? manifest.name,
137
+ description: manifest.description ?? '',
138
+ l10n: manifest.l10n,
139
+ engine: {
140
+ type: 'vscode',
141
+ version: manifest.engines?.vscode ?? '*'
142
+ },
143
+ entryPoint: buildEntryPointForVsCode(manifest, options),
144
+ iconUrl: manifest.icon ? toPluginUrl(manifest, manifest.icon) : undefined,
145
+ };
146
+ }
147
+ function buildModel(manifest, engineType, options) {
148
+ return engineType === 'theiaPlugin' ? buildModelForTheia(manifest) : buildModelForVsCode(manifest, options);
149
+ }
150
+ function buildLifecycle(manifest, engineType) {
151
+ const frontendModuleName = getPluginId(manifest);
152
+ if (engineType === 'theiaPlugin') {
153
+ return {
154
+ startMethod: constants_1.THEIA_PLUGIN_START_METHOD,
155
+ stopMethod: constants_1.THEIA_PLUGIN_STOP_METHOD,
156
+ frontendModuleName,
157
+ };
158
+ }
159
+ return {
160
+ startMethod: constants_1.VSCODE_EXTENSION_ACTIVATE,
161
+ stopMethod: constants_1.VSCODE_EXTENSION_DEACTIVATE,
162
+ frontendModuleName,
163
+ frontendInitPath: constants_1.VSCODE_FRONTEND_INIT
164
+ };
165
+ }
166
+ //# sourceMappingURL=plugin-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-model.js","sourceRoot":"","sources":["../../src/common/plugin-model.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,iDAAiD;AACjD,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;;AA6BhF,kCAEC;AAQD,kCAeC;AAKD,wCAQC;AAED,oDAQC;AAWD,0DASC;AAED,4DAeC;AAED,gDAoBC;AAED,kDAoBC;AAED,gCAEC;AAED,wCAeC;AAjLD,2CAQqB;AAmBrB,SAAgB,WAAW,CAAC,MAA8B;IACtD,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,uBAAW,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACnF,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,GAA2B,EAAE,YAAoB;IACzE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;YAC9B,SAAS;QACb,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACnB,8EAA8E;YAC9E,0DAA0D;YAC1D,QAAQ,CAAC,GAAG,EAAE,CAAC;YACf,SAAS;QACb,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,6BAAiB,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,QAAwB;IACnD,IAAI,QAAQ,CAAC,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9C,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,SAAgB,oBAAoB,CAChC,QAAsD,EACtD,MAA4D;IAE5D,MAAM,0BAA0B,GAAG,QAAQ,CAAC,YAAY,EAAE,mBAAmB,EAAE,SAAS,CAAC;IACzF,IAAI,0BAA0B,KAAK,SAAS,EAAE,CAAC;QAC3C,MAAM,CAAC,0BAA0B,GAAG,0BAA0B,CAAC;IACnE,CAAC;AACL,CAAC;AAED,wGAAwG;AACxG,SAAS,iBAAiB,CAAC,YAAoB;IAC3C,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,WAAW,UAAU,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,UAAU,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,EAAE,CAAC;AAClF,CAAC;AAED,SAAgB,uBAAuB,CAAC,QAAwB;IAC5D,MAAM,MAAM,GAAqB;QAC7B,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ;QACxC,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO;KACzC,CAAC;IACF,IAAI,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAgB,wBAAwB,CAAC,QAAwB,EAAE,OAA4B;IAC3F,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,MAAM,cAAc,GAAG,OAAO,EAAE,MAAM,KAAK,KAAK;WACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,KAAK,CAAC;WACpC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE1C,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,cAAc,CAAC,EAAE,CAAC;QACzD,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC3C,CAAC;SAAM,CAAC;QACJ,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;IACvC,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;QACjC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;IACxD,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAAwB;IACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,uBAAW,CAAC;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElF,OAAO;QACH,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,UAAU;QACV,EAAE,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;QAC/D,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS;QACT,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI;QAClD,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE;YACJ,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,IAAI,GAAG;SAChD;QACD,UAAU,EAAE,uBAAuB,CAAC,QAAQ,CAAC;KAChD,CAAC;AACN,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAAwB,EAAE,OAA4B;IACtF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,uBAAW,CAAC;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClF,OAAO;QACH,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,UAAU;QACV,EAAE,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;QAC/D,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS;QACT,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI;QAClD,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG;SAC3C;QACD,UAAU,EAAE,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC;QACvD,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC5E,CAAC;AACN,CAAC;AAED,SAAgB,UAAU,CAAC,QAAwB,EAAE,UAAoC,EAAE,OAA4B;IACnH,OAAO,UAAU,KAAK,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChH,CAAC;AAED,SAAgB,cAAc,CAAC,QAAwB,EAAE,UAAoC;IACzF,MAAM,kBAAkB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;QAC/B,OAAO;YACH,WAAW,EAAE,qCAAyB;YACtC,UAAU,EAAE,oCAAwB;YACpC,kBAAkB;SACrB,CAAC;IACN,CAAC;IACD,OAAO;QACH,WAAW,EAAE,qCAAyB;QACtC,UAAU,EAAE,uCAA2B;QACvC,kBAAkB;QAClB,gBAAgB,EAAE,gCAAoB;KACzC,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plugin-model.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-model.spec.d.ts","sourceRoot":"","sources":["../../src/common/plugin-model.spec.ts"],"names":[],"mappings":""}