@theia/filesystem 1.55.1 → 1.57.0-next.112

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 (56) hide show
  1. package/README.md +2 -1
  2. package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.d.ts +1 -2
  3. package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.d.ts.map +1 -1
  4. package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.js +0 -4
  5. package/lib/browser/breadcrumbs/filepath-breadcrumbs-container.js.map +1 -1
  6. package/lib/browser/filesystem-frontend-module.d.ts.map +1 -1
  7. package/lib/browser/filesystem-frontend-module.js +4 -0
  8. package/lib/browser/filesystem-frontend-module.js.map +1 -1
  9. package/lib/browser/filesystem-preferences.d.ts +1 -0
  10. package/lib/browser/filesystem-preferences.d.ts.map +1 -1
  11. package/lib/browser/filesystem-preferences.js +6 -0
  12. package/lib/browser/filesystem-preferences.js.map +1 -1
  13. package/lib/browser/vscode-file-service-contribution.d.ts +25 -0
  14. package/lib/browser/vscode-file-service-contribution.d.ts.map +1 -0
  15. package/lib/browser/vscode-file-service-contribution.js +99 -0
  16. package/lib/browser/vscode-file-service-contribution.js.map +1 -0
  17. package/lib/browser-only/browser-only-filesystem-frontend-module.js +7 -7
  18. package/lib/browser-only/browser-only-filesystem-frontend-module.js.map +1 -1
  19. package/lib/browser-only/opfs-filesystem-initialization.d.ts +11 -0
  20. package/lib/browser-only/opfs-filesystem-initialization.d.ts.map +1 -0
  21. package/lib/browser-only/opfs-filesystem-initialization.js +33 -0
  22. package/lib/browser-only/opfs-filesystem-initialization.js.map +1 -0
  23. package/lib/browser-only/opfs-filesystem-provider.d.ts +31 -0
  24. package/lib/browser-only/opfs-filesystem-provider.d.ts.map +1 -0
  25. package/lib/browser-only/opfs-filesystem-provider.js +323 -0
  26. package/lib/browser-only/opfs-filesystem-provider.js.map +1 -0
  27. package/lib/common/remote-file-system-provider.d.ts +3 -3
  28. package/lib/common/remote-file-system-provider.d.ts.map +1 -1
  29. package/lib/common/remote-file-system-provider.js +28 -29
  30. package/lib/common/remote-file-system-provider.js.map +1 -1
  31. package/lib/node/download/file-download-endpoint.d.ts +0 -1
  32. package/lib/node/download/file-download-endpoint.d.ts.map +1 -1
  33. package/lib/node/download/file-download-handler.d.ts +0 -1
  34. package/lib/node/download/file-download-handler.d.ts.map +1 -1
  35. package/lib/node/node-file-upload-service.d.ts +0 -1
  36. package/lib/node/node-file-upload-service.d.ts.map +1 -1
  37. package/package.json +4 -5
  38. package/src/browser/breadcrumbs/filepath-breadcrumbs-container.ts +1 -4
  39. package/src/browser/filesystem-frontend-module.ts +4 -0
  40. package/src/browser/filesystem-preferences.ts +7 -0
  41. package/src/browser/vscode-file-service-contribution.ts +93 -0
  42. package/src/browser-only/browser-only-filesystem-frontend-module.ts +7 -7
  43. package/src/browser-only/opfs-filesystem-initialization.ts +36 -0
  44. package/src/browser-only/opfs-filesystem-provider.ts +346 -0
  45. package/src/common/download/README.md +8 -4
  46. package/src/common/remote-file-system-provider.ts +32 -34
  47. package/lib/browser-only/browserfs-filesystem-initialization.d.ts +0 -13
  48. package/lib/browser-only/browserfs-filesystem-initialization.d.ts.map +0 -1
  49. package/lib/browser-only/browserfs-filesystem-initialization.js +0 -55
  50. package/lib/browser-only/browserfs-filesystem-initialization.js.map +0 -1
  51. package/lib/browser-only/browserfs-filesystem-provider.d.ts +0 -46
  52. package/lib/browser-only/browserfs-filesystem-provider.d.ts.map +0 -1
  53. package/lib/browser-only/browserfs-filesystem-provider.js +0 -440
  54. package/lib/browser-only/browserfs-filesystem-provider.js.map +0 -1
  55. package/src/browser-only/browserfs-filesystem-initialization.ts +0 -61
  56. package/src/browser-only/browserfs-filesystem-provider.ts +0 -462
@@ -46,7 +46,7 @@ export interface RemoteFileSystemServer extends RpcServer<RemoteFileSystemClient
46
46
  open(resource: string, opts: FileOpenOptions): Promise<number>;
47
47
  close(fd: number): Promise<void>;
48
48
  read(fd: number, pos: number, length: number): Promise<{ bytes: Uint8Array; bytesRead: number; }>;
49
- readFileStream(resource: string, opts: FileReadStreamOptions, token: CancellationToken): Promise<number>;
49
+ readFileStream(resource: string, handle: number, opts: FileReadStreamOptions, token: CancellationToken): Promise<void>;
50
50
  readFile(resource: string): Promise<Uint8Array>;
51
51
  write(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise<number>;
52
52
  writeFile(resource: string, content: Uint8Array, opts: FileWriteOptions): Promise<void>;
@@ -162,6 +162,8 @@ export class RemoteFileSystemProvider implements Required<FileSystemProvider>, D
162
162
  protected readonly readyDeferred = new Deferred<void>();
163
163
  readonly ready = this.readyDeferred.promise;
164
164
 
165
+ protected streamHandleSeq = 0;
166
+
165
167
  /**
166
168
  * Wrapped remote filesystem.
167
169
  */
@@ -251,36 +253,35 @@ export class RemoteFileSystemProvider implements Required<FileSystemProvider>, D
251
253
 
252
254
  readFileStream(resource: URI, opts: FileReadStreamOptions, token: CancellationToken): ReadableStreamEvents<Uint8Array> {
253
255
  const capturedError = new Error();
254
- // eslint-disable-next-line @typescript-eslint/no-shadow
255
- const stream = newWriteableStream<Uint8Array>(data => BinaryBuffer.concat(data.map(data => BinaryBuffer.wrap(data))).buffer);
256
- this.server.readFileStream(resource.toString(), opts, token).then(streamHandle => {
256
+ const stream = newWriteableStream<Uint8Array>(data => BinaryBuffer.concat(data.map(item => BinaryBuffer.wrap(item))).buffer);
257
+ const streamHandle = this.streamHandleSeq++;
258
+ const toDispose = new DisposableCollection(
259
+ token.onCancellationRequested(() => stream.end(cancelled())),
260
+ this.onFileStreamData(([handle, data]) => {
261
+ if (streamHandle === handle) {
262
+ stream.write(data);
263
+ }
264
+ }),
265
+ this.onFileStreamEnd(([handle, error]) => {
266
+ if (streamHandle === handle) {
267
+ if (error) {
268
+ const code = ('code' in error && error.code) || FileSystemProviderErrorCode.Unknown;
269
+ const fileOperationError = new FileSystemProviderError(error.message, code);
270
+ fileOperationError.name = error.name;
271
+ const capturedStack = capturedError.stack || '';
272
+ fileOperationError.stack = `${capturedStack}\nCaused by: ${error.stack}`;
273
+ stream.end(fileOperationError);
274
+ } else {
275
+ stream.end();
276
+ }
277
+ }
278
+ })
279
+ );
280
+ stream.on('end', () => toDispose.dispose());
281
+ this.server.readFileStream(resource.toString(), streamHandle, opts, token).then(() => {
257
282
  if (token.isCancellationRequested) {
258
283
  stream.end(cancelled());
259
- return;
260
284
  }
261
- const toDispose = new DisposableCollection(
262
- token.onCancellationRequested(() => stream.end(cancelled())),
263
- this.onFileStreamData(([handle, data]) => {
264
- if (streamHandle === handle) {
265
- stream.write(data);
266
- }
267
- }),
268
- this.onFileStreamEnd(([handle, error]) => {
269
- if (streamHandle === handle) {
270
- if (error) {
271
- const code = ('code' in error && error.code) || FileSystemProviderErrorCode.Unknown;
272
- const fileOperationError = new FileSystemProviderError(error.message, code);
273
- fileOperationError.name = error.name;
274
- const capturedStack = capturedError.stack || '';
275
- fileOperationError.stack = `${capturedStack}\nCaused by: ${error.stack}`;
276
- stream.end(fileOperationError);
277
- } else {
278
- stream.end();
279
- }
280
- }
281
- })
282
- );
283
- stream.on('end', () => toDispose.dispose());
284
285
  }, error => stream.end(error));
285
286
  return stream;
286
287
  }
@@ -528,11 +529,8 @@ export class FileSystemProviderServer implements RemoteFileSystemServer {
528
529
  }
529
530
  }
530
531
 
531
- protected readFileStreamSeq = 0;
532
-
533
- async readFileStream(resource: string, opts: FileReadStreamOptions, token: CancellationToken): Promise<number> {
532
+ async readFileStream(resource: string, handle: number, opts: FileReadStreamOptions, token: CancellationToken): Promise<void> {
534
533
  if (hasFileReadStreamCapability(this.provider)) {
535
- const handle = this.readFileStreamSeq++;
536
534
  const stream = this.provider.readFileStream(new URI(resource), opts, token);
537
535
  stream.on('data', data => this.client?.onFileStreamData(handle, data));
538
536
  stream.on('error', error => {
@@ -541,9 +539,9 @@ export class FileSystemProviderServer implements RemoteFileSystemServer {
541
539
  this.client?.onFileStreamEnd(handle, { code, name, message, stack });
542
540
  });
543
541
  stream.on('end', () => this.client?.onFileStreamEnd(handle, undefined));
544
- return handle;
542
+ } else {
543
+ throw new Error('not supported');
545
544
  }
546
- throw new Error('not supported');
547
545
  }
548
546
 
549
547
  }
@@ -1,13 +0,0 @@
1
- import type { FSModule } from 'browserfs/dist/node/core/FS';
2
- import type { BrowserFSFileSystemProvider } from './browserfs-filesystem-provider';
3
- import MountableFileSystem from 'browserfs/dist/node/backend/MountableFileSystem';
4
- export declare const BrowserFSInitialization: unique symbol;
5
- export interface BrowserFSInitialization {
6
- createMountableFileSystem(): Promise<MountableFileSystem>;
7
- initializeFS: (fs: FSModule, provider: BrowserFSFileSystemProvider) => Promise<void>;
8
- }
9
- export declare class DefaultBrowserFSInitialization implements BrowserFSInitialization {
10
- createMountableFileSystem(): Promise<MountableFileSystem>;
11
- initializeFS(fs: FSModule, provider: BrowserFSFileSystemProvider): Promise<void>;
12
- }
13
- //# sourceMappingURL=browserfs-filesystem-initialization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browserfs-filesystem-initialization.d.ts","sourceRoot":"","sources":["../../src/browser-only/browserfs-filesystem-initialization.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAGnF,OAAO,mBAAmB,MAAM,iDAAiD,CAAC;AAElF,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AACzE,MAAM,WAAW,uBAAuB;IACpC,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACzD,YAAY,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,2BAA2B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxF;AAED,qBACa,8BAA+B,YAAW,uBAAuB;IAE1E,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA0BnD,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzF"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2023 EclipseSource and others.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.DefaultBrowserFSInitialization = exports.BrowserFSInitialization = void 0;
19
- const tslib_1 = require("tslib");
20
- const inversify_1 = require("@theia/core/shared/inversify");
21
- const browserfs_1 = require("browserfs");
22
- exports.BrowserFSInitialization = Symbol('BrowserFSInitialization');
23
- let DefaultBrowserFSInitialization = class DefaultBrowserFSInitialization {
24
- createMountableFileSystem() {
25
- return new Promise(resolve => {
26
- browserfs_1.FileSystem.IndexedDB.Create({}, (e, persistedFS) => {
27
- if (e) {
28
- throw e;
29
- }
30
- if (!persistedFS) {
31
- throw Error('Could not create filesystem');
32
- }
33
- browserfs_1.FileSystem.MountableFileSystem.Create({
34
- '/home': persistedFS
35
- }, (error, mountableFS) => {
36
- if (error) {
37
- throw error;
38
- }
39
- if (!mountableFS) {
40
- throw Error('Could not create filesystem');
41
- }
42
- (0, browserfs_1.initialize)(mountableFS);
43
- resolve(mountableFS);
44
- });
45
- });
46
- });
47
- }
48
- async initializeFS(fs, provider) {
49
- }
50
- };
51
- exports.DefaultBrowserFSInitialization = DefaultBrowserFSInitialization;
52
- exports.DefaultBrowserFSInitialization = DefaultBrowserFSInitialization = tslib_1.__decorate([
53
- (0, inversify_1.injectable)()
54
- ], DefaultBrowserFSInitialization);
55
- //# sourceMappingURL=browserfs-filesystem-initialization.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browserfs-filesystem-initialization.js","sourceRoot":"","sources":["../../src/browser-only/browserfs-filesystem-initialization.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,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,4DAA0D;AAC1D,yCAAmD;AAGtC,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAOlE,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAEvC,yBAAyB;QACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,sBAAU,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE;gBAC/C,IAAI,CAAC,EAAE,CAAC;oBACJ,MAAM,CAAC,CAAC;gBACZ,CAAC;gBACD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACf,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC/C,CAAC;gBACD,sBAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC;oBAClC,OAAO,EAAE,WAAW;iBAEvB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;oBACtB,IAAI,KAAK,EAAE,CAAC;wBACR,MAAM,KAAK,CAAC;oBAChB,CAAC;oBACD,IAAI,CAAC,WAAW,EAAE,CAAC;wBACf,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBAC/C,CAAC;oBACD,IAAA,sBAAU,EAAC,WAAW,CAAC,CAAC;oBACxB,OAAO,CAAC,WAAW,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAY,EAAE,QAAqC;IAEtE,CAAC;CACJ,CAAA;AA/BY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,sBAAU,GAAE;GACA,8BAA8B,CA+B1C"}
@@ -1,46 +0,0 @@
1
- import { FileChange, FileDeleteOptions, FileOpenOptions, FileOverwriteOptions, FileReadStreamOptions, FileSystemProviderCapabilities, FileSystemProviderWithFileReadWriteCapability, FileType, FileUpdateOptions, FileUpdateResult, FileWriteOptions, Stat, WatchOptions } from '../common/files';
2
- import { Event, URI, Disposable, CancellationToken } from '@theia/core';
3
- import { TextDocumentContentChangeEvent } from '@theia/core/shared/vscode-languageserver-protocol';
4
- import { ReadableStreamEvents } from '@theia/core/lib/common/stream';
5
- import type { FileSystem } from 'browserfs/dist/node/core/file_system';
6
- import { BrowserFSInitialization } from './browserfs-filesystem-initialization';
7
- export declare class BrowserFSFileSystemProvider implements FileSystemProviderWithFileReadWriteCapability {
8
- readonly initialization: BrowserFSInitialization;
9
- capabilities: FileSystemProviderCapabilities;
10
- onDidChangeCapabilities: Event<void>;
11
- onDidChangeFile: Event<readonly FileChange[]>;
12
- onFileWatchError: Event<void>;
13
- private mapHandleToPos;
14
- private writeHandles;
15
- private canFlush;
16
- private fs;
17
- private mountableFS;
18
- private initialized;
19
- constructor(initialization: BrowserFSInitialization);
20
- mount(mountPoint: string, fs: FileSystem): Promise<void>;
21
- watch(_resource: URI, _opts: WatchOptions): Disposable;
22
- stat(resource: URI): Promise<Stat>;
23
- mkdir(resource: URI): Promise<void>;
24
- readdir(resource: URI): Promise<[string, FileType][]>;
25
- delete(resource: URI, _opts: FileDeleteOptions): Promise<void>;
26
- rename(from: URI, to: URI, opts: FileOverwriteOptions): Promise<void>;
27
- copy?(from: URI, to: URI, opts: FileOverwriteOptions): Promise<void>;
28
- readFile(resource: URI): Promise<Uint8Array>;
29
- writeFile(resource: URI, content: Uint8Array, opts: FileWriteOptions): Promise<void>;
30
- readFileStream?(resource: URI, opts: FileReadStreamOptions, token: CancellationToken): ReadableStreamEvents<Uint8Array>;
31
- open(resource: URI, opts: FileOpenOptions): Promise<number>;
32
- close(fd: number): Promise<void>;
33
- read(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise<number>;
34
- write(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise<number>;
35
- private doWrite;
36
- private normalizePos;
37
- private updatePos;
38
- access?(resource: URI, mode?: number | undefined): Promise<void>;
39
- fsPath?(resource: URI): Promise<string>;
40
- updateFile?(resource: URI, changes: TextDocumentContentChangeEvent[], opts: FileUpdateOptions): Promise<FileUpdateResult>;
41
- private toFilePath;
42
- private toType;
43
- private promisify;
44
- private toFileSystemProviderError;
45
- }
46
- //# sourceMappingURL=browserfs-filesystem-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browserfs-filesystem-provider.d.ts","sourceRoot":"","sources":["../../src/browser-only/browserfs-filesystem-provider.ts"],"names":[],"mappings":"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"}