@theia/filesystem 1.53.2 → 1.55.0-next.14
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-resource.d.ts +2 -0
- package/lib/browser/file-resource.d.ts.map +1 -1
- package/lib/browser/file-resource.js +11 -0
- package/lib/browser/file-resource.js.map +1 -1
- package/lib/browser/file-resource.spec.d.ts +2 -0
- package/lib/browser/file-resource.spec.d.ts.map +1 -0
- package/lib/browser/file-resource.spec.js +191 -0
- package/lib/browser/file-resource.spec.js.map +1 -0
- package/lib/browser/file-tree/file-tree-model.d.ts +1 -5
- package/lib/browser/file-tree/file-tree-model.d.ts.map +1 -1
- package/lib/browser/file-tree/file-tree-model.js +0 -17
- package/lib/browser/file-tree/file-tree-model.js.map +1 -1
- package/lib/browser/filesystem-preferences.d.ts.map +1 -1
- package/lib/browser/filesystem-preferences.js +1 -2
- package/lib/browser/filesystem-preferences.js.map +1 -1
- package/lib/node/filesystem-backend-module.d.ts +8 -8
- package/lib/node/filesystem-backend-module.d.ts.map +1 -1
- package/lib/node/filesystem-backend-module.js +27 -27
- package/lib/node/filesystem-backend-module.js.map +1 -1
- package/lib/node/filesystem-watcher-client.d.ts +1 -2
- package/lib/node/filesystem-watcher-client.d.ts.map +1 -1
- package/lib/node/filesystem-watcher-client.js +2 -3
- package/lib/node/filesystem-watcher-client.js.map +1 -1
- package/lib/node/parcel-watcher/index.d.ts.map +1 -0
- package/lib/node/{nsfw-watcher → parcel-watcher}/index.js +3 -3
- package/lib/node/parcel-watcher/index.js.map +1 -0
- package/lib/node/{nsfw-watcher/nsfw-filesystem-service.d.ts → parcel-watcher/parcel-filesystem-service.d.ts} +29 -29
- package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts.map +1 -0
- package/lib/node/{nsfw-watcher/nsfw-filesystem-service.js → parcel-watcher/parcel-filesystem-service.js} +55 -66
- package/lib/node/parcel-watcher/parcel-filesystem-service.js.map +1 -0
- package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.d.ts +2 -0
- package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.d.ts.map +1 -0
- package/lib/node/{nsfw-watcher/nsfw-filesystem-watcher.spec.js → parcel-watcher/parcel-filesystem-watcher.spec.js} +22 -29
- package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.js.map +1 -0
- package/lib/node/parcel-watcher/parcel-options.d.ts +7 -0
- package/lib/node/parcel-watcher/parcel-options.d.ts.map +1 -0
- package/lib/node/{nsfw-watcher/nsfw-options.js → parcel-watcher/parcel-options.js} +4 -4
- package/lib/node/parcel-watcher/parcel-options.js.map +1 -0
- package/package.json +4 -4
- package/src/browser/file-resource.spec.ts +255 -0
- package/src/browser/file-resource.ts +12 -0
- package/src/browser/file-tree/file-tree-model.ts +1 -19
- package/src/browser/filesystem-preferences.ts +1 -2
- package/src/node/filesystem-backend-module.ts +27 -27
- package/src/node/filesystem-watcher-client.ts +1 -3
- package/src/node/{nsfw-watcher → parcel-watcher}/index.ts +3 -3
- package/src/node/{nsfw-watcher/nsfw-filesystem-service.ts → parcel-watcher/parcel-filesystem-service.ts} +62 -72
- package/src/node/{nsfw-watcher/nsfw-filesystem-watcher.spec.ts → parcel-watcher/parcel-filesystem-watcher.spec.ts} +22 -29
- package/src/node/{nsfw-watcher/nsfw-options.ts → parcel-watcher/parcel-options.ts} +4 -4
- package/lib/node/nsfw-watcher/index.d.ts.map +0 -1
- package/lib/node/nsfw-watcher/index.js.map +0 -1
- package/lib/node/nsfw-watcher/nsfw-filesystem-service.d.ts.map +0 -1
- package/lib/node/nsfw-watcher/nsfw-filesystem-service.js.map +0 -1
- package/lib/node/nsfw-watcher/nsfw-filesystem-watcher.spec.d.ts +0 -2
- package/lib/node/nsfw-watcher/nsfw-filesystem-watcher.spec.d.ts.map +0 -1
- package/lib/node/nsfw-watcher/nsfw-filesystem-watcher.spec.js.map +0 -1
- package/lib/node/nsfw-watcher/nsfw-options.d.ts +0 -7
- package/lib/node/nsfw-watcher/nsfw-options.d.ts.map +0 -1
- package/lib/node/nsfw-watcher/nsfw-options.js.map +0 -1
- package/src/typings/nsfw/index.d.ts +0 -18
- /package/lib/node/{nsfw-watcher → parcel-watcher}/index.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parcel-filesystem-service.js","sourceRoot":"","sources":["../../../src/node/parcel-watcher/parcel-filesystem-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parcel-filesystem-watcher.spec.d.ts","sourceRoot":"","sources":["../../../src/node/parcel-watcher/parcel-filesystem-watcher.spec.ts"],"names":[],"mappings":""}
|
|
@@ -21,10 +21,10 @@ const cp = require("child_process");
|
|
|
21
21
|
const fs = require("@theia/core/shared/fs-extra");
|
|
22
22
|
const assert = require("assert");
|
|
23
23
|
const node_1 = require("@theia/core/lib/node");
|
|
24
|
-
const
|
|
24
|
+
const parcel_filesystem_service_1 = require("./parcel-filesystem-service");
|
|
25
25
|
const expect = chai.expect;
|
|
26
26
|
const track = temp.track();
|
|
27
|
-
describe('
|
|
27
|
+
describe('parcel-filesystem-watcher', function () {
|
|
28
28
|
let root;
|
|
29
29
|
let watcherService;
|
|
30
30
|
let watcherId;
|
|
@@ -32,7 +32,7 @@ describe('nsfw-filesystem-watcher', function () {
|
|
|
32
32
|
beforeEach(async () => {
|
|
33
33
|
let tempPath = temp.mkdirSync('node-fs-root');
|
|
34
34
|
// Sometimes tempPath will use some Windows 8.3 short name in its path. This is a problem
|
|
35
|
-
// since
|
|
35
|
+
// since parcel always returns paths with long names. We need to convert here.
|
|
36
36
|
// See: https://stackoverflow.com/a/34473971/7983255
|
|
37
37
|
if (process.platform === 'win32') {
|
|
38
38
|
tempPath = cp.execSync(`powershell "(Get-Item -LiteralPath '${tempPath}').FullName"`, {
|
|
@@ -40,9 +40,9 @@ describe('nsfw-filesystem-watcher', function () {
|
|
|
40
40
|
}).trim();
|
|
41
41
|
}
|
|
42
42
|
root = node_1.FileUri.create(fs.realpathSync(tempPath));
|
|
43
|
-
watcherService =
|
|
43
|
+
watcherService = createParcelFileSystemWatcherService();
|
|
44
44
|
watcherId = await watcherService.watchFileChanges(0, root.toString());
|
|
45
|
-
await sleep(
|
|
45
|
+
await sleep(200);
|
|
46
46
|
});
|
|
47
47
|
afterEach(async () => {
|
|
48
48
|
track.cleanupSync();
|
|
@@ -65,13 +65,13 @@ describe('nsfw-filesystem-watcher', function () {
|
|
|
65
65
|
];
|
|
66
66
|
fs.mkdirSync(node_1.FileUri.fsPath(root.resolve('foo')));
|
|
67
67
|
expect(fs.statSync(node_1.FileUri.fsPath(root.resolve('foo'))).isDirectory()).to.be.true;
|
|
68
|
-
await sleep(
|
|
68
|
+
await sleep(200);
|
|
69
69
|
fs.mkdirSync(node_1.FileUri.fsPath(root.resolve('foo').resolve('bar')));
|
|
70
70
|
expect(fs.statSync(node_1.FileUri.fsPath(root.resolve('foo').resolve('bar'))).isDirectory()).to.be.true;
|
|
71
|
-
await sleep(
|
|
71
|
+
await sleep(200);
|
|
72
72
|
fs.writeFileSync(node_1.FileUri.fsPath(root.resolve('foo').resolve('bar').resolve('baz.txt')), 'baz');
|
|
73
73
|
expect(fs.readFileSync(node_1.FileUri.fsPath(root.resolve('foo').resolve('bar').resolve('baz.txt')), 'utf8')).to.be.equal('baz');
|
|
74
|
-
await sleep(
|
|
74
|
+
await sleep(200);
|
|
75
75
|
assert.deepStrictEqual([...actualUris], expectedUris);
|
|
76
76
|
});
|
|
77
77
|
it('Should not receive file changes events from in the workspace by default if unwatched', async function () {
|
|
@@ -88,16 +88,16 @@ describe('nsfw-filesystem-watcher', function () {
|
|
|
88
88
|
await watcherService.unwatchFileChanges(watcherId);
|
|
89
89
|
fs.mkdirSync(node_1.FileUri.fsPath(root.resolve('foo')));
|
|
90
90
|
expect(fs.statSync(node_1.FileUri.fsPath(root.resolve('foo'))).isDirectory()).to.be.true;
|
|
91
|
-
await sleep(
|
|
91
|
+
await sleep(200);
|
|
92
92
|
fs.mkdirSync(node_1.FileUri.fsPath(root.resolve('foo').resolve('bar')));
|
|
93
93
|
expect(fs.statSync(node_1.FileUri.fsPath(root.resolve('foo').resolve('bar'))).isDirectory()).to.be.true;
|
|
94
|
-
await sleep(
|
|
94
|
+
await sleep(200);
|
|
95
95
|
fs.writeFileSync(node_1.FileUri.fsPath(root.resolve('foo').resolve('bar').resolve('baz.txt')), 'baz');
|
|
96
96
|
expect(fs.readFileSync(node_1.FileUri.fsPath(root.resolve('foo').resolve('bar').resolve('baz.txt')), 'utf8')).to.be.equal('baz');
|
|
97
|
-
await sleep(
|
|
97
|
+
await sleep(200);
|
|
98
98
|
assert.deepStrictEqual(actualUris.size, 0);
|
|
99
99
|
});
|
|
100
|
-
it('Renaming should emit a DELETED
|
|
100
|
+
it('Renaming should emit a DELETED and ADDED event', async function () {
|
|
101
101
|
const file_txt = root.resolve('file.txt');
|
|
102
102
|
const FILE_txt = root.resolve('FILE.txt');
|
|
103
103
|
const changes = [];
|
|
@@ -106,38 +106,31 @@ describe('nsfw-filesystem-watcher', function () {
|
|
|
106
106
|
onError: console.error
|
|
107
107
|
});
|
|
108
108
|
await fs.promises.writeFile(node_1.FileUri.fsPath(file_txt), 'random content\n');
|
|
109
|
-
await sleep(
|
|
109
|
+
await sleep(200);
|
|
110
110
|
await fs.promises.rename(node_1.FileUri.fsPath(file_txt), node_1.FileUri.fsPath(FILE_txt));
|
|
111
|
-
await sleep(
|
|
111
|
+
await sleep(200);
|
|
112
|
+
// The order of DELETED and ADDED is not deterministic
|
|
112
113
|
try {
|
|
113
114
|
expect(changes).deep.eq([
|
|
114
115
|
// initial file creation change event:
|
|
115
116
|
{ type: 1 /* FileChangeType.ADDED */, uri: file_txt.toString() },
|
|
116
117
|
// rename change events:
|
|
117
118
|
{ type: 2 /* FileChangeType.DELETED */, uri: file_txt.toString() },
|
|
118
|
-
{ type: 1 /* FileChangeType.ADDED */, uri: FILE_txt.toString() }
|
|
119
|
+
{ type: 1 /* FileChangeType.ADDED */, uri: FILE_txt.toString() },
|
|
119
120
|
]);
|
|
120
121
|
}
|
|
121
|
-
catch
|
|
122
|
-
// TODO: remove this try/catch once the bug on macOS is fixed.
|
|
123
|
-
// See https://github.com/Axosoft/nsfw/issues/146
|
|
124
|
-
if (process.platform !== 'darwin') {
|
|
125
|
-
throw error;
|
|
126
|
-
}
|
|
127
|
-
// On macOS we only get ADDED events for some reason
|
|
122
|
+
catch {
|
|
128
123
|
expect(changes).deep.eq([
|
|
129
124
|
// initial file creation change event:
|
|
130
125
|
{ type: 1 /* FileChangeType.ADDED */, uri: file_txt.toString() },
|
|
131
126
|
// rename change events:
|
|
132
|
-
{ type: 1 /* FileChangeType.ADDED */, uri:
|
|
133
|
-
{ type:
|
|
127
|
+
{ type: 1 /* FileChangeType.ADDED */, uri: FILE_txt.toString() },
|
|
128
|
+
{ type: 2 /* FileChangeType.DELETED */, uri: file_txt.toString() },
|
|
134
129
|
]);
|
|
135
|
-
// Mark the test case as skipped so it stands out that the bogus branch got tested
|
|
136
|
-
this.skip();
|
|
137
130
|
}
|
|
138
131
|
});
|
|
139
|
-
function
|
|
140
|
-
return new
|
|
132
|
+
function createParcelFileSystemWatcherService() {
|
|
133
|
+
return new parcel_filesystem_service_1.ParcelFileSystemWatcherService({
|
|
141
134
|
verbose: true
|
|
142
135
|
});
|
|
143
136
|
}
|
|
@@ -149,4 +142,4 @@ describe('nsfw-filesystem-watcher', function () {
|
|
|
149
142
|
process.on('unhandledRejection', (reason) => {
|
|
150
143
|
console.error('Unhandled promise rejection: ' + reason);
|
|
151
144
|
});
|
|
152
|
-
//# sourceMappingURL=
|
|
145
|
+
//# sourceMappingURL=parcel-filesystem-watcher.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parcel-filesystem-watcher.spec.js","sourceRoot":"","sources":["../../../src/node/parcel-watcher/parcel-filesystem-watcher.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,6BAA6B;AAC7B,6BAA6B;AAC7B,oCAAoC;AACpC,kDAAkD;AAClD,iCAAiC;AAEjC,+CAA+C;AAC/C,2EAA6E;AAG7E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAE3B,QAAQ,CAAC,2BAA2B,EAAE;IAElC,IAAI,IAAS,CAAC;IACd,IAAI,cAA8C,CAAC;IACnD,IAAI,SAAiB,CAAC;IAEtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAErB,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC9C,yFAAyF;QACzF,8EAA8E;QAC9E,oDAAoD;QACpD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC/B,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,uCAAuC,QAAQ,cAAc,EAAE;gBAClF,QAAQ,EAAE,MAAM;aACnB,CAAC,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QACD,IAAI,GAAG,cAAO,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,cAAc,GAAG,oCAAoC,EAAE,CAAC;QACxD,SAAS,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACjB,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,cAAc,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK;QAC5E,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QAErC,MAAM,aAAa,GAAG;YAClB,iBAAiB,CAAC,KAA4B;gBAC1C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,OAAO;YACP,CAAC;SACJ,CAAC;QACF,cAAc,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAExC,MAAM,YAAY,GAAG;YACjB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;YACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;SACpE,CAAC;QAEF,EAAE,CAAC,SAAS,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClF,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjB,EAAE,CAAC,SAAS,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACjG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjB,EAAE,CAAC,aAAa,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/F,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1H,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjB,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,KAAK;QAC5F,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QAErC,MAAM,aAAa,GAAG;YAClB,iBAAiB,CAAC,KAA4B;gBAC1C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,OAAO;YACP,CAAC;SACJ,CAAC;QACF,cAAc,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAExC,kBAAkB;QAClB,MAAM,cAAc,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAEnD,EAAE,CAAC,SAAS,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClF,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjB,EAAE,CAAC,SAAS,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACjG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjB,EAAE,CAAC,aAAa,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/F,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,cAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1H,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjB,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,cAAc,CAAC,SAAS,CAAC;YACrB,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,CAAC,KAAK;SACzB,CAAC,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CACvB,cAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EACxB,kBAAkB,CACrB,CAAC;QACF,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CACpB,cAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EACxB,cAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC3B,CAAC;QACF,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACjB,sDAAsD;QACtD,IAAI,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,sCAAsC;gBACtC,EAAE,IAAI,8BAAsB,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBACxD,wBAAwB;gBACxB,EAAE,IAAI,gCAAwB,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAC1D,EAAE,IAAI,8BAAsB,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE;aAC3D,CAAC,CAAC;QACP,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,sCAAsC;gBACtC,EAAE,IAAI,8BAAsB,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBACxD,wBAAwB;gBACxB,EAAE,IAAI,8BAAsB,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBACxD,EAAE,IAAI,gCAAwB,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE;aAC7D,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,oCAAoC;QACzC,OAAO,IAAI,0DAA8B,CAAC;YACtC,OAAO,EAAE,IAAI;SAChB,CAAC,CAAC;IACP,CAAC;IAED,SAAS,KAAK,CAAC,IAAY;QACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;AAEL,CAAC,CAAC,CAAC;AAEH,8DAA8D;AAC9D,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAW,EAAE,EAAE;IAC7C,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,MAAM,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Options } from '@theia/core/shared/@parcel/watcher';
|
|
2
|
+
/**
|
|
3
|
+
* Inversify service identifier allowing extensions to override options passed to parcel by the file watcher.
|
|
4
|
+
*/
|
|
5
|
+
export declare const ParcelWatcherOptions: unique symbol;
|
|
6
|
+
export type ParcelWatcherOptions = Options;
|
|
7
|
+
//# sourceMappingURL=parcel-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parcel-options.d.ts","sourceRoot":"","sources":["../../../src/node/parcel-watcher/parcel-options.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AACnE,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC"}
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.
|
|
18
|
+
exports.ParcelWatcherOptions = void 0;
|
|
19
19
|
/**
|
|
20
|
-
* Inversify service identifier allowing extensions to override options passed to
|
|
20
|
+
* Inversify service identifier allowing extensions to override options passed to parcel by the file watcher.
|
|
21
21
|
*/
|
|
22
|
-
exports.
|
|
23
|
-
//# sourceMappingURL=
|
|
22
|
+
exports.ParcelWatcherOptions = Symbol('ParcelWatcherOptions');
|
|
23
|
+
//# sourceMappingURL=parcel-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parcel-options.js","sourceRoot":"","sources":["../../../src/node/parcel-watcher/parcel-options.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,8CAA8C;AAC9C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAIhF;;GAEG;AACU,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/filesystem",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.55.0-next.14+d999fe031",
|
|
4
4
|
"description": "Theia - FileSystem Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.
|
|
6
|
+
"@theia/core": "1.55.0-next.14+d999fe031",
|
|
7
7
|
"@types/body-parser": "^1.17.0",
|
|
8
8
|
"@types/multer": "^1.4.7",
|
|
9
9
|
"@types/rimraf": "^2.0.2",
|
|
@@ -73,10 +73,10 @@
|
|
|
73
73
|
"watch": "theiaext watch"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
|
-
"@theia/ext-scripts": "1.
|
|
76
|
+
"@theia/ext-scripts": "1.54.0"
|
|
77
77
|
},
|
|
78
78
|
"nyc": {
|
|
79
79
|
"extends": "../../configs/nyc.json"
|
|
80
80
|
},
|
|
81
|
-
"gitHead": "
|
|
81
|
+
"gitHead": "d999fe0315a29bc5b154067621dbc1eb180fa567"
|
|
82
82
|
}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2024 Toro Cloud Pty Ltd and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
|
|
18
|
+
let disableJSDOM = enableJSDOM();
|
|
19
|
+
|
|
20
|
+
import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
|
|
21
|
+
FrontendApplicationConfigProvider.set({});
|
|
22
|
+
|
|
23
|
+
import { Disposable, Emitter, URI } from '@theia/core';
|
|
24
|
+
import { Deferred } from '@theia/core/lib/common/promise-util';
|
|
25
|
+
import { expect } from 'chai';
|
|
26
|
+
import * as sinon from 'sinon';
|
|
27
|
+
import { FileChangesEvent, FileChangeType, FileStatWithMetadata } from '../common/files';
|
|
28
|
+
import { FileResource } from './file-resource';
|
|
29
|
+
import { FileService } from './file-service';
|
|
30
|
+
|
|
31
|
+
disableJSDOM();
|
|
32
|
+
|
|
33
|
+
describe.only('file-resource', () => {
|
|
34
|
+
const sandbox = sinon.createSandbox();
|
|
35
|
+
const mockEmitter = new Emitter();
|
|
36
|
+
const mockOnChangeEmitter = new Emitter<FileChangesEvent>();
|
|
37
|
+
const mockFileService = new FileService();
|
|
38
|
+
|
|
39
|
+
before(() => {
|
|
40
|
+
disableJSDOM = enableJSDOM();
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
beforeEach(() => {
|
|
44
|
+
sandbox.restore();
|
|
45
|
+
|
|
46
|
+
sandbox.stub(mockFileService, 'onDidFilesChange').get(() =>
|
|
47
|
+
mockOnChangeEmitter.event
|
|
48
|
+
);
|
|
49
|
+
sandbox.stub(mockFileService, 'onDidRunOperation').returns(Disposable.NULL);
|
|
50
|
+
sandbox.stub(mockFileService, 'watch').get(() =>
|
|
51
|
+
mockEmitter.event
|
|
52
|
+
);
|
|
53
|
+
sandbox.stub(mockFileService, 'onDidChangeFileSystemProviderCapabilities').get(() =>
|
|
54
|
+
mockEmitter.event
|
|
55
|
+
);
|
|
56
|
+
sandbox.stub(mockFileService, 'onDidChangeFileSystemProviderReadOnlyMessage').get(() =>
|
|
57
|
+
mockEmitter.event
|
|
58
|
+
);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
after(() => {
|
|
62
|
+
disableJSDOM();
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('should save contents and not trigger change event', async () => {
|
|
66
|
+
const resource = new FileResource(new URI('file://test/file.txt'),
|
|
67
|
+
mockFileService, { readOnly: false, shouldOpenAsText: () => Promise.resolve(true), shouldOverwrite: () => Promise.resolve(true) });
|
|
68
|
+
|
|
69
|
+
const onChangeSpy = sandbox.spy();
|
|
70
|
+
resource.onDidChangeContents(onChangeSpy);
|
|
71
|
+
|
|
72
|
+
const deferred = new Deferred<FileStatWithMetadata & { encoding: string }>();
|
|
73
|
+
|
|
74
|
+
sandbox.stub(mockFileService, 'write')
|
|
75
|
+
.callsFake(() =>
|
|
76
|
+
deferred.promise
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
sandbox.stub(mockFileService, 'resolve')
|
|
80
|
+
.resolves({
|
|
81
|
+
mtime: 1,
|
|
82
|
+
ctime: 0,
|
|
83
|
+
size: 0,
|
|
84
|
+
etag: '',
|
|
85
|
+
isFile: true,
|
|
86
|
+
isDirectory: false,
|
|
87
|
+
isSymbolicLink: false,
|
|
88
|
+
isReadonly: false,
|
|
89
|
+
name: 'file.txt',
|
|
90
|
+
resource: new URI('file://test/file.txt')
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
resource.saveContents!('test');
|
|
94
|
+
|
|
95
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
96
|
+
|
|
97
|
+
mockOnChangeEmitter.fire(new FileChangesEvent(
|
|
98
|
+
[{
|
|
99
|
+
resource: new URI('file://test/file.txt'),
|
|
100
|
+
type: FileChangeType.UPDATED
|
|
101
|
+
}]
|
|
102
|
+
));
|
|
103
|
+
|
|
104
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
105
|
+
|
|
106
|
+
expect(onChangeSpy.called).to.be.false;
|
|
107
|
+
|
|
108
|
+
deferred.resolve({
|
|
109
|
+
mtime: 0,
|
|
110
|
+
ctime: 0,
|
|
111
|
+
size: 0,
|
|
112
|
+
etag: '',
|
|
113
|
+
encoding: 'utf-8',
|
|
114
|
+
isFile: true,
|
|
115
|
+
isDirectory: false,
|
|
116
|
+
isSymbolicLink: false,
|
|
117
|
+
isReadonly: false,
|
|
118
|
+
name: 'file.txt',
|
|
119
|
+
resource: new URI('file://test/file.txt')
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
123
|
+
|
|
124
|
+
expect(resource.version).to.deep.equal({ etag: '', mtime: 0, encoding: 'utf-8' });
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
it('should save content changes and not trigger change event', async () => {
|
|
128
|
+
sandbox.stub(mockFileService, 'hasCapability').returns(true);
|
|
129
|
+
|
|
130
|
+
const resource = new FileResource(new URI('file://test/file.txt'),
|
|
131
|
+
mockFileService, { readOnly: false, shouldOpenAsText: () => Promise.resolve(true), shouldOverwrite: () => Promise.resolve(true) });
|
|
132
|
+
|
|
133
|
+
const onChangeSpy = sandbox.spy();
|
|
134
|
+
resource.onDidChangeContents(onChangeSpy);
|
|
135
|
+
|
|
136
|
+
sandbox.stub(mockFileService, 'read')
|
|
137
|
+
.resolves({
|
|
138
|
+
mtime: 1,
|
|
139
|
+
ctime: 0,
|
|
140
|
+
size: 0,
|
|
141
|
+
etag: '',
|
|
142
|
+
name: 'file.txt',
|
|
143
|
+
resource: new URI('file://test/file.txt'),
|
|
144
|
+
value: 'test',
|
|
145
|
+
encoding: 'utf-8'
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
await resource.readContents!();
|
|
149
|
+
|
|
150
|
+
const deferred = new Deferred<FileStatWithMetadata & { encoding: string }>();
|
|
151
|
+
|
|
152
|
+
sandbox.stub(mockFileService, 'update')
|
|
153
|
+
.callsFake(() =>
|
|
154
|
+
deferred.promise
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
sandbox.stub(mockFileService, 'resolve')
|
|
158
|
+
.resolves({
|
|
159
|
+
mtime: 1,
|
|
160
|
+
ctime: 0,
|
|
161
|
+
size: 0,
|
|
162
|
+
etag: '',
|
|
163
|
+
isFile: true,
|
|
164
|
+
isDirectory: false,
|
|
165
|
+
isSymbolicLink: false,
|
|
166
|
+
isReadonly: false,
|
|
167
|
+
name: 'file.txt',
|
|
168
|
+
resource: new URI('file://test/file.txt')
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
resource.saveContentChanges!([{
|
|
172
|
+
range: { start: { line: 0, character: 0 }, end: { line: 0, character: 0 } },
|
|
173
|
+
rangeLength: 0,
|
|
174
|
+
text: 'test'
|
|
175
|
+
}]);
|
|
176
|
+
|
|
177
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
178
|
+
|
|
179
|
+
mockOnChangeEmitter.fire(new FileChangesEvent(
|
|
180
|
+
[{
|
|
181
|
+
resource: new URI('file://test/file.txt'),
|
|
182
|
+
type: FileChangeType.UPDATED
|
|
183
|
+
}]
|
|
184
|
+
));
|
|
185
|
+
|
|
186
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
187
|
+
|
|
188
|
+
expect(onChangeSpy.called).to.be.false;
|
|
189
|
+
|
|
190
|
+
deferred.resolve({
|
|
191
|
+
mtime: 0,
|
|
192
|
+
ctime: 0,
|
|
193
|
+
size: 0,
|
|
194
|
+
etag: '',
|
|
195
|
+
encoding: 'utf-8',
|
|
196
|
+
isFile: true,
|
|
197
|
+
isDirectory: false,
|
|
198
|
+
isSymbolicLink: false,
|
|
199
|
+
isReadonly: false,
|
|
200
|
+
name: 'file.txt',
|
|
201
|
+
resource: new URI('file://test/file.txt')
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
205
|
+
|
|
206
|
+
expect(resource.version).to.deep.equal({ etag: '', mtime: 0, encoding: 'utf-8' });
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
it('should trigger change event if file is updated and not in sync', async () => {
|
|
210
|
+
const resource = new FileResource(new URI('file://test/file.txt'),
|
|
211
|
+
mockFileService, { readOnly: false, shouldOpenAsText: () => Promise.resolve(true), shouldOverwrite: () => Promise.resolve(true) });
|
|
212
|
+
|
|
213
|
+
const onChangeSpy = sandbox.spy();
|
|
214
|
+
resource.onDidChangeContents(onChangeSpy);
|
|
215
|
+
|
|
216
|
+
sandbox.stub(mockFileService, 'read')
|
|
217
|
+
.resolves({
|
|
218
|
+
mtime: 1,
|
|
219
|
+
ctime: 0,
|
|
220
|
+
size: 0,
|
|
221
|
+
etag: '',
|
|
222
|
+
name: 'file.txt',
|
|
223
|
+
resource: new URI('file://test/file.txt'),
|
|
224
|
+
value: 'test',
|
|
225
|
+
encoding: 'utf-8'
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
await resource.readContents!();
|
|
229
|
+
|
|
230
|
+
sandbox.stub(mockFileService, 'resolve')
|
|
231
|
+
.resolves({
|
|
232
|
+
mtime: 2,
|
|
233
|
+
ctime: 0,
|
|
234
|
+
size: 0,
|
|
235
|
+
etag: '',
|
|
236
|
+
isFile: true,
|
|
237
|
+
isDirectory: false,
|
|
238
|
+
isSymbolicLink: false,
|
|
239
|
+
isReadonly: false,
|
|
240
|
+
name: 'file.txt',
|
|
241
|
+
resource: new URI('file://test/file.txt')
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
mockOnChangeEmitter.fire(new FileChangesEvent(
|
|
245
|
+
[{
|
|
246
|
+
resource: new URI('file://test/file.txt'),
|
|
247
|
+
type: FileChangeType.UPDATED
|
|
248
|
+
}]
|
|
249
|
+
));
|
|
250
|
+
|
|
251
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
252
|
+
|
|
253
|
+
expect(onChangeSpy.called).to.be.true;
|
|
254
|
+
});
|
|
255
|
+
});
|
|
@@ -28,6 +28,7 @@ import { GENERAL_MAX_FILE_SIZE_MB } from './filesystem-preferences';
|
|
|
28
28
|
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
|
|
29
29
|
import { nls } from '@theia/core';
|
|
30
30
|
import { MarkdownString } from '@theia/core/lib/common/markdown-rendering';
|
|
31
|
+
import { Mutex } from 'async-mutex';
|
|
31
32
|
|
|
32
33
|
export interface FileResourceVersion extends ResourceVersion {
|
|
33
34
|
readonly encoding: string;
|
|
@@ -69,6 +70,8 @@ export class FileResource implements Resource {
|
|
|
69
70
|
return this.options.readOnly;
|
|
70
71
|
}
|
|
71
72
|
|
|
73
|
+
protected writingLock = new Mutex();
|
|
74
|
+
|
|
72
75
|
constructor(
|
|
73
76
|
readonly uri: URI,
|
|
74
77
|
protected readonly fileService: FileService,
|
|
@@ -216,6 +219,8 @@ export class FileResource implements Resource {
|
|
|
216
219
|
const version = options?.version || this._version;
|
|
217
220
|
const current = FileResourceVersion.is(version) ? version : undefined;
|
|
218
221
|
const etag = current?.etag;
|
|
222
|
+
const releaseLock = await this.writingLock.acquire();
|
|
223
|
+
|
|
219
224
|
try {
|
|
220
225
|
const stat = await this.fileService.write(this.uri, content, {
|
|
221
226
|
encoding: options?.encoding,
|
|
@@ -237,6 +242,8 @@ export class FileResource implements Resource {
|
|
|
237
242
|
throw ResourceError.OutOfSync({ message, stack, data: { uri: this.uri } });
|
|
238
243
|
}
|
|
239
244
|
throw e;
|
|
245
|
+
} finally {
|
|
246
|
+
releaseLock();
|
|
240
247
|
}
|
|
241
248
|
};
|
|
242
249
|
|
|
@@ -263,6 +270,8 @@ export class FileResource implements Resource {
|
|
|
263
270
|
throw ResourceError.NotFound({ message: 'has not been read yet', data: { uri: this.uri } });
|
|
264
271
|
}
|
|
265
272
|
const etag = current?.etag;
|
|
273
|
+
const releaseLock = await this.writingLock.acquire();
|
|
274
|
+
|
|
266
275
|
try {
|
|
267
276
|
const stat = await this.fileService.update(this.uri, changes, {
|
|
268
277
|
readEncoding: current.encoding,
|
|
@@ -286,6 +295,8 @@ export class FileResource implements Resource {
|
|
|
286
295
|
throw ResourceError.OutOfSync({ message, stack, data: { uri: this.uri } });
|
|
287
296
|
}
|
|
288
297
|
throw e;
|
|
298
|
+
} finally {
|
|
299
|
+
releaseLock();
|
|
289
300
|
}
|
|
290
301
|
};
|
|
291
302
|
|
|
@@ -303,6 +314,7 @@ export class FileResource implements Resource {
|
|
|
303
314
|
}
|
|
304
315
|
protected async isInSync(): Promise<boolean> {
|
|
305
316
|
try {
|
|
317
|
+
await this.writingLock.waitForUnlock();
|
|
306
318
|
const stat = await this.fileService.resolve(this.uri, { resolveMetadata: true });
|
|
307
319
|
return !!this.version && this.version.mtime >= stat.mtime;
|
|
308
320
|
} catch {
|
|
@@ -21,7 +21,7 @@ import { FileStatNode, DirNode, FileNode } from './file-tree';
|
|
|
21
21
|
import { LocationService } from '../location';
|
|
22
22
|
import { LabelProvider } from '@theia/core/lib/browser/label-provider';
|
|
23
23
|
import { FileService } from '../file-service';
|
|
24
|
-
import { FileOperationError, FileOperationResult, FileChangesEvent, FileChangeType, FileChange
|
|
24
|
+
import { FileOperationError, FileOperationResult, FileChangesEvent, FileChangeType, FileChange } from '../../common/files';
|
|
25
25
|
import { MessageService } from '@theia/core/lib/common/message-service';
|
|
26
26
|
import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
|
|
27
27
|
import { FileSystemUtils } from '../../common';
|
|
@@ -45,7 +45,6 @@ export class FileTreeModel extends CompressedTreeModel implements LocationServic
|
|
|
45
45
|
protected override init(): void {
|
|
46
46
|
super.init();
|
|
47
47
|
this.toDispose.push(this.fileService.onDidFilesChange(changes => this.onFilesChanged(changes)));
|
|
48
|
-
this.toDispose.push(this.fileService.onDidRunOperation(event => this.onDidMove(event)));
|
|
49
48
|
}
|
|
50
49
|
|
|
51
50
|
get location(): URI | undefined {
|
|
@@ -92,23 +91,6 @@ export class FileTreeModel extends CompressedTreeModel implements LocationServic
|
|
|
92
91
|
}
|
|
93
92
|
}
|
|
94
93
|
|
|
95
|
-
/**
|
|
96
|
-
* to workaround https://github.com/Axosoft/nsfw/issues/42
|
|
97
|
-
*/
|
|
98
|
-
protected onDidMove(event: FileOperationEvent): void {
|
|
99
|
-
if (!event.isOperation(FileOperation.MOVE)) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
if (event.resource.parent.toString() === event.target.resource.parent.toString()) {
|
|
103
|
-
// file rename
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
this.refreshAffectedNodes([
|
|
107
|
-
event.resource,
|
|
108
|
-
event.target.resource
|
|
109
|
-
]);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
94
|
protected onFilesChanged(changes: FileChangesEvent): void {
|
|
113
95
|
if (!this.refreshAffectedNodes(this.getAffectedUris(changes)) && this.isRootAffected(changes)) {
|
|
114
96
|
this.refresh();
|