@theia/plugin-utils 1.77.0-next.99 → 1.78.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/common/constants.js +12 -15
- package/lib/common/constants.js.map +1 -1
- package/lib/common/constants.spec.js +7 -9
- package/lib/common/constants.spec.js.map +1 -1
- package/lib/common/contribution-types.d.ts +8 -3
- package/lib/common/contribution-types.d.ts.map +1 -1
- package/lib/common/contribution-types.js +5 -7
- package/lib/common/contribution-types.js.map +1 -1
- package/lib/common/manifest-types.d.ts +1 -1
- package/lib/common/manifest-types.d.ts.map +1 -1
- package/lib/common/manifest-types.js +7 -11
- package/lib/common/manifest-types.js.map +1 -1
- package/lib/common/manifest-types.spec.js +7 -9
- package/lib/common/manifest-types.spec.js.map +1 -1
- package/lib/common/package-nls.js +6 -11
- package/lib/common/package-nls.js.map +1 -1
- package/lib/common/package-nls.spec.js +23 -25
- package/lib/common/package-nls.spec.js.map +1 -1
- package/lib/common/plugin-activation-events.d.ts +1 -1
- package/lib/common/plugin-activation-events.d.ts.map +1 -1
- package/lib/common/plugin-activation-events.js +14 -17
- package/lib/common/plugin-activation-events.js.map +1 -1
- package/lib/common/plugin-activation-events.spec.js +14 -16
- package/lib/common/plugin-activation-events.spec.js.map +1 -1
- package/lib/common/plugin-manifest.d.ts +1 -1
- package/lib/common/plugin-manifest.d.ts.map +1 -1
- package/lib/common/plugin-manifest.js +8 -12
- package/lib/common/plugin-manifest.js.map +1 -1
- package/lib/common/plugin-manifest.spec.js +21 -23
- package/lib/common/plugin-manifest.spec.js.map +1 -1
- package/lib/common/plugin-model.d.ts +1 -1
- package/lib/common/plugin-model.d.ts.map +1 -1
- package/lib/common/plugin-model.js +23 -37
- package/lib/common/plugin-model.js.map +1 -1
- package/lib/common/plugin-model.spec.js +66 -69
- package/lib/common/plugin-model.spec.js.map +1 -1
- package/lib/common/protocol-shims.js +3 -6
- package/lib/common/protocol-shims.js.map +1 -1
- package/lib/common/test-helpers.d.ts +2 -2
- package/lib/common/test-helpers.d.ts.map +1 -1
- package/lib/common/test-helpers.js +5 -9
- package/lib/common/test-helpers.js.map +1 -1
- package/lib/common/utils.js +6 -14
- package/lib/common/utils.js.map +1 -1
- package/lib/common/utils.spec.js +25 -27
- package/lib/common/utils.spec.js.map +1 -1
- package/lib/node/normalize-contributions.d.ts +3 -3
- package/lib/node/normalize-contributions.d.ts.map +1 -1
- package/lib/node/normalize-contributions.js +95 -129
- package/lib/node/normalize-contributions.js.map +1 -1
- package/lib/node/normalize-contributions.spec.js +184 -162
- package/lib/node/normalize-contributions.spec.js.map +1 -1
- package/lib/node/package-nls.d.ts +1 -1
- package/lib/node/package-nls.d.ts.map +1 -1
- package/lib/node/package-nls.js +9 -12
- package/lib/node/package-nls.js.map +1 -1
- package/lib/node/plugin-manifest.d.ts +2 -2
- package/lib/node/plugin-manifest.d.ts.map +1 -1
- package/lib/node/plugin-manifest.js +6 -9
- package/lib/node/plugin-manifest.js.map +1 -1
- package/lib/node/plugin-model.d.ts +1 -1
- package/lib/node/plugin-model.d.ts.map +1 -1
- package/lib/node/plugin-model.js +5 -8
- package/lib/node/plugin-model.js.map +1 -1
- package/lib/node/read-grammars.d.ts +2 -2
- package/lib/node/read-grammars.d.ts.map +1 -1
- package/lib/node/read-grammars.js +8 -12
- package/lib/node/read-grammars.js.map +1 -1
- package/lib/node/read-grammars.spec.js +25 -27
- package/lib/node/read-grammars.spec.js.map +1 -1
- package/package.json +11 -3
- package/src/common/constants.spec.ts +1 -1
- package/src/common/contribution-types.ts +9 -3
- package/src/common/manifest-types.spec.ts +1 -1
- package/src/common/manifest-types.ts +2 -2
- package/src/common/package-nls.spec.ts +4 -3
- package/src/common/package-nls.ts +1 -1
- package/src/common/plugin-activation-events.spec.ts +2 -2
- package/src/common/plugin-activation-events.ts +2 -2
- package/src/common/plugin-manifest.spec.ts +6 -5
- package/src/common/plugin-manifest.ts +3 -3
- package/src/common/plugin-model.spec.ts +4 -4
- package/src/common/plugin-model.ts +2 -2
- package/src/common/test-helpers.ts +3 -3
- package/src/common/utils.spec.ts +2 -2
- package/src/node/normalize-contributions.spec.ts +37 -7
- package/src/node/normalize-contributions.ts +15 -7
- package/src/node/package-nls.ts +4 -3
- package/src/node/plugin-manifest.ts +4 -3
- package/src/node/plugin-model.ts +1 -1
- package/src/node/read-grammars.spec.ts +3 -2
- package/src/node/read-grammars.ts +5 -4
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// *****************************************************************************
|
|
3
2
|
// Copyright (C) 2026 Maksim Kachurin and others.
|
|
4
3
|
//
|
|
@@ -14,87 +13,85 @@
|
|
|
14
13
|
//
|
|
15
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
15
|
// *****************************************************************************
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const plugin_model_2 = require("../node/plugin-model");
|
|
26
|
-
const test_helpers_1 = require("./test-helpers");
|
|
16
|
+
import { expect } from 'chai';
|
|
17
|
+
import * as fs from 'fs';
|
|
18
|
+
import * as os from 'os';
|
|
19
|
+
import * as path from 'path';
|
|
20
|
+
import { PLUGINS_SCHEME, UNPUBLISHED, VSCODE_EXTENSION_ACTIVATE, VSCODE_EXTENSION_DEACTIVATE, VSCODE_FRONTEND_INIT, THEIA_PLUGIN_START_METHOD, THEIA_PLUGIN_STOP_METHOD } from './constants.js';
|
|
21
|
+
import { applyTrustExtraction, buildEntryPointForTheia, buildEntryPointForVsCode, buildLifecycle, buildModel, buildModelForTheia, buildModelForVsCode, encodePluginAssetPath, getPluginId, pickEngineType, toPluginUri, toPluginUrl } from './plugin-model.js';
|
|
22
|
+
import { getPluginRootFileUrl } from '../node/plugin-model.js';
|
|
23
|
+
import { manifest } from './test-helpers.js';
|
|
27
24
|
describe('plugin-model', () => {
|
|
28
25
|
describe('getPluginId', () => {
|
|
29
26
|
it('sanitizes publisher and name', () => {
|
|
30
|
-
|
|
27
|
+
expect(getPluginId({ publisher: 'dbaeumer', name: 'vscode-eslint' })).to.equal('dbaeumer_vscode_eslint');
|
|
31
28
|
});
|
|
32
29
|
it('uses unpublished publisher when publisher is missing', () => {
|
|
33
|
-
|
|
30
|
+
expect(getPluginId({ name: 'my-ext' })).to.equal(getPluginId({ publisher: UNPUBLISHED, name: 'my-ext' }));
|
|
34
31
|
});
|
|
35
32
|
});
|
|
36
33
|
describe('toPluginUrl', () => {
|
|
37
34
|
it('encodes each path segment and keeps separators for static hosting', () => {
|
|
38
|
-
const url =
|
|
39
|
-
|
|
35
|
+
const url = toPluginUrl({ publisher: 'vscode', name: 'theme-monokai' }, './themes/monokai-color-theme.json');
|
|
36
|
+
expect(url).to.equal('hostedPlugin/vscode_theme_monokai/themes/monokai-color-theme.json');
|
|
40
37
|
});
|
|
41
38
|
it('encodes special characters inside a segment', () => {
|
|
42
|
-
|
|
39
|
+
expect(toPluginUrl({ publisher: 'acme', name: 'ext' }, 'media/my icon.png'))
|
|
43
40
|
.to.equal('hostedPlugin/acme_ext/media/my%20icon.png');
|
|
44
|
-
|
|
41
|
+
expect(toPluginUrl({ publisher: 'acme', name: 'ext' }, '$(folder)'))
|
|
45
42
|
.to.equal('hostedPlugin/acme_ext/%24(folder)');
|
|
46
43
|
});
|
|
47
44
|
it('resolves .. within the plugin root and ignores leading ..', () => {
|
|
48
|
-
|
|
45
|
+
expect(toPluginUrl({ publisher: 'acme', name: 'ext' }, 'themes/../icons/a.png'))
|
|
49
46
|
.to.equal('hostedPlugin/acme_ext/icons/a.png');
|
|
50
|
-
|
|
47
|
+
expect(toPluginUrl({ publisher: 'acme', name: 'ext' }, '../secret.json'))
|
|
51
48
|
.to.equal('hostedPlugin/acme_ext/secret.json');
|
|
52
49
|
});
|
|
53
50
|
});
|
|
54
51
|
describe('encodePluginAssetPath', () => {
|
|
55
52
|
it('encodes segments but keeps separators', () => {
|
|
56
|
-
|
|
53
|
+
expect(encodePluginAssetPath('/acme_ext/sub dir/a#b?c%d.json'))
|
|
57
54
|
.to.equal('/acme_ext/sub%20dir/a%23b%3Fc%25d.json');
|
|
58
55
|
});
|
|
59
56
|
it('round-trips the decoded path of a plugin asset URI', () => {
|
|
60
57
|
for (const relativePath of ['a#b?c%d.json', 'my icon.png', 'themes/dark+.json', 'sub dir/x[1].woff']) {
|
|
61
|
-
const uri =
|
|
58
|
+
const uri = toPluginUri({ publisher: 'acme', name: 'ext' }, relativePath);
|
|
62
59
|
// what `URI.path` hands a consumer back
|
|
63
|
-
const decoded = decodeURIComponent(uri.substring(`${
|
|
64
|
-
|
|
60
|
+
const decoded = decodeURIComponent(uri.substring(`${PLUGINS_SCHEME}:`.length));
|
|
61
|
+
expect(`${PLUGINS_SCHEME}:${encodePluginAssetPath(decoded)}`).to.equal(uri);
|
|
65
62
|
}
|
|
66
63
|
});
|
|
67
64
|
});
|
|
68
65
|
describe('pickEngineType', () => {
|
|
69
66
|
it('prefers theiaPlugin over vscode when both are declared', () => {
|
|
70
|
-
|
|
67
|
+
expect(pickEngineType(manifest({
|
|
71
68
|
name: 'both-engines',
|
|
72
69
|
engines: { vscode: '^1.0.0', theiaPlugin: '*' }
|
|
73
70
|
}))).to.equal('theiaPlugin');
|
|
74
71
|
});
|
|
75
72
|
it('returns vscode when only vscode engine is declared', () => {
|
|
76
|
-
|
|
73
|
+
expect(pickEngineType(manifest({
|
|
77
74
|
name: 'vscode-only',
|
|
78
75
|
engines: { vscode: '^1.0.0' }
|
|
79
76
|
}))).to.equal('vscode');
|
|
80
77
|
});
|
|
81
78
|
it('throws when no supported engine is declared', () => {
|
|
82
|
-
|
|
79
|
+
expect(() => pickEngineType(manifest({ name: 'no-engine' }))).to.throw(/No vscode or theiaPlugin engine/);
|
|
83
80
|
});
|
|
84
81
|
});
|
|
85
82
|
describe('applyTrustExtraction', () => {
|
|
86
83
|
it('copies untrusted workspace support when declared', () => {
|
|
87
84
|
const result = {};
|
|
88
|
-
|
|
85
|
+
applyTrustExtraction(manifest({
|
|
89
86
|
name: 'trusted',
|
|
90
87
|
capabilities: { untrustedWorkspaces: { supported: 'limited' } }
|
|
91
88
|
}), result);
|
|
92
|
-
|
|
89
|
+
expect(result.untrustedWorkspacesSupport).to.equal('limited');
|
|
93
90
|
});
|
|
94
91
|
it('leaves result unchanged when capabilities are absent', () => {
|
|
95
92
|
const result = {};
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
applyTrustExtraction(manifest({ name: 'plain' }), result);
|
|
94
|
+
expect(result.untrustedWorkspacesSupport).to.equal(undefined);
|
|
98
95
|
});
|
|
99
96
|
});
|
|
100
97
|
describe('getPluginRootFileUrl', () => {
|
|
@@ -107,16 +104,16 @@ describe('plugin-model', () => {
|
|
|
107
104
|
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
108
105
|
});
|
|
109
106
|
it('finds readme files case-insensitively', () => {
|
|
110
|
-
const url =
|
|
111
|
-
|
|
107
|
+
const url = getPluginRootFileUrl(manifest({ name: 'docs', packagePath: tmpDir }), ['readme.md']);
|
|
108
|
+
expect(url).to.equal('hostedPlugin/acme_docs/README.md');
|
|
112
109
|
});
|
|
113
110
|
it('returns undefined when directory is missing', () => {
|
|
114
|
-
|
|
111
|
+
expect(getPluginRootFileUrl(manifest({ name: 'missing', packagePath: '/no/such/path' }), ['readme.md'])).to.equal(undefined);
|
|
115
112
|
});
|
|
116
113
|
});
|
|
117
114
|
describe('buildEntryPointForTheia', () => {
|
|
118
115
|
it('maps theiaPlugin entry points and headless script', () => {
|
|
119
|
-
const entryPoint =
|
|
116
|
+
const entryPoint = buildEntryPointForTheia(manifest({
|
|
120
117
|
name: 'theia-ext',
|
|
121
118
|
theiaPlugin: {
|
|
122
119
|
frontend: './lib/browser/main.js',
|
|
@@ -124,7 +121,7 @@ describe('plugin-model', () => {
|
|
|
124
121
|
headless: './lib/headless.js'
|
|
125
122
|
}
|
|
126
123
|
}));
|
|
127
|
-
|
|
124
|
+
expect(entryPoint).to.deep.equal({
|
|
128
125
|
frontend: './lib/browser/main.js',
|
|
129
126
|
backend: './lib/node/main.js',
|
|
130
127
|
headless: './lib/headless.js'
|
|
@@ -133,86 +130,86 @@ describe('plugin-model', () => {
|
|
|
133
130
|
});
|
|
134
131
|
describe('buildEntryPointForVsCode', () => {
|
|
135
132
|
it('prefers browser entry for ui-only extensions in web mode', () => {
|
|
136
|
-
const entryPoint =
|
|
133
|
+
const entryPoint = buildEntryPointForVsCode(manifest({
|
|
137
134
|
name: 'ui-extension',
|
|
138
135
|
browser: './dist/browser/extension.js',
|
|
139
136
|
main: './dist/node/extension.js',
|
|
140
137
|
extensionKind: ['ui']
|
|
141
138
|
}), { uiKind: 'web' });
|
|
142
|
-
|
|
143
|
-
|
|
139
|
+
expect(entryPoint.frontend).to.equal('./dist/browser/extension.js');
|
|
140
|
+
expect(entryPoint.backend).to.equal(undefined);
|
|
144
141
|
});
|
|
145
142
|
it('uses main as backend when browser is absent', () => {
|
|
146
|
-
const entryPoint =
|
|
143
|
+
const entryPoint = buildEntryPointForVsCode(manifest({
|
|
147
144
|
name: 'workspace-extension',
|
|
148
145
|
main: './dist/node/extension.js'
|
|
149
146
|
}), { uiKind: 'web' });
|
|
150
|
-
|
|
151
|
-
|
|
147
|
+
expect(entryPoint.backend).to.equal('./dist/node/extension.js');
|
|
148
|
+
expect(entryPoint.frontend).to.equal(undefined);
|
|
152
149
|
});
|
|
153
150
|
it('prefers backend when both main and browser exist without ui-only web hint', () => {
|
|
154
|
-
const entryPoint =
|
|
151
|
+
const entryPoint = buildEntryPointForVsCode(manifest({
|
|
155
152
|
name: 'hybrid',
|
|
156
153
|
browser: './dist/browser/extension.js',
|
|
157
154
|
main: './dist/node/extension.js',
|
|
158
155
|
extensionKind: ['workspace', 'ui']
|
|
159
156
|
}), { uiKind: 'web' });
|
|
160
|
-
|
|
161
|
-
|
|
157
|
+
expect(entryPoint.backend).to.equal('./dist/node/extension.js');
|
|
158
|
+
expect(entryPoint.frontend).to.equal(undefined);
|
|
162
159
|
});
|
|
163
160
|
it('forwards headless script from theiaPlugin section', () => {
|
|
164
|
-
const entryPoint =
|
|
161
|
+
const entryPoint = buildEntryPointForVsCode(manifest({
|
|
165
162
|
name: 'headless',
|
|
166
163
|
main: './main.js',
|
|
167
164
|
theiaPlugin: { headless: './headless.js' }
|
|
168
165
|
}));
|
|
169
|
-
|
|
166
|
+
expect(entryPoint.headless).to.equal('./headless.js');
|
|
170
167
|
});
|
|
171
168
|
});
|
|
172
169
|
describe('buildModel', () => {
|
|
173
170
|
it('builds theia plugin model with defaults', () => {
|
|
174
|
-
const model =
|
|
171
|
+
const model = buildModelForTheia(manifest({
|
|
175
172
|
name: 'Sample',
|
|
176
173
|
publisher: 'Acme',
|
|
177
|
-
packageUri: `${
|
|
174
|
+
packageUri: `${PLUGINS_SCHEME}:/acme_Sample/`
|
|
178
175
|
}));
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
176
|
+
expect(model.id).to.equal('acme.sample');
|
|
177
|
+
expect(model.engine).to.deep.equal({ type: 'theiaPlugin', version: '*' });
|
|
178
|
+
expect(model.displayName).to.equal('Test Extension');
|
|
179
|
+
expect(model.packageUri).to.equal(`${PLUGINS_SCHEME}:/acme_Sample/`);
|
|
183
180
|
});
|
|
184
181
|
it('builds vscode model with icon url and web entry point', () => {
|
|
185
|
-
const model =
|
|
182
|
+
const model = buildModelForVsCode(manifest({
|
|
186
183
|
name: 'icon-ext',
|
|
187
184
|
icon: './media/icon.png',
|
|
188
185
|
browser: './browser.js',
|
|
189
186
|
extensionKind: ['ui'],
|
|
190
187
|
engines: { vscode: '^1.90.0' }
|
|
191
188
|
}), { uiKind: 'web' });
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
189
|
+
expect(model.engine).to.deep.equal({ type: 'vscode', version: '^1.90.0' });
|
|
190
|
+
expect(model.iconUrl).to.equal('hostedPlugin/acme_icon_ext/media/icon.png');
|
|
191
|
+
expect(model.entryPoint.frontend).to.equal('./browser.js');
|
|
195
192
|
});
|
|
196
193
|
it('uses UNPUBLISHED publisher and displayName fallback', () => {
|
|
197
|
-
const model =
|
|
198
|
-
|
|
199
|
-
|
|
194
|
+
const model = buildModel(manifest({ name: 'anon', publisher: undefined, displayName: undefined }), 'vscode');
|
|
195
|
+
expect(model.publisher).to.equal(UNPUBLISHED);
|
|
196
|
+
expect(model.displayName).to.equal('anon');
|
|
200
197
|
});
|
|
201
198
|
});
|
|
202
199
|
describe('buildLifecycle', () => {
|
|
203
200
|
it('uses theia start/stop for theiaPlugin engine', () => {
|
|
204
|
-
const lifecycle =
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
201
|
+
const lifecycle = buildLifecycle(manifest({ name: 'theia', publisher: 'acme' }), 'theiaPlugin');
|
|
202
|
+
expect(lifecycle.startMethod).to.equal(THEIA_PLUGIN_START_METHOD);
|
|
203
|
+
expect(lifecycle.stopMethod).to.equal(THEIA_PLUGIN_STOP_METHOD);
|
|
204
|
+
expect(lifecycle.frontendModuleName).to.equal('acme_theia');
|
|
205
|
+
expect(lifecycle.frontendInitPath).to.equal(undefined);
|
|
209
206
|
});
|
|
210
207
|
it('uses vscode activate/deactivate lifecycle', () => {
|
|
211
|
-
const lifecycle =
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
208
|
+
const lifecycle = buildLifecycle(manifest({ name: 'sample', publisher: 'acme' }), 'vscode');
|
|
209
|
+
expect(lifecycle.startMethod).to.equal(VSCODE_EXTENSION_ACTIVATE);
|
|
210
|
+
expect(lifecycle.stopMethod).to.equal(VSCODE_EXTENSION_DEACTIVATE);
|
|
211
|
+
expect(lifecycle.frontendInitPath).to.equal(VSCODE_FRONTEND_INIT);
|
|
212
|
+
expect(lifecycle.frontendModuleName).to.equal('acme_sample');
|
|
216
213
|
});
|
|
217
214
|
});
|
|
218
215
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-model.spec.js","sourceRoot":"","sources":["../../src/common/plugin-model.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin-model.spec.js","sourceRoot":"","sources":["../../src/common/plugin-model.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// *****************************************************************************
|
|
3
2
|
// Copyright (C) 2026 Maksim Kachurin and others.
|
|
4
3
|
//
|
|
@@ -14,16 +13,14 @@
|
|
|
14
13
|
//
|
|
15
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
15
|
// *****************************************************************************
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.ICON_NAME_SEGMENT = exports.PreferenceScope = void 0;
|
|
19
16
|
/** Keep numeric values aligned with `PreferenceScope` in `@theia/core`. */
|
|
20
|
-
var PreferenceScope;
|
|
17
|
+
export var PreferenceScope;
|
|
21
18
|
(function (PreferenceScope) {
|
|
22
19
|
PreferenceScope[PreferenceScope["Default"] = 0] = "Default";
|
|
23
20
|
PreferenceScope[PreferenceScope["User"] = 1] = "User";
|
|
24
21
|
PreferenceScope[PreferenceScope["Workspace"] = 2] = "Workspace";
|
|
25
22
|
PreferenceScope[PreferenceScope["Folder"] = 3] = "Folder";
|
|
26
|
-
})(PreferenceScope || (
|
|
23
|
+
})(PreferenceScope || (PreferenceScope = {}));
|
|
27
24
|
/** Same segment as `CSSIcon.iconNameSegment` in `@theia/core`. */
|
|
28
|
-
|
|
25
|
+
export const ICON_NAME_SEGMENT = '[A-Za-z0-9]+';
|
|
29
26
|
//# sourceMappingURL=protocol-shims.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-shims.js","sourceRoot":"","sources":["../../src/common/protocol-shims.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"protocol-shims.js","sourceRoot":"","sources":["../../src/common/protocol-shims.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;AA4FhF,2EAA2E;AAC3E,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACvB,2DAAW,CAAA;IACX,qDAAQ,CAAA;IACR,+DAAa,CAAA;IACb,yDAAU,CAAA;AACd,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B;AAkCD,kEAAkE;AAClE,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { NormalizeContributionsContext } from './contribution-types';
|
|
2
|
-
import type { PluginManifest } from './manifest-types';
|
|
1
|
+
import type { NormalizeContributionsContext } from './contribution-types.js';
|
|
2
|
+
import type { PluginManifest } from './manifest-types.js';
|
|
3
3
|
export declare function manifest(partial: Partial<PluginManifest> & Pick<PluginManifest, 'name'>): PluginManifest;
|
|
4
4
|
export declare function createNormalizeCtx(pluginOverrides?: Partial<PluginManifest>, ctxOverrides?: Partial<NormalizeContributionsContext>): NormalizeContributionsContext;
|
|
5
5
|
//# sourceMappingURL=test-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../src/common/test-helpers.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../src/common/test-helpers.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,cAAc,CAQxG;AAED,wBAAgB,kBAAkB,CAC9B,eAAe,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EACzC,YAAY,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,GACtD,6BAA6B,CAU/B"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// *****************************************************************************
|
|
3
2
|
// Copyright (C) 2026 Maksim Kachurin and others.
|
|
4
3
|
//
|
|
@@ -14,11 +13,8 @@
|
|
|
14
13
|
//
|
|
15
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
15
|
// *****************************************************************************
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
exports.createNormalizeCtx = createNormalizeCtx;
|
|
20
|
-
const plugin_model_1 = require("./plugin-model");
|
|
21
|
-
function manifest(partial) {
|
|
16
|
+
import { toPluginUrl } from './plugin-model.js';
|
|
17
|
+
export function manifest(partial) {
|
|
22
18
|
return {
|
|
23
19
|
version: '1.0.0',
|
|
24
20
|
publisher: 'acme',
|
|
@@ -27,12 +23,12 @@ function manifest(partial) {
|
|
|
27
23
|
...partial
|
|
28
24
|
};
|
|
29
25
|
}
|
|
30
|
-
function createNormalizeCtx(pluginOverrides, ctxOverrides) {
|
|
26
|
+
export function createNormalizeCtx(pluginOverrides, ctxOverrides) {
|
|
31
27
|
const plugin = manifest({ name: 'test-ext', ...pluginOverrides });
|
|
32
28
|
return {
|
|
33
29
|
plugin,
|
|
34
|
-
resolveUrl: relativePath =>
|
|
35
|
-
resolveUri: (pck, relativePath) =>
|
|
30
|
+
resolveUrl: relativePath => toPluginUrl(plugin, relativePath),
|
|
31
|
+
resolveUri: (pck, relativePath) => toPluginUrl(pck, relativePath),
|
|
36
32
|
onError: () => undefined,
|
|
37
33
|
onWarn: () => undefined,
|
|
38
34
|
...ctxOverrides
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../src/common/test-helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../src/common/test-helpers.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;AAIhF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,UAAU,QAAQ,CAAC,OAA+D;IACpF,OAAO;QACH,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,MAAM;QACjB,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,gBAAgB;QAC7B,GAAG,OAAO;KACb,CAAC;AACN,CAAC;AAED,MAAM,UAAU,kBAAkB,CAC9B,eAAyC,EACzC,YAAqD;IAErD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC;IAClE,OAAO;QACH,MAAM;QACN,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC;QAC7D,UAAU,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC;QACjE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;QACvB,GAAG,YAAY;KAClB,CAAC;AACN,CAAC"}
|
package/lib/common/utils.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// *****************************************************************************
|
|
3
2
|
// Copyright (C) 2026 Maksim Kachurin and others.
|
|
4
3
|
//
|
|
@@ -14,28 +13,21 @@
|
|
|
14
13
|
//
|
|
15
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
15
|
// *****************************************************************************
|
|
17
|
-
|
|
18
|
-
exports.isObject = isObject;
|
|
19
|
-
exports.isStringArray = isStringArray;
|
|
20
|
-
exports.flatten = flatten;
|
|
21
|
-
exports.isColorDefaults = isColorDefaults;
|
|
22
|
-
exports.isENOENT = isENOENT;
|
|
23
|
-
exports.deepClone = deepClone;
|
|
24
|
-
function isObject(value) {
|
|
16
|
+
export function isObject(value) {
|
|
25
17
|
// eslint-disable-next-line no-null/no-null
|
|
26
18
|
return typeof value === 'object' && value !== null;
|
|
27
19
|
}
|
|
28
|
-
function isStringArray(value) {
|
|
20
|
+
export function isStringArray(value) {
|
|
29
21
|
return Array.isArray(value) && value.every(item => typeof item === 'string');
|
|
30
22
|
}
|
|
31
|
-
function flatten(arrays) {
|
|
23
|
+
export function flatten(arrays) {
|
|
32
24
|
const result = [];
|
|
33
25
|
for (const arr of arrays) {
|
|
34
26
|
result.push(...arr);
|
|
35
27
|
}
|
|
36
28
|
return result;
|
|
37
29
|
}
|
|
38
|
-
function isColorDefaults(value) {
|
|
30
|
+
export function isColorDefaults(value) {
|
|
39
31
|
return isObject(value)
|
|
40
32
|
&& typeof value.light === 'string'
|
|
41
33
|
&& typeof value.dark === 'string'
|
|
@@ -48,10 +40,10 @@ function isErrnoException(arg) {
|
|
|
48
40
|
&& typeof arg.code === 'string'
|
|
49
41
|
&& typeof arg.errno === 'number';
|
|
50
42
|
}
|
|
51
|
-
function isENOENT(arg) {
|
|
43
|
+
export function isENOENT(arg) {
|
|
52
44
|
return isErrnoException(arg) && arg.code === ENOENT;
|
|
53
45
|
}
|
|
54
|
-
function deepClone(obj) {
|
|
46
|
+
export function deepClone(obj) {
|
|
55
47
|
if (!isObject(obj)) {
|
|
56
48
|
return obj;
|
|
57
49
|
}
|
package/lib/common/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common/utils.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;AAEhF,MAAM,UAAU,QAAQ,CAAC,KAAc;IACnC,2CAA2C;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,MAAiC;IACxD,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC;WACf,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;WAC/B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;WAC9B,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC;AAClD,CAAC;AAOD,MAAM,MAAM,GAAG,QAAiB,CAAC;AAIjC,SAAS,gBAAgB,CAAC,GAAY;IAClC,OAAO,GAAG,YAAY,KAAK;WACpB,QAAQ,CAAC,GAAG,CAAC;WACb,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;WAC5B,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,QAAQ,CACpB,GAAY;IAEZ,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,SAAS,CAAI,GAAM;IAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC;IACf,CAAC;IACD,IAAI,GAAG,YAAY,MAAM,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC;IACf,CAAC;IACD,8DAA8D;IAC9D,MAAM,MAAM,GAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACvB,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,MAAW,CAAC;AACvB,CAAC"}
|
package/lib/common/utils.spec.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// *****************************************************************************
|
|
3
2
|
// Copyright (C) 2026 Maksim Kachurin and others.
|
|
4
3
|
//
|
|
@@ -14,63 +13,62 @@
|
|
|
14
13
|
//
|
|
15
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
15
|
// *****************************************************************************
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const utils_1 = require("./utils");
|
|
16
|
+
import { expect } from 'chai';
|
|
17
|
+
import { rejects } from 'assert';
|
|
18
|
+
import { promises as fs } from 'fs';
|
|
19
|
+
import { deepClone, isENOENT, isObject, isStringArray } from './utils.js';
|
|
22
20
|
describe('utils', () => {
|
|
23
21
|
describe('isObject', () => {
|
|
24
22
|
it('returns true for plain objects', () => {
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
expect(isObject({})).to.equal(true);
|
|
24
|
+
expect(isObject({ a: 1 })).to.equal(true);
|
|
27
25
|
});
|
|
28
26
|
it('returns false for null and primitives', () => {
|
|
29
27
|
// eslint-disable-next-line no-null/no-null
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
expect(isObject(null)).to.equal(false);
|
|
29
|
+
expect(isObject(undefined)).to.equal(false);
|
|
30
|
+
expect(isObject('x')).to.equal(false);
|
|
33
31
|
});
|
|
34
32
|
it('returns true for arrays because they are objects in JavaScript', () => {
|
|
35
|
-
|
|
33
|
+
expect(isObject([])).to.equal(true);
|
|
36
34
|
});
|
|
37
35
|
});
|
|
38
36
|
describe('isStringArray', () => {
|
|
39
37
|
it('returns true only for string arrays', () => {
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
expect(isStringArray(['a', 'b'])).to.equal(true);
|
|
39
|
+
expect(isStringArray([])).to.equal(true);
|
|
42
40
|
});
|
|
43
41
|
it('returns false for mixed or non-array values', () => {
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
expect(isStringArray(['a', 1])).to.equal(false);
|
|
43
|
+
expect(isStringArray('a')).to.equal(false);
|
|
46
44
|
});
|
|
47
45
|
});
|
|
48
46
|
describe('isENOENT', () => {
|
|
49
47
|
it('detects fs ENOENT errors', async () => {
|
|
50
|
-
await
|
|
48
|
+
await rejects(fs.readFile('definitely-missing-' + Date.now()), reason => isENOENT(reason));
|
|
51
49
|
});
|
|
52
50
|
it('returns false for plain errors and null', () => {
|
|
53
|
-
|
|
51
|
+
expect(isENOENT(new Error('I am not ENOENT'))).to.equal(false);
|
|
54
52
|
// eslint-disable-next-line no-null/no-null
|
|
55
|
-
|
|
53
|
+
expect(isENOENT(null)).to.equal(false);
|
|
56
54
|
});
|
|
57
55
|
it('returns false for other errno codes', async () => {
|
|
58
|
-
await (
|
|
56
|
+
await rejects(fs.readdir(import.meta.filename), reason => !isENOENT(reason));
|
|
59
57
|
});
|
|
60
58
|
});
|
|
61
59
|
describe('deepClone', () => {
|
|
62
60
|
it('clones nested objects without sharing references', () => {
|
|
63
61
|
const source = { nested: { value: 1 }, list: [1, 2] };
|
|
64
|
-
const clone =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
const clone = deepClone(source);
|
|
63
|
+
expect(clone).to.deep.equal(source);
|
|
64
|
+
expect(clone).to.not.equal(source);
|
|
65
|
+
expect(clone.nested).to.not.equal(source.nested);
|
|
66
|
+
expect(clone.list).to.not.equal(source.list);
|
|
69
67
|
});
|
|
70
68
|
it('returns primitives and regexps unchanged', () => {
|
|
71
|
-
|
|
69
|
+
expect(deepClone(42)).to.equal(42);
|
|
72
70
|
const re = /abc/;
|
|
73
|
-
|
|
71
|
+
expect(deepClone(re)).to.equal(re);
|
|
74
72
|
});
|
|
75
73
|
});
|
|
76
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../src/common/utils.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../src/common/utils.spec.ts"],"names":[],"mappings":"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"}
|