@opensumi/ide-variable 2.21.14-rc-1673439983.0 → 2.22.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/browser/index.js.map +1 -1
- package/lib/browser/variable-quick-open.service.js.map +1 -1
- package/lib/browser/variable-resolver.contribution.js.map +1 -1
- package/lib/browser/variable-resolver.service.js.map +1 -1
- package/lib/common/variable.d.ts +1 -1
- package/lib/common/variable.d.ts.map +1 -1
- package/package.json +9 -8
- package/src/browser/index.ts +23 -0
- package/src/browser/variable-quick-open.service.ts +47 -0
- package/src/browser/variable-resolver.contribution.ts +40 -0
- package/src/browser/variable-resolver.service.ts +159 -0
- package/src/common/index.ts +1 -0
- package/src/common/variable.ts +12 -0
- package/src/index.ts +1 -0
package/lib/browser/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,iEAA2D;AAE3D,sCAAqD;AAErD,+EAAyE;AACzE,qFAAgF;AAChF,2EAAsE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,iEAA2D;AAE3D,sCAAqD;AAErD,+EAAyE;AACzE,qFAAgF;AAChF,2EAAsE;AAG/D,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,gCAAa;IAA1C;;QACL,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,iCAAwB;gBAC/B,QAAQ,EAAE,mDAAuB;aAClC;YACD;gBACE,KAAK,EAAE,sDAAwB;gBAC/B,QAAQ,EAAE,sDAAwB;aACnC;YACD,6DAA4B;SAC7B,CAAC;IACJ,CAAC;CAAA,CAAA;AAZY,cAAc;IAD1B,IAAA,eAAU,GAAE;GACA,cAAc,CAY1B;AAZY,wCAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-quick-open.service.js","sourceRoot":"","sources":["../../src/browser/variable-quick-open.service.ts"],"names":[],"mappings":";;;;AAAA,qCAAqD;AACrD,iEAAwE;AACxE,6DAAiG;
|
|
1
|
+
{"version":3,"file":"variable-quick-open.service.js","sourceRoot":"","sources":["../../src/browser/variable-quick-open.service.ts"],"names":[],"mappings":";;;;AAAA,qCAAqD;AACrD,iEAAwE;AACxE,6DAAiG;AAG1F,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IASnC,IAAI;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAE/G,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE;YAC/B,WAAW,EAAE,IAAA,2BAAQ,EAAC,+BAA+B,CAAC;YACtD,eAAe,EAAE,IAAI;YACrB,qBAAqB,EAAE,IAAI;YAC3B,mBAAmB;SACpB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,QAA0C;QAChE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAA;AApBC;IAAC,IAAA,cAAS,EAAC,mCAAgB,CAAC;;kEAC0B;AAEtD;IAAC,IAAA,cAAS,EAAC,iCAAgB,CAAC;;kEAC0B;AAP3C,wBAAwB;IADpC,IAAA,eAAU,GAAE;GACA,wBAAwB,CAuBpC;AAvBY,4DAAwB;AAyBrC,MAAa,qBAAsB,SAAQ,8BAAa;IACtD,YAA+B,IAAY,EAAqB,WAAoB;QAClF,KAAK,CAAC,EAAE,CAAC,CAAC;QADmB,SAAI,GAAJ,IAAI,CAAQ;QAAqB,gBAAW,GAAX,WAAW,CAAS;IAEpF,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAChC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,IAAU;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAhBD,sDAgBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-resolver.contribution.js","sourceRoot":"","sources":["../../src/browser/variable-resolver.contribution.ts"],"names":[],"mappings":";;;;AAAA,qCAAyC;AACzC,iEASoC;AAEpC,+EAAyE;AAE5D,QAAA,cAAc,GAAY;IACrC,EAAE,EAAE,eAAe;IACnB,KAAK,EAAE,qBAAqB;CAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"variable-resolver.contribution.js","sourceRoot":"","sources":["../../src/browser/variable-resolver.contribution.ts"],"names":[],"mappings":";;;;AAAA,qCAAyC;AACzC,iEASoC;AAEpC,+EAAyE;AAE5D,QAAA,cAAc,GAAY;IACrC,EAAE,EAAE,eAAe;IACnB,KAAK,EAAE,qBAAqB;CAC7B,CAAC;AAGK,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAUvC,OAAO;QACL,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACtH,CAAC;IAED,gBAAgB,CAAC,QAAyB;QACxC,QAAQ,CAAC,eAAe,CAAC,sBAAc,EAAE;YACvC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE;SACpD,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAlBC;IAAC,IAAA,cAAS,EAAC,uCAAoB,CAAC;;0EACoD;AAEpF;IAAC,IAAA,cAAS,EAAC,mCAAgB,CAAC;;sEAC0B;AAEtD;IAAC,IAAA,cAAS,EAAC,sDAAwB,CAAC;sCACS,sDAAwB;8EAAC;AAR3D,4BAA4B;IADxC,IAAA,yBAAM,EAAC,wCAAqB,EAAE,sCAAmB,CAAC;GACtC,4BAA4B,CAmBxC;AAnBY,oEAA4B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable-resolver.service.js","sourceRoot":"","sources":["../../src/browser/variable-resolver.service.ts"],"names":[],"mappings":";;;;;AAAA,qCAAqD;AACrD,iEAAmF;
|
|
1
|
+
{"version":3,"file":"variable-resolver.service.js","sourceRoot":"","sources":["../../src/browser/variable-resolver.service.ts"],"names":[],"mappings":";;;;;AAAA,qCAAqD;AACrD,iEAAmF;AAK5E,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IAMlC;;;;OAIG;IACH,YAAY,CAAC,KAAe,EAAE,UAAkC,EAAE;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAI,KAAQ,EAAE,UAAkC,EAAE;QAC7D,MAAM,OAAO,GAAG,IAAI,yBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,QAAe,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,SAAS,CAAC,KAAU,EAAE,OAAwC;QAC5E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;YACzC,OAAO,KAAK,CAAC;SACd;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC7C;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC5C;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC7C;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,OAAwC;QACnF,MAAM,MAAM,GAER,EAAE,CAAC;QACP,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACnC,MAAM,KAAK,GAAI,GAAW,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;SACzB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,cAAc,CAAC,MAAkB,EAAE,OAAwC;QACzF,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,eAAe,CAAC,KAAa,EAAE,OAAwC;QACrF,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,yBAAuB,CAAC,UAAU,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,EAAE;YAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,OAAwC;QACtF,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,yBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE;YACxE,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SACrC;IACH,CAAC;;AAhGgB,kCAAU,GAAG,cAAc,CAAC;AAE7C;IAAC,IAAA,cAAS,EAAC,mCAAgB,CAAC;;iEAC0B;AAJ3C,uBAAuB;IADnC,IAAA,eAAU,GAAE;GACA,uBAAuB,CAkGnC;AAlGY,0DAAuB;AAoGpC,WAAiB,uBAAuB;IACtC,MAAa,OAAO;QAGlB,YACqB,gBAAkC,EAClC,OAA+B;YAD/B,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,YAAO,GAAP,OAAO,CAAwB;YAJjC,aAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;QAKjE,CAAC;QAEI,KAAK,CAAC,sBAAsB,CAAC,IAAY;YAC/C,IAAI,QAA8B,CAAC;YAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;gBAC3B,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAElD,QAAQ,GAAG,EAAE;oBACX,KAAK,KAAK,CAAC,CAAC;wBACV,MAAM,WAAW,GAAG,QAAQ,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;wBAC/E,IAAI,CAAC,WAAW,EAAE;4BAChB,OAAO;yBACR;wBACD,MAAM,GAAG,GAAG,WAAW,CAAC,4BAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;wBACjE,OAAO,GAAG,CAAC;qBACZ;oBACD;wBACE,MAAM;iBACT;aACF;iBAAM;gBACL,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACzD,MAAM,KAAK,GAAG,QAAQ,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzE,OAAO,KAAe,CAAC;aACxB;QACH,CAAC;QAED,GAAG,CAAC,IAAY;YACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,IAAY;YACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3B,OAAO;aACR;YACD,IAAI;gBACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAChC;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;aACpC;QACH,CAAC;KACF;IAlDY,+BAAO,UAkDnB,CAAA;AACH,CAAC,EApDgB,uBAAuB,GAAvB,+BAAuB,KAAvB,+BAAuB,QAoDvC;AAxJY,0DAAuB"}
|
package/lib/common/variable.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../src/common/variable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../src/common/variable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED,eAAO,MAAM,wBAAwB,eAAqC,CAAC;AAE3E,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACnE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACpF"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-variable",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.22.0",
|
|
4
4
|
"files": [
|
|
5
|
-
"lib"
|
|
5
|
+
"lib",
|
|
6
|
+
"src"
|
|
6
7
|
],
|
|
7
8
|
"license": "MIT",
|
|
8
9
|
"main": "lib/index.js",
|
|
9
10
|
"typings": "lib/index.d.ts",
|
|
10
11
|
"scripts": {
|
|
11
|
-
"prepublishOnly": "
|
|
12
|
+
"prepublishOnly": "yarn run build",
|
|
12
13
|
"build": "tsc --build ../../configs/ts/references/tsconfig.variable.json"
|
|
13
14
|
},
|
|
14
15
|
"repository": {
|
|
@@ -16,12 +17,12 @@
|
|
|
16
17
|
"url": "git@github.com:opensumi/core.git"
|
|
17
18
|
},
|
|
18
19
|
"dependencies": {
|
|
19
|
-
"@opensumi/ide-core-common": "2.
|
|
20
|
+
"@opensumi/ide-core-common": "2.22.0"
|
|
20
21
|
},
|
|
21
22
|
"devDependencies": {
|
|
22
|
-
"@opensumi/ide-core-browser": "2.
|
|
23
|
-
"@opensumi/ide-dev-tool": "
|
|
24
|
-
"@opensumi/ide-quick-open": "2.
|
|
23
|
+
"@opensumi/ide-core-browser": "2.22.0",
|
|
24
|
+
"@opensumi/ide-dev-tool": "1.3.1",
|
|
25
|
+
"@opensumi/ide-quick-open": "2.22.0"
|
|
25
26
|
},
|
|
26
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "927717e1c60f9cf5f01622fd51085b318a175eeb"
|
|
27
28
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Provider, Injectable } from '@opensumi/di';
|
|
2
|
+
import { BrowserModule } from '@opensumi/ide-core-browser';
|
|
3
|
+
|
|
4
|
+
import { IVariableResolverService } from '../common';
|
|
5
|
+
|
|
6
|
+
import { VariableQuickOpenService } from './variable-quick-open.service';
|
|
7
|
+
import { VariableResolverContribution } from './variable-resolver.contribution';
|
|
8
|
+
import { VariableResolverService } from './variable-resolver.service';
|
|
9
|
+
|
|
10
|
+
@Injectable()
|
|
11
|
+
export class VariableModule extends BrowserModule {
|
|
12
|
+
providers: Provider[] = [
|
|
13
|
+
{
|
|
14
|
+
token: IVariableResolverService,
|
|
15
|
+
useClass: VariableResolverService,
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
token: VariableQuickOpenService,
|
|
19
|
+
useClass: VariableQuickOpenService,
|
|
20
|
+
},
|
|
21
|
+
VariableResolverContribution,
|
|
22
|
+
];
|
|
23
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Autowired, Injectable } from '@opensumi/di';
|
|
2
|
+
import { VariableRegistry, localize } from '@opensumi/ide-core-browser';
|
|
3
|
+
import { QuickOpenService, QuickOpenModel, QuickOpenItem, Mode } from '@opensumi/ide-quick-open';
|
|
4
|
+
|
|
5
|
+
@Injectable()
|
|
6
|
+
export class VariableQuickOpenService implements QuickOpenModel {
|
|
7
|
+
protected items: QuickOpenItem[];
|
|
8
|
+
|
|
9
|
+
@Autowired(VariableRegistry)
|
|
10
|
+
protected readonly variableRegistry: VariableRegistry;
|
|
11
|
+
|
|
12
|
+
@Autowired(QuickOpenService)
|
|
13
|
+
protected readonly quickOpenService: QuickOpenService;
|
|
14
|
+
|
|
15
|
+
open(): void {
|
|
16
|
+
this.items = this.variableRegistry.getVariables().map((v) => new VariableQuickOpenItem(v.name, v.description));
|
|
17
|
+
|
|
18
|
+
this.quickOpenService.open(this, {
|
|
19
|
+
placeholder: localize('variable.registered.variables'),
|
|
20
|
+
fuzzyMatchLabel: true,
|
|
21
|
+
fuzzyMatchDescription: true,
|
|
22
|
+
// fuzzySort: true,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
onType(lookFor: string, acceptor: (items: QuickOpenItem[]) => void): void {
|
|
27
|
+
acceptor(this.items);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export class VariableQuickOpenItem extends QuickOpenItem {
|
|
32
|
+
constructor(protected readonly name: string, protected readonly description?: string) {
|
|
33
|
+
super({});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
getLabel(): string {
|
|
37
|
+
return '${' + this.name + '}';
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
getDetail(): string {
|
|
41
|
+
return this.description || '';
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
run(mode: Mode): boolean {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Autowired } from '@opensumi/di';
|
|
2
|
+
import {
|
|
3
|
+
ClientAppContribution,
|
|
4
|
+
ContributionProvider,
|
|
5
|
+
Command,
|
|
6
|
+
CommandContribution,
|
|
7
|
+
CommandRegistry,
|
|
8
|
+
Domain,
|
|
9
|
+
VariableRegistry,
|
|
10
|
+
VariableContribution,
|
|
11
|
+
} from '@opensumi/ide-core-browser';
|
|
12
|
+
|
|
13
|
+
import { VariableQuickOpenService } from './variable-quick-open.service';
|
|
14
|
+
|
|
15
|
+
export const LIST_VARIABLES: Command = {
|
|
16
|
+
id: 'variable.list',
|
|
17
|
+
label: '%variable.list.all%',
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
@Domain(ClientAppContribution, CommandContribution)
|
|
21
|
+
export class VariableResolverContribution implements ClientAppContribution, CommandContribution {
|
|
22
|
+
@Autowired(VariableContribution)
|
|
23
|
+
protected readonly contributionProvider: ContributionProvider<VariableContribution>;
|
|
24
|
+
|
|
25
|
+
@Autowired(VariableRegistry)
|
|
26
|
+
protected readonly variableRegistry: VariableRegistry;
|
|
27
|
+
|
|
28
|
+
@Autowired(VariableQuickOpenService)
|
|
29
|
+
protected readonly variableQuickOpenService: VariableQuickOpenService;
|
|
30
|
+
|
|
31
|
+
onStart(): void {
|
|
32
|
+
this.contributionProvider.getContributions().forEach((contrib) => contrib.registerVariables(this.variableRegistry));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
registerCommands(commands: CommandRegistry): void {
|
|
36
|
+
commands.registerCommand(LIST_VARIABLES, {
|
|
37
|
+
execute: () => this.variableQuickOpenService.open(),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { Injectable, Autowired } from '@opensumi/di';
|
|
2
|
+
import { isWindows, Variable, VariableRegistry } from '@opensumi/ide-core-browser';
|
|
3
|
+
|
|
4
|
+
import { VariableResolveOptions, IVariableResolverService } from '../common';
|
|
5
|
+
|
|
6
|
+
@Injectable()
|
|
7
|
+
export class VariableResolverService implements IVariableResolverService {
|
|
8
|
+
protected static VAR_REGEXP = /\$\{(.*?)\}/g;
|
|
9
|
+
|
|
10
|
+
@Autowired(VariableRegistry)
|
|
11
|
+
protected readonly variableRegistry: VariableRegistry;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 处理给定的变量数组
|
|
15
|
+
* @param value 需要处理的变量数组
|
|
16
|
+
* @param options 处理参数
|
|
17
|
+
*/
|
|
18
|
+
resolveArray(value: string[], options: VariableResolveOptions = {}): Promise<string[]> {
|
|
19
|
+
return this.resolve(value, options);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 变量处理函数
|
|
24
|
+
* @param value 变量
|
|
25
|
+
* @param options 处理参数
|
|
26
|
+
*/
|
|
27
|
+
async resolve<T>(value: T, options: VariableResolveOptions = {}): Promise<T> {
|
|
28
|
+
const context = new VariableResolverService.Context(this.variableRegistry, options);
|
|
29
|
+
const resolved = await this.doResolve(value, context);
|
|
30
|
+
return resolved as any;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* 实际处理函数
|
|
35
|
+
* @param value
|
|
36
|
+
* @param context
|
|
37
|
+
*/
|
|
38
|
+
protected async doResolve(value: any, context: VariableResolverService.Context): Promise<any> {
|
|
39
|
+
if (value === undefined || value === null) {
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
if (typeof value === 'string') {
|
|
43
|
+
return this.doResolveString(value, context);
|
|
44
|
+
}
|
|
45
|
+
if (Array.isArray(value)) {
|
|
46
|
+
return this.doResolveArray(value, context);
|
|
47
|
+
}
|
|
48
|
+
if (typeof value === 'object') {
|
|
49
|
+
return this.doResolveObject(value, context);
|
|
50
|
+
}
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* 获取对象值
|
|
56
|
+
* @param obj
|
|
57
|
+
* @param context
|
|
58
|
+
*/
|
|
59
|
+
protected async doResolveObject(obj: object, context: VariableResolverService.Context): Promise<object> {
|
|
60
|
+
const result: {
|
|
61
|
+
[prop: string]: any;
|
|
62
|
+
} = {};
|
|
63
|
+
for (const name of Object.keys(obj)) {
|
|
64
|
+
const value = (obj as any)[name];
|
|
65
|
+
const resolved = await this.doResolve(value, context);
|
|
66
|
+
result[name] = resolved;
|
|
67
|
+
}
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* 获取数组值
|
|
73
|
+
* @param values
|
|
74
|
+
* @param context
|
|
75
|
+
*/
|
|
76
|
+
protected async doResolveArray(values: Array<any>, context: VariableResolverService.Context): Promise<Array<any>> {
|
|
77
|
+
const result: any[] = [];
|
|
78
|
+
for (const value of values) {
|
|
79
|
+
const resolved = await this.doResolve(value, context);
|
|
80
|
+
result.push(resolved);
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* 获取字符串值
|
|
87
|
+
* @param value
|
|
88
|
+
* @param context
|
|
89
|
+
*/
|
|
90
|
+
protected async doResolveString(value: string, context: VariableResolverService.Context): Promise<string> {
|
|
91
|
+
await this.resolveVariables(value, context);
|
|
92
|
+
return value.replace(VariableResolverService.VAR_REGEXP, (match: string, varName: string) => {
|
|
93
|
+
const varValue = context.get(varName);
|
|
94
|
+
return varValue !== undefined ? varValue : match;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
protected async resolveVariables(value: string, context: VariableResolverService.Context): Promise<void> {
|
|
99
|
+
let match;
|
|
100
|
+
while ((match = VariableResolverService.VAR_REGEXP.exec(value)) !== null) {
|
|
101
|
+
const variableName = match[1];
|
|
102
|
+
await context.resolve(variableName);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export namespace VariableResolverService {
|
|
108
|
+
export class Context {
|
|
109
|
+
protected readonly resolved = new Map<string, string | undefined>();
|
|
110
|
+
|
|
111
|
+
constructor(
|
|
112
|
+
protected readonly variableRegistry: VariableRegistry,
|
|
113
|
+
protected readonly options: VariableResolveOptions,
|
|
114
|
+
) {}
|
|
115
|
+
|
|
116
|
+
private async evaluateSingleVariable(name: string): Promise<string | undefined> {
|
|
117
|
+
let variable: Variable | undefined;
|
|
118
|
+
|
|
119
|
+
const parts = name.split(':');
|
|
120
|
+
if (parts.length > 1) {
|
|
121
|
+
const [key, value] = parts;
|
|
122
|
+
variable = this.variableRegistry.getVariable(key);
|
|
123
|
+
|
|
124
|
+
switch (key) {
|
|
125
|
+
case 'env': {
|
|
126
|
+
const environment = variable && (await variable.resolve(this.options.context));
|
|
127
|
+
if (!environment) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const env = environment[isWindows ? value.toLowerCase() : value];
|
|
131
|
+
return env;
|
|
132
|
+
}
|
|
133
|
+
default:
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
const variable = this.variableRegistry.getVariable(name);
|
|
138
|
+
const value = variable && (await variable.resolve(this.options.context));
|
|
139
|
+
return value as string;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
get(name: string): string | undefined {
|
|
144
|
+
return this.resolved.get(name);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
async resolve(name: string): Promise<void> {
|
|
148
|
+
if (this.resolved.has(name)) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const value = await this.evaluateSingleVariable(name);
|
|
153
|
+
this.resolved.set(name, value);
|
|
154
|
+
} catch (e) {
|
|
155
|
+
this.resolved.set(name, undefined);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './variable';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { URI } from '@opensumi/ide-core-common';
|
|
2
|
+
|
|
3
|
+
export interface VariableResolveOptions {
|
|
4
|
+
context?: URI;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const IVariableResolverService = Symbol('IVariableResolverService');
|
|
8
|
+
|
|
9
|
+
export interface IVariableResolverService {
|
|
10
|
+
resolve<T>(value: T, options?: VariableResolveOptions): Promise<T>;
|
|
11
|
+
resolveArray(value: string[], options?: VariableResolveOptions): Promise<string[]>;
|
|
12
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './common';
|