@codingame/monaco-vscode-files-service-override 34.0.0 → 34.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.
Files changed (2) hide show
  1. package/index.js +47 -21
  2. package/package.json +2 -2
package/index.js CHANGED
@@ -27,7 +27,7 @@ import { IFilesConfigurationService } from '@codingame/monaco-vscode-api/vscode/
27
27
  import { BrowserElevatedFileService } from './vscode/src/vs/workbench/services/files/browser/elevatedFileService.js';
28
28
  import { IElevatedFileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/files/common/elevatedFileService.service';
29
29
  import { VSBuffer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
30
- import { newWriteableStream } from '@codingame/monaco-vscode-api/vscode/vs/base/common/stream';
30
+ import { newWriteableStream, listenStream } from '@codingame/monaco-vscode-api/vscode/vs/base/common/stream';
31
31
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
32
32
  import { registerServiceInitializePreParticipant, checkServicesNotInitialized } from '@codingame/monaco-vscode-api/lifecycle';
33
33
  import { logsPath } from '@codingame/monaco-vscode-api/workbench';
@@ -382,7 +382,12 @@ class RegisteredFileSystemProvider extends Disposable {
382
382
  }
383
383
  }
384
384
  catch (error) {
385
- stream.error(createFileSystemProviderError(error, FileSystemProviderErrorCode.Unknown));
385
+ if (error instanceof FileSystemProviderError) {
386
+ stream.error(error);
387
+ }
388
+ else {
389
+ stream.error(createFileSystemProviderError(error, FileSystemProviderErrorCode.Unknown));
390
+ }
386
391
  stream.end();
387
392
  }
388
393
  })();
@@ -500,7 +505,7 @@ class OverlayFileSystemProvider {
500
505
  get delegates() {
501
506
  return this.providers.map(({ provider }) => provider);
502
507
  }
503
- readFromDelegates(caller, token) {
508
+ async readFromDelegates(caller, token) {
504
509
  if (this.delegates.length === 0) {
505
510
  throw createFileSystemProviderError('No delegate', FileSystemProviderErrorCode.Unavailable);
506
511
  }
@@ -510,7 +515,7 @@ class OverlayFileSystemProvider {
510
515
  throw new Error('Cancelled');
511
516
  }
512
517
  try {
513
- return caller(delegate);
518
+ return await caller(delegate);
514
519
  }
515
520
  catch (err) {
516
521
  errors.push(err);
@@ -576,27 +581,48 @@ class OverlayFileSystemProvider {
576
581
  return await this.readFromDelegates((delegate) => delegate.readFile(resource));
577
582
  }
578
583
  readFileStream(resource, opts, token) {
579
- return this.readFromDelegates((delegate) => {
584
+ const writableStream = newWriteableStream((data) => VSBuffer.concat(data.map((data) => VSBuffer.wrap(data))).buffer);
585
+ this.readFromDelegates(async (delegate) => {
580
586
  if (hasFileReadStreamCapability(delegate)) {
581
- return delegate.readFileStream(resource, opts, token);
587
+ const stream = delegate.readFileStream(resource, opts, token);
588
+ await new Promise((resolve, reject) => {
589
+ let dataReceived = false;
590
+ let errored = false;
591
+ listenStream(stream, {
592
+ onData(data) {
593
+ dataReceived = true;
594
+ void writableStream.write(data);
595
+ },
596
+ onEnd() {
597
+ if (!errored) {
598
+ writableStream.end();
599
+ resolve();
600
+ }
601
+ },
602
+ onError(err) {
603
+ errored = true;
604
+ if (!dataReceived) {
605
+ reject(err);
606
+ }
607
+ else {
608
+ writableStream.error(err);
609
+ }
610
+ }
611
+ }, token);
612
+ });
582
613
  }
583
614
  else {
584
- const writableStream = newWriteableStream((data) => VSBuffer.concat(data.map((data) => VSBuffer.wrap(data))).buffer);
585
- (async () => {
586
- try {
587
- let data = await this.readFile(resource);
588
- if (typeof opts.position === 'number' || typeof opts.length === 'number') {
589
- data = data.slice(opts.position ?? 0, opts.length);
590
- }
591
- writableStream.end(data);
592
- }
593
- catch (err) {
594
- writableStream.error(err);
595
- }
596
- })();
597
- return writableStream;
615
+ let data = await this.readFile(resource);
616
+ if (typeof opts.position === 'number' || typeof opts.length === 'number') {
617
+ data = data.slice(opts.position ?? 0, opts.length);
618
+ }
619
+ return writableStream.end(data);
598
620
  }
599
- }, token);
621
+ }, token).catch((err) => {
622
+ writableStream.error(err);
623
+ writableStream.end();
624
+ });
625
+ return writableStream;
600
626
  }
601
627
  async readdir(resource) {
602
628
  const results = await Promise.allSettled(this.delegates.map(async (delegate) => await delegate.readdir(resource)));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-files-service-override",
3
- "version": "34.0.0",
3
+ "version": "34.0.2",
4
4
  "private": false,
5
5
  "description": "VSCode public API plugged on the monaco editor - files service-override",
6
6
  "keywords": [],
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "type": "module",
17
17
  "dependencies": {
18
- "@codingame/monaco-vscode-api": "34.0.0"
18
+ "@codingame/monaco-vscode-api": "34.0.2"
19
19
  },
20
20
  "main": "index.js",
21
21
  "module": "index.js",