@codingame/monaco-vscode-files-service-override 4.3.1 → 4.4.0

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.d.ts CHANGED
@@ -2,7 +2,7 @@ import { IEditorOverrideServices } from 'vscode/vscode/vs/editor/standalone/brow
2
2
  import { Emitter, Event } from 'vscode/vscode/vs/base/common/event';
3
3
  import { Disposable, IDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
4
4
  import { URI } from 'vscode/vscode/vs/base/common/uri';
5
- import { FileType, IStat, IFileSystemProviderWithFileReadWriteCapability, IFileChange, IFileSystemProvider, FileSystemProviderCapabilities, FileChangeType, IFileWriteOptions, IWatchOptions, IFileDeleteOptions, IFileOverwriteOptions } from 'vscode/vscode/vs/platform/files/common/files';
5
+ import { FileType, IStat, IFileSystemProviderWithFileReadWriteCapability, IFileChange, IWatchOptions, IFileWriteOptions, IFileDeleteOptions, IFileOverwriteOptions, IFileSystemProvider, FileSystemProviderCapabilities, FileChangeType } from 'vscode/vscode/vs/platform/files/common/files';
6
6
  export { FileChangeType, FilePermission, FileSystemProviderCapabilities, FileSystemProviderError, FileSystemProviderErrorCode, FileType, IFileChange, IFileDeleteOptions, IFileOverwriteOptions, IFileSystemProviderWithFileReadWriteCapability, IFileWriteOptions, IStat, IWatchOptions } from 'vscode/vscode/vs/platform/files/common/files';
7
7
  import { IndexedDBFileSystemProvider } from './vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.js';
8
8
 
@@ -62,6 +62,27 @@ declare class RegisteredFileSystemProvider extends Disposable implements IFileSy
62
62
  rename(from: URI, to: URI): Promise<void>;
63
63
  mkdir(): Promise<never>;
64
64
  }
65
+ declare class OverlayFileSystemProvider implements IFileSystemProviderWithFileReadWriteCapability {
66
+ private providers;
67
+ register(priority: number, provider: IFileSystemProviderWithFileReadWriteCapability): IDisposable;
68
+ get delegates(): IFileSystemProviderWithFileReadWriteCapability[];
69
+ onDidChangeCapabilities: Event<any>;
70
+ _onDidChangeFile: Emitter<readonly IFileChange[]>;
71
+ onDidChangeFile: Event<readonly IFileChange[]>;
72
+ _onDidChangeOverlays: Emitter<void>;
73
+ onDidChangeOverlays: Event<void>;
74
+ capabilities: number;
75
+ private readFromDelegates;
76
+ private writeToDelegates;
77
+ stat(resource: URI): Promise<IStat>;
78
+ readFile(resource: URI): Promise<Uint8Array>;
79
+ readdir(resource: URI): Promise<[string, FileType][]>;
80
+ watch(resource: URI, opts: IWatchOptions): IDisposable;
81
+ writeFile(resource: URI, content: Uint8Array, opts: IFileWriteOptions): Promise<void>;
82
+ mkdir(resource: URI): Promise<void>;
83
+ delete(resource: URI, opts: IFileDeleteOptions): Promise<void>;
84
+ rename(from: URI, to: URI, opts: IFileOverwriteOptions): Promise<void>;
85
+ }
65
86
  declare class DelegateFileSystemProvider implements IFileSystemProvider {
66
87
  private options;
67
88
  constructor(options: {
@@ -84,6 +105,19 @@ declare class DelegateFileSystemProvider implements IFileSystemProvider {
84
105
  delete(resource: URI, opts: IFileDeleteOptions): Promise<void>;
85
106
  rename(from: URI, to: URI, opts: IFileOverwriteOptions): Promise<void>;
86
107
  }
108
+ declare class EmptyFileSystemProvider implements IFileSystemProviderWithFileReadWriteCapability {
109
+ readFile(): Promise<Uint8Array>;
110
+ writeFile(): Promise<void>;
111
+ capabilities: number;
112
+ onDidChangeCapabilities: Event<any>;
113
+ onDidChangeFile: Event<any>;
114
+ watch(): IDisposable;
115
+ stat(): Promise<IStat>;
116
+ mkdir(): Promise<void>;
117
+ readdir(): Promise<[string, FileType][]>;
118
+ delete(): Promise<void>;
119
+ rename(): Promise<void>;
120
+ }
87
121
  declare namespace CustomSchemas {
88
122
  /**
89
123
  * A schema that is used for models that exist in memory
@@ -106,6 +140,11 @@ declare function initFile(file: URI, content: Uint8Array | string, options?: Par
106
140
  * Can be used to replace memory providers by indexeddb providers before the fileService is initialized
107
141
  */
108
142
  declare function createIndexedDBProviders(): Promise<IndexedDBFileSystemProvider>;
143
+ /**
144
+ * Can be used to replace the default filesystem provider by the HTMLFileSystemProvider before the fileService is initialized
145
+ * Should be called "after" createIndexedDBProviders if used
146
+ */
147
+ declare function registerHTMLFileSystemProvider(): void;
109
148
  /**
110
149
  * Register a file system overlay
111
150
  *
@@ -119,4 +158,4 @@ declare function createIndexedDBProviders(): Promise<IndexedDBFileSystemProvider
119
158
  */
120
159
  declare function registerFileSystemOverlay(priority: number, provider: IFileSystemProviderWithFileReadWriteCapability): IDisposable;
121
160
 
122
- export { CustomSchemas, DelegateFileSystemProvider, IndexedDBFileSystemProvider, RegisteredFile, RegisteredFileSystemProvider, RegisteredMemoryFile, RegisteredReadOnlyFile, createIndexedDBProviders, getServiceOverride as default, initFile, registerCustomProvider, registerExtensionFile, registerFileSystemOverlay };
161
+ export { CustomSchemas, DelegateFileSystemProvider, EmptyFileSystemProvider, IndexedDBFileSystemProvider, OverlayFileSystemProvider, RegisteredFile, RegisteredFileSystemProvider, RegisteredMemoryFile, RegisteredReadOnlyFile, createIndexedDBProviders, getServiceOverride as default, initFile, registerCustomProvider, registerExtensionFile, registerFileSystemOverlay, registerHTMLFileSystemProvider };
package/files.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
+ import { StandaloneServices } from 'vscode/vscode/vs/editor/standalone/browser/standaloneServices';
2
3
  import { SyncDescriptor } from 'vscode/vscode/vs/platform/instantiation/common/descriptors';
3
4
  import { FileService } from './vscode/src/vs/platform/files/common/fileService.js';
4
5
  import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
@@ -10,6 +11,7 @@ export { FileChangeType, FilePermission, FileSystemProviderCapabilities, FileSys
10
11
  import { Disposable, DisposableStore, toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
11
12
  import { extUri, joinPath } from 'vscode/vscode/vs/base/common/resources';
12
13
  import { Emitter, Event } from 'vscode/vscode/vs/base/common/event';
14
+ import { HTMLFileSystemProvider } from 'vscode/vscode/vs/platform/files/browser/htmlFileSystemProvider';
13
15
  export { HTMLFileSystemProvider } from 'vscode/vscode/vs/platform/files/browser/htmlFileSystemProvider';
14
16
  import { Schemas } from 'vscode/vscode/vs/base/common/network';
15
17
  import { IndexedDBFileSystemProvider } from './vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.js';
@@ -264,6 +266,9 @@ class OverlayFileSystemProvider {
264
266
  return ( this.providers.map(({ provider }) => provider));
265
267
  }
266
268
  async readFromDelegates(caller) {
269
+ if (this.delegates.length === 0) {
270
+ throw createFileSystemProviderError('No delegate', FileSystemProviderErrorCode.Unavailable);
271
+ }
267
272
  let firstError;
268
273
  for (const delegate of this.delegates) {
269
274
  try {
@@ -284,6 +289,9 @@ class OverlayFileSystemProvider {
284
289
  throw firstError;
285
290
  }
286
291
  async writeToDelegates(caller) {
292
+ if (this.delegates.length === 0) {
293
+ throw createFileSystemProviderError('No delegate', FileSystemProviderErrorCode.Unavailable);
294
+ }
287
295
  for (const provider of this.delegates) {
288
296
  if (((provider.capabilities & 2048) ) > 0) {
289
297
  continue;
@@ -436,8 +444,39 @@ class DelegateFileSystemProvider {
436
444
  return this.options.delegate.rename(this.options.toDelegate(from), this.options.toDelegate(to), opts);
437
445
  }
438
446
  }
439
- const fileSystemProvider = new OverlayFileSystemProvider();
440
- fileSystemProvider.register(0, new MkdirpOnWriteInMemoryFileSystemProvider());
447
+ class EmptyFileSystemProvider {
448
+ constructor() {
449
+ this.capabilities = 2 | 1024 ;
450
+ this.onDidChangeCapabilities = Event.None;
451
+ this.onDidChangeFile = Event.None;
452
+ }
453
+ async readFile() {
454
+ throw createFileSystemProviderError('Not found', FileSystemProviderErrorCode.FileNotFound);
455
+ }
456
+ async writeFile() {
457
+ throw createFileSystemProviderError('Not allowed', FileSystemProviderErrorCode.NoPermissions);
458
+ }
459
+ watch() {
460
+ return Disposable.None;
461
+ }
462
+ async stat() {
463
+ throw createFileSystemProviderError('Not found', FileSystemProviderErrorCode.FileNotFound);
464
+ }
465
+ async mkdir() {
466
+ throw createFileSystemProviderError('Not allowed', FileSystemProviderErrorCode.NoPermissions);
467
+ }
468
+ async readdir() {
469
+ throw createFileSystemProviderError('Not found', FileSystemProviderErrorCode.FileNotFound);
470
+ }
471
+ async delete() {
472
+ throw createFileSystemProviderError('Not allowed', FileSystemProviderErrorCode.NoPermissions);
473
+ }
474
+ async rename() {
475
+ throw createFileSystemProviderError('Not allowed', FileSystemProviderErrorCode.NoPermissions);
476
+ }
477
+ }
478
+ const overlayFileSystemProvider = new OverlayFileSystemProvider();
479
+ overlayFileSystemProvider.register(0, new MkdirpOnWriteInMemoryFileSystemProvider());
441
480
  const extensionFileSystemProvider = new RegisteredFileSystemProvider(true);
442
481
  const userDataFileSystemProvider = new InMemoryFileSystemProvider();
443
482
  void userDataFileSystemProvider.mkdir(( URI.from({ scheme: Schemas.vscodeUserData, path: '/User/' })));
@@ -450,9 +489,9 @@ const providers = {
450
489
  [logsPath.scheme]: new InMemoryFileSystemProvider(),
451
490
  [Schemas.vscodeUserData]: userDataFileSystemProvider,
452
491
  [Schemas.tmp]: new InMemoryFileSystemProvider(),
453
- [Schemas.file]: fileSystemProvider
492
+ [Schemas.file]: overlayFileSystemProvider
454
493
  };
455
- let MemoryFileService = class MemoryFileService extends FileService {
494
+ let FileServiceOverride = class FileServiceOverride extends FileService {
456
495
  constructor(logService, telemetryService) {
457
496
  super(logService);
458
497
  for (const [scheme, provider] of Object.entries(providers)) {
@@ -460,7 +499,7 @@ let MemoryFileService = class MemoryFileService extends FileService {
460
499
  if (provider instanceof OverlayFileSystemProvider) {
461
500
  provider.onDidChangeOverlays(() => {
462
501
  disposable.dispose();
463
- disposable = this.registerProvider(scheme, fileSystemProvider);
502
+ disposable = this.registerProvider(scheme, provider);
464
503
  });
465
504
  }
466
505
  if (provider instanceof IndexedDBFileSystemProvider) {
@@ -469,16 +508,16 @@ let MemoryFileService = class MemoryFileService extends FileService {
469
508
  }
470
509
  }
471
510
  };
472
- MemoryFileService = __decorate([
511
+ FileServiceOverride = __decorate([
473
512
  ( __param(1, ITelemetryService))
474
- ], MemoryFileService);
513
+ ], FileServiceOverride);
475
514
  const fileLogger = new BufferLogger();
476
515
  registerServiceInitializePreParticipant(async (accessor) => {
477
516
  fileLogger.logger = accessor.get(ILogService);
478
517
  });
479
518
  function getServiceOverride() {
480
519
  return {
481
- [( IFileService.toString())]: new SyncDescriptor(MemoryFileService, [fileLogger], true),
520
+ [( IFileService.toString())]: new SyncDescriptor(FileServiceOverride, [fileLogger], true),
482
521
  [( ITextFileService.toString())]: new SyncDescriptor(BrowserTextFileService, [], true),
483
522
  [( IFilesConfigurationService.toString())]: new SyncDescriptor(FilesConfigurationService, [], true),
484
523
  [( IElevatedFileService.toString())]: new SyncDescriptor(BrowserElevatedFileService, [], true)
@@ -513,17 +552,58 @@ async function initFile(file, content, options) {
513
552
  ...options
514
553
  });
515
554
  }
555
+ let indexedDB;
556
+ const userDataStore = 'vscode-userdata-store';
557
+ const logsStore = 'vscode-logs-store';
558
+ const handlesStore = 'vscode-filehandles-store';
516
559
  async function createIndexedDBProviders() {
517
- const userDataStore = 'vscode-userdata-store';
518
- const logsStore = 'vscode-logs-store';
519
- const indexedDB = await IndexedDB.create('vscode-web-db', 3, [userDataStore, logsStore]);
560
+ indexedDB = await IndexedDB.create('vscode-web-db', 3, [userDataStore, logsStore, handlesStore]);
520
561
  registerCustomProvider(logsPath.scheme, new IndexedDBFileSystemProvider(logsPath.scheme, indexedDB, logsStore, false));
521
562
  const userDataProvider = new IndexedDBFileSystemProvider(Schemas.vscodeUserData, indexedDB, userDataStore, true);
522
563
  registerCustomProvider(Schemas.vscodeUserData, userDataProvider);
523
564
  return userDataProvider;
524
565
  }
566
+ function registerHTMLFileSystemProvider() {
567
+ class LazyLogService {
568
+ get onDidChangeLogLevel() {
569
+ return StandaloneServices.get(ILogService).onDidChangeLogLevel;
570
+ }
571
+ getLevel() {
572
+ return StandaloneServices.get(ILogService).getLevel();
573
+ }
574
+ setLevel(level) {
575
+ StandaloneServices.get(ILogService).setLevel(level);
576
+ }
577
+ trace(message, ...args) {
578
+ StandaloneServices.get(ILogService).trace(message, ...args);
579
+ }
580
+ debug(message, ...args) {
581
+ StandaloneServices.get(ILogService).debug(message, ...args);
582
+ }
583
+ info(message, ...args) {
584
+ StandaloneServices.get(ILogService).info(message, ...args);
585
+ }
586
+ warn(message, ...args) {
587
+ StandaloneServices.get(ILogService).warn(message, ...args);
588
+ }
589
+ error(message, ...args) {
590
+ StandaloneServices.get(ILogService).error(message, ...args);
591
+ }
592
+ flush() {
593
+ StandaloneServices.get(ILogService).flush();
594
+ }
595
+ dispose() {
596
+ StandaloneServices.get(ILogService).dispose();
597
+ }
598
+ }
599
+ registerCustomProvider(Schemas.file, new HTMLFileSystemProvider(indexedDB, handlesStore, new LazyLogService()));
600
+ }
525
601
  function registerFileSystemOverlay(priority, provider) {
526
- return fileSystemProvider.register(priority, provider);
602
+ const overlayProvider = providers.file;
603
+ if (!(overlayProvider instanceof OverlayFileSystemProvider)) {
604
+ throw new Error('The overlay filesystem provider was replaced');
605
+ }
606
+ return overlayProvider.register(priority, provider);
527
607
  }
528
608
 
529
- export { CustomSchemas, DelegateFileSystemProvider, IndexedDBFileSystemProvider, RegisteredFile, RegisteredFileSystemProvider, RegisteredMemoryFile, RegisteredReadOnlyFile, createIndexedDBProviders, getServiceOverride as default, initFile, registerCustomProvider, registerExtensionFile, registerFileSystemOverlay };
609
+ export { CustomSchemas, DelegateFileSystemProvider, EmptyFileSystemProvider, IndexedDBFileSystemProvider, OverlayFileSystemProvider, RegisteredFile, RegisteredFileSystemProvider, RegisteredMemoryFile, RegisteredReadOnlyFile, createIndexedDBProviders, getServiceOverride as default, initFile, registerCustomProvider, registerExtensionFile, registerFileSystemOverlay, registerHTMLFileSystemProvider };
package/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { CustomSchemas, DelegateFileSystemProvider, RegisteredFile, RegisteredFileSystemProvider, RegisteredMemoryFile, RegisteredReadOnlyFile, createIndexedDBProviders, default, initFile, registerCustomProvider, registerExtensionFile, registerFileSystemOverlay } from './files.js';
1
+ export { CustomSchemas, DelegateFileSystemProvider, EmptyFileSystemProvider, OverlayFileSystemProvider, RegisteredFile, RegisteredFileSystemProvider, RegisteredMemoryFile, RegisteredReadOnlyFile, createIndexedDBProviders, default, initFile, registerCustomProvider, registerExtensionFile, registerFileSystemOverlay, registerHTMLFileSystemProvider } from './files.js';
2
2
  export { InMemoryFileSystemProvider } from './vscode/src/vs/platform/files/common/inMemoryFilesystemProvider.js';
3
3
  export { FileChangeType, FilePermission, FileSystemProviderCapabilities, FileSystemProviderError, FileSystemProviderErrorCode, FileType, IFileChange, IFileDeleteOptions, IFileOverwriteOptions, IFileSystemProviderWithFileReadWriteCapability, IFileWriteOptions, IStat, IWatchOptions } from 'vscode/vscode/vs/platform/files/common/files';
4
4
  export { HTMLFileSystemProvider } from './vscode/src/vs/platform/files/browser/htmlFileSystemProvider.js';
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { CustomSchemas, DelegateFileSystemProvider, RegisteredFile, RegisteredFileSystemProvider, RegisteredMemoryFile, RegisteredReadOnlyFile, createIndexedDBProviders, default, initFile, registerCustomProvider, registerExtensionFile, registerFileSystemOverlay } from './files.js';
1
+ export { CustomSchemas, DelegateFileSystemProvider, EmptyFileSystemProvider, OverlayFileSystemProvider, RegisteredFile, RegisteredFileSystemProvider, RegisteredMemoryFile, RegisteredReadOnlyFile, createIndexedDBProviders, default, initFile, registerCustomProvider, registerExtensionFile, registerFileSystemOverlay, registerHTMLFileSystemProvider } from './files.js';
2
2
  export { FileChangeType, FilePermission, FileSystemProviderCapabilities, FileSystemProviderError, FileSystemProviderErrorCode, FileType } from 'vscode/vscode/vs/platform/files/common/files';
3
3
  export { HTMLFileSystemProvider } from 'vscode/vscode/vs/platform/files/browser/htmlFileSystemProvider';
4
4
  export { InMemoryFileSystemProvider } from 'vscode/vscode/vs/platform/files/common/inMemoryFilesystemProvider';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-files-service-override",
3
- "version": "4.3.1",
3
+ "version": "4.4.0",
4
4
  "keywords": [],
5
5
  "author": {
6
6
  "name": "CodinGame",
@@ -18,6 +18,6 @@
18
18
  "module": "index.js",
19
19
  "types": "index.d.ts",
20
20
  "dependencies": {
21
- "vscode": "npm:@codingame/monaco-vscode-api@4.3.1"
21
+ "vscode": "npm:@codingame/monaco-vscode-api@4.4.0"
22
22
  }
23
23
  }