@codingame/monaco-vscode-files-service-override 6.0.0 → 6.0.1
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 +39 -39
- 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';
|
|
@@ -353,11 +353,8 @@ class RegisteredFileSystemProvider extends Disposable {
|
|
|
353
353
|
try {
|
|
354
354
|
if (file.readStream == null || typeof opts.length === 'number' || typeof opts.position === 'number') {
|
|
355
355
|
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);
|
|
356
|
+
if (typeof opts.position === 'number' || typeof opts.length === 'number') {
|
|
357
|
+
buffer = buffer.slice(opts.position ?? 0, opts.length);
|
|
361
358
|
}
|
|
362
359
|
stream.end(buffer);
|
|
363
360
|
}
|
|
@@ -493,37 +490,17 @@ class OverlayFileSystemProvider {
|
|
|
493
490
|
get delegates() {
|
|
494
491
|
return ( this.providers.map(({ provider }) => provider));
|
|
495
492
|
}
|
|
496
|
-
async readFromDelegates(caller) {
|
|
493
|
+
async readFromDelegates(caller, token) {
|
|
497
494
|
if (this.delegates.length === 0) {
|
|
498
495
|
throw createFileSystemProviderError('No delegate', FileSystemProviderErrorCode.Unavailable);
|
|
499
496
|
}
|
|
500
497
|
let firstError;
|
|
501
498
|
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;
|
|
499
|
+
if (token != null && token.isCancellationRequested) {
|
|
500
|
+
throw new Error('Cancelled');
|
|
515
501
|
}
|
|
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
502
|
try {
|
|
526
|
-
return caller(delegate);
|
|
503
|
+
return await caller(delegate);
|
|
527
504
|
}
|
|
528
505
|
catch (err) {
|
|
529
506
|
firstError ?? (firstError = err);
|
|
@@ -577,20 +554,43 @@ class OverlayFileSystemProvider {
|
|
|
577
554
|
return this.readFromDelegates(delegate => delegate.readFile(resource));
|
|
578
555
|
}
|
|
579
556
|
readFileStream(resource, opts, token) {
|
|
580
|
-
|
|
557
|
+
const writableStream = newWriteableStream(data => VSBuffer.concat(( data.map(data => VSBuffer.wrap(data)))).buffer);
|
|
558
|
+
this.readFromDelegates(async (delegate) => {
|
|
581
559
|
if (hasFileReadStreamCapability(delegate)) {
|
|
582
|
-
|
|
560
|
+
const stream = delegate.readFileStream(resource, opts, token);
|
|
561
|
+
await new Promise((resolve, reject) => {
|
|
562
|
+
let dataReceived = false;
|
|
563
|
+
listenStream(stream, {
|
|
564
|
+
onData(data) {
|
|
565
|
+
dataReceived = true;
|
|
566
|
+
void writableStream.write(data);
|
|
567
|
+
},
|
|
568
|
+
onEnd() {
|
|
569
|
+
writableStream.end();
|
|
570
|
+
resolve();
|
|
571
|
+
},
|
|
572
|
+
onError(err) {
|
|
573
|
+
if (!dataReceived) {
|
|
574
|
+
reject(err);
|
|
575
|
+
}
|
|
576
|
+
else {
|
|
577
|
+
writableStream.error(err);
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
}, token);
|
|
581
|
+
});
|
|
583
582
|
}
|
|
584
583
|
else {
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
});
|
|
591
|
-
return stream;
|
|
584
|
+
let data = await this.readFile(resource);
|
|
585
|
+
if (typeof opts.position === 'number' || typeof opts.length === 'number') {
|
|
586
|
+
data = data.slice(opts.position ?? 0, opts.length);
|
|
587
|
+
}
|
|
588
|
+
return writableStream.end(data);
|
|
592
589
|
}
|
|
590
|
+
}, token).catch(err => {
|
|
591
|
+
writableStream.error(err);
|
|
593
592
|
});
|
|
593
|
+
return writableStream;
|
|
594
594
|
}
|
|
595
595
|
async readdir(resource) {
|
|
596
596
|
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.1",
|
|
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.1"
|
|
30
30
|
}
|
|
31
31
|
}
|