@opensumi/ide-static-resource 2.21.13 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAA+D;AAC/D,iEAAgH;AAEhH,2DAAwF;AACxF,qDAA6D;AAC7D,8DAAoC;AAGpC,IAAa,oBAAoB,GAAjC,MAAa,oBAAqB,SAAQ,gCAAa;IAAvD;;QACE,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,yCAAqB;gBAC5B,QAAQ,EAAE,0CAAyB;aACpC;YACD,mCAAmC;SACpC,CAAC;QAEF,yBAAoB,GAAG,8CAA0B,CAAC;IACpD,CAAC;CAAA,CAAA;AAVY,oBAAoB;IADhC,IAAA,eAAU,GAAE;GACA,oBAAoB,CAUhC;AAVY,oDAAoB;AAajC,IAAa,mCAAmC,GAAhD,MAAa,mCAAmC;IAO9C,UAAU;QACR,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE;YAChE,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SACjE;IACH,CAAC;CACF,CAAA;AAVC;IADC,IAAA,cAAS,GAAE;sCAC4B,yCAAqB;kFAAC;AAG9D;IADC,IAAA,cAAS,EAAC,8CAA0B,CAAC;;0EAC2C;AALtE,mCAAmC;IAD/C,IAAA,yBAAM,EAAC,wCAAqB,CAAC;GACjB,mCAAmC,CAY/C;AAZY,kFAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAA+D;AAC/D,iEAAgH;AAEhH,2DAAwF;AACxF,qDAA6D;AAC7D,8DAAoC;AAG7B,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,gCAAa;IAAhD;;QACL,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,yCAAqB;gBAC5B,QAAQ,EAAE,0CAAyB;aACpC;YACD,mCAAmC;SACpC,CAAC;QAEF,yBAAoB,GAAG,8CAA0B,CAAC;IACpD,CAAC;CAAA,CAAA;AAVY,oBAAoB;IADhC,IAAA,eAAU,GAAE;GACA,oBAAoB,CAUhC;AAVY,oDAAoB;AAa1B,IAAM,mCAAmC,GAAzC,MAAM,mCAAmC;IAO9C,UAAU;QACR,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE;YAChE,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SACjE;IACH,CAAC;CACF,CAAA;AAXC;IAAC,IAAA,cAAS,GAAE;sCAC4B,yCAAqB;kFAAC;AAE9D;IAAC,IAAA,cAAS,EAAC,8CAA0B,CAAC;;0EAC2C;AALtE,mCAAmC;IAD/C,IAAA,yBAAM,EAAC,wCAAqB,CAAC;GACjB,mCAAmC,CAY/C;AAZY,kFAAmC"}
@@ -1 +1 @@
1
- {"version":3,"file":"static.definition.js","sourceRoot":"","sources":["../../src/browser/static.definition.ts"],"names":[],"mappings":";;;;AAAA,qCAA0C;AAG1C;;;;;;;;;GASG;AAEH,IAAsB,qBAAqB,GAA3C,MAAsB,qBAAqB;CAuB1C,CAAA;AAvBqB,qBAAqB;IAD1C,IAAA,eAAU,GAAE;GACS,qBAAqB,CAuB1C;AAvBqB,sDAAqB;AAiD9B,QAAA,0BAA0B,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAElE,QAAA,kCAAkC,GAAG,MAAM,CAAC,oCAAoC,CAAC,CAAC"}
1
+ {"version":3,"file":"static.definition.js","sourceRoot":"","sources":["../../src/browser/static.definition.ts"],"names":[],"mappings":";;;;AAAA,qCAA0C;AAG1C;;;;;;;;;GASG;AAEI,IAAe,qBAAqB,GAApC,MAAe,qBAAqB;CAuB1C,CAAA;AAvBqB,qBAAqB;IAD1C,IAAA,eAAU,GAAE;GACS,qBAAqB,CAuB1C;AAvBqB,sDAAqB;AAiD9B,QAAA,0BAA0B,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAElE,QAAA,kCAAkC,GAAG,MAAM,CAAC,oCAAoC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"static.service.js","sourceRoot":"","sources":["../../src/browser/static.service.ts"],"names":[],"mappings":";;;;AAAA,qCAA0C;AAM1C,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IAAtC;QACU,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;QAE/C,kBAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;IA2BzD,CAAC;IAzBQ,8BAA8B,CAAC,QAAiC;QACrE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,KAAK,EAAE;YAClB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;SACJ;QACD,OAAO;YACL,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;oBACpD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACxC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAEM,qBAAqB,CAAC,GAAQ;QACnC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACnC,OAAO,GAAG,CAAC;SACZ;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACvE,kCAAkC;QAClC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AA9BY,yBAAyB;IADrC,IAAA,eAAU,GAAE;GACA,yBAAyB,CA8BrC;AA9BY,8DAAyB"}
1
+ {"version":3,"file":"static.service.js","sourceRoot":"","sources":["../../src/browser/static.service.ts"],"names":[],"mappings":";;;;AAAA,qCAA0C;AAMnC,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAA/B;QACG,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;QAE/C,kBAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;IA2BzD,CAAC;IAzBQ,8BAA8B,CAAC,QAAiC;QACrE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,KAAK,EAAE;YAClB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;SACJ;QACD,OAAO;YACL,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;oBACpD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACxC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAEM,qBAAqB,CAAC,GAAQ;QACnC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACnC,OAAO,GAAG,CAAC;SACZ;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACvE,kCAAkC;QAClC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AA9BY,yBAAyB;IADrC,IAAA,eAAU,GAAE;GACA,yBAAyB,CA8BrC;AA9BY,8DAAyB"}
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@opensumi/ide-static-resource",
3
- "version": "2.21.13",
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": "npm run build",
12
+ "prepublishOnly": "yarn run build",
12
13
  "build": "tsc --build ../../configs/ts/references/tsconfig.static-resource.json"
13
14
  },
14
15
  "repository": {
@@ -16,8 +17,8 @@
16
17
  "url": "git@github.com:opensumi/core.git"
17
18
  },
18
19
  "devDependencies": {
19
- "@opensumi/ide-core-browser": "2.21.13",
20
- "@opensumi/ide-dev-tool": "^1.3.1"
20
+ "@opensumi/ide-core-browser": "2.22.0",
21
+ "@opensumi/ide-dev-tool": "1.3.1"
21
22
  },
22
- "gitHead": "1480afacfef7ef11eae65c5cbbddce416f227fe8"
23
+ "gitHead": "927717e1c60f9cf5f01622fd51085b318a175eeb"
23
24
  }
@@ -0,0 +1,34 @@
1
+ import { Injectable, Provider, Autowired } from '@opensumi/di';
2
+ import { BrowserModule, Domain, ContributionProvider, ClientAppContribution } from '@opensumi/ide-core-browser';
3
+
4
+ import { StaticResourceService, StaticResourceContribution } from './static.definition';
5
+ import { StaticResourceServiceImpl } from './static.service';
6
+ export * from './static.definition';
7
+
8
+ @Injectable()
9
+ export class StaticResourceModule extends BrowserModule {
10
+ providers: Provider[] = [
11
+ {
12
+ token: StaticResourceService,
13
+ useClass: StaticResourceServiceImpl,
14
+ },
15
+ StaticResourceClientAppContribution,
16
+ ];
17
+
18
+ contributionProvider = StaticResourceContribution;
19
+ }
20
+
21
+ @Domain(ClientAppContribution)
22
+ export class StaticResourceClientAppContribution implements ClientAppContribution {
23
+ @Autowired()
24
+ private readonly staticResourceService: StaticResourceService;
25
+
26
+ @Autowired(StaticResourceContribution)
27
+ private readonly contributions: ContributionProvider<StaticResourceContribution>;
28
+
29
+ initialize() {
30
+ for (const contribution of this.contributions.getContributions()) {
31
+ contribution.registerStaticResolver(this.staticResourceService);
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,70 @@
1
+ import { Injectable } from '@opensumi/di';
2
+ import { URI, IDisposable } from '@opensumi/ide-core-browser';
3
+
4
+ /**
5
+ * @class StaticResourceService 静态资源转换服务
6
+ * @description
7
+ * 对于一些静态资源的展示,如图片,插件中的资源等等,在IDE中往往会以类似File协议的uri进行描述。
8
+ *
9
+ * 在WebIDE环境,我们无法将它直接挂载在对应的html标签或者css中。
10
+ * 因此在使用之前,需要将这些资源的URI转换为浏览器可以访问的资源。
11
+ *
12
+ * 在Electron中,由于File协议能直接访问,一般来说无需注册资源地址转换。
13
+ */
14
+ @Injectable()
15
+ export abstract class StaticResourceService {
16
+ /**
17
+ * 注册一个静态资源转换方式的提供方
18
+ * @param provider
19
+ */
20
+ public abstract registerStaticResourceProvider(provider: IStaticResourceProvider): IDisposable;
21
+
22
+ /**
23
+ * 将URI资源转换为静态资源
24
+ * 通常比如在WebIDE场景, 会将插件的file://路径,转换为某个静态服务的uri进行访问
25
+ * @param uri 待转换的uri
26
+ * @returns 转换后的uri
27
+ */
28
+ public abstract resolveStaticResource(uri: URI): URI;
29
+
30
+ /**
31
+ * 被转换后的uri将会拥有哪些host,
32
+ * 用于webview的cspResource字段,
33
+ * webview需要能够知道什么样的资源是可以被访问的。
34
+ *
35
+ * 例: ['http://127.0.0.1:8000']
36
+ */
37
+ public readonly resourceRoots: Set<string>;
38
+ }
39
+
40
+ /**
41
+ * @interface 提供静态资源转换方式的提供方
42
+ *
43
+ */
44
+ export interface IStaticResourceProvider {
45
+ /**
46
+ * 能够处理的scheme,单个scheme只能有一个StaticResourceProvider, 先来的会被后来的覆盖
47
+ */
48
+ scheme: string;
49
+
50
+ /**
51
+ * 定义如何处理uri的转换
52
+ * @param uri 待转换的uri
53
+ */
54
+ resolveStaticResource(uri: URI): URI;
55
+
56
+ /**
57
+ * resolve后提供的外部资源的host路径, 会传入StaticResourceService的resourceRoots中
58
+ *
59
+ * 例: ['http://0.0.0.0:8000']
60
+ */
61
+ roots?: string[];
62
+ }
63
+
64
+ export const StaticResourceContribution = Symbol('StaticResourceContribution');
65
+
66
+ export const StaticResourceContributionProvider = Symbol('StaticResourceContributionProvider');
67
+
68
+ export interface StaticResourceContribution {
69
+ registerStaticResolver(service: StaticResourceService): void;
70
+ }
@@ -0,0 +1,37 @@
1
+ import { Injectable } from '@opensumi/di';
2
+ import { URI } from '@opensumi/ide-core-browser';
3
+
4
+ import { StaticResourceService, IStaticResourceProvider } from './static.definition';
5
+
6
+ @Injectable()
7
+ export class StaticResourceServiceImpl implements StaticResourceService {
8
+ private providers = new Map<string, IStaticResourceProvider>();
9
+
10
+ public readonly resourceRoots: Set<string> = new Set();
11
+
12
+ public registerStaticResourceProvider(provider: IStaticResourceProvider) {
13
+ this.providers.set(provider.scheme, provider);
14
+ if (provider.roots) {
15
+ provider.roots.forEach((root) => {
16
+ this.resourceRoots.add(root);
17
+ });
18
+ }
19
+ return {
20
+ dispose: () => {
21
+ if (this.providers.get(provider.scheme) === provider) {
22
+ this.providers.delete(provider.scheme);
23
+ }
24
+ },
25
+ };
26
+ }
27
+
28
+ public resolveStaticResource(uri: URI): URI {
29
+ if (!this.providers.has(uri.scheme)) {
30
+ return uri;
31
+ }
32
+ const url = this.providers.get(uri.scheme)!.resolveStaticResource(uri);
33
+ // vscode-url path的 = 会被转码,先手动跳过转码
34
+ url.toString = url.toString.bind(url, true);
35
+ return url;
36
+ }
37
+ }
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './browser';