@codingame/monaco-vscode-files-service-override 6.0.0 → 6.0.2
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/files.js +43 -42
- package/package.json +2 -2
package/files.js
CHANGED
|
@@ -27,7 +27,7 @@ import { IFilesConfigurationService } from 'vscode/vscode/vs/workbench/services/
|
|
|
27
27
|
import { BrowserElevatedFileService } from './vscode/src/vs/workbench/services/files/browser/elevatedFileService.js';
|
|
28
28
|
import { IElevatedFileService } from 'vscode/vscode/vs/workbench/services/files/common/elevatedFileService.service';
|
|
29
29
|
import { VSBuffer } from 'vscode/vscode/vs/base/common/buffer';
|
|
30
|
-
import { newWriteableStream } from 'vscode/vscode/vs/base/common/stream';
|
|
30
|
+
import { newWriteableStream, listenStream } from 'vscode/vscode/vs/base/common/stream';
|
|
31
31
|
import { registerServiceInitializePreParticipant, checkServicesNotInitialized } from 'vscode/lifecycle';
|
|
32
32
|
import { logsPath } from 'vscode/workbench';
|
|
33
33
|
import 'vscode/vscode/vs/workbench/contrib/files/browser/files.contribution._configuration';
|
|
@@ -238,10 +238,11 @@ class RegisteredFileSystemProvider extends Disposable {
|
|
|
238
238
|
return Promise.resolve(toWrite.byteLength);
|
|
239
239
|
}
|
|
240
240
|
_lookupRoot(authority) {
|
|
241
|
-
|
|
241
|
+
const _authority = authority.toLowerCase();
|
|
242
|
+
let root = this.rootByAuthority.get(_authority);
|
|
242
243
|
if (root == null) {
|
|
243
244
|
root = new RegisteredDirectory();
|
|
244
|
-
this.rootByAuthority.set(
|
|
245
|
+
this.rootByAuthority.set(_authority, root);
|
|
245
246
|
}
|
|
246
247
|
return root;
|
|
247
248
|
}
|
|
@@ -304,7 +305,7 @@ class RegisteredFileSystemProvider extends Disposable {
|
|
|
304
305
|
}
|
|
305
306
|
const name = parts[parts.length - 1];
|
|
306
307
|
if (directory.getChildren(name) != null) {
|
|
307
|
-
throw new Error(`file '${uri.toString()}' already exists`);
|
|
308
|
+
throw new Error(`file '${extUri.joinPath(uri, name).toString()}/' already exists`);
|
|
308
309
|
}
|
|
309
310
|
const disposableStore = new DisposableStore();
|
|
310
311
|
disposableStore.add(toDisposable(() => {
|
|
@@ -353,11 +354,8 @@ class RegisteredFileSystemProvider extends Disposable {
|
|
|
353
354
|
try {
|
|
354
355
|
if (file.readStream == null || typeof opts.length === 'number' || typeof opts.position === 'number') {
|
|
355
356
|
let buffer = await file.read();
|
|
356
|
-
if (typeof opts.position === 'number') {
|
|
357
|
-
buffer = buffer.slice(opts.position);
|
|
358
|
-
}
|
|
359
|
-
if (typeof opts.length === 'number') {
|
|
360
|
-
buffer = buffer.slice(0, opts.length);
|
|
357
|
+
if (typeof opts.position === 'number' || typeof opts.length === 'number') {
|
|
358
|
+
buffer = buffer.slice(opts.position ?? 0, opts.length);
|
|
361
359
|
}
|
|
362
360
|
stream.end(buffer);
|
|
363
361
|
}
|
|
@@ -493,37 +491,17 @@ class OverlayFileSystemProvider {
|
|
|
493
491
|
get delegates() {
|
|
494
492
|
return ( this.providers.map(({ provider }) => provider));
|
|
495
493
|
}
|
|
496
|
-
async readFromDelegates(caller) {
|
|
494
|
+
async readFromDelegates(caller, token) {
|
|
497
495
|
if (this.delegates.length === 0) {
|
|
498
496
|
throw createFileSystemProviderError('No delegate', FileSystemProviderErrorCode.Unavailable);
|
|
499
497
|
}
|
|
500
498
|
let firstError;
|
|
501
499
|
for (const delegate of this.delegates) {
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
}
|
|
505
|
-
catch (err) {
|
|
506
|
-
firstError ?? (firstError = err);
|
|
507
|
-
if (err instanceof FileSystemProviderError && [
|
|
508
|
-
FileSystemProviderErrorCode.NoPermissions,
|
|
509
|
-
FileSystemProviderErrorCode.FileNotFound,
|
|
510
|
-
FileSystemProviderErrorCode.Unavailable
|
|
511
|
-
].includes(err.code)) {
|
|
512
|
-
continue;
|
|
513
|
-
}
|
|
514
|
-
throw err;
|
|
500
|
+
if (token != null && token.isCancellationRequested) {
|
|
501
|
+
throw new Error('Cancelled');
|
|
515
502
|
}
|
|
516
|
-
}
|
|
517
|
-
throw firstError;
|
|
518
|
-
}
|
|
519
|
-
readFromDelegatesSync(caller) {
|
|
520
|
-
if (this.delegates.length === 0) {
|
|
521
|
-
throw createFileSystemProviderError('No delegate', FileSystemProviderErrorCode.Unavailable);
|
|
522
|
-
}
|
|
523
|
-
let firstError;
|
|
524
|
-
for (const delegate of this.delegates) {
|
|
525
503
|
try {
|
|
526
|
-
return caller(delegate);
|
|
504
|
+
return await caller(delegate);
|
|
527
505
|
}
|
|
528
506
|
catch (err) {
|
|
529
507
|
firstError ?? (firstError = err);
|
|
@@ -577,20 +555,43 @@ class OverlayFileSystemProvider {
|
|
|
577
555
|
return this.readFromDelegates(delegate => delegate.readFile(resource));
|
|
578
556
|
}
|
|
579
557
|
readFileStream(resource, opts, token) {
|
|
580
|
-
|
|
558
|
+
const writableStream = newWriteableStream(data => VSBuffer.concat(( data.map(data => VSBuffer.wrap(data)))).buffer);
|
|
559
|
+
this.readFromDelegates(async (delegate) => {
|
|
581
560
|
if (hasFileReadStreamCapability(delegate)) {
|
|
582
|
-
|
|
561
|
+
const stream = delegate.readFileStream(resource, opts, token);
|
|
562
|
+
await new Promise((resolve, reject) => {
|
|
563
|
+
let dataReceived = false;
|
|
564
|
+
listenStream(stream, {
|
|
565
|
+
onData(data) {
|
|
566
|
+
dataReceived = true;
|
|
567
|
+
void writableStream.write(data);
|
|
568
|
+
},
|
|
569
|
+
onEnd() {
|
|
570
|
+
writableStream.end();
|
|
571
|
+
resolve();
|
|
572
|
+
},
|
|
573
|
+
onError(err) {
|
|
574
|
+
if (!dataReceived) {
|
|
575
|
+
reject(err);
|
|
576
|
+
}
|
|
577
|
+
else {
|
|
578
|
+
writableStream.error(err);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
}, token);
|
|
582
|
+
});
|
|
583
583
|
}
|
|
584
584
|
else {
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
});
|
|
591
|
-
return stream;
|
|
585
|
+
let data = await this.readFile(resource);
|
|
586
|
+
if (typeof opts.position === 'number' || typeof opts.length === 'number') {
|
|
587
|
+
data = data.slice(opts.position ?? 0, opts.length);
|
|
588
|
+
}
|
|
589
|
+
return writableStream.end(data);
|
|
592
590
|
}
|
|
591
|
+
}, token).catch(err => {
|
|
592
|
+
writableStream.error(err);
|
|
593
593
|
});
|
|
594
|
+
return writableStream;
|
|
594
595
|
}
|
|
595
596
|
async readdir(resource) {
|
|
596
597
|
const results = await Promise.allSettled(( this.delegates.map(async (delegate) => delegate.readdir(resource))));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-files-service-override",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.2",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "CodinGame",
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"vscode": "npm:@codingame/monaco-vscode-api@6.0.
|
|
29
|
+
"vscode": "npm:@codingame/monaco-vscode-api@6.0.2"
|
|
30
30
|
}
|
|
31
31
|
}
|