@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.
Files changed (61) hide show
  1. package/lib/browser/file-resource.d.ts +2 -0
  2. package/lib/browser/file-resource.d.ts.map +1 -1
  3. package/lib/browser/file-resource.js +11 -0
  4. package/lib/browser/file-resource.js.map +1 -1
  5. package/lib/browser/file-resource.spec.d.ts +2 -0
  6. package/lib/browser/file-resource.spec.d.ts.map +1 -0
  7. package/lib/browser/file-resource.spec.js +191 -0
  8. package/lib/browser/file-resource.spec.js.map +1 -0
  9. package/lib/browser/file-tree/file-tree-model.d.ts +1 -5
  10. package/lib/browser/file-tree/file-tree-model.d.ts.map +1 -1
  11. package/lib/browser/file-tree/file-tree-model.js +0 -17
  12. package/lib/browser/file-tree/file-tree-model.js.map +1 -1
  13. package/lib/browser/filesystem-preferences.d.ts.map +1 -1
  14. package/lib/browser/filesystem-preferences.js +1 -2
  15. package/lib/browser/filesystem-preferences.js.map +1 -1
  16. package/lib/node/filesystem-backend-module.d.ts +8 -8
  17. package/lib/node/filesystem-backend-module.d.ts.map +1 -1
  18. package/lib/node/filesystem-backend-module.js +27 -27
  19. package/lib/node/filesystem-backend-module.js.map +1 -1
  20. package/lib/node/filesystem-watcher-client.d.ts +1 -2
  21. package/lib/node/filesystem-watcher-client.d.ts.map +1 -1
  22. package/lib/node/filesystem-watcher-client.js +2 -3
  23. package/lib/node/filesystem-watcher-client.js.map +1 -1
  24. package/lib/node/parcel-watcher/index.d.ts.map +1 -0
  25. package/lib/node/{nsfw-watcher → parcel-watcher}/index.js +3 -3
  26. package/lib/node/parcel-watcher/index.js.map +1 -0
  27. package/lib/node/{nsfw-watcher/nsfw-filesystem-service.d.ts → parcel-watcher/parcel-filesystem-service.d.ts} +29 -29
  28. package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts.map +1 -0
  29. package/lib/node/{nsfw-watcher/nsfw-filesystem-service.js → parcel-watcher/parcel-filesystem-service.js} +55 -66
  30. package/lib/node/parcel-watcher/parcel-filesystem-service.js.map +1 -0
  31. package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.d.ts +2 -0
  32. package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.d.ts.map +1 -0
  33. package/lib/node/{nsfw-watcher/nsfw-filesystem-watcher.spec.js → parcel-watcher/parcel-filesystem-watcher.spec.js} +22 -29
  34. package/lib/node/parcel-watcher/parcel-filesystem-watcher.spec.js.map +1 -0
  35. package/lib/node/parcel-watcher/parcel-options.d.ts +7 -0
  36. package/lib/node/parcel-watcher/parcel-options.d.ts.map +1 -0
  37. package/lib/node/{nsfw-watcher/nsfw-options.js → parcel-watcher/parcel-options.js} +4 -4
  38. package/lib/node/parcel-watcher/parcel-options.js.map +1 -0
  39. package/package.json +4 -4
  40. package/src/browser/file-resource.spec.ts +255 -0
  41. package/src/browser/file-resource.ts +12 -0
  42. package/src/browser/file-tree/file-tree-model.ts +1 -19
  43. package/src/browser/filesystem-preferences.ts +1 -2
  44. package/src/node/filesystem-backend-module.ts +27 -27
  45. package/src/node/filesystem-watcher-client.ts +1 -3
  46. package/src/node/{nsfw-watcher → parcel-watcher}/index.ts +3 -3
  47. package/src/node/{nsfw-watcher/nsfw-filesystem-service.ts → parcel-watcher/parcel-filesystem-service.ts} +62 -72
  48. package/src/node/{nsfw-watcher/nsfw-filesystem-watcher.spec.ts → parcel-watcher/parcel-filesystem-watcher.spec.ts} +22 -29
  49. package/src/node/{nsfw-watcher/nsfw-options.ts → parcel-watcher/parcel-options.ts} +4 -4
  50. package/lib/node/nsfw-watcher/index.d.ts.map +0 -1
  51. package/lib/node/nsfw-watcher/index.js.map +0 -1
  52. package/lib/node/nsfw-watcher/nsfw-filesystem-service.d.ts.map +0 -1
  53. package/lib/node/nsfw-watcher/nsfw-filesystem-service.js.map +0 -1
  54. package/lib/node/nsfw-watcher/nsfw-filesystem-watcher.spec.d.ts +0 -2
  55. package/lib/node/nsfw-watcher/nsfw-filesystem-watcher.spec.d.ts.map +0 -1
  56. package/lib/node/nsfw-watcher/nsfw-filesystem-watcher.spec.js.map +0 -1
  57. package/lib/node/nsfw-watcher/nsfw-options.d.ts +0 -7
  58. package/lib/node/nsfw-watcher/nsfw-options.d.ts.map +0 -1
  59. package/lib/node/nsfw-watcher/nsfw-options.js.map +0 -1
  60. package/src/typings/nsfw/index.d.ts +0 -18
  61. /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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parcel-filesystem-watcher.spec.d.ts.map
@@ -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 nsfw_filesystem_service_1 = require("./nsfw-filesystem-service");
24
+ const parcel_filesystem_service_1 = require("./parcel-filesystem-service");
25
25
  const expect = chai.expect;
26
26
  const track = temp.track();
27
- describe('nsfw-filesystem-watcher', function () {
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 NSFW always returns paths with long names. We need to convert here.
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 = createNsfwFileSystemWatcherService();
43
+ watcherService = createParcelFileSystemWatcherService();
44
44
  watcherId = await watcherService.watchFileChanges(0, root.toString());
45
- await sleep(2000);
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(2000);
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(2000);
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(2000);
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(2000);
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(2000);
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(2000);
97
+ await sleep(200);
98
98
  assert.deepStrictEqual(actualUris.size, 0);
99
99
  });
100
- it('Renaming should emit a DELETED change followed by ADDED', async function () {
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(1000);
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(1000);
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 (error) {
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: file_txt.toString() },
133
- { type: 1 /* FileChangeType.ADDED */, uri: FILE_txt.toString() }
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 createNsfwFileSystemWatcherService() {
140
- return new nsfw_filesystem_service_1.NsfwFileSystemWatcherService({
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=nsfw-filesystem-watcher.spec.js.map
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":"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"}
@@ -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.NsfwOptions = void 0;
18
+ exports.ParcelWatcherOptions = void 0;
19
19
  /**
20
- * Inversify service identifier allowing extensions to override options passed to nsfw by the file watcher.
20
+ * Inversify service identifier allowing extensions to override options passed to parcel by the file watcher.
21
21
  */
22
- exports.NsfwOptions = Symbol('NsfwOptions');
23
- //# sourceMappingURL=nsfw-options.js.map
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.53.2",
3
+ "version": "1.55.0-next.14+d999fe031",
4
4
  "description": "Theia - FileSystem Extension",
5
5
  "dependencies": {
6
- "@theia/core": "1.53.2",
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.53.2"
76
+ "@theia/ext-scripts": "1.54.0"
77
77
  },
78
78
  "nyc": {
79
79
  "extends": "../../configs/nyc.json"
80
80
  },
81
- "gitHead": "4f6f158bd27c5dd608dddc036910698a51d8c953"
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, FileOperation, FileOperationEvent } from '../../common/files';
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();
@@ -46,8 +46,7 @@ export const filesystemPreferenceSchema: PreferenceSchema = {
46
46
  },
47
47
  default: {
48
48
  '**/.git/objects/**': true,
49
- '**/.git/subtree-cache/**': true,
50
- '**/node_modules/**': true
49
+ '**/.git/subtree-cache/**': true
51
50
  },
52
51
  scope: 'resource'
53
52
  },