@opensumi/ide-storage 2.12.1-next-079c1930

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.
Files changed (37) hide show
  1. package/lib/browser/index.d.ts +6 -0
  2. package/lib/browser/index.d.ts.map +1 -0
  3. package/lib/browser/index.js +35 -0
  4. package/lib/browser/index.js.map +1 -0
  5. package/lib/browser/storage-path.d.ts +42 -0
  6. package/lib/browser/storage-path.d.ts.map +1 -0
  7. package/lib/browser/storage-path.js +138 -0
  8. package/lib/browser/storage-path.js.map +1 -0
  9. package/lib/browser/storage.contribution.d.ts +12 -0
  10. package/lib/browser/storage.contribution.d.ts.map +1 -0
  11. package/lib/browser/storage.contribution.js +60 -0
  12. package/lib/browser/storage.contribution.js.map +1 -0
  13. package/lib/browser/storage.d.ts +42 -0
  14. package/lib/browser/storage.d.ts.map +1 -0
  15. package/lib/browser/storage.js +174 -0
  16. package/lib/browser/storage.js.map +1 -0
  17. package/lib/browser/storage.service.d.ts +37 -0
  18. package/lib/browser/storage.service.d.ts.map +1 -0
  19. package/lib/browser/storage.service.js +250 -0
  20. package/lib/browser/storage.service.js.map +1 -0
  21. package/lib/common/index.d.ts +3 -0
  22. package/lib/common/index.d.ts.map +1 -0
  23. package/lib/common/index.js +6 -0
  24. package/lib/common/index.js.map +1 -0
  25. package/lib/common/storage-path.d.ts +8 -0
  26. package/lib/common/storage-path.d.ts.map +1 -0
  27. package/lib/common/storage-path.js +6 -0
  28. package/lib/common/storage-path.js.map +1 -0
  29. package/lib/common/storage.d.ts +25 -0
  30. package/lib/common/storage.d.ts.map +1 -0
  31. package/lib/common/storage.js +6 -0
  32. package/lib/common/storage.js.map +1 -0
  33. package/lib/index.d.ts +2 -0
  34. package/lib/index.d.ts.map +1 -0
  35. package/lib/index.js +5 -0
  36. package/lib/index.js.map +1 -0
  37. package/package.json +28 -0
@@ -0,0 +1,6 @@
1
+ import { Provider } from '@opensumi/di';
2
+ import { BrowserModule } from '@opensumi/ide-core-browser';
3
+ export declare class StorageModule extends BrowserModule {
4
+ providers: Provider[];
5
+ }
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAM3D,qBACa,aAAc,SAAQ,aAAa;IAC9C,SAAS,EAAE,QAAQ,EAAE,CAcnB;CACH"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StorageModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const di_1 = require("@opensumi/di");
6
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
7
+ const storage_contribution_1 = require("./storage.contribution");
8
+ const common_1 = require("../common");
9
+ const storage_path_1 = require("./storage-path");
10
+ const storage_service_1 = require("./storage.service");
11
+ let StorageModule = class StorageModule extends ide_core_browser_1.BrowserModule {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.providers = [
15
+ {
16
+ token: common_1.IStoragePathServer,
17
+ useClass: storage_path_1.StoragePathServer,
18
+ },
19
+ {
20
+ token: common_1.IGlobalStorageServer,
21
+ useClass: storage_service_1.GlobalStorageServer,
22
+ },
23
+ {
24
+ token: common_1.IWorkspaceStorageServer,
25
+ useClass: storage_service_1.WorkspaceStorageServer,
26
+ },
27
+ storage_contribution_1.DatabaseStorageContribution,
28
+ ];
29
+ }
30
+ };
31
+ StorageModule = (0, tslib_1.__decorate)([
32
+ (0, di_1.Injectable)()
33
+ ], StorageModule);
34
+ exports.StorageModule = StorageModule;
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":";;;;AAAA,qCAAoD;AACpD,iEAA2D;AAC3D,iEAAqE;AACrE,sCAA8F;AAC9F,iDAAmD;AACnD,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"}
@@ -0,0 +1,42 @@
1
+ import { IStoragePathServer } from '../common';
2
+ export declare class StoragePathServer implements IStoragePathServer {
3
+ private windowsDataFolders;
4
+ private cachedWorkspaceStoragePath;
5
+ private cachedGlobalStoragePath;
6
+ private deferredWorkspaceStoragePath;
7
+ private deferredGlobalStoragePath;
8
+ private workspaceStoragePathInitialized;
9
+ private globalStoragePathInitialized;
10
+ private ensureStorageDirPromises;
11
+ private _userHome;
12
+ private readonly fileSystem;
13
+ private readonly logger;
14
+ constructor();
15
+ init(): Promise<void>;
16
+ get userHome(): Promise<string>;
17
+ ensureStorageDir(uri: string): Promise<void>;
18
+ private doEnsureStorageDir;
19
+ provideWorkspaceStorageDirPath(storageDirName: string): Promise<string | undefined>;
20
+ provideGlobalStorageDirPath(storageDirName: string): Promise<string | undefined>;
21
+ /**
22
+ * 返回数据存储文件夹
23
+ */
24
+ getBaseStorageDirPath(storageDirName?: string): Promise<string>;
25
+ /**
26
+ * 获取工作区存储路径
27
+ */
28
+ getDataDirPath(storageDirName?: string): Promise<string>;
29
+ /**
30
+ * 获取用户目录
31
+ */
32
+ private getUserHomeDir;
33
+ /**
34
+ * 获取最后的工作区数据存储路径
35
+ */
36
+ getLastWorkspaceStoragePath(): Promise<string | undefined>;
37
+ /**
38
+ * 获取最后的全局数据存储路径
39
+ */
40
+ getLastGlobalStoragePath(): Promise<string | undefined>;
41
+ }
42
+ //# sourceMappingURL=storage-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-path.d.ts","sourceRoot":"","sources":["../../src/browser/storage-path.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAK/C,qBACa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,kBAAkB,CAAyE;IAEnG,OAAO,CAAC,0BAA0B,CAAqB;IACvD,OAAO,CAAC,uBAAuB,CAAqB;IAEpD,OAAO,CAAC,4BAA4B,CAAmB;IACvD,OAAO,CAAC,yBAAyB,CAAmB;IAGpD,OAAO,CAAC,+BAA+B,CAAU;IACjD,OAAO,CAAC,4BAA4B,CAAU;IAE9C,OAAO,CAAC,wBAAwB,CAAyC;IAEzE,OAAO,CAAC,SAAS,CAAkB;IAGnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAGhD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;;IAM3B,IAAI;IASV,IAAI,QAAQ,oBAEX;IAEK,gBAAgB,CAAC,GAAG,EAAE,MAAM;YASpB,kBAAkB;IAU1B,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAoBnF,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAoBtF;;OAEG;IACG,qBAAqB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKrE;;OAEG;IACG,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO9D;;OAEG;YACW,cAAc;IAS5B;;OAEG;IACG,2BAA2B,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAQhE;;OAEG;IACG,wBAAwB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAQ9D"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StoragePathServer = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const di_1 = require("@opensumi/di");
6
+ const ide_file_service_1 = require("@opensumi/ide-file-service");
7
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
8
+ const path_1 = require("@opensumi/ide-core-common/lib/path");
9
+ let StoragePathServer = class StoragePathServer {
10
+ constructor() {
11
+ this.windowsDataFolders = [ide_core_common_1.StoragePaths.WINDOWS_APP_DATA_DIR, ide_core_common_1.StoragePaths.WINDOWS_ROAMING_DIR];
12
+ this.ensureStorageDirPromises = new Map();
13
+ this.init();
14
+ }
15
+ async init() {
16
+ this.deferredWorkspaceStoragePath = new ide_core_common_1.Deferred();
17
+ this.deferredGlobalStoragePath = new ide_core_common_1.Deferred();
18
+ this.workspaceStoragePathInitialized = false;
19
+ this.globalStoragePathInitialized = false;
20
+ this._userHome = this.getUserHomeDir();
21
+ }
22
+ get userHome() {
23
+ return this._userHome;
24
+ }
25
+ async ensureStorageDir(uri) {
26
+ if (this.ensureStorageDirPromises.has(uri)) {
27
+ return await this.ensureStorageDirPromises.get(uri);
28
+ }
29
+ const promise = this.doEnsureStorageDir(uri);
30
+ this.ensureStorageDirPromises.set(uri, promise);
31
+ return await promise;
32
+ }
33
+ async doEnsureStorageDir(uri) {
34
+ try {
35
+ if (!await this.fileSystem.access(uri)) {
36
+ await this.fileSystem.createFolder(uri);
37
+ }
38
+ }
39
+ catch (e) {
40
+ this.logger.error(e);
41
+ }
42
+ }
43
+ async provideWorkspaceStorageDirPath(storageDirName) {
44
+ if (this.cachedWorkspaceStoragePath) {
45
+ return this.cachedWorkspaceStoragePath;
46
+ }
47
+ const storagePathString = await this.getBaseStorageDirPath(storageDirName);
48
+ const uriString = ide_core_common_1.URI.file(storagePathString).resolve(ide_core_common_1.StoragePaths.DEFAULT_DATA_DIR_NAME).toString();
49
+ if (!storagePathString) {
50
+ throw new Error('Unable to get parent storage directory');
51
+ }
52
+ if (!this.workspaceStoragePathInitialized) {
53
+ await this.ensureStorageDir(uriString);
54
+ }
55
+ this.deferredWorkspaceStoragePath.resolve(uriString);
56
+ this.workspaceStoragePathInitialized = true;
57
+ return this.cachedWorkspaceStoragePath = uriString;
58
+ }
59
+ async provideGlobalStorageDirPath(storageDirName) {
60
+ if (this.cachedGlobalStoragePath) {
61
+ return this.cachedGlobalStoragePath;
62
+ }
63
+ const storagePathString = await this.getBaseStorageDirPath(storageDirName);
64
+ const uriString = ide_core_common_1.URI.file(storagePathString).toString();
65
+ if (!storagePathString) {
66
+ throw new Error('Unable to get parent storage directory');
67
+ }
68
+ if (!this.globalStoragePathInitialized) {
69
+ await this.ensureStorageDir(uriString);
70
+ }
71
+ this.deferredGlobalStoragePath.resolve(uriString);
72
+ this.globalStoragePathInitialized = true;
73
+ return this.cachedGlobalStoragePath = uriString;
74
+ }
75
+ /**
76
+ * 返回数据存储文件夹
77
+ */
78
+ async getBaseStorageDirPath(storageDirName) {
79
+ const workspaceDir = await this.getDataDirPath(storageDirName);
80
+ return workspaceDir;
81
+ }
82
+ /**
83
+ * 获取工作区存储路径
84
+ */
85
+ async getDataDirPath(storageDirName) {
86
+ const homeDir = await this.userHome;
87
+ const storageDir = storageDirName || ide_core_common_1.StoragePaths.DEFAULT_STORAGE_DIR_NAME;
88
+ const dirPath = new path_1.Path(homeDir).join(...(ide_core_common_1.isWindows ? this.windowsDataFolders : ['']), storageDir);
89
+ return dirPath.toString();
90
+ }
91
+ /**
92
+ * 获取用户目录
93
+ */
94
+ async getUserHomeDir() {
95
+ const homeDirStat = await this.fileSystem.getCurrentUserHome();
96
+ if (!homeDirStat) {
97
+ throw new Error('Unable to get user home directory');
98
+ }
99
+ const userHome = await this.fileSystem.getFsPath(homeDirStat.uri) || '';
100
+ return userHome;
101
+ }
102
+ /**
103
+ * 获取最后的工作区数据存储路径
104
+ */
105
+ async getLastWorkspaceStoragePath() {
106
+ if (this.workspaceStoragePathInitialized) {
107
+ return this.cachedWorkspaceStoragePath;
108
+ }
109
+ else {
110
+ return this.deferredWorkspaceStoragePath.promise;
111
+ }
112
+ }
113
+ /**
114
+ * 获取最后的全局数据存储路径
115
+ */
116
+ async getLastGlobalStoragePath() {
117
+ if (this.globalStoragePathInitialized) {
118
+ return this.cachedGlobalStoragePath;
119
+ }
120
+ else {
121
+ return this.deferredGlobalStoragePath.promise;
122
+ }
123
+ }
124
+ };
125
+ (0, tslib_1.__decorate)([
126
+ (0, di_1.Autowired)(ide_file_service_1.IFileServiceClient),
127
+ (0, tslib_1.__metadata)("design:type", Object)
128
+ ], StoragePathServer.prototype, "fileSystem", void 0);
129
+ (0, tslib_1.__decorate)([
130
+ (0, di_1.Autowired)(ide_core_common_1.ILogger),
131
+ (0, tslib_1.__metadata)("design:type", Object)
132
+ ], StoragePathServer.prototype, "logger", void 0);
133
+ StoragePathServer = (0, tslib_1.__decorate)([
134
+ (0, di_1.Injectable)(),
135
+ (0, tslib_1.__metadata)("design:paramtypes", [])
136
+ ], StoragePathServer);
137
+ exports.StoragePathServer = StoragePathServer;
138
+ //# sourceMappingURL=storage-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-path.js","sourceRoot":"","sources":["../../src/browser/storage-path.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { StorageResolverContribution, URI, IStorage, ClientAppContribution } from '@opensumi/ide-core-browser';
2
+ export declare class DatabaseStorageContribution implements StorageResolverContribution, ClientAppContribution {
3
+ private workspaceStorage;
4
+ private globalStorage;
5
+ private appConfig;
6
+ private workspaceService;
7
+ storage: IStorage;
8
+ private resolvedStorages;
9
+ resolve(storageId: URI): Promise<IStorage | undefined>;
10
+ onReconnect(): void;
11
+ }
12
+ //# sourceMappingURL=storage.contribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.contribution.d.ts","sourceRoot":"","sources":["../../src/browser/storage.contribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,2BAA2B,EAAE,GAAG,EAAE,QAAQ,EAAE,qBAAqB,EAA6B,MAAM,4BAA4B,CAAC;AAMlJ,qBACa,2BAA4B,YAAW,2BAA2B,EAAE,qBAAqB;IAGpG,OAAO,CAAC,gBAAgB,CAAiB;IAGzC,OAAO,CAAC,aAAa,CAAiB;IAGtC,OAAO,CAAC,SAAS,CAAY;IAG7B,OAAO,CAAC,gBAAgB,CAAoB;IAE5C,OAAO,EAAE,QAAQ,CAAC;IAElB,OAAO,CAAC,gBAAgB,CAAoC;IAEtD,OAAO,CAAC,SAAS,EAAE,GAAG;IAsB5B,WAAW;CAKZ"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseStorageContribution = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
6
+ const di_1 = require("@opensumi/di");
7
+ const storage_1 = require("./storage");
8
+ const common_1 = require("../common");
9
+ const ide_workspace_1 = require("@opensumi/ide-workspace");
10
+ let DatabaseStorageContribution = class DatabaseStorageContribution {
11
+ constructor() {
12
+ this.resolvedStorages = new Map();
13
+ }
14
+ async resolve(storageId) {
15
+ const storageName = storageId.path.toString();
16
+ if (this.resolvedStorages.has(storageName)) {
17
+ return this.resolvedStorages.get(storageName);
18
+ }
19
+ let storage;
20
+ if (storageId.scheme === ide_core_browser_1.STORAGE_SCHEMA.SCOPE) {
21
+ storage = new storage_1.Storage(this.workspaceStorage, this.workspaceService, this.appConfig, storageName);
22
+ }
23
+ else if (storageId.scheme === ide_core_browser_1.STORAGE_SCHEMA.GLOBAL) {
24
+ storage = new storage_1.Storage(this.globalStorage, this.workspaceService, this.appConfig, storageName);
25
+ }
26
+ else {
27
+ return;
28
+ }
29
+ this.resolvedStorages.set(storageName, storage);
30
+ // 等待后台存储模块初始化数据
31
+ await storage.whenReady;
32
+ return storage;
33
+ }
34
+ onReconnect() {
35
+ if (this.storage) {
36
+ this.storage.reConnectInit();
37
+ }
38
+ }
39
+ };
40
+ (0, tslib_1.__decorate)([
41
+ (0, di_1.Autowired)(common_1.IWorkspaceStorageServer),
42
+ (0, tslib_1.__metadata)("design:type", Object)
43
+ ], DatabaseStorageContribution.prototype, "workspaceStorage", void 0);
44
+ (0, tslib_1.__decorate)([
45
+ (0, di_1.Autowired)(common_1.IGlobalStorageServer),
46
+ (0, tslib_1.__metadata)("design:type", Object)
47
+ ], DatabaseStorageContribution.prototype, "globalStorage", void 0);
48
+ (0, tslib_1.__decorate)([
49
+ (0, di_1.Autowired)(ide_core_browser_1.AppConfig),
50
+ (0, tslib_1.__metadata)("design:type", Object)
51
+ ], DatabaseStorageContribution.prototype, "appConfig", void 0);
52
+ (0, tslib_1.__decorate)([
53
+ (0, di_1.Autowired)(ide_workspace_1.IWorkspaceService),
54
+ (0, tslib_1.__metadata)("design:type", Object)
55
+ ], DatabaseStorageContribution.prototype, "workspaceService", void 0);
56
+ DatabaseStorageContribution = (0, tslib_1.__decorate)([
57
+ (0, ide_core_browser_1.Domain)(ide_core_browser_1.StorageResolverContribution, ide_core_browser_1.ClientAppContribution)
58
+ ], DatabaseStorageContribution);
59
+ exports.DatabaseStorageContribution = DatabaseStorageContribution;
60
+ //# sourceMappingURL=storage.contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.contribution.js","sourceRoot":"","sources":["../../src/browser/storage.contribution.ts"],"names":[],"mappings":";;;;AAAA,iEAAkJ;AAClJ,qCAAyC;AACzC,uCAAoC;AACpC,sCAA0F;AAC1F,2DAA4D;AAG5D,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAAxC;QAgBU,qBAAgB,GAA0B,IAAI,GAAG,EAAE,CAAC;IA6B9D,CAAC;IA3BC,KAAK,CAAC,OAAO,CAAC,SAAc;QAC1B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;SAC/C;QAED,IAAI,OAAiB,CAAC;QACtB,IAAI,SAAS,CAAC,MAAM,KAAK,iCAAc,CAAC,KAAK,EAAE;YAC7C,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAClG;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,iCAAc,CAAC,MAAM,EAAE;YACrD,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAC/F;aAAM;YACL,OAAO;SACR;QAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAChD,gBAAgB;QAChB,MAAM,OAAO,CAAC,SAAS,CAAC;QAExB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;SAC9B;IACH,CAAC;CACF,CAAA;AA1CC;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;AAZjC,2BAA2B;IADvC,IAAA,yBAAM,EAAC,8CAA2B,EAAE,wCAAqB,CAAC;GAC9C,2BAA2B,CA6CvC;AA7CY,kEAA2B"}
@@ -0,0 +1,42 @@
1
+ import { IStorage, Event } from '@opensumi/ide-core-common';
2
+ import { IWorkspaceService } from '@opensumi/ide-workspace';
3
+ import { IStorageServer } from '../common';
4
+ import { AppConfig } from '@opensumi/ide-core-browser';
5
+ export declare class Storage implements IStorage {
6
+ private readonly database;
7
+ private readonly workspace;
8
+ private readonly appConfig;
9
+ private readonly logger;
10
+ private static readonly DEFAULT_FLUSH_DELAY;
11
+ private _onDidChangeStorage;
12
+ readonly onDidChangeStorage: Event<string>;
13
+ private flushDelayer;
14
+ private state;
15
+ private cache;
16
+ private pendingDeletes;
17
+ private pendingInserts;
18
+ private toDisposableCollection;
19
+ private storageName;
20
+ private _whenReady;
21
+ constructor(database: IStorageServer, workspace: IWorkspaceService, appConfig: AppConfig, storageName: string, logger?: import("@opensumi/ide-core-common").IDebugLog);
22
+ get whenReady(): Promise<void>;
23
+ get items(): Map<string, string>;
24
+ get size(): number;
25
+ init(storageName: string): Promise<void>;
26
+ setup(storageName: string): void;
27
+ reConnectInit(): Promise<void>;
28
+ private jsonToMap;
29
+ dispose(): void;
30
+ get(key: string, fallbackValue: string): string;
31
+ get(key: string, fallbackValue?: string): string | undefined;
32
+ getBoolean(key: string, fallbackValue: boolean): boolean;
33
+ getBoolean(key: string, fallbackValue?: boolean): boolean | undefined;
34
+ getNumber(key: string, fallbackValue: number): number;
35
+ getNumber(key: string, fallbackValue?: number): number | undefined;
36
+ set(key: string, value: object | string | boolean | number | null | undefined): Promise<void>;
37
+ delete(key: string): Promise<void>;
38
+ close(): Promise<void>;
39
+ private flushPending;
40
+ mapToJson(map: Map<string, string>): any;
41
+ }
42
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/browser/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAgD,KAAK,EAAwB,MAAM,2BAA2B,CAAC;AAChJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAkB,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAQvD,qBAAa,OAAQ,YAAW,QAAQ;IAsBpC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAzBzB,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;IAElF,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,UAAU,CAAgB;gBAGf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,iBAAiB,EAC5B,SAAS,EAAE,SAAS,EACrC,WAAW,EAAE,MAAM,EACF,MAAM,gDAAmB;IAW5C,IAAI,SAAS,kBAEZ;IAED,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAE/B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAEK,IAAI,CAAC,WAAW,EAAE,MAAM;IAS9B,KAAK,CAAC,WAAW,EAAE,MAAM;IAInB,aAAa;IAInB,OAAO,CAAC,SAAS;IAQjB,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;IAqB5B,OAAO,CAAC,YAAY;IAgBpB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAOnC"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Storage = void 0;
4
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
5
+ var StorageState;
6
+ (function (StorageState) {
7
+ StorageState[StorageState["None"] = 0] = "None";
8
+ StorageState[StorageState["Initialized"] = 1] = "Initialized";
9
+ StorageState[StorageState["Closed"] = 2] = "Closed";
10
+ })(StorageState || (StorageState = {}));
11
+ class Storage {
12
+ constructor(database, workspace, appConfig, storageName, logger = (0, ide_core_common_1.getDebugLogger)()) {
13
+ this.database = database;
14
+ this.workspace = workspace;
15
+ this.appConfig = appConfig;
16
+ this.logger = logger;
17
+ this._onDidChangeStorage = new ide_core_common_1.Emitter();
18
+ this.onDidChangeStorage = this._onDidChangeStorage.event;
19
+ this.state = StorageState.None;
20
+ this.cache = new Map();
21
+ this.pendingDeletes = new Set();
22
+ this.pendingInserts = new Map();
23
+ this.toDisposableCollection = new ide_core_common_1.DisposableCollection();
24
+ this.storageName = storageName;
25
+ this.toDisposableCollection.push(this._onDidChangeStorage);
26
+ this.toDisposableCollection.push(this.workspace.onWorkspaceChanged(() => {
27
+ this.setup(storageName);
28
+ }));
29
+ this.flushDelayer = new ide_core_common_1.ThrottledDelayer(Storage.DEFAULT_FLUSH_DELAY);
30
+ this.setup(storageName);
31
+ }
32
+ get whenReady() {
33
+ return this._whenReady;
34
+ }
35
+ get items() {
36
+ return this.cache;
37
+ }
38
+ get size() {
39
+ return this.cache.size;
40
+ }
41
+ async init(storageName) {
42
+ await this.workspace.whenReady;
43
+ const workspace = this.workspace.workspace;
44
+ await this.database.init(this.appConfig.storageDirName, workspace && workspace.uri);
45
+ const cache = await this.database.getItems(storageName);
46
+ this.cache = this.jsonToMap(cache);
47
+ this.state = StorageState.Initialized;
48
+ }
49
+ setup(storageName) {
50
+ this._whenReady = this.init(storageName);
51
+ }
52
+ async reConnectInit() {
53
+ this.setup(this.storageName);
54
+ }
55
+ jsonToMap(json) {
56
+ const itemsMap = new Map();
57
+ for (const key of Object.keys(json)) {
58
+ itemsMap.set(key, json[key]);
59
+ }
60
+ return itemsMap;
61
+ }
62
+ dispose() {
63
+ this.toDisposableCollection.dispose();
64
+ }
65
+ get(key, fallbackValue) {
66
+ let value = this.cache.get(key);
67
+ if ((0, ide_core_common_1.isUndefinedOrNull)(value)) {
68
+ return fallbackValue;
69
+ }
70
+ try {
71
+ value = JSON.parse(value);
72
+ }
73
+ catch (e) {
74
+ this.logger.error('Could not parse value: ', value, e);
75
+ }
76
+ return value;
77
+ }
78
+ getBoolean(key, fallbackValue) {
79
+ const value = this.get(key);
80
+ if ((0, ide_core_common_1.isUndefinedOrNull)(value)) {
81
+ return fallbackValue;
82
+ }
83
+ return value === 'true';
84
+ }
85
+ getNumber(key, fallbackValue) {
86
+ const value = this.get(key);
87
+ if ((0, ide_core_common_1.isUndefinedOrNull)(value)) {
88
+ return fallbackValue;
89
+ }
90
+ return parseInt(value, 10);
91
+ }
92
+ set(key, value) {
93
+ if (this.state === StorageState.Closed) {
94
+ return Promise.resolve();
95
+ }
96
+ // 移除值为undefined或null的值
97
+ if ((0, ide_core_common_1.isUndefinedOrNull)(value)) {
98
+ return this.delete(key);
99
+ }
100
+ // 否则,转化为string并存储
101
+ const valueStr = JSON.stringify(value);
102
+ // 当值不发生改变是,提前结束
103
+ const currentValue = this.cache.get(key);
104
+ if (currentValue === valueStr) {
105
+ return Promise.resolve();
106
+ }
107
+ // 更新缓存同时更新
108
+ this.cache.set(key, valueStr);
109
+ this.pendingInserts.set(key, valueStr);
110
+ this.pendingDeletes.delete(key);
111
+ // Event
112
+ this._onDidChangeStorage.fire(key);
113
+ // 按队列在空闲时期执行后台更新逻辑
114
+ return this.flushDelayer.trigger(() => this.flushPending());
115
+ }
116
+ delete(key) {
117
+ if (this.state === StorageState.Closed) {
118
+ return Promise.resolve();
119
+ }
120
+ // 从缓存中移除并添加到后台队列
121
+ const wasDeleted = this.cache.delete(key);
122
+ if (!wasDeleted) {
123
+ return Promise.resolve();
124
+ }
125
+ if (!this.pendingDeletes.has(key)) {
126
+ this.pendingDeletes.add(key);
127
+ }
128
+ this.pendingInserts.delete(key);
129
+ // 同步事件
130
+ this._onDidChangeStorage.fire(key);
131
+ // 按队列在空闲时期执行后台更新逻辑
132
+ return this.flushDelayer.trigger(() => this.flushPending());
133
+ }
134
+ async close() {
135
+ if (this.state === StorageState.Closed) {
136
+ return Promise.resolve();
137
+ }
138
+ // 更新状态
139
+ this.state = StorageState.Closed;
140
+ // 触发新的数据刷新动作确保数据在本地持久化
141
+ // 即使刷新出错时也如此,必须确保数据库已经关闭以避免本地数据损坏
142
+ //
143
+ // 恢复: 在对应数据系统不健康时,我们将缓存作为恢复选项传递
144
+ try {
145
+ await this.flushDelayer.trigger(() => this.flushPending(), 0);
146
+ }
147
+ catch (error) {
148
+ // Ignore
149
+ }
150
+ await this.database.close(() => this.cache);
151
+ }
152
+ flushPending() {
153
+ if (this.pendingInserts.size === 0 && this.pendingDeletes.size === 0) {
154
+ return Promise.resolve();
155
+ }
156
+ // 获取等待的队列数据
157
+ const updateRequest = { insert: this.mapToJson(this.pendingInserts), delete: Array.from(this.pendingDeletes) };
158
+ // 重置等待队列用于下次存储
159
+ this.pendingDeletes = new Set();
160
+ this.pendingInserts = new Map();
161
+ // 更新数据
162
+ return this.database.updateItems(this.storageName, updateRequest);
163
+ }
164
+ mapToJson(map) {
165
+ const obj = Object.create(null);
166
+ for (const [k, v] of map) {
167
+ obj[k] = v;
168
+ }
169
+ return obj;
170
+ }
171
+ }
172
+ exports.Storage = Storage;
173
+ Storage.DEFAULT_FLUSH_DELAY = 100;
174
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/browser/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { IStorageServer, IUpdateRequest, IStoragePathServer, StorageChange, StringKeyToAnyValue } from '../common';
2
+ import { IFileServiceClient } from '@opensumi/ide-file-service';
3
+ import { Deferred, Emitter, Event, ILogger } from '@opensumi/ide-core-common';
4
+ export declare abstract class StorageServer implements IStorageServer {
5
+ protected readonly fileSystem: IFileServiceClient;
6
+ private storageExistPromises;
7
+ protected readonly dataStoragePathServer: IStoragePathServer;
8
+ protected readonly logger: ILogger;
9
+ deferredStorageDirPath: Deferred<string | undefined>;
10
+ databaseStorageDirPath: string | undefined;
11
+ _cache: any;
12
+ onDidChangeEmitter: Emitter<StorageChange>;
13
+ readonly onDidChange: Event<StorageChange>;
14
+ abstract init(storageDirName?: string, workspaceNamespace?: string): Promise<string | undefined>;
15
+ abstract setupDirectories(storageDirName: string): Promise<string | undefined>;
16
+ abstract getStoragePath(storageName: string): Promise<string | undefined>;
17
+ abstract getItems(storageName: string): Promise<StringKeyToAnyValue>;
18
+ abstract updateItems(storageName: string, request: IUpdateRequest): Promise<void>;
19
+ close(recovery?: () => Map<string, string>): Promise<void>;
20
+ protected asAccess(storagePath: string, force?: boolean): Promise<boolean | undefined>;
21
+ }
22
+ export declare class WorkspaceStorageServer extends StorageServer {
23
+ private workspaceNamespace;
24
+ init(storageDirName?: string, workspaceNamespace?: string): Promise<string | undefined>;
25
+ setupDirectories(storageDirName?: string): Promise<string | undefined>;
26
+ getStoragePath(storageName: string): Promise<string | undefined>;
27
+ getItems(storageName: string): Promise<{}>;
28
+ updateItems(storageName: string, request: IUpdateRequest): Promise<void>;
29
+ }
30
+ export declare class GlobalStorageServer extends StorageServer {
31
+ init(storageDirName: string): Promise<string | undefined>;
32
+ setupDirectories(storageDirName: string): Promise<string | undefined>;
33
+ getStoragePath(storageName: string): Promise<string | undefined>;
34
+ getItems(storageName: string): Promise<{}>;
35
+ updateItems(storageName: string, request: IUpdateRequest): Promise<void>;
36
+ }
37
+ //# sourceMappingURL=storage.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.service.d.ts","sourceRoot":"","sources":["../../src/browser/storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEnH,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAO,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGnF,8BACsB,aAAc,YAAW,cAAc;IAE3D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAElD,OAAO,CAAC,oBAAoB,CAA4C;IAGxE,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;IAG7D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAE5B,sBAAsB,+BAAsC;IAC5D,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3C,MAAM,EAAE,GAAG,CAAM;IAEjB,kBAAkB,yBAAgC;IACzD,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAiC;IAE3E,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAChG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAC9E,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IACzE,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IACpE,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAE3E,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;cAIhC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAU9D;AAED,qBACa,sBAAuB,SAAQ,aAAa;IAEvD,OAAO,CAAC,kBAAkB,CAAqB;IAElC,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM;IAKhE,gBAAgB,CAAC,cAAc,CAAC,EAAE,MAAM;IAOxC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAoBhE,QAAQ,CAAC,WAAW,EAAE,MAAM;IA0B5B,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;CA4D/D;AAED,qBACa,mBAAoB,SAAQ,aAAa;IAEvC,IAAI,CAAC,cAAc,EAAE,MAAM;IAIlC,gBAAgB,CAAC,cAAc,EAAE,MAAM;IAOvC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAqBhE,QAAQ,CAAC,WAAW,EAAE,MAAM;IAsB5B,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;CAyC/D"}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GlobalStorageServer = exports.WorkspaceStorageServer = exports.StorageServer = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("../common");
6
+ const di_1 = require("@opensumi/di");
7
+ const ide_file_service_1 = require("@opensumi/ide-file-service");
8
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
9
+ const path_1 = require("@opensumi/ide-core-common/lib/path");
10
+ let StorageServer = class StorageServer {
11
+ constructor() {
12
+ this.storageExistPromises = new Map();
13
+ this.deferredStorageDirPath = new ide_core_common_1.Deferred();
14
+ this._cache = {};
15
+ this.onDidChangeEmitter = new ide_core_common_1.Emitter();
16
+ this.onDidChange = this.onDidChangeEmitter.event;
17
+ }
18
+ async close(recovery) {
19
+ // do nothing
20
+ }
21
+ async asAccess(storagePath, force) {
22
+ if (force) {
23
+ return await this.fileSystem.access(storagePath);
24
+ }
25
+ if (!this.storageExistPromises.has(storagePath)) {
26
+ const promise = this.fileSystem.access(storagePath);
27
+ this.storageExistPromises.set(storagePath, promise);
28
+ }
29
+ return await this.storageExistPromises.get(storagePath);
30
+ }
31
+ };
32
+ (0, tslib_1.__decorate)([
33
+ (0, di_1.Autowired)(ide_file_service_1.IFileServiceClient),
34
+ (0, tslib_1.__metadata)("design:type", Object)
35
+ ], StorageServer.prototype, "fileSystem", void 0);
36
+ (0, tslib_1.__decorate)([
37
+ (0, di_1.Autowired)(common_1.IStoragePathServer),
38
+ (0, tslib_1.__metadata)("design:type", Object)
39
+ ], StorageServer.prototype, "dataStoragePathServer", void 0);
40
+ (0, tslib_1.__decorate)([
41
+ (0, di_1.Autowired)(ide_core_common_1.ILogger),
42
+ (0, tslib_1.__metadata)("design:type", Object)
43
+ ], StorageServer.prototype, "logger", void 0);
44
+ StorageServer = (0, tslib_1.__decorate)([
45
+ (0, di_1.Injectable)()
46
+ ], StorageServer);
47
+ exports.StorageServer = StorageServer;
48
+ let WorkspaceStorageServer = class WorkspaceStorageServer extends StorageServer {
49
+ async init(storageDirName, workspaceNamespace) {
50
+ this.workspaceNamespace = workspaceNamespace;
51
+ return await this.setupDirectories(storageDirName);
52
+ }
53
+ async setupDirectories(storageDirName) {
54
+ const storagePath = await this.dataStoragePathServer.provideWorkspaceStorageDirPath(storageDirName);
55
+ this.deferredStorageDirPath.resolve(storagePath);
56
+ this.databaseStorageDirPath = storagePath;
57
+ return storagePath;
58
+ }
59
+ async getStoragePath(storageName) {
60
+ if (!this.databaseStorageDirPath) {
61
+ await this.deferredStorageDirPath.promise;
62
+ }
63
+ const hasSlash = storageName.indexOf(path_1.Path.separator) >= 0;
64
+ const storagePath = await this.dataStoragePathServer.getLastWorkspaceStoragePath();
65
+ if (hasSlash) {
66
+ const storagePaths = new path_1.Path(storageName);
67
+ storageName = storagePaths.name;
68
+ const uriString = new ide_core_common_1.URI(storagePath).resolve(storagePaths.dir).toString();
69
+ if (!await this.fileSystem.access(uriString)) {
70
+ await this.fileSystem.createFolder(uriString);
71
+ }
72
+ return storagePath ? new ide_core_common_1.URI(uriString).resolve(`${storageName}.json`).toString() : undefined;
73
+ }
74
+ return storagePath ? new ide_core_common_1.URI(storagePath).resolve(`${storageName}.json`).toString() : undefined;
75
+ }
76
+ async getItems(storageName) {
77
+ let items = {};
78
+ const workspaceNamespace = this.workspaceNamespace;
79
+ const storagePath = await this.getStoragePath(storageName);
80
+ if (!storagePath) {
81
+ this.logger.error(`Storage [${storageName}] is invalid.`);
82
+ }
83
+ else {
84
+ const uriString = new ide_core_common_1.URI(storagePath).toString();
85
+ if (await this.asAccess(uriString, true)) {
86
+ const data = await this.fileSystem.readFile(uriString);
87
+ try {
88
+ items = JSON.parse(data.content.toString());
89
+ }
90
+ catch (error) {
91
+ this.logger.error(`Storage [${storageName}] content can not be parse. Error: ${error.stack}`);
92
+ items = {};
93
+ }
94
+ }
95
+ }
96
+ this._cache[storageName] = items;
97
+ if (!!workspaceNamespace) {
98
+ items = items[workspaceNamespace] || {};
99
+ }
100
+ return items;
101
+ }
102
+ async updateItems(storageName, request) {
103
+ let raw = {};
104
+ const workspaceNamespace = this.workspaceNamespace;
105
+ if (this._cache[storageName]) {
106
+ raw = this._cache[storageName];
107
+ }
108
+ else {
109
+ raw = await this.getItems(storageName);
110
+ if (!!workspaceNamespace) {
111
+ raw = raw[workspaceNamespace];
112
+ }
113
+ }
114
+ // INSERT
115
+ if (request.insert) {
116
+ if (workspaceNamespace) {
117
+ raw[workspaceNamespace] = Object.assign(Object.assign({}, raw[workspaceNamespace]), request.insert);
118
+ }
119
+ else {
120
+ raw = Object.assign(Object.assign({}, raw), request.insert);
121
+ }
122
+ }
123
+ // DELETE
124
+ if (request.delete && request.delete.length > 0) {
125
+ const deleteSet = new Set(request.delete);
126
+ deleteSet.forEach((key) => {
127
+ if (!!workspaceNamespace) {
128
+ if (raw[workspaceNamespace][key]) {
129
+ delete raw[workspaceNamespace][key];
130
+ }
131
+ }
132
+ else {
133
+ if (raw[key]) {
134
+ delete raw[key];
135
+ }
136
+ }
137
+ });
138
+ }
139
+ this._cache[storageName] = raw;
140
+ const storagePath = await this.getStoragePath(storageName);
141
+ if (storagePath) {
142
+ const uriString = new ide_core_common_1.URI(storagePath).toString();
143
+ let storageFile = await this.fileSystem.getFileStat(uriString);
144
+ if (!storageFile) {
145
+ storageFile = await this.fileSystem.createFile(uriString);
146
+ }
147
+ await this.fileSystem.setContent(storageFile, JSON.stringify(raw));
148
+ const change = {
149
+ path: storageFile.uri,
150
+ data: JSON.stringify(raw),
151
+ };
152
+ this.onDidChangeEmitter.fire(change);
153
+ }
154
+ }
155
+ };
156
+ WorkspaceStorageServer = (0, tslib_1.__decorate)([
157
+ (0, di_1.Injectable)()
158
+ ], WorkspaceStorageServer);
159
+ exports.WorkspaceStorageServer = WorkspaceStorageServer;
160
+ let GlobalStorageServer = class GlobalStorageServer extends StorageServer {
161
+ async init(storageDirName) {
162
+ return await this.setupDirectories(storageDirName);
163
+ }
164
+ async setupDirectories(storageDirName) {
165
+ const storagePath = await this.dataStoragePathServer.provideGlobalStorageDirPath(storageDirName);
166
+ this.deferredStorageDirPath.resolve(storagePath);
167
+ this.databaseStorageDirPath = storagePath;
168
+ return storagePath;
169
+ }
170
+ async getStoragePath(storageName) {
171
+ if (!this.databaseStorageDirPath) {
172
+ await this.deferredStorageDirPath.promise;
173
+ }
174
+ const hasSlash = storageName.indexOf(path_1.Path.separator) >= 0;
175
+ const storagePath = await this.dataStoragePathServer.getLastGlobalStoragePath();
176
+ if (hasSlash) {
177
+ const storagePaths = new path_1.Path(storageName);
178
+ storageName = storagePaths.name;
179
+ const uriString = new ide_core_common_1.URI(storagePath).resolve(storagePaths.dir).toString();
180
+ if (!await this.asAccess(uriString)) {
181
+ await this.fileSystem.createFolder(uriString);
182
+ }
183
+ return storagePath ? new ide_core_common_1.URI(uriString).resolve(`${storageName}.json`).toString() : undefined;
184
+ }
185
+ return storagePath ? new ide_core_common_1.URI(storagePath).resolve(`${storageName}.json`).toString() : undefined;
186
+ }
187
+ async getItems(storageName) {
188
+ let items = {};
189
+ const storagePath = await this.getStoragePath(storageName);
190
+ if (!storagePath) {
191
+ this.logger.error(`Storage [${storageName}] is invalid.`);
192
+ }
193
+ else {
194
+ const uriString = new ide_core_common_1.URI(storagePath).toString();
195
+ if (await this.asAccess(uriString, true)) {
196
+ const data = await this.fileSystem.readFile(uriString);
197
+ try {
198
+ items = JSON.parse(data.content.toString());
199
+ }
200
+ catch (error) {
201
+ this.logger.error(`Storage [${storageName}] content can not be parse. Error: ${error.stack}`);
202
+ items = {};
203
+ }
204
+ }
205
+ }
206
+ this._cache[storageName] = items;
207
+ return items;
208
+ }
209
+ async updateItems(storageName, request) {
210
+ let raw = {};
211
+ if (this._cache[storageName]) {
212
+ raw = this._cache[storageName];
213
+ }
214
+ else {
215
+ raw = await this.getItems(storageName);
216
+ }
217
+ // INSERT
218
+ if (request.insert) {
219
+ raw = Object.assign(Object.assign({}, raw), request.insert);
220
+ }
221
+ // DELETE
222
+ if (request.delete && request.delete.length > 0) {
223
+ const deleteSet = new Set(request.delete);
224
+ deleteSet.forEach((key) => {
225
+ if (raw[key]) {
226
+ delete raw[key];
227
+ }
228
+ });
229
+ }
230
+ this._cache[storageName] = raw;
231
+ const storagePath = await this.getStoragePath(storageName);
232
+ if (storagePath) {
233
+ let storageFile = await this.fileSystem.getFileStat(storagePath);
234
+ if (!storageFile) {
235
+ storageFile = await this.fileSystem.createFile(storagePath, { content: '' });
236
+ }
237
+ await this.fileSystem.setContent(storageFile, JSON.stringify(raw));
238
+ const change = {
239
+ path: storageFile.uri,
240
+ data: JSON.stringify(raw),
241
+ };
242
+ this.onDidChangeEmitter.fire(change);
243
+ }
244
+ }
245
+ };
246
+ GlobalStorageServer = (0, tslib_1.__decorate)([
247
+ (0, di_1.Injectable)()
248
+ ], GlobalStorageServer);
249
+ exports.GlobalStorageServer = GlobalStorageServer;
250
+ //# sourceMappingURL=storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../src/browser/storage.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './storage';
2
+ export * from './storage-path';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./storage"), exports);
5
+ (0, tslib_1.__exportStar)(require("./storage-path"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":";;;AAAA,yDAA0B;AAC1B,8DAA+B"}
@@ -0,0 +1,8 @@
1
+ export declare const IStoragePathServer: unique symbol;
2
+ export interface IStoragePathServer {
3
+ getLastWorkspaceStoragePath(): Promise<string | undefined>;
4
+ getLastGlobalStoragePath(): Promise<string | undefined>;
5
+ provideWorkspaceStorageDirPath(storageDirName?: string): Promise<string | undefined>;
6
+ provideGlobalStorageDirPath(storageDirName?: string): Promise<string | undefined>;
7
+ }
8
+ //# sourceMappingURL=storage-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-path.d.ts","sourceRoot":"","sources":["../../src/common/storage-path.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,kBAAkB,eAA+B,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IAEjC,2BAA2B,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3D,wBAAwB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAExD,8BAA8B,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAErF,2BAA2B,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACnF"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IStoragePathServer = void 0;
4
+ // 用于为各个插件创建插件配置的存储目录
5
+ exports.IStoragePathServer = Symbol('IStoragePathServer');
6
+ //# sourceMappingURL=storage-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-path.js","sourceRoot":"","sources":["../../src/common/storage-path.ts"],"names":[],"mappings":";;;AAAA,qBAAqB;AACR,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { Event } from '@opensumi/ide-core-common';
2
+ export interface IUpdateRequest {
3
+ insert?: StringKeyToAnyValue;
4
+ delete?: string[];
5
+ }
6
+ export interface IStorageItemsChangeEvent {
7
+ items: Map<string, string>;
8
+ }
9
+ export declare const IWorkspaceStorageServer = "IWorkspaceStorageServer";
10
+ export declare const IGlobalStorageServer = "IGlobalStorageServer";
11
+ export interface StringKeyToAnyValue {
12
+ [key: string]: any;
13
+ }
14
+ export interface IStorageServer {
15
+ init(storageDirName?: string, workspace?: string): Promise<string | undefined>;
16
+ getItems(storageName: string): Promise<StringKeyToAnyValue>;
17
+ updateItems(storageName: string, request: IUpdateRequest): Promise<void>;
18
+ close(recovery?: () => Map<string, string>): Promise<void>;
19
+ onDidChange: Event<StorageChange>;
20
+ }
21
+ export interface StorageChange {
22
+ path: string;
23
+ data: string;
24
+ }
25
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/common/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE/E,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5D,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzE,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IGlobalStorageServer = exports.IWorkspaceStorageServer = void 0;
4
+ exports.IWorkspaceStorageServer = 'IWorkspaceStorageServer';
5
+ exports.IGlobalStorageServer = 'IGlobalStorageServer';
6
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/common/storage.ts"],"names":[],"mappings":";;;AAWa,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,oBAAoB,GAAG,sBAAsB,CAAC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './common';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ (0, tslib_1.__exportStar)(require("./common"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wDAAyB"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@opensumi/ide-storage",
3
+ "version": "2.12.1-next-079c1930",
4
+ "files": [
5
+ "lib"
6
+ ],
7
+ "license": "MIT",
8
+ "main": "lib/index.js",
9
+ "typings": "lib/index.d.ts",
10
+ "scripts": {
11
+ "prepublishOnly": "npm run build",
12
+ "build": "tsc --build ../../configs/ts/references/tsconfig.storage.json"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git@github.com:opensumi/core.git"
17
+ },
18
+ "dependencies": {
19
+ "@opensumi/ide-core-common": "2.12.1-next-079c1930",
20
+ "@opensumi/ide-core-node": "2.12.1-next-079c1930",
21
+ "@opensumi/ide-file-service": "2.12.1-next-079c1930",
22
+ "@opensumi/ide-workspace": "2.12.1-next-079c1930"
23
+ },
24
+ "devDependencies": {
25
+ "@opensumi/ide-core-browser": "2.12.1-next-079c1930",
26
+ "@opensumi/ide-dev-tool": "^1.3.1"
27
+ }
28
+ }