@opensumi/ide-storage 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,qCAAoD;AACpD,iEAA2D;AAE3D,sCAA8F;AAE9F,iDAAmD;AACnD,iEAAqE;AACrE,uDAAgF;AAGhF,IAAa,aAAa,GAA1B,MAAa,aAAc,SAAQ,gCAAa;IAAhD;;QACE,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,2BAAkB;gBACzB,QAAQ,EAAE,gCAAiB;aAC5B;YACD;gBACE,KAAK,EAAE,6BAAoB;gBAC3B,QAAQ,EAAE,qCAAmB;aAC9B;YACD;gBACE,KAAK,EAAE,gCAAuB;gBAC9B,QAAQ,EAAE,wCAAsB;aACjC;YACD,kDAA2B;SAC5B,CAAC;IACJ,CAAC;CAAA,CAAA;AAhBY,aAAa;IADzB,IAAA,eAAU,GAAE;GACA,aAAa,CAgBzB;AAhBY,sCAAa"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,iEAA2D;AAE3D,sCAA8F;AAE9F,iDAAmD;AACnD,iEAAqE;AACrE,uDAAgF;AAGzE,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,gCAAa;IAAzC;;QACL,cAAS,GAAe;YACtB;gBACE,KAAK,EAAE,2BAAkB;gBACzB,QAAQ,EAAE,gCAAiB;aAC5B;YACD;gBACE,KAAK,EAAE,6BAAoB;gBAC3B,QAAQ,EAAE,qCAAmB;aAC9B;YACD;gBACE,KAAK,EAAE,gCAAuB;gBAC9B,QAAQ,EAAE,wCAAsB;aACjC;YACD,kDAA2B;SAC5B,CAAC;IACJ,CAAC;CAAA,CAAA;AAhBY,aAAa;IADzB,IAAA,eAAU,GAAE;GACA,aAAa,CAgBzB;AAhBY,sCAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage-path.js","sourceRoot":"","sources":["../../src/browser/storage-path.ts"],"names":[],"mappings":";;;;AAAA,qCAAqD;AACrD,+DAAkG;AAClG,iEAAgE;AAIhE,MAAM,EAAE,IAAI,EAAE,GAAG,sBAAI,CAAC;AAGtB,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAuB5B;QAtBQ,uBAAkB,GAAG,CAAC,8BAAY,CAAC,oBAAoB,EAAE,8BAAY,CAAC,mBAAmB,CAAC,CAAC;QAY3F,6BAAwB,GAA+B,IAAI,GAAG,EAAE,CAAC;QAWvE,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,4BAA4B,GAAG,IAAI,0BAAQ,EAAU,CAAC;QAC3D,IAAI,CAAC,yBAAyB,GAAG,IAAI,0BAAQ,EAAU,CAAC;QACxD,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;QAC7C,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;QAE1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAW;QAChC,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC1C,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACrD;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,MAAM,OAAO,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,GAAW;QAC1C,IAAI;YACF,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACxC,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACzC;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;IACH,CAAC;IAED,KAAK,CAAC,8BAA8B,CAAC,cAAsB;QACzD,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACnC,OAAO,IAAI,CAAC,0BAA0B,CAAC;SACxC;QACD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,qBAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,8BAAY,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC;QAErG,IAAI,CAAC,iBAAiB,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC3D;QAED,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE;YACzC,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,cAAsB;QACtD,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,OAAO,IAAI,CAAC,uBAAuB,CAAC;SACrC;QACD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,qBAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzD,IAAI,CAAC,iBAAiB,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;SAC3D;QAED,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACtC,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;QAEzC,OAAO,CAAC,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,cAAuB;QACjD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC/D,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,cAAuB;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;QACpC,MAAM,UAAU,GAAG,cAAc,IAAI,8BAAY,CAAC,wBAAwB,CAAC;QAC3E,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,2BAAS,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACpG,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc;QAC1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;QAC/D,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACtD;QACD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B;QAC/B,IAAI,IAAI,CAAC,+BAA+B,EAAE;YACxC,OAAO,IAAI,CAAC,0BAA0B,CAAC;SACxC;aAAM;YACL,OAAO,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC;SAClD;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB;QAC5B,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACrC,OAAO,IAAI,CAAC,uBAAuB,CAAC;SACrC;aAAM;YACL,OAAO,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC;SAC/C;IACH,CAAC;CACF,CAAA;AApIC;IADC,IAAA,cAAS,EAAC,qCAAkB,CAAC;;qDACkB;AAGhD;IADC,IAAA,cAAS,EAAC,yBAAO,CAAC;;iDACc;AArBtB,iBAAiB;IAD7B,IAAA,eAAU,GAAE;;GACA,iBAAiB,CAsJ7B;AAtJY,8CAAiB"}
1
+ {"version":3,"file":"storage-path.js","sourceRoot":"","sources":["../../src/browser/storage-path.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@ export declare class DatabaseStorageContribution implements StorageResolverContr
4
4
  private globalStorage;
5
5
  private appConfig;
6
6
  private workspaceService;
7
- private injector;
8
7
  private globalLocalStorage;
8
+ private scopedLocalStorage;
9
9
  storage: IStorage;
10
10
  resolve(storageId: URI): Promise<IStorage | undefined>;
11
11
  isBuiltinStorage(storageId: URI): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.contribution.d.ts","sourceRoot":"","sources":["../../src/browser/storage.contribution.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,2BAA2B,EAC3B,GAAG,EACH,QAAQ,EACR,qBAAqB,EAMtB,MAAM,4BAA4B,CAAC;AAOpC,qBACa,2BAA4B,YAAW,2BAA2B,EAAE,qBAAqB;IAEpG,OAAO,CAAC,gBAAgB,CAAiB;IAGzC,OAAO,CAAC,aAAa,CAAiB;IAGtC,OAAO,CAAC,SAAS,CAAY;IAG7B,OAAO,CAAC,gBAAgB,CAAoB;IAG5C,OAAO,CAAC,QAAQ,CAAW;IAG3B,OAAO,CAAC,kBAAkB,CAA8B;IAExD,OAAO,EAAE,QAAQ,CAAC;IAEZ,OAAO,CAAC,SAAS,EAAE,GAAG;IAyC5B,gBAAgB,CAAC,SAAS,EAAE,GAAG;IAU/B,WAAW;CAKZ"}
1
+ {"version":3,"file":"storage.contribution.d.ts","sourceRoot":"","sources":["../../src/browser/storage.contribution.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,2BAA2B,EAC3B,GAAG,EACH,QAAQ,EACR,qBAAqB,EAMtB,MAAM,4BAA4B,CAAC;AAOpC,qBACa,2BAA4B,YAAW,2BAA2B,EAAE,qBAAqB;IAEpG,OAAO,CAAC,gBAAgB,CAAiB;IAGzC,OAAO,CAAC,aAAa,CAAiB;IAGtC,OAAO,CAAC,SAAS,CAAY;IAG7B,OAAO,CAAC,gBAAgB,CAAoB;IAG5C,OAAO,CAAC,kBAAkB,CAA8B;IAGxD,OAAO,CAAC,kBAAkB,CAA8B;IAExD,OAAO,EAAE,QAAQ,CAAC;IAEZ,OAAO,CAAC,SAAS,EAAE,GAAG;IAwC5B,gBAAgB,CAAC,SAAS,EAAE,GAAG;IAU/B,WAAW;CAKZ"}
@@ -9,17 +9,16 @@ const common_1 = require("../common");
9
9
  const storage_1 = require("./storage");
10
10
  let DatabaseStorageContribution = class DatabaseStorageContribution {
11
11
  async resolve(storageId) {
12
- var _a;
13
12
  const storageName = storageId.path.toString();
14
13
  let storage;
15
- await this.workspaceService.whenReady;
16
14
  if (storageId.scheme === ide_core_browser_1.STORAGE_SCHEMA.SCOPE) {
17
- let scopedLocalStorage;
18
15
  // 如果是内置的 Storage,在初始化过程中采用 ScopedBrowserStorageService 代理
19
16
  if (this.isBuiltinStorage(storageId)) {
20
- scopedLocalStorage = this.injector.get(ide_core_browser_1.ScopedBrowserStorageService, [(_a = this.workspaceService.workspace) === null || _a === void 0 ? void 0 : _a.uri]);
17
+ storage = new storage_1.Storage(this.workspaceStorage, this.workspaceService, this.appConfig, storageName, this.scopedLocalStorage);
18
+ }
19
+ else {
20
+ storage = new storage_1.Storage(this.workspaceStorage, this.workspaceService, this.appConfig, storageName);
21
21
  }
22
- storage = new storage_1.Storage(this.workspaceStorage, this.workspaceService, this.appConfig, storageName, scopedLocalStorage);
23
22
  }
24
23
  else if (storageId.scheme === ide_core_browser_1.STORAGE_SCHEMA.GLOBAL) {
25
24
  if (this.isBuiltinStorage(storageId)) {
@@ -69,14 +68,14 @@ tslib_1.__decorate([
69
68
  (0, di_1.Autowired)(ide_workspace_1.IWorkspaceService),
70
69
  tslib_1.__metadata("design:type", Object)
71
70
  ], DatabaseStorageContribution.prototype, "workspaceService", void 0);
72
- tslib_1.__decorate([
73
- (0, di_1.Autowired)(di_1.INJECTOR_TOKEN),
74
- tslib_1.__metadata("design:type", di_1.Injector)
75
- ], DatabaseStorageContribution.prototype, "injector", void 0);
76
71
  tslib_1.__decorate([
77
72
  (0, di_1.Autowired)(ide_core_browser_1.GlobalBrowserStorageService),
78
73
  tslib_1.__metadata("design:type", ide_core_browser_1.GlobalBrowserStorageService)
79
74
  ], DatabaseStorageContribution.prototype, "globalLocalStorage", void 0);
75
+ tslib_1.__decorate([
76
+ (0, di_1.Autowired)(ide_core_browser_1.ScopedBrowserStorageService),
77
+ tslib_1.__metadata("design:type", ide_core_browser_1.ScopedBrowserStorageService)
78
+ ], DatabaseStorageContribution.prototype, "scopedLocalStorage", void 0);
80
79
  DatabaseStorageContribution = tslib_1.__decorate([
81
80
  (0, ide_core_browser_1.Domain)(ide_core_browser_1.StorageResolverContribution, ide_core_browser_1.ClientAppContribution)
82
81
  ], DatabaseStorageContribution);
@@ -1 +1 @@
1
- {"version":3,"file":"storage.contribution.js","sourceRoot":"","sources":["../../src/browser/storage.contribution.ts"],"names":[],"mappings":";;;;AAAA,qCAAmE;AACnE,iEAWoC;AACpC,2DAA4D;AAE5D,sCAA0F;AAE1F,uCAAoC;AAGpC,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAqBtC,KAAK,CAAC,OAAO,CAAC,SAAc;;QAC1B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,OAAiB,CAAC;QACtB,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACtC,IAAI,SAAS,CAAC,MAAM,KAAK,iCAAc,CAAC,KAAK,EAAE;YAC7C,IAAI,kBAAkB,CAAC;YACvB,0DAA0D;YAC1D,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;gBACpC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,8CAA2B,EAAE,CAAC,MAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,0CAAE,GAAG,CAAC,CAAC,CAAC;aAC7G;YACD,OAAO,GAAG,IAAI,iBAAO,CACnB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,SAAS,EACd,WAAW,EACX,kBAAkB,CACnB,CAAC;SACH;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,iCAAc,CAAC,MAAM,EAAE;YACrD,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;gBACpC,0DAA0D;gBAC1D,OAAO,GAAG,IAAI,iBAAO,CACnB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,SAAS,EACd,WAAW,EACX,IAAI,CAAC,kBAAkB,CACxB,CAAC;aACH;iBAAM;gBACL,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;aAC/F;SACF;aAAM;YACL,OAAO;SACR;QACD,gBAAgB;QAChB,MAAM,OAAO,CAAC,SAAS,CAAC;QAExB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gBAAgB,CAAC,SAAc;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,oCAAiB,CAAC,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,SAAS,CAAC,OAAO,CAAC,oCAAiB,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;SAC9B;IACH,CAAC;CACF,CAAA;AA3EC;IADC,IAAA,cAAS,EAAC,gCAAuB,CAAC;;qEACM;AAGzC;IADC,IAAA,cAAS,EAAC,6BAAoB,CAAC;;kEACM;AAGtC;IADC,IAAA,cAAS,EAAC,4BAAS,CAAC;;8DACQ;AAG7B;IADC,IAAA,cAAS,EAAC,iCAAiB,CAAC;;qEACe;AAG5C;IADC,IAAA,cAAS,EAAC,mBAAc,CAAC;sCACR,aAAQ;6DAAC;AAG3B;IADC,IAAA,cAAS,EAAC,8CAA2B,CAAC;sCACX,8CAA2B;uEAAC;AAjB7C,2BAA2B;IADvC,IAAA,yBAAM,EAAC,8CAA2B,EAAE,wCAAqB,CAAC;GAC9C,2BAA2B,CA6EvC;AA7EY,kEAA2B"}
1
+ {"version":3,"file":"storage.contribution.js","sourceRoot":"","sources":["../../src/browser/storage.contribution.ts"],"names":[],"mappings":";;;;AAAA,qCAAmE;AACnE,iEAWoC;AACpC,2DAA4D;AAE5D,sCAA0F;AAE1F,uCAAoC;AAG7B,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAqBtC,KAAK,CAAC,OAAO,CAAC,SAAc;QAC1B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,OAAiB,CAAC;QACtB,IAAI,SAAS,CAAC,MAAM,KAAK,iCAAc,CAAC,KAAK,EAAE;YAC7C,0DAA0D;YAC1D,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;gBACpC,OAAO,GAAG,IAAI,iBAAO,CACnB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,SAAS,EACd,WAAW,EACX,IAAI,CAAC,kBAAkB,CACxB,CAAC;aACH;iBAAM;gBACL,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;aAClG;SACF;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,iCAAc,CAAC,MAAM,EAAE;YACrD,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;gBACpC,0DAA0D;gBAC1D,OAAO,GAAG,IAAI,iBAAO,CACnB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,SAAS,EACd,WAAW,EACX,IAAI,CAAC,kBAAkB,CACxB,CAAC;aACH;iBAAM;gBACL,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;aAC/F;SACF;aAAM;YACL,OAAO;SACR;QACD,gBAAgB;QAChB,MAAM,OAAO,CAAC,SAAS,CAAC;QAExB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gBAAgB,CAAC,SAAc;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,oCAAiB,CAAC,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,SAAS,CAAC,OAAO,CAAC,oCAAiB,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;SAC9B;IACH,CAAC;CACF,CAAA;AA3EC;IAAC,IAAA,cAAS,EAAC,gCAAuB,CAAC;;qEACM;AAEzC;IAAC,IAAA,cAAS,EAAC,6BAAoB,CAAC;;kEACM;AAEtC;IAAC,IAAA,cAAS,EAAC,4BAAS,CAAC;;8DACQ;AAE7B;IAAC,IAAA,cAAS,EAAC,iCAAiB,CAAC;;qEACe;AAE5C;IAAC,IAAA,cAAS,EAAC,8CAA2B,CAAC;sCACX,8CAA2B;uEAAC;AAExD;IAAC,IAAA,cAAS,EAAC,8CAA2B,CAAC;sCACX,8CAA2B;uEAAC;AAjB7C,2BAA2B;IADvC,IAAA,yBAAM,EAAC,8CAA2B,EAAE,wCAAqB,CAAC;GAC9C,2BAA2B,CA4EvC;AA5EY,kEAA2B"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../src/browser/storage.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../src/browser/storage.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@opensumi/ide-storage",
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.storage.json"
13
14
  },
14
15
  "repository": {
@@ -16,13 +17,13 @@
16
17
  "url": "git@github.com:opensumi/core.git"
17
18
  },
18
19
  "dependencies": {
19
- "@opensumi/ide-core-common": "2.21.13"
20
+ "@opensumi/ide-core-common": "2.22.0"
20
21
  },
21
22
  "devDependencies": {
22
- "@opensumi/ide-core-browser": "2.21.13",
23
- "@opensumi/ide-dev-tool": "^1.3.1",
24
- "@opensumi/ide-file-service": "2.21.13",
25
- "@opensumi/ide-workspace": "2.21.13"
23
+ "@opensumi/ide-core-browser": "2.22.0",
24
+ "@opensumi/ide-dev-tool": "1.3.1",
25
+ "@opensumi/ide-file-service": "2.22.0",
26
+ "@opensumi/ide-workspace": "2.22.0"
26
27
  },
27
- "gitHead": "1480afacfef7ef11eae65c5cbbddce416f227fe8"
28
+ "gitHead": "927717e1c60f9cf5f01622fd51085b318a175eeb"
28
29
  }
@@ -0,0 +1,27 @@
1
+ import { Provider, Injectable } from '@opensumi/di';
2
+ import { BrowserModule } from '@opensumi/ide-core-browser';
3
+
4
+ import { IStoragePathServer, IGlobalStorageServer, IWorkspaceStorageServer } from '../common';
5
+
6
+ import { StoragePathServer } from './storage-path';
7
+ import { DatabaseStorageContribution } from './storage.contribution';
8
+ import { GlobalStorageServer, WorkspaceStorageServer } from './storage.service';
9
+
10
+ @Injectable()
11
+ export class StorageModule extends BrowserModule {
12
+ providers: Provider[] = [
13
+ {
14
+ token: IStoragePathServer,
15
+ useClass: StoragePathServer,
16
+ },
17
+ {
18
+ token: IGlobalStorageServer,
19
+ useClass: GlobalStorageServer,
20
+ },
21
+ {
22
+ token: IWorkspaceStorageServer,
23
+ useClass: WorkspaceStorageServer,
24
+ },
25
+ DatabaseStorageContribution,
26
+ ];
27
+ }
@@ -0,0 +1,160 @@
1
+ import { Injectable, Autowired } from '@opensumi/di';
2
+ import { StoragePaths, Deferred, URI, isWindows, ILogger, path } from '@opensumi/ide-core-common';
3
+ import { IFileServiceClient } from '@opensumi/ide-file-service';
4
+
5
+ import { IStoragePathServer } from '../common';
6
+
7
+ const { Path } = path;
8
+
9
+ @Injectable()
10
+ export class StoragePathServer implements IStoragePathServer {
11
+ private windowsDataFolders = [StoragePaths.WINDOWS_APP_DATA_DIR, StoragePaths.WINDOWS_ROAMING_DIR];
12
+ // 当没有工作区被打开时,存储路径为undefined
13
+ private cachedWorkspaceStoragePath: string | undefined;
14
+ private cachedGlobalStoragePath: string | undefined;
15
+ // 缓存存储路径
16
+ private deferredWorkspaceStoragePath: Deferred<string>;
17
+ private deferredGlobalStoragePath: Deferred<string>;
18
+
19
+ // 当初始化完成时为true
20
+ private workspaceStoragePathInitialized: boolean;
21
+ private globalStoragePathInitialized: boolean;
22
+
23
+ private ensureStorageDirPromises: Map<string, Promise<void>> = new Map();
24
+
25
+ private _userHome: Promise<string>;
26
+
27
+ @Autowired(IFileServiceClient)
28
+ private readonly fileSystem: IFileServiceClient;
29
+
30
+ @Autowired(ILogger)
31
+ private readonly logger: ILogger;
32
+
33
+ constructor() {
34
+ this.init();
35
+ }
36
+
37
+ async init() {
38
+ this.deferredWorkspaceStoragePath = new Deferred<string>();
39
+ this.deferredGlobalStoragePath = new Deferred<string>();
40
+ this.workspaceStoragePathInitialized = false;
41
+ this.globalStoragePathInitialized = false;
42
+
43
+ this._userHome = this.getUserHomeDir();
44
+ }
45
+
46
+ get userHome() {
47
+ return this._userHome;
48
+ }
49
+
50
+ async ensureStorageDir(uri: string) {
51
+ if (this.ensureStorageDirPromises.has(uri)) {
52
+ return await this.ensureStorageDirPromises.get(uri);
53
+ }
54
+ const promise = this.doEnsureStorageDir(uri);
55
+ this.ensureStorageDirPromises.set(uri, promise);
56
+ return await promise;
57
+ }
58
+
59
+ private async doEnsureStorageDir(uri: string) {
60
+ try {
61
+ if (!(await this.fileSystem.access(uri))) {
62
+ await this.fileSystem.createFolder(uri);
63
+ }
64
+ } catch (e) {
65
+ this.logger.error(e);
66
+ }
67
+ }
68
+
69
+ async provideWorkspaceStorageDirPath(storageDirName: string): Promise<string | undefined> {
70
+ if (this.cachedWorkspaceStoragePath) {
71
+ return this.cachedWorkspaceStoragePath;
72
+ }
73
+ const storagePathString = await this.getBaseStorageDirPath(storageDirName);
74
+ const uriString = URI.file(storagePathString).resolve(StoragePaths.DEFAULT_DATA_DIR_NAME).toString();
75
+
76
+ if (!storagePathString) {
77
+ throw new Error('Unable to get parent storage directory');
78
+ }
79
+
80
+ if (!this.workspaceStoragePathInitialized) {
81
+ await this.ensureStorageDir(uriString);
82
+ }
83
+
84
+ this.deferredWorkspaceStoragePath.resolve(uriString);
85
+ this.workspaceStoragePathInitialized = true;
86
+ return (this.cachedWorkspaceStoragePath = uriString);
87
+ }
88
+
89
+ async provideGlobalStorageDirPath(storageDirName: string): Promise<string | undefined> {
90
+ if (this.cachedGlobalStoragePath) {
91
+ return this.cachedGlobalStoragePath;
92
+ }
93
+ const storagePathString = await this.getBaseStorageDirPath(storageDirName);
94
+ const uriString = URI.file(storagePathString).toString();
95
+ if (!storagePathString) {
96
+ throw new Error('Unable to get parent storage directory');
97
+ }
98
+
99
+ if (!this.globalStoragePathInitialized) {
100
+ await this.ensureStorageDir(uriString);
101
+ }
102
+
103
+ this.deferredGlobalStoragePath.resolve(uriString);
104
+ this.globalStoragePathInitialized = true;
105
+
106
+ return (this.cachedGlobalStoragePath = uriString);
107
+ }
108
+
109
+ /**
110
+ * 返回数据存储文件夹
111
+ */
112
+ async getBaseStorageDirPath(storageDirName?: string): Promise<string> {
113
+ const workspaceDir = await this.getDataDirPath(storageDirName);
114
+ return workspaceDir;
115
+ }
116
+
117
+ /**
118
+ * 获取工作区存储路径
119
+ */
120
+ async getDataDirPath(storageDirName?: string): Promise<string> {
121
+ const homeDir = await this.userHome;
122
+ const storageDir = storageDirName || StoragePaths.DEFAULT_STORAGE_DIR_NAME;
123
+ const dirPath = new Path(homeDir).join(...(isWindows ? this.windowsDataFolders : ['']), storageDir);
124
+ return dirPath.toString();
125
+ }
126
+
127
+ /**
128
+ * 获取用户目录
129
+ */
130
+ private async getUserHomeDir(): Promise<string> {
131
+ const homeDirStat = await this.fileSystem.getCurrentUserHome();
132
+ if (!homeDirStat) {
133
+ throw new Error('Unable to get user home directory');
134
+ }
135
+ const userHome = (await this.fileSystem.getFsPath(homeDirStat.uri)) || '';
136
+ return userHome;
137
+ }
138
+
139
+ /**
140
+ * 获取最后的工作区数据存储路径
141
+ */
142
+ async getLastWorkspaceStoragePath(): Promise<string | undefined> {
143
+ if (this.workspaceStoragePathInitialized) {
144
+ return this.cachedWorkspaceStoragePath;
145
+ } else {
146
+ return this.deferredWorkspaceStoragePath.promise;
147
+ }
148
+ }
149
+
150
+ /**
151
+ * 获取最后的全局数据存储路径
152
+ */
153
+ async getLastGlobalStoragePath(): Promise<string | undefined> {
154
+ if (this.globalStoragePathInitialized) {
155
+ return this.cachedGlobalStoragePath;
156
+ } else {
157
+ return this.deferredGlobalStoragePath.promise;
158
+ }
159
+ }
160
+ }
@@ -0,0 +1,97 @@
1
+ import { Autowired, Injector, INJECTOR_TOKEN } from '@opensumi/di';
2
+ import {
3
+ Domain,
4
+ StorageResolverContribution,
5
+ URI,
6
+ IStorage,
7
+ ClientAppContribution,
8
+ STORAGE_SCHEMA,
9
+ AppConfig,
10
+ ScopedBrowserStorageService,
11
+ GlobalBrowserStorageService,
12
+ STORAGE_NAMESPACE,
13
+ } from '@opensumi/ide-core-browser';
14
+ import { IWorkspaceService } from '@opensumi/ide-workspace';
15
+
16
+ import { IStorageServer, IWorkspaceStorageServer, IGlobalStorageServer } from '../common';
17
+
18
+ import { Storage } from './storage';
19
+
20
+ @Domain(StorageResolverContribution, ClientAppContribution)
21
+ export class DatabaseStorageContribution implements StorageResolverContribution, ClientAppContribution {
22
+ @Autowired(IWorkspaceStorageServer)
23
+ private workspaceStorage: IStorageServer;
24
+
25
+ @Autowired(IGlobalStorageServer)
26
+ private globalStorage: IStorageServer;
27
+
28
+ @Autowired(AppConfig)
29
+ private appConfig: AppConfig;
30
+
31
+ @Autowired(IWorkspaceService)
32
+ private workspaceService: IWorkspaceService;
33
+
34
+ @Autowired(GlobalBrowserStorageService)
35
+ private globalLocalStorage: GlobalBrowserStorageService;
36
+
37
+ @Autowired(ScopedBrowserStorageService)
38
+ private scopedLocalStorage: ScopedBrowserStorageService;
39
+
40
+ storage: IStorage;
41
+
42
+ async resolve(storageId: URI) {
43
+ const storageName = storageId.path.toString();
44
+ let storage: IStorage;
45
+ if (storageId.scheme === STORAGE_SCHEMA.SCOPE) {
46
+ // 如果是内置的 Storage,在初始化过程中采用 ScopedBrowserStorageService 代理
47
+ if (this.isBuiltinStorage(storageId)) {
48
+ storage = new Storage(
49
+ this.workspaceStorage,
50
+ this.workspaceService,
51
+ this.appConfig,
52
+ storageName,
53
+ this.scopedLocalStorage,
54
+ );
55
+ } else {
56
+ storage = new Storage(this.workspaceStorage, this.workspaceService, this.appConfig, storageName);
57
+ }
58
+ } else if (storageId.scheme === STORAGE_SCHEMA.GLOBAL) {
59
+ if (this.isBuiltinStorage(storageId)) {
60
+ // 如果是内置的 Storage,在初始化过程中采用 GlobalBrowserStorageService 代理
61
+ storage = new Storage(
62
+ this.globalStorage,
63
+ this.workspaceService,
64
+ this.appConfig,
65
+ storageName,
66
+ this.globalLocalStorage,
67
+ );
68
+ } else {
69
+ storage = new Storage(this.globalStorage, this.workspaceService, this.appConfig, storageName);
70
+ }
71
+ } else {
72
+ return;
73
+ }
74
+ // 等待后台存储模块初始化数据
75
+ await storage.whenReady;
76
+
77
+ this.storage = storage;
78
+
79
+ return storage;
80
+ }
81
+
82
+ isBuiltinStorage(storageId: URI) {
83
+ const keys = Object.keys(STORAGE_NAMESPACE);
84
+ for (const key of keys) {
85
+ if (storageId.isEqual(STORAGE_NAMESPACE[key])) {
86
+ return true;
87
+ }
88
+ }
89
+ return false;
90
+ }
91
+
92
+ onReconnect() {
93
+ if (this.storage) {
94
+ this.storage.reConnectInit();
95
+ }
96
+ }
97
+ }
@@ -0,0 +1,292 @@
1
+ import { Injectable, Autowired } from '@opensumi/di';
2
+ import { Deferred, URI, Emitter, Event, ILogger, STORAGE_SCHEMA, path } from '@opensumi/ide-core-common';
3
+ import { IFileServiceClient } from '@opensumi/ide-file-service';
4
+
5
+ import { IStorageServer, IUpdateRequest, IStoragePathServer, StorageChange, StringKeyToAnyValue } from '../common';
6
+
7
+ const { Path } = path;
8
+
9
+ @Injectable()
10
+ export abstract class StorageServer implements IStorageServer {
11
+ @Autowired(IFileServiceClient)
12
+ protected readonly fileSystem: IFileServiceClient;
13
+
14
+ private storageExistPromises: Map<string, Promise<boolean>> = new Map();
15
+
16
+ @Autowired(IStoragePathServer)
17
+ protected readonly dataStoragePathServer: IStoragePathServer;
18
+
19
+ @Autowired(ILogger)
20
+ protected readonly logger: ILogger;
21
+
22
+ abstract deferredStorageDirPath: Deferred<string | undefined>;
23
+ abstract databaseStorageDirPath: string | undefined;
24
+
25
+ public _cache: any = {};
26
+
27
+ public onDidChangeEmitter = new Emitter<StorageChange>();
28
+ readonly onDidChange: Event<StorageChange> = this.onDidChangeEmitter.event;
29
+
30
+ abstract init(storageDirName?: string, workspaceNamespace?: string): Promise<string | undefined>;
31
+ abstract getItems(storageName: string): Promise<StringKeyToAnyValue>;
32
+ abstract updateItems(storageName: string, request: IUpdateRequest): Promise<void>;
33
+
34
+ async close(recovery?: () => Map<string, string>) {
35
+ // do nothing
36
+ }
37
+
38
+ protected async asAccess(storagePath: string, force?: boolean) {
39
+ if (force) {
40
+ return await this.fileSystem.access(storagePath);
41
+ }
42
+ if (!this.storageExistPromises.has(storagePath)) {
43
+ const promise = this.fileSystem.access(storagePath);
44
+ this.storageExistPromises.set(storagePath, promise);
45
+ }
46
+ return await this.storageExistPromises.get(storagePath);
47
+ }
48
+
49
+ async setupDirectories(scope: string, storageDirName?: string) {
50
+ if (!this.deferredStorageDirPath) {
51
+ this.deferredStorageDirPath = new Deferred<string | undefined>();
52
+ let fn;
53
+ if (scope === STORAGE_SCHEMA.GLOBAL) {
54
+ fn = this.dataStoragePathServer.provideGlobalStorageDirPath;
55
+ } else {
56
+ fn = this.dataStoragePathServer.provideWorkspaceStorageDirPath;
57
+ }
58
+ const storagePath = await fn.apply(this.dataStoragePathServer, [storageDirName]);
59
+ this.deferredStorageDirPath.resolve(storagePath);
60
+ this.databaseStorageDirPath = storagePath;
61
+ return storagePath;
62
+ }
63
+ return this.databaseStorageDirPath;
64
+ }
65
+
66
+ async getStoragePath(scope: string, storageName): Promise<string | undefined> {
67
+ if (!this.databaseStorageDirPath) {
68
+ await this.deferredStorageDirPath.promise;
69
+ }
70
+
71
+ const hasSlash = storageName.indexOf(Path.separator) >= 0;
72
+
73
+ let fn;
74
+ if (scope === STORAGE_SCHEMA.GLOBAL) {
75
+ fn = this.dataStoragePathServer.getLastGlobalStoragePath;
76
+ } else {
77
+ fn = this.dataStoragePathServer.getLastWorkspaceStoragePath;
78
+ }
79
+
80
+ const storagePath = await fn.apply(this.dataStoragePathServer);
81
+
82
+ if (hasSlash) {
83
+ const storagePaths = new Path(storageName);
84
+ storageName = storagePaths.name;
85
+ const uriString = new URI(storagePath!).resolve(storagePaths.dir).toString();
86
+ if (!(await this.fileSystem.access(uriString))) {
87
+ await this.fileSystem.createFolder(uriString);
88
+ }
89
+ return storagePath ? new URI(uriString).resolve(`${storageName}.json`).toString() : undefined;
90
+ }
91
+
92
+ return storagePath ? new URI(storagePath).resolve(`${storageName}.json`).toString() : undefined;
93
+ }
94
+ }
95
+
96
+ @Injectable()
97
+ export class WorkspaceStorageServer extends StorageServer {
98
+ private workspaceNamespace: string | undefined;
99
+ public deferredStorageDirPath: Deferred<string | undefined>;
100
+ public databaseStorageDirPath: string | undefined;
101
+ private readyDeferred = new Deferred<void>();
102
+
103
+ get whenReady() {
104
+ return this.readyDeferred.promise;
105
+ }
106
+
107
+ public async init(storageDirName?: string, workspaceNamespace?: string) {
108
+ this.workspaceNamespace = workspaceNamespace;
109
+ return await this.setupDirectories(STORAGE_SCHEMA.SCOPE, storageDirName);
110
+ }
111
+
112
+ async getItems(storageName: string) {
113
+ if (this._cache[storageName]) {
114
+ return this._cache[storageName];
115
+ }
116
+
117
+ let items = {};
118
+ const workspaceNamespace = this.workspaceNamespace;
119
+ const storagePath = await this.getStoragePath(STORAGE_SCHEMA.SCOPE, storageName);
120
+
121
+ if (!storagePath) {
122
+ this.logger.error(`Storage [${storageName}] is invalid.`);
123
+ } else {
124
+ const uriString = new URI(storagePath).toString();
125
+ if (await this.asAccess(uriString, true)) {
126
+ const data = await this.fileSystem.readFile(uriString);
127
+ try {
128
+ items = JSON.parse(data.content.toString());
129
+ } catch (error) {
130
+ this.logger.error(
131
+ `Storage [${storageName}] content can not be parse with path ${uriString}. Error: ${error.stack}`,
132
+ );
133
+ items = {};
134
+ }
135
+ }
136
+ }
137
+ this._cache[storageName] = items;
138
+ if (workspaceNamespace) {
139
+ items = items[workspaceNamespace] || {};
140
+ }
141
+ this.readyDeferred.resolve();
142
+ return items;
143
+ }
144
+
145
+ async updateItems(storageName: string, request: IUpdateRequest) {
146
+ await this.whenReady;
147
+ let raw = {};
148
+ const workspaceNamespace = this.workspaceNamespace;
149
+ if (this._cache[storageName]) {
150
+ raw = this._cache[storageName];
151
+ } else {
152
+ raw = await this.getItems(storageName);
153
+ if (workspaceNamespace) {
154
+ raw = raw[workspaceNamespace];
155
+ }
156
+ }
157
+ // INSERT
158
+ if (request.insert) {
159
+ if (workspaceNamespace) {
160
+ raw[workspaceNamespace] = {
161
+ ...raw[workspaceNamespace],
162
+ ...request.insert,
163
+ };
164
+ } else {
165
+ raw = {
166
+ ...raw,
167
+ ...request.insert,
168
+ };
169
+ }
170
+ }
171
+
172
+ // DELETE
173
+ if (request.delete && request.delete.length > 0) {
174
+ const deleteSet = new Set(request.delete);
175
+ deleteSet.forEach((key) => {
176
+ if (workspaceNamespace) {
177
+ if (raw[workspaceNamespace][key]) {
178
+ delete raw[workspaceNamespace][key];
179
+ }
180
+ } else {
181
+ if (raw[key]) {
182
+ delete raw[key];
183
+ }
184
+ }
185
+ });
186
+ }
187
+
188
+ this._cache[storageName] = raw;
189
+
190
+ const storagePath = await this.getStoragePath(STORAGE_SCHEMA.SCOPE, storageName);
191
+
192
+ if (storagePath) {
193
+ const uriString = new URI(storagePath).toString();
194
+ let storageFile = await this.fileSystem.getFileStat(uriString);
195
+ if (!storageFile) {
196
+ storageFile = await this.fileSystem.createFile(uriString);
197
+ }
198
+ await this.fileSystem.setContent(storageFile, JSON.stringify(raw));
199
+ const change: StorageChange = {
200
+ path: storageFile.uri,
201
+ data: JSON.stringify(raw),
202
+ };
203
+ this.onDidChangeEmitter.fire(change);
204
+ }
205
+ }
206
+ }
207
+
208
+ @Injectable()
209
+ export class GlobalStorageServer extends StorageServer {
210
+ public deferredStorageDirPath: Deferred<string | undefined>;
211
+ public databaseStorageDirPath: string | undefined;
212
+
213
+ private readyDeferred = new Deferred<void>();
214
+
215
+ get whenReady() {
216
+ return this.readyDeferred.promise;
217
+ }
218
+
219
+ public async init(storageDirName: string) {
220
+ return await this.setupDirectories(STORAGE_SCHEMA.GLOBAL, storageDirName);
221
+ }
222
+
223
+ async getItems(storageName: string) {
224
+ if (this._cache[storageName]) {
225
+ return this._cache[storageName];
226
+ }
227
+
228
+ let items = {};
229
+ const storagePath = await this.getStoragePath(STORAGE_SCHEMA.GLOBAL, storageName);
230
+
231
+ if (!storagePath) {
232
+ this.logger.error(`Storage [${storageName}] is invalid.`);
233
+ } else {
234
+ const uriString = new URI(storagePath).toString();
235
+ if (await this.asAccess(uriString, true)) {
236
+ const data = await this.fileSystem.readFile(uriString);
237
+ try {
238
+ items = JSON.parse(data.content.toString());
239
+ } catch (error) {
240
+ this.logger.error(`Storage [${storageName}] content can not be parse. Error: ${error.stack}`);
241
+ items = {};
242
+ }
243
+ }
244
+ }
245
+ this._cache[storageName] = items;
246
+ this.readyDeferred.resolve();
247
+ return items;
248
+ }
249
+
250
+ async updateItems(storageName: string, request: IUpdateRequest) {
251
+ await this.whenReady;
252
+ let raw = {};
253
+ if (this._cache[storageName]) {
254
+ raw = this._cache[storageName];
255
+ } else {
256
+ raw = await this.getItems(storageName);
257
+ }
258
+ // INSERT
259
+ if (request.insert) {
260
+ raw = {
261
+ ...raw,
262
+ ...request.insert,
263
+ };
264
+ }
265
+
266
+ // DELETE
267
+ if (request.delete && request.delete.length > 0) {
268
+ const deleteSet = new Set(request.delete);
269
+ deleteSet.forEach((key) => {
270
+ if (raw[key]) {
271
+ delete raw[key];
272
+ }
273
+ });
274
+ }
275
+
276
+ this._cache[storageName] = raw;
277
+ const storagePath = await this.getStoragePath(STORAGE_SCHEMA.GLOBAL, storageName);
278
+
279
+ if (storagePath) {
280
+ let storageFile = await this.fileSystem.getFileStat(storagePath);
281
+ if (!storageFile) {
282
+ storageFile = await this.fileSystem.createFile(storagePath, { content: '' });
283
+ }
284
+ await this.fileSystem.setContent(storageFile, JSON.stringify(raw));
285
+ const change: StorageChange = {
286
+ path: storageFile.uri,
287
+ data: JSON.stringify(raw),
288
+ };
289
+ this.onDidChangeEmitter.fire(change);
290
+ }
291
+ }
292
+ }
@@ -0,0 +1,290 @@
1
+ import { AppConfig, StorageService } from '@opensumi/ide-core-browser';
2
+ import {
3
+ getDebugLogger,
4
+ IStorage,
5
+ ThrottledDelayer,
6
+ isUndefinedOrNull,
7
+ Emitter,
8
+ Event,
9
+ DisposableCollection,
10
+ Deferred,
11
+ } from '@opensumi/ide-core-common';
12
+ import { IWorkspaceService } from '@opensumi/ide-workspace';
13
+
14
+ import { IStorageServer, IUpdateRequest } from '../common';
15
+
16
+ enum StorageState {
17
+ None,
18
+ Initialized,
19
+ Closed,
20
+ }
21
+
22
+ export class Storage implements IStorage {
23
+ private static readonly DEFAULT_FLUSH_DELAY = 200;
24
+
25
+ private _onDidChangeStorage = new Emitter<string>();
26
+ readonly onDidChangeStorage: Event<string> = this._onDidChangeStorage.event;
27
+
28
+ private flushDelayer: ThrottledDelayer<void>;
29
+
30
+ private state = StorageState.None;
31
+
32
+ private cache: Map<string, string> = new Map<string, string>();
33
+
34
+ private pendingDeletes: Set<string> = new Set();
35
+ private pendingInserts: Map<string, string> = new Map();
36
+
37
+ private toDisposableCollection: DisposableCollection = new DisposableCollection();
38
+ private readonly logger = getDebugLogger();
39
+
40
+ private readyDeferred = new Deferred<void>();
41
+ private whenReadyToWriteDeferred = new Deferred<void>();
42
+
43
+ constructor(
44
+ private readonly database: IStorageServer,
45
+ private readonly workspace: IWorkspaceService,
46
+ private readonly appConfig: AppConfig,
47
+ private readonly storageName: string,
48
+ private readonly browserLocalStorage?: StorageService,
49
+ ) {
50
+ this.toDisposableCollection.push(this._onDidChangeStorage);
51
+ this.toDisposableCollection.push(
52
+ this.workspace.onWorkspaceChanged(() => {
53
+ this.setup(storageName);
54
+ }),
55
+ );
56
+ this.flushDelayer = new ThrottledDelayer(Storage.DEFAULT_FLUSH_DELAY);
57
+ this.setup(storageName);
58
+ }
59
+
60
+ get whenReady() {
61
+ return this.readyDeferred.promise;
62
+ }
63
+
64
+ get whenReadyToWrite() {
65
+ return this.whenReadyToWriteDeferred.promise;
66
+ }
67
+
68
+ get items(): Map<string, string> {
69
+ return this.cache;
70
+ }
71
+
72
+ get size(): number {
73
+ return this.cache.size;
74
+ }
75
+
76
+ async init(storageName: string) {
77
+ const workspace = this.workspace.workspace;
78
+ let cache;
79
+ if (this.browserLocalStorage) {
80
+ cache = await this.browserLocalStorage.getData(storageName);
81
+ }
82
+ if (!cache) {
83
+ await this.database.init(this.appConfig.storageDirName, workspace && workspace.uri);
84
+ cache = await this.database.getItems(storageName);
85
+ if (this.browserLocalStorage) {
86
+ this.browserLocalStorage.setData(storageName, cache);
87
+ }
88
+ this.whenReadyToWriteDeferred.resolve();
89
+ } else {
90
+ // 初始化服务端缓存
91
+ this.database.init(this.appConfig.storageDirName, workspace && workspace.uri).then(() => {
92
+ this.database.getItems(storageName).then(async (data) => {
93
+ // 后续以服务端数据为准更新前端缓存数据,防止后续数据存取异常
94
+ this.cache = this.jsonToMap(data);
95
+ if (this.browserLocalStorage) {
96
+ await this.browserLocalStorage.setData(storageName, JSON.stringify(data));
97
+ }
98
+ this.whenReadyToWriteDeferred.resolve();
99
+ });
100
+ });
101
+ }
102
+ this.cache = this.jsonToMap(cache);
103
+ this.state = StorageState.Initialized;
104
+ this.readyDeferred.resolve();
105
+ }
106
+
107
+ setup(storageName: string) {
108
+ this.init(storageName);
109
+ }
110
+
111
+ async reConnectInit() {
112
+ this.readyDeferred = new Deferred();
113
+ this.setup(this.storageName);
114
+ }
115
+
116
+ dispose() {
117
+ this.toDisposableCollection.dispose();
118
+ }
119
+
120
+ get(key: string, fallbackValue: string): string;
121
+ get(key: string, fallbackValue?: string): string | undefined;
122
+ get(key: string, fallbackValue?: string): string | undefined {
123
+ let value = this.cache.get(key);
124
+ if (isUndefinedOrNull(value)) {
125
+ return fallbackValue;
126
+ }
127
+ try {
128
+ value = JSON.parse(value);
129
+ } catch (e) {
130
+ this.logger.error('Could not parse value: ', value, e);
131
+ }
132
+ return value;
133
+ }
134
+
135
+ getBoolean(key: string, fallbackValue: boolean): boolean;
136
+ getBoolean(key: string, fallbackValue?: boolean): boolean | undefined;
137
+ getBoolean(key: string, fallbackValue?: boolean): boolean | undefined {
138
+ const value = this.get(key);
139
+
140
+ if (isUndefinedOrNull(value)) {
141
+ return fallbackValue;
142
+ }
143
+
144
+ return value === 'true';
145
+ }
146
+
147
+ getNumber(key: string, fallbackValue: number): number;
148
+ getNumber(key: string, fallbackValue?: number): number | undefined;
149
+ getNumber(key: string, fallbackValue?: number): number | undefined {
150
+ const value = this.get(key);
151
+
152
+ if (isUndefinedOrNull(value)) {
153
+ return fallbackValue;
154
+ }
155
+
156
+ return parseInt(value, 10);
157
+ }
158
+
159
+ set(key: string, value: object | string | boolean | number | null | undefined): Promise<void> {
160
+ if (this.state === StorageState.Closed) {
161
+ return Promise.resolve();
162
+ }
163
+
164
+ // 移除值为undefined或null的值
165
+ if (isUndefinedOrNull(value)) {
166
+ return this.delete(key);
167
+ }
168
+
169
+ // 否则,转化为string并存储
170
+ const valueStr = JSON.stringify(value);
171
+
172
+ // 当值不发生改变是,提前结束
173
+ const currentValue = this.cache.get(key);
174
+ if (currentValue === valueStr) {
175
+ return Promise.resolve();
176
+ }
177
+
178
+ // 更新缓存同时更新
179
+ this.cache.set(key, valueStr);
180
+ this.pendingInserts.set(key, valueStr);
181
+ this.pendingDeletes.delete(key);
182
+
183
+ // Event
184
+ this._onDidChangeStorage.fire(key);
185
+
186
+ // 按队列在空闲时期执行后台更新逻辑
187
+ return this.flushDelayer.trigger(() => this.flushPending());
188
+ }
189
+
190
+ delete(key: string): Promise<void> {
191
+ if (this.state === StorageState.Closed) {
192
+ return Promise.resolve();
193
+ }
194
+
195
+ // 从缓存中移除并添加到后台队列
196
+ const wasDeleted = this.cache.delete(key);
197
+ if (!wasDeleted) {
198
+ return Promise.resolve();
199
+ }
200
+
201
+ if (!this.pendingDeletes.has(key)) {
202
+ this.pendingDeletes.add(key);
203
+ }
204
+
205
+ this.pendingInserts.delete(key);
206
+
207
+ // 同步事件
208
+ this._onDidChangeStorage.fire(key);
209
+
210
+ // 按队列在空闲时期执行后台更新逻辑
211
+ return this.flushDelayer.trigger(() => this.flushPending());
212
+ }
213
+
214
+ async close(): Promise<void> {
215
+ if (this.state === StorageState.Closed) {
216
+ return Promise.resolve();
217
+ }
218
+
219
+ // 更新状态
220
+ this.state = StorageState.Closed;
221
+
222
+ // 触发新的数据刷新动作确保数据在本地持久化
223
+ // 即使刷新出错时也如此,必须确保数据库已经关闭以避免本地数据损坏
224
+ //
225
+ // 恢复: 在对应数据系统不健康时,我们将缓存作为恢复选项传递
226
+ try {
227
+ await this.flushDelayer.trigger(() => this.flushPending(), 0);
228
+ } catch (error) {
229
+ // Ignore
230
+ }
231
+
232
+ await this.database.close(() => this.cache);
233
+ }
234
+
235
+ private async flushPending(): Promise<void> {
236
+ await this.whenReadyToWrite;
237
+ if (this.pendingInserts.size === 0 && this.pendingDeletes.size === 0) {
238
+ return Promise.resolve();
239
+ }
240
+
241
+ // 获取等待的队列数据
242
+ const updateRequest: IUpdateRequest = {
243
+ insert: this.mapToJson(this.pendingInserts),
244
+ delete: Array.from(this.pendingDeletes),
245
+ };
246
+ // 同时在 LocalStroage 中同步缓存变化
247
+ if (this.browserLocalStorage) {
248
+ let cache = this.mapToJson(this.cache);
249
+ for (const del of updateRequest?.delete || []) {
250
+ delete cache[del];
251
+ }
252
+ cache = {
253
+ ...cache,
254
+ ...updateRequest.insert,
255
+ };
256
+ await this.browserLocalStorage.setData(this.storageName, cache);
257
+ }
258
+
259
+ // 重置等待队列用于下次存储
260
+ this.pendingDeletes = new Set<string>();
261
+ this.pendingInserts = new Map<string, string>();
262
+
263
+ // 更新数据
264
+ return this.database.updateItems(this.storageName, updateRequest);
265
+ }
266
+
267
+ private mapToJson(map: Map<string, string>) {
268
+ const obj = Object.create(null);
269
+ for (const [k, v] of map) {
270
+ obj[k] = v;
271
+ }
272
+ return obj;
273
+ }
274
+
275
+ private jsonToMap(json: string | any) {
276
+ if (typeof json === 'string') {
277
+ try {
278
+ json = JSON.parse(json);
279
+ } catch (e) {
280
+ this.logger.debug(e);
281
+ return json;
282
+ }
283
+ }
284
+ const itemsMap: Map<string, string> = new Map();
285
+ for (const key of Object.keys(json)) {
286
+ itemsMap.set(key, json[key]);
287
+ }
288
+ return itemsMap;
289
+ }
290
+ }
@@ -0,0 +1,2 @@
1
+ export * from './storage';
2
+ export * from './storage-path';
@@ -0,0 +1,13 @@
1
+ // 用于为各个插件创建插件配置的存储目录
2
+ export const IStoragePathServer = Symbol('IStoragePathServer');
3
+
4
+ export interface IStoragePathServer {
5
+ // 返回缓存的工作区存储路径
6
+ getLastWorkspaceStoragePath(): Promise<string | undefined>;
7
+ // 返回缓存的全局存储路径
8
+ getLastGlobalStoragePath(): Promise<string | undefined>;
9
+ // 提供对应storageName的工作区文件夹存储路径
10
+ provideWorkspaceStorageDirPath(storageDirName?: string): Promise<string | undefined>;
11
+ // 提供对应storageName的全局文件夹存储路径
12
+ provideGlobalStorageDirPath(storageDirName?: string): Promise<string | undefined>;
13
+ }
@@ -0,0 +1,33 @@
1
+ import { Event } from '@opensumi/ide-core-common';
2
+
3
+ export interface IUpdateRequest {
4
+ insert?: StringKeyToAnyValue;
5
+ delete?: string[];
6
+ }
7
+
8
+ export interface IStorageItemsChangeEvent {
9
+ items: Map<string, string>;
10
+ }
11
+
12
+ export const IWorkspaceStorageServer = 'IWorkspaceStorageServer';
13
+ export const IGlobalStorageServer = 'IGlobalStorageServer';
14
+
15
+ export interface StringKeyToAnyValue {
16
+ [key: string]: any;
17
+ }
18
+
19
+ export interface IStorageServer {
20
+ init(storageDirName?: string, workspace?: string): Promise<string | undefined>;
21
+
22
+ getItems(storageName: string): Promise<StringKeyToAnyValue>;
23
+ updateItems(storageName: string, request: IUpdateRequest): Promise<void>;
24
+
25
+ close(recovery?: () => Map<string, string>): Promise<void>;
26
+
27
+ onDidChange: Event<StorageChange>;
28
+ }
29
+
30
+ export interface StorageChange {
31
+ path: string;
32
+ data: string;
33
+ }
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './common';