@theia/variable-resolver 1.28.0-next.2 → 1.28.0-next.26
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/browser/common-variable-contribution.d.ts.map +1 -1
- package/lib/browser/common-variable-contribution.js +11 -7
- package/lib/browser/common-variable-contribution.js.map +1 -1
- package/lib/browser/variable-resolver-service.d.ts +10 -12
- package/lib/browser/variable-resolver-service.d.ts.map +1 -1
- package/lib/browser/variable-resolver-service.js +33 -29
- package/lib/browser/variable-resolver-service.js.map +1 -1
- package/lib/browser/variable-resolver-service.spec.js +23 -28
- package/lib/browser/variable-resolver-service.spec.js.map +1 -1
- package/lib/browser/variable.d.ts +1 -1
- package/lib/browser/variable.d.ts.map +1 -1
- package/lib/browser/variable.js.map +1 -1
- package/package.json +3 -3
- package/src/browser/common-variable-contribution.ts +11 -7
- package/src/browser/variable-resolver-service.spec.ts +26 -34
- package/src/browser/variable-resolver-service.ts +41 -41
- package/src/browser/variable.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/common-variable-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wDAAwD,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAkB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"common-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/common-variable-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wDAAwD,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAkB,MAAM,yBAAyB,CAAC;AAI5E,qBACa,0BAA2B,YAAW,oBAAoB;IAGnE,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IAG3C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAG1D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAE1C,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAiGtE"}
|
|
@@ -33,6 +33,7 @@ const os_1 = require("@theia/core/lib/common/os");
|
|
|
33
33
|
const preference_service_1 = require("@theia/core/lib/browser/preferences/preference-service");
|
|
34
34
|
const resource_context_key_1 = require("@theia/core/lib/browser/resource-context-key");
|
|
35
35
|
const browser_1 = require("@theia/core/lib/browser");
|
|
36
|
+
const cancellation_1 = require("@theia/core/lib/common/cancellation");
|
|
36
37
|
let CommonVariableContribution = class CommonVariableContribution {
|
|
37
38
|
async registerVariables(variables) {
|
|
38
39
|
const execPath = await this.env.getExecPath();
|
|
@@ -63,14 +64,17 @@ let CommonVariableContribution = class CommonVariableContribution {
|
|
|
63
64
|
});
|
|
64
65
|
variables.registerVariable({
|
|
65
66
|
name: 'command',
|
|
66
|
-
resolve: async (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
resolve: async (contextUri, commandId, configurationSection, commandIdVariables, configuration) => {
|
|
68
|
+
if (commandId) {
|
|
69
|
+
if (commandIdVariables === null || commandIdVariables === void 0 ? void 0 : commandIdVariables[commandId]) {
|
|
70
|
+
commandId = commandIdVariables[commandId];
|
|
71
|
+
}
|
|
72
|
+
const result = await this.commands.executeCommand(commandId, configuration);
|
|
73
|
+
// eslint-disable-next-line no-null/no-null
|
|
74
|
+
if (result === null) {
|
|
75
|
+
throw (0, cancellation_1.cancelled)();
|
|
76
|
+
}
|
|
71
77
|
}
|
|
72
|
-
const result = commandId && await this.commands.executeCommand(commandId, configuration);
|
|
73
|
-
return result ? result : undefined;
|
|
74
78
|
}
|
|
75
79
|
});
|
|
76
80
|
variables.registerVariable({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/common-variable-contribution.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,2EAA2E;AAC3E,gFAAgF;;;;;;;;;;;;AAEhF,4DAA4E;AAE5E,sFAAgF;AAChF,wEAA0E;AAC1E,4DAAgE;AAChE,kDAA+C;AAC/C,+FAA2F;AAC3F,uFAAkF;AAElF,qDAA4E;
|
|
1
|
+
{"version":3,"file":"common-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/common-variable-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,6 @@ export interface VariableResolveOptions {
|
|
|
9
9
|
configurationSection?: string;
|
|
10
10
|
commandIdVariables?: CommandIdVariables;
|
|
11
11
|
configuration?: unknown;
|
|
12
|
-
checkAllResolved?: boolean;
|
|
13
12
|
}
|
|
14
13
|
/**
|
|
15
14
|
* The variable resolver service should be used to resolve variables in strings.
|
|
@@ -19,21 +18,21 @@ export declare class VariableResolverService {
|
|
|
19
18
|
protected readonly variableRegistry: VariableRegistry;
|
|
20
19
|
/**
|
|
21
20
|
* Resolve the variables in the given string array.
|
|
22
|
-
* @param value The array of data to resolve
|
|
23
|
-
* @param options
|
|
24
|
-
* @returns
|
|
25
|
-
*
|
|
21
|
+
* @param value The array of data to resolve variables in.
|
|
22
|
+
* @param options Options of the variable resolution.
|
|
23
|
+
* @returns Promise to array with variables resolved. Never rejects.
|
|
24
|
+
*
|
|
25
|
+
* @deprecated since 1.28.0 use {@link resolve} instead.
|
|
26
26
|
*/
|
|
27
27
|
resolveArray(value: string[], options?: VariableResolveOptions): Promise<string[] | undefined>;
|
|
28
28
|
/**
|
|
29
|
-
* Resolve the variables in the
|
|
30
|
-
* @param value Data to resolve
|
|
31
|
-
* @param options
|
|
32
|
-
* @returns
|
|
33
|
-
* Never reject.
|
|
29
|
+
* Resolve the variables for all strings found in the object and nested objects.
|
|
30
|
+
* @param value Data to resolve variables in.
|
|
31
|
+
* @param options Options of the variable resolution
|
|
32
|
+
* @returns Promise to object with variables resolved. Returns `undefined` if a variable resolution was cancelled.
|
|
34
33
|
*/
|
|
35
34
|
resolve<T>(value: T, options?: VariableResolveOptions): Promise<T | undefined>;
|
|
36
|
-
protected doResolve(value:
|
|
35
|
+
protected doResolve(value: any, context: VariableResolverService.Context): Promise<any>;
|
|
37
36
|
protected doResolveObject(obj: object, context: VariableResolverService.Context): Promise<object>;
|
|
38
37
|
protected doResolveArray(values: Array<Object | undefined>, context: VariableResolverService.Context): Promise<Array<Object | undefined>>;
|
|
39
38
|
protected doResolveString(value: string, context: VariableResolverService.Context): Promise<string>;
|
|
@@ -46,7 +45,6 @@ export declare namespace VariableResolverService {
|
|
|
46
45
|
protected readonly resolved: Map<string, string | undefined>;
|
|
47
46
|
constructor(variableRegistry: VariableRegistry, options: VariableResolveOptions);
|
|
48
47
|
get(name: string): string | undefined;
|
|
49
|
-
allDefined(): boolean;
|
|
50
48
|
resolve(name: string): Promise<void>;
|
|
51
49
|
}
|
|
52
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-resolver-service.d.ts","sourceRoot":"","sources":["../../src/browser/variable-resolver-service.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,GAAG,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"variable-resolver-service.d.ts","sourceRoot":"","sources":["../../src/browser/variable-resolver-service.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,MAAM,WAAW,sBAAsB;IACnC,OAAO,CAAC,EAAE,GAAG,CAAC;IACd;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,qBACa,uBAAuB;IAEhC,SAAS,CAAC,MAAM,CAAC,UAAU,SAAkB;IAEnB,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEhF;;;;;;;OAOG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC;IAIlG;;;;;OAKG;IACG,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;cAYxE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;cAiB7E,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;cAYvF,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;cAS/H,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;cAQzF,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAS3G;AACD,yBAAiB,uBAAuB,CAAC;IAErC,MAAa,OAAO;QAKZ,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;QACrD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,sBAAsB;QAJtD,SAAS,CAAC,QAAQ,CAAC,QAAQ,kCAAyC;oBAG7C,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,sBAAsB;QAGtD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;QAI/B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;KAsC7C;CACJ"}
|
|
@@ -29,35 +29,39 @@ exports.VariableResolverService = void 0;
|
|
|
29
29
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
30
30
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
31
31
|
const variable_1 = require("./variable");
|
|
32
|
-
const
|
|
32
|
+
const core_1 = require("@theia/core");
|
|
33
33
|
/**
|
|
34
34
|
* The variable resolver service should be used to resolve variables in strings.
|
|
35
35
|
*/
|
|
36
36
|
let VariableResolverService = VariableResolverService_1 = class VariableResolverService {
|
|
37
37
|
/**
|
|
38
38
|
* Resolve the variables in the given string array.
|
|
39
|
-
* @param value The array of data to resolve
|
|
40
|
-
* @param options
|
|
41
|
-
* @returns
|
|
42
|
-
*
|
|
39
|
+
* @param value The array of data to resolve variables in.
|
|
40
|
+
* @param options Options of the variable resolution.
|
|
41
|
+
* @returns Promise to array with variables resolved. Never rejects.
|
|
42
|
+
*
|
|
43
|
+
* @deprecated since 1.28.0 use {@link resolve} instead.
|
|
43
44
|
*/
|
|
44
45
|
resolveArray(value, options = {}) {
|
|
45
46
|
return this.resolve(value, options);
|
|
46
47
|
}
|
|
47
48
|
/**
|
|
48
|
-
* Resolve the variables in the
|
|
49
|
-
* @param value Data to resolve
|
|
50
|
-
* @param options
|
|
51
|
-
* @returns
|
|
52
|
-
* Never reject.
|
|
49
|
+
* Resolve the variables for all strings found in the object and nested objects.
|
|
50
|
+
* @param value Data to resolve variables in.
|
|
51
|
+
* @param options Options of the variable resolution
|
|
52
|
+
* @returns Promise to object with variables resolved. Returns `undefined` if a variable resolution was cancelled.
|
|
53
53
|
*/
|
|
54
54
|
async resolve(value, options = {}) {
|
|
55
55
|
const context = new VariableResolverService_1.Context(this.variableRegistry, options);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
try {
|
|
57
|
+
return await this.doResolve(value, context);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
if ((0, core_1.isCancelled)(error)) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
throw error;
|
|
59
64
|
}
|
|
60
|
-
return resolved;
|
|
61
65
|
}
|
|
62
66
|
async doResolve(value, context) {
|
|
63
67
|
// eslint-disable-next-line no-null/no-null
|
|
@@ -128,14 +132,6 @@ exports.VariableResolverService = VariableResolverService;
|
|
|
128
132
|
get(name) {
|
|
129
133
|
return this.resolved.get(name);
|
|
130
134
|
}
|
|
131
|
-
allDefined() {
|
|
132
|
-
for (const value of this.resolved.values()) {
|
|
133
|
-
if (value === undefined) {
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return true;
|
|
138
|
-
}
|
|
139
135
|
async resolve(name) {
|
|
140
136
|
if (this.resolved.has(name)) {
|
|
141
137
|
return;
|
|
@@ -143,21 +139,29 @@ exports.VariableResolverService = VariableResolverService;
|
|
|
143
139
|
try {
|
|
144
140
|
let variableName = name;
|
|
145
141
|
let argument;
|
|
146
|
-
const parts = name.split(':');
|
|
142
|
+
const parts = name.split(':', 2);
|
|
147
143
|
if (parts.length > 1) {
|
|
148
144
|
variableName = parts[0];
|
|
149
145
|
argument = parts[1];
|
|
150
146
|
}
|
|
151
147
|
const variable = this.variableRegistry.getVariable(variableName);
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
148
|
+
const resolved = await (variable === null || variable === void 0 ? void 0 : variable.resolve(this.options.context, argument, this.options.configurationSection, this.options.commandIdVariables, this.options.configuration));
|
|
149
|
+
if (typeof resolved === 'bigint' ||
|
|
150
|
+
typeof resolved === 'boolean' ||
|
|
151
|
+
typeof resolved === 'number' ||
|
|
152
|
+
typeof resolved === 'string') {
|
|
153
|
+
this.resolved.set(name, `${resolved}`);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
this.resolved.set(name, undefined);
|
|
157
|
+
}
|
|
157
158
|
}
|
|
158
159
|
catch (e) {
|
|
159
|
-
|
|
160
|
+
if ((0, core_1.isCancelled)(e)) {
|
|
161
|
+
throw e;
|
|
162
|
+
}
|
|
160
163
|
this.resolved.set(name, undefined);
|
|
164
|
+
console.error(`Failed to resolve '${name}' variable:`, e);
|
|
161
165
|
}
|
|
162
166
|
}
|
|
163
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-resolver-service.js","sourceRoot":"","sources":["../../src/browser/variable-resolver-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;;;;;AAEhF,uDAAuD;AAEvD,4DAAkE;AAClE,yCAA8C;
|
|
1
|
+
{"version":3,"file":"variable-resolver-service.js","sourceRoot":"","sources":["../../src/browser/variable-resolver-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
const chai = require("chai");
|
|
19
19
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
20
20
|
const common_1 = require("@theia/core/lib/common");
|
|
21
|
-
const mock_logger_1 = require("@theia/core/lib/common/test/mock-logger");
|
|
22
21
|
const variable_1 = require("./variable");
|
|
23
22
|
const variable_resolver_service_1 = require("./variable-resolver-service");
|
|
24
23
|
const expect = chai.expect;
|
|
@@ -28,33 +27,24 @@ before(() => {
|
|
|
28
27
|
});
|
|
29
28
|
describe('variable-resolver-service', () => {
|
|
30
29
|
let testContainer;
|
|
31
|
-
before(() => {
|
|
32
|
-
testContainer = new inversify_1.Container();
|
|
33
|
-
const module = new inversify_1.ContainerModule((bind, unbind, isBound, rebind) => {
|
|
34
|
-
bind(common_1.ILogger).to(mock_logger_1.MockLogger);
|
|
35
|
-
bind(variable_1.VariableRegistry).toSelf().inSingletonScope();
|
|
36
|
-
bind(variable_resolver_service_1.VariableResolverService).toSelf();
|
|
37
|
-
});
|
|
38
|
-
testContainer.load(module);
|
|
39
|
-
});
|
|
40
30
|
let variableRegistry;
|
|
41
31
|
let variableResolverService;
|
|
42
32
|
beforeEach(() => {
|
|
33
|
+
testContainer = new inversify_1.Container();
|
|
34
|
+
testContainer.bind(variable_1.VariableRegistry).toSelf().inSingletonScope();
|
|
35
|
+
testContainer.bind(variable_resolver_service_1.VariableResolverService).toSelf().inSingletonScope();
|
|
43
36
|
variableRegistry = testContainer.get(variable_1.VariableRegistry);
|
|
37
|
+
variableRegistry.registerVariable({
|
|
38
|
+
name: 'file',
|
|
39
|
+
description: 'current file',
|
|
40
|
+
resolve: () => Promise.resolve('package.json')
|
|
41
|
+
});
|
|
42
|
+
variableRegistry.registerVariable({
|
|
43
|
+
name: 'lineNumber',
|
|
44
|
+
description: 'current line number',
|
|
45
|
+
resolve: () => Promise.resolve('6')
|
|
46
|
+
});
|
|
44
47
|
variableResolverService = testContainer.get(variable_resolver_service_1.VariableResolverService);
|
|
45
|
-
const variables = [
|
|
46
|
-
{
|
|
47
|
-
name: 'file',
|
|
48
|
-
description: 'current file',
|
|
49
|
-
resolve: () => Promise.resolve('package.json')
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
name: 'lineNumber',
|
|
53
|
-
description: 'current line number',
|
|
54
|
-
resolve: () => Promise.resolve('6')
|
|
55
|
-
}
|
|
56
|
-
];
|
|
57
|
-
variables.forEach(v => variableRegistry.registerVariable(v));
|
|
58
48
|
});
|
|
59
49
|
it('should resolve known variables in a text', async () => {
|
|
60
50
|
const resolved = await variableResolverService.resolve('file: ${file}; line: ${lineNumber}');
|
|
@@ -70,11 +60,16 @@ describe('variable-resolver-service', () => {
|
|
|
70
60
|
const resolved = await variableResolverService.resolve('workspace: ${workspaceRoot}; file: ${file}; line: ${lineNumber}');
|
|
71
61
|
expect(resolved).is.equal('workspace: ${workspaceRoot}; file: package.json; line: 6');
|
|
72
62
|
});
|
|
73
|
-
it('should
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
63
|
+
it('should return undefined when a variable throws with `cancelled()` while resolving', async () => {
|
|
64
|
+
variableRegistry.registerVariable({
|
|
65
|
+
name: 'command',
|
|
66
|
+
resolve: (contextUri, commandId) => {
|
|
67
|
+
if (commandId === 'testCommand') {
|
|
68
|
+
throw (0, common_1.cancelled)();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
const resolved = await variableResolverService.resolve('workspace: ${command:testCommand}; file: ${file}; line: ${lineNumber}');
|
|
78
73
|
expect(resolved).equal(undefined);
|
|
79
74
|
});
|
|
80
75
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-resolver-service.spec.js","sourceRoot":"","sources":["../../src/browser/variable-resolver-service.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;AAEhF,6BAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"variable-resolver-service.spec.js","sourceRoot":"","sources":["../../src/browser/variable-resolver-service.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export interface Variable {
|
|
|
18
18
|
* `undefined` if variable cannot be resolved.
|
|
19
19
|
* Never reject.
|
|
20
20
|
*/
|
|
21
|
-
resolve(context?: URI, argument?: string, configurationSection?: string, commandIdVariables?: CommandIdVariables, configuration?: unknown): MaybePromise<
|
|
21
|
+
resolve(context?: URI, argument?: string, configurationSection?: string, commandIdVariables?: CommandIdVariables, configuration?: unknown): MaybePromise<any>;
|
|
22
22
|
}
|
|
23
23
|
export declare const VariableContribution: unique symbol;
|
|
24
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../src/browser/variable.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,QAAQ;IAErB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,OAAO,CACH,OAAO,CAAC,EAAE,GAAG,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,aAAa,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../src/browser/variable.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,QAAQ;IAErB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,OAAO,CACH,OAAO,CAAC,EAAE,GAAG,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,aAAa,CAAC,EAAE,OAAO,GAExB,YAAY,CAAC,GAAG,CAAC,CAAC;CACxB;AAED,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AACnE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACxD;AAED;;GAEG;AACH,qBACa,gBAAiB,YAAW,UAAU;IAE/C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAa;IAChE,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAE1D,OAAO,IAAI,IAAI;IAIf;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU;IAahD;;OAEG;IACH,YAAY,IAAI,QAAQ,EAAE;IAI1B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI/C;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE;CAGzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable.js","sourceRoot":"","sources":["../../src/browser/variable.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;AAEhF,4DAA0D;AAC1D,sCAA6E;
|
|
1
|
+
{"version":3,"file":"variable.js","sourceRoot":"","sources":["../../src/browser/variable.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;AAEhF,4DAA0D;AAC1D,sCAA6E;AAkChE,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAQnE;;GAEG;AAEH,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAA7B;QAEuB,cAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;QAC7C,cAAS,GAAG,IAAI,2BAAoB,EAAE,CAAC;IA4C9D,CAAC;IA1CG,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,QAAkB;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACnC,OAAO,CAAC,IAAI,CAAC,yBAAyB,QAAQ,CAAC,IAAI,yBAAyB,CAAC,CAAC;YAC9E,OAAO,iBAAU,CAAC,IAAI,CAAC;SAC1B;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG;YACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;SACtD,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,YAAY;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,SAAqB;QACnC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;CACJ,CAAA;AA/CY,gBAAgB;IAD5B,IAAA,sBAAU,GAAE;GACA,gBAAgB,CA+C5B;AA/CY,4CAAgB"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/variable-resolver",
|
|
3
|
-
"version": "1.28.0-next.
|
|
3
|
+
"version": "1.28.0-next.26+78b7f9558bc",
|
|
4
4
|
"description": "Theia - Variable Resolver Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.28.0-next.
|
|
6
|
+
"@theia/core": "1.28.0-next.26+78b7f9558bc"
|
|
7
7
|
},
|
|
8
8
|
"publishConfig": {
|
|
9
9
|
"access": "public"
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"nyc": {
|
|
50
50
|
"extends": "../../configs/nyc.json"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "78b7f9558bc35c2f0283e098191f1b24af2721e3"
|
|
53
53
|
}
|
|
@@ -25,6 +25,7 @@ import { ResourceContextKey } from '@theia/core/lib/browser/resource-context-key
|
|
|
25
25
|
import { VariableInput } from './variable-input';
|
|
26
26
|
import { QuickInputService, QuickPickValue } from '@theia/core/lib/browser';
|
|
27
27
|
import { MaybeArray, RecursivePartial } from '@theia/core/lib/common/types';
|
|
28
|
+
import { cancelled } from '@theia/core/lib/common/cancellation';
|
|
28
29
|
|
|
29
30
|
@injectable()
|
|
30
31
|
export class CommonVariableContribution implements VariableContribution {
|
|
@@ -76,14 +77,17 @@ export class CommonVariableContribution implements VariableContribution {
|
|
|
76
77
|
});
|
|
77
78
|
variables.registerVariable({
|
|
78
79
|
name: 'command',
|
|
79
|
-
resolve: async (
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
resolve: async (contextUri, commandId, configurationSection, commandIdVariables, configuration) => {
|
|
81
|
+
if (commandId) {
|
|
82
|
+
if (commandIdVariables?.[commandId]) {
|
|
83
|
+
commandId = commandIdVariables[commandId];
|
|
84
|
+
}
|
|
85
|
+
const result = await this.commands.executeCommand(commandId, configuration);
|
|
86
|
+
// eslint-disable-next-line no-null/no-null
|
|
87
|
+
if (result === null) {
|
|
88
|
+
throw cancelled();
|
|
89
|
+
}
|
|
84
90
|
}
|
|
85
|
-
const result = commandId && await this.commands.executeCommand(commandId, configuration);
|
|
86
|
-
return result ? result : undefined;
|
|
87
91
|
}
|
|
88
92
|
});
|
|
89
93
|
variables.registerVariable({
|
|
@@ -15,10 +15,9 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import * as chai from 'chai';
|
|
18
|
-
import { Container
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import { Variable, VariableRegistry } from './variable';
|
|
18
|
+
import { Container } from '@theia/core/shared/inversify';
|
|
19
|
+
import { cancelled } from '@theia/core/lib/common';
|
|
20
|
+
import { VariableRegistry } from './variable';
|
|
22
21
|
import { VariableResolverService } from './variable-resolver-service';
|
|
23
22
|
|
|
24
23
|
const expect = chai.expect;
|
|
@@ -31,37 +30,25 @@ before(() => {
|
|
|
31
30
|
describe('variable-resolver-service', () => {
|
|
32
31
|
|
|
33
32
|
let testContainer: Container;
|
|
34
|
-
|
|
35
|
-
before(() => {
|
|
36
|
-
testContainer = new Container();
|
|
37
|
-
const module = new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
38
|
-
bind(ILogger).to(MockLogger);
|
|
39
|
-
bind(VariableRegistry).toSelf().inSingletonScope();
|
|
40
|
-
bind(VariableResolverService).toSelf();
|
|
41
|
-
});
|
|
42
|
-
testContainer.load(module);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
33
|
let variableRegistry: VariableRegistry;
|
|
46
34
|
let variableResolverService: VariableResolverService;
|
|
47
35
|
|
|
48
36
|
beforeEach(() => {
|
|
37
|
+
testContainer = new Container();
|
|
38
|
+
testContainer.bind(VariableRegistry).toSelf().inSingletonScope();
|
|
39
|
+
testContainer.bind(VariableResolverService).toSelf().inSingletonScope();
|
|
49
40
|
variableRegistry = testContainer.get(VariableRegistry);
|
|
41
|
+
variableRegistry.registerVariable({
|
|
42
|
+
name: 'file',
|
|
43
|
+
description: 'current file',
|
|
44
|
+
resolve: () => Promise.resolve('package.json')
|
|
45
|
+
});
|
|
46
|
+
variableRegistry.registerVariable({
|
|
47
|
+
name: 'lineNumber',
|
|
48
|
+
description: 'current line number',
|
|
49
|
+
resolve: () => Promise.resolve('6')
|
|
50
|
+
});
|
|
50
51
|
variableResolverService = testContainer.get(VariableResolverService);
|
|
51
|
-
|
|
52
|
-
const variables: Variable[] = [
|
|
53
|
-
{
|
|
54
|
-
name: 'file',
|
|
55
|
-
description: 'current file',
|
|
56
|
-
resolve: () => Promise.resolve('package.json')
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
name: 'lineNumber',
|
|
60
|
-
description: 'current line number',
|
|
61
|
-
resolve: () => Promise.resolve('6')
|
|
62
|
-
}
|
|
63
|
-
];
|
|
64
|
-
variables.forEach(v => variableRegistry.registerVariable(v));
|
|
65
52
|
});
|
|
66
53
|
|
|
67
54
|
it('should resolve known variables in a text', async () => {
|
|
@@ -81,11 +68,16 @@ describe('variable-resolver-service', () => {
|
|
|
81
68
|
expect(resolved).is.equal('workspace: ${workspaceRoot}; file: package.json; line: 6');
|
|
82
69
|
});
|
|
83
70
|
|
|
84
|
-
it('should
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
71
|
+
it('should return undefined when a variable throws with `cancelled()` while resolving', async () => {
|
|
72
|
+
variableRegistry.registerVariable({
|
|
73
|
+
name: 'command',
|
|
74
|
+
resolve: (contextUri, commandId) => {
|
|
75
|
+
if (commandId === 'testCommand') {
|
|
76
|
+
throw cancelled();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
const resolved = await variableResolverService.resolve('workspace: ${command:testCommand}; file: ${file}; line: ${lineNumber}');
|
|
89
81
|
expect(resolved).equal(undefined);
|
|
90
82
|
});
|
|
91
83
|
});
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
import { injectable, inject } from '@theia/core/shared/inversify';
|
|
20
20
|
import { VariableRegistry } from './variable';
|
|
21
21
|
import URI from '@theia/core/lib/common/uri';
|
|
22
|
-
import { JSONExt, ReadonlyJSONValue } from '@theia/core/shared/@phosphor/coreutils';
|
|
23
22
|
import { CommandIdVariables } from '../common/variable-types';
|
|
23
|
+
import { isCancelled } from '@theia/core';
|
|
24
24
|
|
|
25
25
|
export interface VariableResolveOptions {
|
|
26
26
|
context?: URI;
|
|
@@ -30,8 +30,6 @@ export interface VariableResolveOptions {
|
|
|
30
30
|
configurationSection?: string;
|
|
31
31
|
commandIdVariables?: CommandIdVariables;
|
|
32
32
|
configuration?: unknown;
|
|
33
|
-
// Return 'undefined' if not all variables were successfully resolved.
|
|
34
|
-
checkAllResolved?: boolean;
|
|
35
33
|
}
|
|
36
34
|
|
|
37
35
|
/**
|
|
@@ -46,32 +44,35 @@ export class VariableResolverService {
|
|
|
46
44
|
|
|
47
45
|
/**
|
|
48
46
|
* Resolve the variables in the given string array.
|
|
49
|
-
* @param value The array of data to resolve
|
|
50
|
-
* @param options
|
|
51
|
-
* @returns
|
|
52
|
-
*
|
|
47
|
+
* @param value The array of data to resolve variables in.
|
|
48
|
+
* @param options Options of the variable resolution.
|
|
49
|
+
* @returns Promise to array with variables resolved. Never rejects.
|
|
50
|
+
*
|
|
51
|
+
* @deprecated since 1.28.0 use {@link resolve} instead.
|
|
53
52
|
*/
|
|
54
53
|
resolveArray(value: string[], options: VariableResolveOptions = {}): Promise<string[] | undefined> {
|
|
55
54
|
return this.resolve(value, options);
|
|
56
55
|
}
|
|
57
56
|
|
|
58
57
|
/**
|
|
59
|
-
* Resolve the variables in the
|
|
60
|
-
* @param value Data to resolve
|
|
61
|
-
* @param options
|
|
62
|
-
* @returns
|
|
63
|
-
* Never reject.
|
|
58
|
+
* Resolve the variables for all strings found in the object and nested objects.
|
|
59
|
+
* @param value Data to resolve variables in.
|
|
60
|
+
* @param options Options of the variable resolution
|
|
61
|
+
* @returns Promise to object with variables resolved. Returns `undefined` if a variable resolution was cancelled.
|
|
64
62
|
*/
|
|
65
63
|
async resolve<T>(value: T, options: VariableResolveOptions = {}): Promise<T | undefined> {
|
|
66
64
|
const context = new VariableResolverService.Context(this.variableRegistry, options);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
try {
|
|
66
|
+
return await this.doResolve(value, context);
|
|
67
|
+
} catch (error) {
|
|
68
|
+
if (isCancelled(error)) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
throw error;
|
|
70
72
|
}
|
|
71
|
-
return resolved as any;
|
|
72
73
|
}
|
|
73
74
|
|
|
74
|
-
protected async doResolve(value:
|
|
75
|
+
protected async doResolve(value: any, context: VariableResolverService.Context): Promise<any> {
|
|
75
76
|
// eslint-disable-next-line no-null/no-null
|
|
76
77
|
if (value === undefined || value === null) {
|
|
77
78
|
return value;
|
|
@@ -128,6 +129,7 @@ export class VariableResolverService {
|
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
export namespace VariableResolverService {
|
|
132
|
+
|
|
131
133
|
export class Context {
|
|
132
134
|
|
|
133
135
|
protected readonly resolved = new Map<string, string | undefined>();
|
|
@@ -141,15 +143,6 @@ export namespace VariableResolverService {
|
|
|
141
143
|
return this.resolved.get(name);
|
|
142
144
|
}
|
|
143
145
|
|
|
144
|
-
allDefined(): boolean {
|
|
145
|
-
for (const value of this.resolved.values()) {
|
|
146
|
-
if (value === undefined) {
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return true;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
146
|
async resolve(name: string): Promise<void> {
|
|
154
147
|
if (this.resolved.has(name)) {
|
|
155
148
|
return;
|
|
@@ -157,29 +150,36 @@ export namespace VariableResolverService {
|
|
|
157
150
|
try {
|
|
158
151
|
let variableName = name;
|
|
159
152
|
let argument: string | undefined;
|
|
160
|
-
const parts = name.split(':');
|
|
153
|
+
const parts = name.split(':', 2);
|
|
161
154
|
if (parts.length > 1) {
|
|
162
155
|
variableName = parts[0];
|
|
163
156
|
argument = parts[1];
|
|
164
157
|
}
|
|
165
158
|
const variable = this.variableRegistry.getVariable(variableName);
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
159
|
+
const resolved = await variable?.resolve(
|
|
160
|
+
this.options.context,
|
|
161
|
+
argument,
|
|
162
|
+
this.options.configurationSection,
|
|
163
|
+
this.options.commandIdVariables,
|
|
164
|
+
this.options.configuration
|
|
165
|
+
);
|
|
166
|
+
if (
|
|
167
|
+
typeof resolved === 'bigint' ||
|
|
168
|
+
typeof resolved === 'boolean' ||
|
|
169
|
+
typeof resolved === 'number' ||
|
|
170
|
+
typeof resolved === 'string'
|
|
171
|
+
) {
|
|
172
|
+
this.resolved.set(name, `${resolved}`);
|
|
173
|
+
} else {
|
|
174
|
+
this.resolved.set(name, undefined);
|
|
175
|
+
}
|
|
178
176
|
} catch (e) {
|
|
179
|
-
|
|
177
|
+
if (isCancelled(e)) {
|
|
178
|
+
throw e;
|
|
179
|
+
}
|
|
180
180
|
this.resolved.set(name, undefined);
|
|
181
|
+
console.error(`Failed to resolve '${name}' variable:`, e);
|
|
181
182
|
}
|
|
182
183
|
}
|
|
183
|
-
|
|
184
184
|
}
|
|
185
185
|
}
|
package/src/browser/variable.ts
CHANGED
|
@@ -45,7 +45,8 @@ export interface Variable {
|
|
|
45
45
|
configurationSection?: string,
|
|
46
46
|
commandIdVariables?: CommandIdVariables,
|
|
47
47
|
configuration?: unknown
|
|
48
|
-
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
49
|
+
): MaybePromise<any>;
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
export const VariableContribution = Symbol('VariableContribution');
|