@opensumi/ide-storage 2.23.4 → 2.23.5-rc-1681807382.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/storage.contribution.d.ts +3 -4
- package/lib/browser/storage.contribution.d.ts.map +1 -1
- package/lib/browser/storage.contribution.js +27 -23
- package/lib/browser/storage.contribution.js.map +1 -1
- package/lib/browser/storage.d.ts +2 -2
- package/lib/browser/storage.d.ts.map +1 -1
- package/lib/browser/storage.js +17 -16
- package/lib/browser/storage.js.map +1 -1
- package/package.json +6 -6
- package/src/browser/storage.contribution.ts +39 -40
- package/src/browser/storage.ts +19 -18
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { StorageResolverContribution, URI, IStorage
|
|
2
|
-
export declare class DatabaseStorageContribution implements StorageResolverContribution
|
|
1
|
+
import { StorageResolverContribution, URI, IStorage } from '@opensumi/ide-core-browser';
|
|
2
|
+
export declare class DatabaseStorageContribution implements StorageResolverContribution {
|
|
3
3
|
private workspaceStorage;
|
|
4
4
|
private globalStorage;
|
|
5
5
|
private appConfig;
|
|
6
6
|
private workspaceService;
|
|
7
7
|
private globalLocalStorage;
|
|
8
8
|
private scopedLocalStorage;
|
|
9
|
-
|
|
9
|
+
private cache;
|
|
10
10
|
resolve(storageId: URI): Promise<IStorage | undefined>;
|
|
11
11
|
isBuiltinStorage(storageId: URI): boolean;
|
|
12
|
-
onReconnect(): void;
|
|
13
12
|
}
|
|
14
13
|
//# sourceMappingURL=storage.contribution.d.ts.map
|
|
@@ -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,
|
|
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,EAMT,MAAM,4BAA4B,CAAC;AAOpC,qBACa,2BAA4B,YAAW,2BAA2B;IAE7E,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,CAAC,KAAK,CAAoC;IAE3C,OAAO,CAAC,SAAS,EAAE,GAAG;IA8C5B,gBAAgB,CAAC,SAAS,EAAE,GAAG;CAShC"}
|
|
@@ -8,33 +8,42 @@ const ide_workspace_1 = require("@opensumi/ide-workspace");
|
|
|
8
8
|
const common_1 = require("../common");
|
|
9
9
|
const storage_1 = require("./storage");
|
|
10
10
|
let DatabaseStorageContribution = class DatabaseStorageContribution {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.cache = new Map();
|
|
13
|
+
}
|
|
11
14
|
async resolve(storageId) {
|
|
12
15
|
const storageName = storageId.path.toString();
|
|
13
16
|
let storage;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
}
|
|
17
|
+
const cache = this.cache.get(storageId.toString());
|
|
18
|
+
if (cache) {
|
|
19
|
+
storage = cache;
|
|
22
20
|
}
|
|
23
|
-
else
|
|
24
|
-
if (
|
|
25
|
-
// 如果是内置的 Storage,在初始化过程中采用
|
|
26
|
-
|
|
21
|
+
else {
|
|
22
|
+
if (storageId.scheme === ide_core_browser_1.STORAGE_SCHEMA.SCOPE) {
|
|
23
|
+
// 如果是内置的 Storage,在初始化过程中采用 ScopedBrowserStorageService 代理
|
|
24
|
+
if (this.isBuiltinStorage(storageId)) {
|
|
25
|
+
storage = new storage_1.Storage(this.workspaceStorage, this.workspaceService, this.appConfig, storageName, false, this.scopedLocalStorage);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
storage = new storage_1.Storage(this.workspaceStorage, this.workspaceService, this.appConfig, storageName, false);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (storageId.scheme === ide_core_browser_1.STORAGE_SCHEMA.GLOBAL) {
|
|
32
|
+
if (this.isBuiltinStorage(storageId)) {
|
|
33
|
+
// 如果是内置的 Storage,在初始化过程中采用 GlobalBrowserStorageService 代理
|
|
34
|
+
storage = new storage_1.Storage(this.globalStorage, this.workspaceService, this.appConfig, storageName, true, this.globalLocalStorage);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
storage = new storage_1.Storage(this.globalStorage, this.workspaceService, this.appConfig, storageName, true);
|
|
38
|
+
}
|
|
27
39
|
}
|
|
28
40
|
else {
|
|
29
|
-
|
|
41
|
+
return;
|
|
30
42
|
}
|
|
31
|
-
|
|
32
|
-
else {
|
|
33
|
-
return;
|
|
43
|
+
this.cache.set(storageId.toString(), storage);
|
|
34
44
|
}
|
|
35
45
|
// 等待后台存储模块初始化数据
|
|
36
46
|
await storage.whenReady;
|
|
37
|
-
this.storage = storage;
|
|
38
47
|
return storage;
|
|
39
48
|
}
|
|
40
49
|
isBuiltinStorage(storageId) {
|
|
@@ -46,11 +55,6 @@ let DatabaseStorageContribution = class DatabaseStorageContribution {
|
|
|
46
55
|
}
|
|
47
56
|
return false;
|
|
48
57
|
}
|
|
49
|
-
onReconnect() {
|
|
50
|
-
if (this.storage) {
|
|
51
|
-
this.storage.reConnectInit();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
58
|
};
|
|
55
59
|
tslib_1.__decorate([
|
|
56
60
|
(0, di_1.Autowired)(common_1.IWorkspaceStorageServer),
|
|
@@ -77,7 +81,7 @@ tslib_1.__decorate([
|
|
|
77
81
|
tslib_1.__metadata("design:type", ide_core_browser_1.ScopedBrowserStorageService)
|
|
78
82
|
], DatabaseStorageContribution.prototype, "scopedLocalStorage", void 0);
|
|
79
83
|
DatabaseStorageContribution = tslib_1.__decorate([
|
|
80
|
-
(0, ide_core_browser_1.Domain)(ide_core_browser_1.StorageResolverContribution
|
|
84
|
+
(0, ide_core_browser_1.Domain)(ide_core_browser_1.StorageResolverContribution)
|
|
81
85
|
], DatabaseStorageContribution);
|
|
82
86
|
exports.DatabaseStorageContribution = DatabaseStorageContribution;
|
|
83
87
|
//# sourceMappingURL=storage.contribution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.contribution.js","sourceRoot":"","sources":["../../src/browser/storage.contribution.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"storage.contribution.js","sourceRoot":"","sources":["../../src/browser/storage.contribution.ts"],"names":[],"mappings":"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"}
|
package/lib/browser/storage.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export declare class Storage implements IStorage {
|
|
|
7
7
|
private readonly workspace;
|
|
8
8
|
private readonly appConfig;
|
|
9
9
|
private readonly storageName;
|
|
10
|
+
private readonly isGlobal;
|
|
10
11
|
private readonly browserLocalStorage?;
|
|
11
12
|
private static readonly DEFAULT_FLUSH_DELAY;
|
|
12
13
|
private _onDidChangeStorage;
|
|
@@ -20,13 +21,12 @@ export declare class Storage implements IStorage {
|
|
|
20
21
|
private readonly logger;
|
|
21
22
|
private readyDeferred;
|
|
22
23
|
private whenReadyToWriteDeferred;
|
|
23
|
-
constructor(database: IStorageServer, workspace: IWorkspaceService, appConfig: AppConfig, storageName: string, browserLocalStorage?: StorageService | undefined);
|
|
24
|
+
constructor(database: IStorageServer, workspace: IWorkspaceService, appConfig: AppConfig, storageName: string, isGlobal?: boolean, browserLocalStorage?: StorageService | undefined);
|
|
24
25
|
get whenReady(): Promise<void>;
|
|
25
26
|
get whenReadyToWrite(): Promise<void>;
|
|
26
27
|
get items(): Map<string, string>;
|
|
27
28
|
get size(): number;
|
|
28
29
|
init(storageName: string): Promise<void>;
|
|
29
|
-
setup(storageName: string): void;
|
|
30
30
|
reConnectInit(): Promise<void>;
|
|
31
31
|
dispose(): void;
|
|
32
32
|
get(key: string, fallbackValue: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/browser/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAEL,QAAQ,EAIR,KAAK,
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/browser/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAEL,QAAQ,EAIR,KAAK,EAKN,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAkB,MAAM,WAAW,CAAC;AAQ3D,qBAAa,OAAQ,YAAW,QAAQ;IAsBpC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IA1BvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAO;IAElD,OAAO,CAAC,mBAAmB,CAAyB;IACpD,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAkC;IAE5E,OAAO,CAAC,YAAY,CAAyB;IAE7C,OAAO,CAAC,KAAK,CAAqB;IAElC,OAAO,CAAC,KAAK,CAAkD;IAE/D,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,cAAc,CAAkC;IAExD,OAAO,CAAC,sBAAsB,CAAoD;IAClF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,wBAAwB,CAAwB;gBAGrC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,OAAc,EACxB,mBAAmB,CAAC,4BAAgB;IAcvD,IAAI,SAAS,kBAEZ;IAED,IAAI,gBAAgB,kBAEnB;IAED,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAE/B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,IAAI,CAAC,WAAW,EAAE,MAAM;IA+BxB,aAAa;IAKnB,OAAO;IAIP,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAC/C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAc5D,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO;IACxD,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAWrE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IACrD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAWlE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B7F,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAqBd,YAAY;IAgC1B,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,SAAS;CAelB"}
|
package/lib/browser/storage.js
CHANGED
|
@@ -9,11 +9,12 @@ var StorageState;
|
|
|
9
9
|
StorageState[StorageState["Closed"] = 2] = "Closed";
|
|
10
10
|
})(StorageState || (StorageState = {}));
|
|
11
11
|
class Storage {
|
|
12
|
-
constructor(database, workspace, appConfig, storageName, browserLocalStorage) {
|
|
12
|
+
constructor(database, workspace, appConfig, storageName, isGlobal = true, browserLocalStorage) {
|
|
13
13
|
this.database = database;
|
|
14
14
|
this.workspace = workspace;
|
|
15
15
|
this.appConfig = appConfig;
|
|
16
16
|
this.storageName = storageName;
|
|
17
|
+
this.isGlobal = isGlobal;
|
|
17
18
|
this.browserLocalStorage = browserLocalStorage;
|
|
18
19
|
this._onDidChangeStorage = new ide_core_common_1.Emitter();
|
|
19
20
|
this.onDidChangeStorage = this._onDidChangeStorage.event;
|
|
@@ -26,11 +27,12 @@ class Storage {
|
|
|
26
27
|
this.readyDeferred = new ide_core_common_1.Deferred();
|
|
27
28
|
this.whenReadyToWriteDeferred = new ide_core_common_1.Deferred();
|
|
28
29
|
this.toDisposableCollection.push(this._onDidChangeStorage);
|
|
29
|
-
this.toDisposableCollection.push(this.workspace.onWorkspaceChanged(() => {
|
|
30
|
-
this.setup(storageName);
|
|
31
|
-
}));
|
|
32
30
|
this.flushDelayer = new ide_core_common_1.ThrottledDelayer(Storage.DEFAULT_FLUSH_DELAY);
|
|
33
|
-
this.
|
|
31
|
+
this.init(storageName).then(() => {
|
|
32
|
+
this.toDisposableCollection.push(this.workspace.onWorkspaceChanged(() => {
|
|
33
|
+
this.init(storageName);
|
|
34
|
+
}));
|
|
35
|
+
});
|
|
34
36
|
}
|
|
35
37
|
get whenReady() {
|
|
36
38
|
return this.readyDeferred.promise;
|
|
@@ -45,13 +47,16 @@ class Storage {
|
|
|
45
47
|
return this.cache.size;
|
|
46
48
|
}
|
|
47
49
|
async init(storageName) {
|
|
48
|
-
|
|
50
|
+
var _a;
|
|
51
|
+
// 首次加载情况下,由于 Storage 不依赖 WorkspaceService 初始化逻辑
|
|
52
|
+
// 在 `workspace` 不存在时,默认采用 `AppConfig` 内的 `workspaceDir` 配置值作为工作区路径
|
|
53
|
+
const workspace = ((_a = this.workspace.workspace) === null || _a === void 0 ? void 0 : _a.uri) || ide_core_common_1.URI.file(this.appConfig.workspaceDir).toString();
|
|
49
54
|
let cache;
|
|
50
55
|
if (this.browserLocalStorage) {
|
|
51
56
|
cache = await this.browserLocalStorage.getData(storageName);
|
|
52
57
|
}
|
|
53
|
-
if (!cache) {
|
|
54
|
-
await this.database.init(this.appConfig.storageDirName,
|
|
58
|
+
if (!cache || (0, ide_core_common_1.isEmptyObject)(cache)) {
|
|
59
|
+
await this.database.init(this.appConfig.storageDirName, this.isGlobal ? undefined : workspace);
|
|
55
60
|
cache = await this.database.getItems(storageName);
|
|
56
61
|
if (this.browserLocalStorage) {
|
|
57
62
|
this.browserLocalStorage.setData(storageName, cache);
|
|
@@ -60,13 +65,12 @@ class Storage {
|
|
|
60
65
|
}
|
|
61
66
|
else {
|
|
62
67
|
// 初始化服务端缓存
|
|
63
|
-
this.database.init(this.appConfig.storageDirName,
|
|
68
|
+
this.database.init(this.appConfig.storageDirName, this.isGlobal ? undefined : workspace).then(() => {
|
|
64
69
|
this.database.getItems(storageName).then(async (data) => {
|
|
70
|
+
var _a;
|
|
65
71
|
// 后续以服务端数据为准更新前端缓存数据,防止后续数据存取异常
|
|
66
72
|
this.cache = this.jsonToMap(data);
|
|
67
|
-
|
|
68
|
-
await this.browserLocalStorage.setData(storageName, JSON.stringify(data));
|
|
69
|
-
}
|
|
73
|
+
await ((_a = this.browserLocalStorage) === null || _a === void 0 ? void 0 : _a.setData(storageName, data));
|
|
70
74
|
this.whenReadyToWriteDeferred.resolve();
|
|
71
75
|
});
|
|
72
76
|
});
|
|
@@ -75,12 +79,9 @@ class Storage {
|
|
|
75
79
|
this.state = StorageState.Initialized;
|
|
76
80
|
this.readyDeferred.resolve();
|
|
77
81
|
}
|
|
78
|
-
setup(storageName) {
|
|
79
|
-
this.init(storageName);
|
|
80
|
-
}
|
|
81
82
|
async reConnectInit() {
|
|
82
83
|
this.readyDeferred = new ide_core_common_1.Deferred();
|
|
83
|
-
this.
|
|
84
|
+
this.init(this.storageName);
|
|
84
85
|
}
|
|
85
86
|
dispose() {
|
|
86
87
|
this.toDisposableCollection.dispose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/browser/storage.ts"],"names":[],"mappings":";;;AACA,+
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/browser/storage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-storage",
|
|
3
|
-
"version": "2.23.
|
|
3
|
+
"version": "2.23.5-rc-1681807382.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -17,13 +17,13 @@
|
|
|
17
17
|
"url": "git@github.com:opensumi/core.git"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@opensumi/ide-core-common": "2.23.
|
|
20
|
+
"@opensumi/ide-core-common": "2.23.5-rc-1681807382.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@opensumi/ide-core-browser": "2.23.
|
|
23
|
+
"@opensumi/ide-core-browser": "2.23.5-rc-1681807382.0",
|
|
24
24
|
"@opensumi/ide-dev-tool": "1.3.1",
|
|
25
|
-
"@opensumi/ide-file-service": "2.23.
|
|
26
|
-
"@opensumi/ide-workspace": "2.23.
|
|
25
|
+
"@opensumi/ide-file-service": "2.23.5-rc-1681807382.0",
|
|
26
|
+
"@opensumi/ide-workspace": "2.23.5-rc-1681807382.0"
|
|
27
27
|
},
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "9b66cc87f0e2ddc79fcfc7b3b0ec96a6a34e5537"
|
|
29
29
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { Autowired
|
|
1
|
+
import { Autowired } from '@opensumi/di';
|
|
2
2
|
import {
|
|
3
3
|
Domain,
|
|
4
4
|
StorageResolverContribution,
|
|
5
5
|
URI,
|
|
6
6
|
IStorage,
|
|
7
|
-
ClientAppContribution,
|
|
8
7
|
STORAGE_SCHEMA,
|
|
9
8
|
AppConfig,
|
|
10
9
|
ScopedBrowserStorageService,
|
|
@@ -17,8 +16,8 @@ import { IStorageServer, IWorkspaceStorageServer, IGlobalStorageServer } from '.
|
|
|
17
16
|
|
|
18
17
|
import { Storage } from './storage';
|
|
19
18
|
|
|
20
|
-
@Domain(StorageResolverContribution
|
|
21
|
-
export class DatabaseStorageContribution implements StorageResolverContribution
|
|
19
|
+
@Domain(StorageResolverContribution)
|
|
20
|
+
export class DatabaseStorageContribution implements StorageResolverContribution {
|
|
22
21
|
@Autowired(IWorkspaceStorageServer)
|
|
23
22
|
private workspaceStorage: IStorageServer;
|
|
24
23
|
|
|
@@ -37,45 +36,51 @@ export class DatabaseStorageContribution implements StorageResolverContribution,
|
|
|
37
36
|
@Autowired(ScopedBrowserStorageService)
|
|
38
37
|
private scopedLocalStorage: ScopedBrowserStorageService;
|
|
39
38
|
|
|
40
|
-
|
|
39
|
+
private cache: Map<string, IStorage> = new Map();
|
|
41
40
|
|
|
42
41
|
async resolve(storageId: URI) {
|
|
43
42
|
const storageName = storageId.path.toString();
|
|
44
43
|
let storage: IStorage;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
44
|
+
const cache = this.cache.get(storageId.toString());
|
|
45
|
+
if (cache) {
|
|
46
|
+
storage = cache;
|
|
47
|
+
} else {
|
|
48
|
+
if (storageId.scheme === STORAGE_SCHEMA.SCOPE) {
|
|
49
|
+
// 如果是内置的 Storage,在初始化过程中采用 ScopedBrowserStorageService 代理
|
|
50
|
+
if (this.isBuiltinStorage(storageId)) {
|
|
51
|
+
storage = new Storage(
|
|
52
|
+
this.workspaceStorage,
|
|
53
|
+
this.workspaceService,
|
|
54
|
+
this.appConfig,
|
|
55
|
+
storageName,
|
|
56
|
+
false,
|
|
57
|
+
this.scopedLocalStorage,
|
|
58
|
+
);
|
|
59
|
+
} else {
|
|
60
|
+
storage = new Storage(this.workspaceStorage, this.workspaceService, this.appConfig, storageName, false);
|
|
61
|
+
}
|
|
62
|
+
} else if (storageId.scheme === STORAGE_SCHEMA.GLOBAL) {
|
|
63
|
+
if (this.isBuiltinStorage(storageId)) {
|
|
64
|
+
// 如果是内置的 Storage,在初始化过程中采用 GlobalBrowserStorageService 代理
|
|
65
|
+
storage = new Storage(
|
|
66
|
+
this.globalStorage,
|
|
67
|
+
this.workspaceService,
|
|
68
|
+
this.appConfig,
|
|
69
|
+
storageName,
|
|
70
|
+
true,
|
|
71
|
+
this.globalLocalStorage,
|
|
72
|
+
);
|
|
73
|
+
} else {
|
|
74
|
+
storage = new Storage(this.globalStorage, this.workspaceService, this.appConfig, storageName, true);
|
|
75
|
+
}
|
|
68
76
|
} else {
|
|
69
|
-
|
|
77
|
+
return;
|
|
70
78
|
}
|
|
71
|
-
|
|
72
|
-
return;
|
|
79
|
+
this.cache.set(storageId.toString(), storage);
|
|
73
80
|
}
|
|
81
|
+
|
|
74
82
|
// 等待后台存储模块初始化数据
|
|
75
83
|
await storage.whenReady;
|
|
76
|
-
|
|
77
|
-
this.storage = storage;
|
|
78
|
-
|
|
79
84
|
return storage;
|
|
80
85
|
}
|
|
81
86
|
|
|
@@ -88,10 +93,4 @@ export class DatabaseStorageContribution implements StorageResolverContribution,
|
|
|
88
93
|
}
|
|
89
94
|
return false;
|
|
90
95
|
}
|
|
91
|
-
|
|
92
|
-
onReconnect() {
|
|
93
|
-
if (this.storage) {
|
|
94
|
-
this.storage.reConnectInit();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
96
|
}
|
package/src/browser/storage.ts
CHANGED
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
Event,
|
|
9
9
|
DisposableCollection,
|
|
10
10
|
Deferred,
|
|
11
|
+
isEmptyObject,
|
|
12
|
+
URI,
|
|
11
13
|
} from '@opensumi/ide-core-common';
|
|
12
14
|
import { IWorkspaceService } from '@opensumi/ide-workspace';
|
|
13
15
|
|
|
@@ -45,16 +47,19 @@ export class Storage implements IStorage {
|
|
|
45
47
|
private readonly workspace: IWorkspaceService,
|
|
46
48
|
private readonly appConfig: AppConfig,
|
|
47
49
|
private readonly storageName: string,
|
|
50
|
+
private readonly isGlobal: boolean = true,
|
|
48
51
|
private readonly browserLocalStorage?: StorageService,
|
|
49
52
|
) {
|
|
50
53
|
this.toDisposableCollection.push(this._onDidChangeStorage);
|
|
51
|
-
|
|
52
|
-
this.workspace.onWorkspaceChanged(() => {
|
|
53
|
-
this.setup(storageName);
|
|
54
|
-
}),
|
|
55
|
-
);
|
|
54
|
+
|
|
56
55
|
this.flushDelayer = new ThrottledDelayer(Storage.DEFAULT_FLUSH_DELAY);
|
|
57
|
-
this.
|
|
56
|
+
this.init(storageName).then(() => {
|
|
57
|
+
this.toDisposableCollection.push(
|
|
58
|
+
this.workspace.onWorkspaceChanged(() => {
|
|
59
|
+
this.init(storageName);
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
62
|
+
});
|
|
58
63
|
}
|
|
59
64
|
|
|
60
65
|
get whenReady() {
|
|
@@ -74,13 +79,15 @@ export class Storage implements IStorage {
|
|
|
74
79
|
}
|
|
75
80
|
|
|
76
81
|
async init(storageName: string) {
|
|
77
|
-
|
|
82
|
+
// 首次加载情况下,由于 Storage 不依赖 WorkspaceService 初始化逻辑
|
|
83
|
+
// 在 `workspace` 不存在时,默认采用 `AppConfig` 内的 `workspaceDir` 配置值作为工作区路径
|
|
84
|
+
const workspace = this.workspace.workspace?.uri || URI.file(this.appConfig.workspaceDir).toString();
|
|
78
85
|
let cache;
|
|
79
86
|
if (this.browserLocalStorage) {
|
|
80
87
|
cache = await this.browserLocalStorage.getData(storageName);
|
|
81
88
|
}
|
|
82
|
-
if (!cache) {
|
|
83
|
-
await this.database.init(this.appConfig.storageDirName,
|
|
89
|
+
if (!cache || isEmptyObject(cache)) {
|
|
90
|
+
await this.database.init(this.appConfig.storageDirName, this.isGlobal ? undefined : workspace);
|
|
84
91
|
cache = await this.database.getItems(storageName);
|
|
85
92
|
if (this.browserLocalStorage) {
|
|
86
93
|
this.browserLocalStorage.setData(storageName, cache);
|
|
@@ -88,13 +95,11 @@ export class Storage implements IStorage {
|
|
|
88
95
|
this.whenReadyToWriteDeferred.resolve();
|
|
89
96
|
} else {
|
|
90
97
|
// 初始化服务端缓存
|
|
91
|
-
this.database.init(this.appConfig.storageDirName,
|
|
98
|
+
this.database.init(this.appConfig.storageDirName, this.isGlobal ? undefined : workspace).then(() => {
|
|
92
99
|
this.database.getItems(storageName).then(async (data) => {
|
|
93
100
|
// 后续以服务端数据为准更新前端缓存数据,防止后续数据存取异常
|
|
94
101
|
this.cache = this.jsonToMap(data);
|
|
95
|
-
|
|
96
|
-
await this.browserLocalStorage.setData(storageName, JSON.stringify(data));
|
|
97
|
-
}
|
|
102
|
+
await this.browserLocalStorage?.setData(storageName, data);
|
|
98
103
|
this.whenReadyToWriteDeferred.resolve();
|
|
99
104
|
});
|
|
100
105
|
});
|
|
@@ -104,13 +109,9 @@ export class Storage implements IStorage {
|
|
|
104
109
|
this.readyDeferred.resolve();
|
|
105
110
|
}
|
|
106
111
|
|
|
107
|
-
setup(storageName: string) {
|
|
108
|
-
this.init(storageName);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
112
|
async reConnectInit() {
|
|
112
113
|
this.readyDeferred = new Deferred();
|
|
113
|
-
this.
|
|
114
|
+
this.init(this.storageName);
|
|
114
115
|
}
|
|
115
116
|
|
|
116
117
|
dispose() {
|