@opensumi/ide-file-service 3.7.1-next-1736771329.0 → 3.7.1-next-1736846464.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/file-service-client.js +4 -4
- package/lib/browser/file-service-client.js.map +1 -1
- package/lib/browser/file-service-provider-client.d.ts +2 -2
- package/lib/browser/file-service-provider-client.d.ts.map +1 -1
- package/lib/browser/file-service-provider-client.js +2 -2
- package/lib/browser/file-service-provider-client.js.map +1 -1
- package/lib/common/files.d.ts +2 -2
- package/lib/common/files.d.ts.map +1 -1
- package/lib/common/watcher.d.ts +3 -2
- package/lib/common/watcher.d.ts.map +1 -1
- package/lib/common/watcher.js.map +1 -1
- package/lib/node/disk-file-system.provider.d.ts +3 -2
- package/lib/node/disk-file-system.provider.d.ts.map +1 -1
- package/lib/node/disk-file-system.provider.js +3 -2
- package/lib/node/disk-file-system.provider.js.map +1 -1
- package/lib/node/hosted/recursive/file-service-watcher.d.ts +13 -13
- package/lib/node/hosted/recursive/file-service-watcher.d.ts.map +1 -1
- package/lib/node/hosted/recursive/file-service-watcher.js +146 -95
- package/lib/node/hosted/recursive/file-service-watcher.js.map +1 -1
- package/lib/node/hosted/un-recursive/file-service-watcher.d.ts +5 -11
- package/lib/node/hosted/un-recursive/file-service-watcher.d.ts.map +1 -1
- package/lib/node/hosted/un-recursive/file-service-watcher.js +28 -40
- package/lib/node/hosted/un-recursive/file-service-watcher.js.map +1 -1
- package/lib/node/hosted/watcher.host.service.d.ts +7 -2
- package/lib/node/hosted/watcher.host.service.d.ts.map +1 -1
- package/lib/node/hosted/watcher.host.service.js +55 -28
- package/lib/node/hosted/watcher.host.service.js.map +1 -1
- package/lib/node/hosted/watcher.process.js +1 -1
- package/lib/node/hosted/watcher.process.js.map +1 -1
- package/lib/node/watcher-process-manager.d.ts +3 -2
- package/lib/node/watcher-process-manager.d.ts.map +1 -1
- package/lib/node/watcher-process-manager.js +4 -3
- package/lib/node/watcher-process-manager.js.map +1 -1
- package/package.json +9 -9
- package/src/browser/file-service-client.ts +4 -4
- package/src/browser/file-service-provider-client.ts +3 -2
- package/src/common/files.ts +2 -2
- package/src/common/watcher.ts +10 -3
- package/src/node/disk-file-system.provider.ts +8 -3
- package/src/node/hosted/recursive/file-service-watcher.ts +179 -106
- package/src/node/hosted/un-recursive/file-service-watcher.ts +36 -55
- package/src/node/hosted/watcher.host.service.ts +95 -33
- package/src/node/hosted/watcher.process.ts +1 -1
- package/src/node/watcher-process-manager.ts +13 -5
|
@@ -12,7 +12,7 @@ const { join, basename, normalize } = lib_1.path;
|
|
|
12
12
|
class UnRecursiveFileSystemWatcher {
|
|
13
13
|
constructor(logger) {
|
|
14
14
|
this.logger = logger;
|
|
15
|
-
this.
|
|
15
|
+
this.watcherCollections = new Map();
|
|
16
16
|
// 收集发生改变的文件
|
|
17
17
|
this.changes = new file_change_collection_1.FileChangeCollection();
|
|
18
18
|
this.toDispose = new lib_1.DisposableCollection(lib_1.Disposable.create(() => this.setClient(undefined)));
|
|
@@ -24,31 +24,22 @@ class UnRecursiveFileSystemWatcher {
|
|
|
24
24
|
}
|
|
25
25
|
dispose() {
|
|
26
26
|
this.toDispose.dispose();
|
|
27
|
-
this.WATCHER_HANDLERS.clear();
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* 查找某个路径是否已被监听
|
|
31
|
-
* @param watcherPath
|
|
32
|
-
*/
|
|
33
|
-
checkIsAlreadyWatched(watcherPath) {
|
|
34
|
-
for (const [watcherId, watcher] of this.WATCHER_HANDLERS) {
|
|
35
|
-
if (watcherPath.indexOf(watcher.path) === 0) {
|
|
36
|
-
return watcherId;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
27
|
}
|
|
40
28
|
async doWatch(basePath) {
|
|
41
29
|
try {
|
|
42
30
|
const watcher = (0, fs_extra_1.watch)(basePath);
|
|
43
|
-
this.
|
|
44
|
-
|
|
31
|
+
this.watcherCollections.set(basePath, watcher);
|
|
32
|
+
this.logger.log('[Un-Recursive] start watching', basePath);
|
|
33
|
+
const isDirectory = (await fs_extra_1.default.lstat(basePath)).isDirectory();
|
|
45
34
|
const docChildren = new Set();
|
|
46
35
|
let signalDoc = '';
|
|
47
36
|
if (isDirectory) {
|
|
48
37
|
try {
|
|
49
|
-
|
|
38
|
+
const children = await fs_extra_1.default.readdir(basePath);
|
|
39
|
+
for (const child of children) {
|
|
50
40
|
const base = join(basePath, String(child));
|
|
51
|
-
|
|
41
|
+
const childStat = await fs_extra_1.default.lstat(base);
|
|
42
|
+
if (!childStat.isDirectory()) {
|
|
52
43
|
docChildren.add(child);
|
|
53
44
|
}
|
|
54
45
|
}
|
|
@@ -62,10 +53,10 @@ class UnRecursiveFileSystemWatcher {
|
|
|
62
53
|
}
|
|
63
54
|
// 开始走监听流程
|
|
64
55
|
watcher.on('error', (code, signal) => {
|
|
65
|
-
this.logger.error(`Failed to watch ${basePath} for changes using fs.watch() (${code}, ${signal})`);
|
|
56
|
+
this.logger.error(`[Un-Recursive] Failed to watch ${basePath} for changes using fs.watch() (${code}, ${signal})`);
|
|
66
57
|
watcher.close();
|
|
67
58
|
});
|
|
68
|
-
watcher.on('change', (type, filename) => {
|
|
59
|
+
watcher.on('change', async (type, filename) => {
|
|
69
60
|
if ((0, shared_1.shouldIgnorePath)(filename)) {
|
|
70
61
|
return;
|
|
71
62
|
}
|
|
@@ -81,13 +72,13 @@ class UnRecursiveFileSystemWatcher {
|
|
|
81
72
|
return;
|
|
82
73
|
}
|
|
83
74
|
const changePath = join(basePath, changeFileName);
|
|
75
|
+
const pathExist = await fs_extra_1.default.pathExists(changePath);
|
|
84
76
|
if (isDirectory) {
|
|
85
77
|
setTimeout(async () => {
|
|
86
78
|
// 监听的目录如果是文件夹,那么只对其下面的文件改动做出响应
|
|
87
79
|
if (docChildren.has(changeFileName)) {
|
|
88
80
|
if ((type === 'rename' || type === 'change') && changeFileName === filename) {
|
|
89
|
-
|
|
90
|
-
if (fileExists) {
|
|
81
|
+
if (pathExist) {
|
|
91
82
|
this.pushUpdated(changePath);
|
|
92
83
|
}
|
|
93
84
|
else {
|
|
@@ -96,8 +87,9 @@ class UnRecursiveFileSystemWatcher {
|
|
|
96
87
|
}
|
|
97
88
|
}
|
|
98
89
|
}
|
|
99
|
-
else if (
|
|
100
|
-
|
|
90
|
+
else if (pathExist) {
|
|
91
|
+
const fileStat = await fs_extra_1.default.lstat(changePath);
|
|
92
|
+
if (!fileStat.isDirectory()) {
|
|
101
93
|
this.pushAdded(changePath);
|
|
102
94
|
docChildren.add(changeFileName);
|
|
103
95
|
}
|
|
@@ -107,7 +99,7 @@ class UnRecursiveFileSystemWatcher {
|
|
|
107
99
|
else {
|
|
108
100
|
setTimeout(async () => {
|
|
109
101
|
if (changeFileName === signalDoc) {
|
|
110
|
-
if (
|
|
102
|
+
if (pathExist) {
|
|
111
103
|
this.pushUpdated(basePath);
|
|
112
104
|
}
|
|
113
105
|
else {
|
|
@@ -120,31 +112,25 @@ class UnRecursiveFileSystemWatcher {
|
|
|
120
112
|
});
|
|
121
113
|
}
|
|
122
114
|
catch (error) {
|
|
123
|
-
this.logger.error(`Failed to watch ${basePath} for change using fs.watch() (${error.toString()})`);
|
|
115
|
+
this.logger.error(`[Un-Recursive] Failed to watch ${basePath} for change using fs.watch() (${error.toString()})`);
|
|
124
116
|
}
|
|
125
117
|
}
|
|
126
118
|
async watchFileChanges(uri) {
|
|
127
119
|
const basePath = lib_1.FileUri.fsPath(uri);
|
|
128
120
|
const exist = await fs_extra_1.default.pathExists(basePath);
|
|
129
|
-
let watcherId = this.checkIsAlreadyWatched(basePath);
|
|
130
|
-
if (watcherId) {
|
|
131
|
-
return watcherId;
|
|
132
|
-
}
|
|
133
|
-
watcherId = UnRecursiveFileSystemWatcher.WATCHER_SEQUENCE++;
|
|
134
121
|
const disposables = new lib_1.DisposableCollection(); // 管理可释放的资源
|
|
135
122
|
let watchPath = '';
|
|
136
123
|
if (exist) {
|
|
137
|
-
const stat = await fs_extra_1.default.
|
|
124
|
+
const stat = await fs_extra_1.default.lstat(basePath);
|
|
138
125
|
if (stat) {
|
|
139
126
|
watchPath = basePath;
|
|
140
127
|
}
|
|
141
128
|
}
|
|
142
129
|
else {
|
|
143
|
-
this.logger.warn('This path does not exist. Please try again');
|
|
130
|
+
this.logger.warn('[Un-Recursive] This path does not exist. Please try again');
|
|
144
131
|
}
|
|
145
132
|
disposables.push(await this.start(watchPath));
|
|
146
133
|
this.toDispose.push(disposables);
|
|
147
|
-
return watcherId;
|
|
148
134
|
}
|
|
149
135
|
async start(basePath) {
|
|
150
136
|
const disposables = new lib_1.DisposableCollection();
|
|
@@ -152,6 +138,9 @@ class UnRecursiveFileSystemWatcher {
|
|
|
152
138
|
return disposables;
|
|
153
139
|
}
|
|
154
140
|
const realPath = await fs_extra_1.default.realpath(basePath);
|
|
141
|
+
if (this.watcherCollections.has(realPath)) {
|
|
142
|
+
return disposables;
|
|
143
|
+
}
|
|
155
144
|
const tryWatchDir = async (retryDelay = 1000) => {
|
|
156
145
|
try {
|
|
157
146
|
this.doWatch(realPath);
|
|
@@ -166,13 +155,13 @@ class UnRecursiveFileSystemWatcher {
|
|
|
166
155
|
await tryWatchDir();
|
|
167
156
|
return disposables;
|
|
168
157
|
}
|
|
169
|
-
unwatchFileChanges(
|
|
170
|
-
const
|
|
171
|
-
if (
|
|
172
|
-
this.
|
|
173
|
-
watcher.
|
|
158
|
+
async unwatchFileChanges(uri) {
|
|
159
|
+
const basePath = lib_1.FileUri.fsPath(uri);
|
|
160
|
+
if (this.watcherCollections.has(basePath)) {
|
|
161
|
+
const watcher = this.watcherCollections.get(basePath);
|
|
162
|
+
watcher === null || watcher === void 0 ? void 0 : watcher.close();
|
|
163
|
+
this.watcherCollections.delete(basePath);
|
|
174
164
|
}
|
|
175
|
-
return Promise.resolve();
|
|
176
165
|
}
|
|
177
166
|
pushAdded(path) {
|
|
178
167
|
this.pushFileChange(path, index_1.FileChangeType.ADDED);
|
|
@@ -204,6 +193,5 @@ class UnRecursiveFileSystemWatcher {
|
|
|
204
193
|
}
|
|
205
194
|
}
|
|
206
195
|
exports.UnRecursiveFileSystemWatcher = UnRecursiveFileSystemWatcher;
|
|
207
|
-
UnRecursiveFileSystemWatcher.WATCHER_SEQUENCE = 1;
|
|
208
196
|
UnRecursiveFileSystemWatcher.FILE_DELETE_HANDLER_DELAY = 500;
|
|
209
197
|
//# sourceMappingURL=file-service-watcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-service-watcher.js","sourceRoot":"","sources":["../../../../src/node/hosted/un-recursive/file-service-watcher.ts"],"names":[],"mappings":";;;;AAAA,6DAAqC;AACrC,uEAAuC;AAGvC,
|
|
1
|
+
{"version":3,"file":"file-service-watcher.js","sourceRoot":"","sources":["../../../../src/node/hosted/un-recursive/file-service-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SumiConnectionMultiplexer } from '@opensumi/ide-connection';
|
|
2
|
+
import { RecursiveWatcherBackend } from '@opensumi/ide-core-common';
|
|
2
3
|
import { UriComponents } from '@opensumi/ide-utils/lib/uri';
|
|
3
4
|
import { IWatcherHostService } from '../../common/watcher';
|
|
4
5
|
import { IWatcher } from '../disk-file-system.provider';
|
|
@@ -6,6 +7,9 @@ import { WatcherProcessLogger } from './watch-process-log';
|
|
|
6
7
|
export declare class WatcherHostServiceImpl implements IWatcherHostService {
|
|
7
8
|
private rpcProtocol;
|
|
8
9
|
private logger;
|
|
10
|
+
private backend;
|
|
11
|
+
private static WATCHER_SEQUENCE;
|
|
12
|
+
private WATCHER_HANDLERS;
|
|
9
13
|
/**
|
|
10
14
|
* recursive file system watcher
|
|
11
15
|
*/
|
|
@@ -17,13 +21,14 @@ export declare class WatcherHostServiceImpl implements IWatcherHostService {
|
|
|
17
21
|
protected readonly watcherCollection: Map<string, IWatcher>;
|
|
18
22
|
private defaultExcludes;
|
|
19
23
|
private watchedDirs;
|
|
20
|
-
constructor(rpcProtocol: SumiConnectionMultiplexer, logger: WatcherProcessLogger);
|
|
24
|
+
constructor(rpcProtocol: SumiConnectionMultiplexer, logger: WatcherProcessLogger, backend: RecursiveWatcherBackend);
|
|
21
25
|
initWatcherServer(excludes?: string[], force?: boolean): void;
|
|
22
|
-
|
|
26
|
+
checkIsAlreadyWatched(watcherPath: string): number | undefined;
|
|
23
27
|
private doWatch;
|
|
24
28
|
$watch(uri: UriComponents, options?: {
|
|
25
29
|
excludes?: string[];
|
|
26
30
|
recursive?: boolean;
|
|
31
|
+
pollingWatch?: boolean;
|
|
27
32
|
}): Promise<number>;
|
|
28
33
|
$unwatch(watcherId: number): Promise<void>;
|
|
29
34
|
$setWatcherFileExcludes(excludes: string[]): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.host.service.d.ts","sourceRoot":"","sources":["../../../src/node/hosted/watcher.host.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"watcher.host.service.d.ts","sourceRoot":"","sources":["../../../src/node/hosted/watcher.host.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAML,uBAAuB,EACxB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAY,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAmD,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAIxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAS3D,qBAAa,sBAAuB,YAAW,mBAAmB;IA6B9D,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IA9BjB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAK;IAEpC,OAAO,CAAC,gBAAgB,CAOpB;IAEJ;;OAEG;IACH,OAAO,CAAC,0BAA0B,CAAC,CAA6B;IAEhE;;OAEG;IACH,OAAO,CAAC,4BAA4B,CAAC,CAA+B;IAEpE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,wBAA+B;IAEnE,OAAO,CAAC,eAAe,CAAgB;IAEvC,OAAO,CAAC,WAAW,CAA0B;gBAGnC,WAAW,EAAE,yBAAyB,EACtC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,uBAAuB;IAQ1C,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,UAAQ;IAmCpD,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;YAQhD,OAAO;IA8Df,MAAM,CACV,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7E,OAAO,CAAC,MAAM,CAAC;IAKZ,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1C,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAMhC"}
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WatcherHostServiceImpl = void 0;
|
|
4
|
+
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
4
5
|
const file_watch_1 = require("@opensumi/ide-core-common/lib/preferences/file-watch");
|
|
5
6
|
const uri_1 = require("@opensumi/ide-utils/lib/uri");
|
|
6
7
|
const watcher_1 = require("../../common/watcher");
|
|
7
8
|
const file_service_watcher_1 = require("./recursive/file-service-watcher");
|
|
8
9
|
const file_service_watcher_2 = require("./un-recursive/file-service-watcher");
|
|
10
|
+
const watcherPlaceHolder = {
|
|
11
|
+
disposable: {
|
|
12
|
+
dispose: () => { },
|
|
13
|
+
},
|
|
14
|
+
handlers: [],
|
|
15
|
+
};
|
|
9
16
|
class WatcherHostServiceImpl {
|
|
10
|
-
constructor(rpcProtocol, logger) {
|
|
17
|
+
constructor(rpcProtocol, logger, backend) {
|
|
11
18
|
this.rpcProtocol = rpcProtocol;
|
|
12
19
|
this.logger = logger;
|
|
20
|
+
this.backend = backend;
|
|
21
|
+
this.WATCHER_HANDLERS = new Map();
|
|
13
22
|
this.watcherCollection = new Map();
|
|
14
23
|
this.defaultExcludes = [];
|
|
15
24
|
this.watchedDirs = new Set();
|
|
@@ -30,16 +39,16 @@ class WatcherHostServiceImpl {
|
|
|
30
39
|
(_b = this.unrecursiveFileSystemWatcher) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
31
40
|
// rewatch
|
|
32
41
|
for (const [_uri, { options, disposable }] of this.watcherCollection) {
|
|
33
|
-
this.doWatch(uri_1.Uri.parse(_uri), options);
|
|
34
42
|
this.logger.log('rewatch file changes: ', _uri, ' recursive: ', options === null || options === void 0 ? void 0 : options.recursive);
|
|
35
43
|
disposable.dispose();
|
|
44
|
+
this.doWatch(uri_1.Uri.parse(_uri), options);
|
|
36
45
|
}
|
|
37
46
|
}
|
|
38
|
-
this.recursiveFileSystemWatcher = new file_service_watcher_1.
|
|
47
|
+
this.recursiveFileSystemWatcher = new file_service_watcher_1.RecursiveFileSystemWatcher(excludes, this.logger, this.backend);
|
|
39
48
|
this.unrecursiveFileSystemWatcher = new file_service_watcher_2.UnRecursiveFileSystemWatcher(this.logger);
|
|
40
49
|
const watcherClient = {
|
|
41
50
|
onDidFilesChanged: (events) => {
|
|
42
|
-
this.logger.log('
|
|
51
|
+
this.logger.log('onDidFilesChanged: ', events);
|
|
43
52
|
const proxy = this.rpcProtocol.getProxy(watcher_1.WatcherProcessManagerProxy);
|
|
44
53
|
proxy.$onDidFilesChanged(events);
|
|
45
54
|
},
|
|
@@ -47,38 +56,55 @@ class WatcherHostServiceImpl {
|
|
|
47
56
|
this.recursiveFileSystemWatcher.setClient(watcherClient);
|
|
48
57
|
this.unrecursiveFileSystemWatcher.setClient(watcherClient);
|
|
49
58
|
}
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
watcherServer = this.recursiveFileSystemWatcher;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
watcherServer = this.unrecursiveFileSystemWatcher;
|
|
59
|
+
checkIsAlreadyWatched(watcherPath) {
|
|
60
|
+
for (const [watcherId, watcher] of this.WATCHER_HANDLERS) {
|
|
61
|
+
if (watcherPath === watcher.path) {
|
|
62
|
+
return watcherId;
|
|
63
|
+
}
|
|
59
64
|
}
|
|
60
|
-
return watcherServer;
|
|
61
65
|
}
|
|
62
66
|
async doWatch(uri, options) {
|
|
63
67
|
var _a;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
this.initWatcherServer();
|
|
69
|
+
const basePath = ide_core_common_1.FileUri.fsPath(uri.toString());
|
|
70
|
+
let watcherId = this.checkIsAlreadyWatched(basePath);
|
|
71
|
+
if (watcherId) {
|
|
72
|
+
this.logger.log(uri.toString(), 'is already watched');
|
|
73
|
+
return watcherId;
|
|
67
74
|
}
|
|
75
|
+
watcherId = WatcherHostServiceImpl.WATCHER_SEQUENCE++;
|
|
76
|
+
this.WATCHER_HANDLERS.set(watcherId, {
|
|
77
|
+
...watcherPlaceHolder,
|
|
78
|
+
path: basePath,
|
|
79
|
+
});
|
|
68
80
|
this.logger.log('watch file changes: ', uri.toString(), ' recursive: ', options === null || options === void 0 ? void 0 : options.recursive);
|
|
69
81
|
const mergedExcludes = new Set([...((_a = options === null || options === void 0 ? void 0 : options.excludes) !== null && _a !== void 0 ? _a : []), ...this.defaultExcludes]);
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
const disposables = new ide_core_common_1.DisposableCollection();
|
|
83
|
+
await this.unrecursiveFileSystemWatcher.watchFileChanges(uri.toString());
|
|
84
|
+
disposables.push(ide_core_common_1.Disposable.create(() => {
|
|
85
|
+
this.unrecursiveFileSystemWatcher.unwatchFileChanges(uri.toString());
|
|
86
|
+
this.watchedDirs.delete(uri.toString());
|
|
87
|
+
}));
|
|
88
|
+
if (options === null || options === void 0 ? void 0 : options.recursive) {
|
|
89
|
+
this.logger.log('use recursive watcher for: ', uri.toString());
|
|
90
|
+
try {
|
|
91
|
+
await this.recursiveFileSystemWatcher.watchFileChanges(uri.toString(), {
|
|
92
|
+
excludes: Array.from(mergedExcludes),
|
|
93
|
+
pollingWatch: options === null || options === void 0 ? void 0 : options.pollingWatch,
|
|
94
|
+
});
|
|
95
|
+
disposables.push(ide_core_common_1.Disposable.create(() => {
|
|
96
|
+
this.recursiveFileSystemWatcher.unwatchFileChanges(uri.toString());
|
|
97
|
+
this.watchedDirs.delete(uri.toString());
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
// watch error or timeout
|
|
102
|
+
this.logger.error('watch error: ', error);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
this.watcherCollection.set(uri.toString(), { id: watcherId, options, disposable: disposables });
|
|
73
106
|
this.watchedDirs.add(uri.toString());
|
|
74
|
-
|
|
75
|
-
dispose: () => {
|
|
76
|
-
watcherServer.unwatchFileChanges(id);
|
|
77
|
-
this.watchedDirs.delete(uri.toString());
|
|
78
|
-
},
|
|
79
|
-
};
|
|
80
|
-
this.watcherCollection.set(uri.toString(), { id, options, disposable });
|
|
81
|
-
return id;
|
|
107
|
+
return watcherId;
|
|
82
108
|
}
|
|
83
109
|
async $watch(uri, options) {
|
|
84
110
|
const _uri = uri_1.URI.revive(uri);
|
|
@@ -107,4 +133,5 @@ class WatcherHostServiceImpl {
|
|
|
107
133
|
}
|
|
108
134
|
}
|
|
109
135
|
exports.WatcherHostServiceImpl = WatcherHostServiceImpl;
|
|
136
|
+
WatcherHostServiceImpl.WATCHER_SEQUENCE = 1;
|
|
110
137
|
//# sourceMappingURL=watcher.host.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.host.service.js","sourceRoot":"","sources":["../../../src/node/hosted/watcher.host.service.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"watcher.host.service.js","sourceRoot":"","sources":["../../../src/node/hosted/watcher.host.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ async function initWatcherProcess() {
|
|
|
29
29
|
timeout: -1,
|
|
30
30
|
});
|
|
31
31
|
const logger = new watch_process_log_1.WatcherProcessLogger(watcherInjector, initData.logDir, initData.logLevel);
|
|
32
|
-
const watcherHostService = new watcher_host_service_1.WatcherHostServiceImpl(watcherProtocol, logger);
|
|
32
|
+
const watcherHostService = new watcher_host_service_1.WatcherHostServiceImpl(watcherProtocol, logger, initData.backend);
|
|
33
33
|
watcherHostService.initWatcherServer();
|
|
34
34
|
}
|
|
35
35
|
(async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.process.js","sourceRoot":"","sources":["../../../src/node/hosted/watcher.process.ts"],"names":[],"mappings":";;AAAA,6BAAuC;AAEvC,qCAAwC;AACxC,6DAAqE;AACrE,oFAA6F;AAC7F,gEAA8D;AAC9D,oEAAoF;AACpF,+DAA+G;AAC/G,mDAAsE;AAEtE,kDAA4F;AAE5F,2DAA2D;AAC3D,iEAAgE;AAEhE,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,MAAM,GAAQ,OAAO,CAAC;AAE5B,KAAK,UAAU,kBAAkB;IAC/B,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,MAAM,eAAe,GAAG,IAAI,aAAQ,EAAE,CAAC;IACvC,MAAM,eAAe,GAAG,IAAI,mBAAO,EAA0B,CAAC;IAE9D,eAAe,CAAC,YAAY,CAAC;QAC3B,KAAK,EAAE,iBAAS;QAChB,QAAQ,EAAE,IAAI,6BAAqB,CAAC,eAAe,CAAC;KACrD,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAI,CAAC,+BAAqB,CAAC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAI,CAAC,uCAA6B,CAAC,CAAC,CAAC;IAEnE,MAAM,MAAM,GAAG,IAAA,sBAAgB,EAAC,UAAU,CAAC,CAAC;IAE5C,MAAM,eAAe,GAAG,IAAI,0CAAyB,CAAC,IAAI,6BAAmB,CAAC,MAAM,CAAC,EAAE;QACrF,OAAO,EAAE,CAAC,CAAC;KACZ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,wCAAoB,CAAC,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7F,MAAM,kBAAkB,GAAG,IAAI,6CAAsB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"watcher.process.js","sourceRoot":"","sources":["../../../src/node/hosted/watcher.process.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DidFilesChangedParams, FileSystemWatcherClient } from '@opensumi/ide-core-common/lib/types/file-watch';
|
|
1
|
+
import { DidFilesChangedParams, FileSystemWatcherClient, RecursiveWatcherBackend } from '@opensumi/ide-core-common/lib/types/file-watch';
|
|
2
2
|
import { UriComponents } from '@opensumi/ide-core-node';
|
|
3
3
|
import { IWatcherProcessManager } from '../common/watcher';
|
|
4
4
|
export declare const WatcherProcessManagerToken: unique symbol;
|
|
@@ -21,11 +21,12 @@ export declare class WatcherProcessManagerImpl implements IWatcherProcessManager
|
|
|
21
21
|
private createWatcherServer;
|
|
22
22
|
get watcherHost(): string;
|
|
23
23
|
private createWatcherProcess;
|
|
24
|
-
createProcess(clientId: string): Promise<number | undefined>;
|
|
24
|
+
createProcess(clientId: string, backend?: RecursiveWatcherBackend): Promise<number | undefined>;
|
|
25
25
|
dispose(): Promise<void>;
|
|
26
26
|
watch(uri: UriComponents, options?: {
|
|
27
27
|
excludes?: string[];
|
|
28
28
|
recursive?: boolean;
|
|
29
|
+
pollingWatch: boolean;
|
|
29
30
|
}): Promise<number>;
|
|
30
31
|
unWatch(watcheId: any): Promise<void>;
|
|
31
32
|
setWatcherFileExcludes(excludes: string[]): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher-process-manager.d.ts","sourceRoot":"","sources":["../../src/node/watcher-process-manager.ts"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"watcher-process-manager.d.ts","sourceRoot":"","sources":["../../src/node/watcher-process-manager.ts"],"names":[],"mappings":"AASA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAoC,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG1F,OAAO,EAEL,sBAAsB,EAKvB,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,0BAA0B,eAAkC,CAAC;AAE1E,qBACa,yBAA0B,YAAW,sBAAsB;IACtE,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,cAAc,CAAC,CAAe;IAEtC,OAAO,CAAC,MAAM,CAAc;IAE5B,OAAO,CAAC,kBAAkB,CAAkC;IAG5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAGnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,OAAO,CAAC,aAAa,CAA0B;;IAM/C,SAAS,CAAC,MAAM,EAAE,uBAAuB;IAMzC,kBAAkB,CAAC,OAAO,EAAE,qBAAqB;IAIjD,IAAI,SAAS,kBAEZ;IAED,OAAO,CAAC,6BAA6B,CAAkC;IAEvE,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,QAAQ;YAIF,iBAAiB;YAIjB,mBAAmB;IAkBjC,IAAI,WAAW,WAOd;YAEa,oBAAoB;IA2B5B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB;IAYjE,OAAO;IAUP,KAAK,CACT,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,GAC5E,OAAO,CAAC,MAAM,CAAC;IAOZ,OAAO,CAAC,QAAQ,KAAA;IAKhB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE;CAIhD"}
|
|
@@ -68,7 +68,7 @@ let WatcherProcessManagerImpl = class WatcherProcessManagerImpl {
|
|
|
68
68
|
? path_1.default.join(__dirname, '../../lib/node/hosted/watcher.process.js')
|
|
69
69
|
: path_1.default.join(__dirname, 'hosted', 'watcher.process.' + ide_utils_1.process.extFileType)));
|
|
70
70
|
}
|
|
71
|
-
async createWatcherProcess(clientId, ipcHandlerPath) {
|
|
71
|
+
async createWatcherProcess(clientId, ipcHandlerPath, backend) {
|
|
72
72
|
const forkArgs = [
|
|
73
73
|
`--${watcher_1.SUMI_WATCHER_PROCESS_SOCK_KEY}=${JSON.stringify({
|
|
74
74
|
path: ipcHandlerPath,
|
|
@@ -76,6 +76,7 @@ let WatcherProcessManagerImpl = class WatcherProcessManagerImpl {
|
|
|
76
76
|
`--${watcher_1.WATCHER_INIT_DATA_KEY}=${JSON.stringify({
|
|
77
77
|
logDir: this.appConfig.logDir,
|
|
78
78
|
logLevel: this.appConfig.logLevel,
|
|
79
|
+
backend,
|
|
79
80
|
clientId,
|
|
80
81
|
})}`,
|
|
81
82
|
];
|
|
@@ -89,12 +90,12 @@ let WatcherProcessManagerImpl = class WatcherProcessManagerImpl {
|
|
|
89
90
|
});
|
|
90
91
|
return this.watcherProcess.pid;
|
|
91
92
|
}
|
|
92
|
-
async createProcess(clientId) {
|
|
93
|
+
async createProcess(clientId, backend) {
|
|
93
94
|
this.logger.log('create watcher process for client: ', clientId);
|
|
94
95
|
this.logger.log('appconfig watcherHost: ', this.watcherHost);
|
|
95
96
|
const ipcHandlerPath = await this.getIPCHandlerPath('watcher_process');
|
|
96
97
|
await this.createWatcherServer(clientId, ipcHandlerPath);
|
|
97
|
-
const pid = await this.createWatcherProcess(clientId, ipcHandlerPath);
|
|
98
|
+
const pid = await this.createWatcherProcess(clientId, ipcHandlerPath, backend);
|
|
98
99
|
return pid;
|
|
99
100
|
}
|
|
100
101
|
async dispose() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher-process-manager.js","sourceRoot":"","sources":["../../src/node/watcher-process-manager.ts"],"names":[],"mappings":";;;;AAAA,iDAAmD;AACnD,6BAAmD;AACnD,wDAAwB;AAExB,qCAAqD;AAErD,0FAAoG;AACpG,qFAAgG;AAChG,2DAA4F;
|
|
1
|
+
{"version":3,"file":"watcher-process-manager.js","sourceRoot":"","sources":["../../src/node/watcher-process-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-file-service",
|
|
3
|
-
"version": "3.7.1-next-
|
|
3
|
+
"version": "3.7.1-next-1736846464.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"url": "git@github.com:opensumi/core.git"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@opensumi/ide-connection": "3.7.1-next-
|
|
22
|
-
"@opensumi/ide-core-common": "3.7.1-next-
|
|
23
|
-
"@opensumi/ide-core-node": "3.7.1-next-
|
|
24
|
-
"@opensumi/ide-logs": "3.7.1-next-
|
|
25
|
-
"@opensumi/ide-utils": "3.7.1-next-
|
|
21
|
+
"@opensumi/ide-connection": "3.7.1-next-1736846464.0",
|
|
22
|
+
"@opensumi/ide-core-common": "3.7.1-next-1736846464.0",
|
|
23
|
+
"@opensumi/ide-core-node": "3.7.1-next-1736846464.0",
|
|
24
|
+
"@opensumi/ide-logs": "3.7.1-next-1736846464.0",
|
|
25
|
+
"@opensumi/ide-utils": "3.7.1-next-1736846464.0",
|
|
26
26
|
"@parcel/watcher": "2.1.0",
|
|
27
27
|
"file-type": "16.5.4",
|
|
28
28
|
"nsfw": "2.2.0",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"write-file-atomic": "^5.0.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@opensumi/ide-core-browser": "3.7.1-next-
|
|
35
|
-
"@opensumi/ide-dev-tool": "3.7.1-next-
|
|
34
|
+
"@opensumi/ide-core-browser": "3.7.1-next-1736846464.0",
|
|
35
|
+
"@opensumi/ide-dev-tool": "3.7.1-next-1736846464.0"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "4b9a76cf2a118fc2b2bf49bf5b042a8d0f4cc0b6"
|
|
38
38
|
}
|
|
@@ -143,7 +143,7 @@ export class FileServiceClient implements IFileServiceClient, IDisposable {
|
|
|
143
143
|
async initialize() {
|
|
144
144
|
const provider = await this.getProvider(Schemes.file);
|
|
145
145
|
if (provider.initialize) {
|
|
146
|
-
await provider.initialize(this.clientId);
|
|
146
|
+
await provider.initialize(this.clientId, this.appConfig.recursiveWatcherBackend);
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
|
|
@@ -354,8 +354,8 @@ export class FileServiceClient implements IFileServiceClient, IDisposable {
|
|
|
354
354
|
|
|
355
355
|
// 添加监听文件
|
|
356
356
|
async watchFileChanges(uri: URI, excludes?: string[]): Promise<IFileServiceWatcher> {
|
|
357
|
-
const
|
|
358
|
-
const
|
|
357
|
+
const pollingWatcherDirectories = this.appConfig.pollingWatcherDirectories || [];
|
|
358
|
+
const pollingWatch = pollingWatcherDirectories.some((dir) => uri.path.toString().startsWith(dir));
|
|
359
359
|
|
|
360
360
|
const _uri = this.convertUri(uri.toString());
|
|
361
361
|
const originWatcher = this.uriWatcherMap.get(_uri.toString());
|
|
@@ -374,7 +374,7 @@ export class FileServiceClient implements IFileServiceClient, IDisposable {
|
|
|
374
374
|
|
|
375
375
|
const watcherId = await provider.watch(_uri.codeUri, {
|
|
376
376
|
excludes,
|
|
377
|
-
|
|
377
|
+
pollingWatch,
|
|
378
378
|
});
|
|
379
379
|
|
|
380
380
|
this.watcherDisposerMap.set(id, {
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
Emitter,
|
|
4
4
|
Event,
|
|
5
5
|
FileSystemProviderCapabilities,
|
|
6
|
+
RecursiveWatcherBackend,
|
|
6
7
|
Uri,
|
|
7
8
|
debounce,
|
|
8
9
|
getDebugLogger,
|
|
@@ -106,10 +107,10 @@ export class DiskFsProviderClient extends CoreFileServiceProviderClient implemen
|
|
|
106
107
|
return this._capabilities;
|
|
107
108
|
}
|
|
108
109
|
|
|
109
|
-
async initialize(clientId: string) {
|
|
110
|
+
async initialize(clientId: string, backend?: RecursiveWatcherBackend) {
|
|
110
111
|
if (this.fileServiceProvider?.initialize) {
|
|
111
112
|
try {
|
|
112
|
-
await this.fileServiceProvider?.initialize(clientId);
|
|
113
|
+
await this.fileServiceProvider?.initialize(clientId, backend);
|
|
113
114
|
} catch (err) {
|
|
114
115
|
getDebugLogger('fileService.fsProvider').error('initialize error', err);
|
|
115
116
|
}
|
package/src/common/files.ts
CHANGED
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
isFunction,
|
|
30
30
|
isUndefinedOrNull,
|
|
31
31
|
} from '@opensumi/ide-core-common';
|
|
32
|
-
import { FileStat, FileSystemProvider } from '@opensumi/ide-core-common/lib/types/file';
|
|
32
|
+
import { FileStat, FileSystemProvider, RecursiveWatcherBackend } from '@opensumi/ide-core-common/lib/types/file';
|
|
33
33
|
|
|
34
34
|
import type { Range } from 'vscode-languageserver-types';
|
|
35
35
|
export {
|
|
@@ -420,7 +420,7 @@ export function containsExtraFileMethod<X extends {}, Y extends keyof ExtendedFi
|
|
|
420
420
|
}
|
|
421
421
|
|
|
422
422
|
export interface IDiskFileProvider extends FileSystemProvider {
|
|
423
|
-
initialize?: (clientid: string) => Promise<void>;
|
|
423
|
+
initialize?: (clientid: string, backend?: RecursiveWatcherBackend) => Promise<void>;
|
|
424
424
|
copy: FileCopyFn;
|
|
425
425
|
access: FileAccessFn;
|
|
426
426
|
getCurrentUserHome: FileGetCurrentUserHomeFn;
|