@theia/filesystem 1.55.0-next.97 → 1.56.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.
Files changed (29) hide show
  1. package/lib/browser/filesystem-preferences.d.ts +1 -0
  2. package/lib/browser/filesystem-preferences.d.ts.map +1 -1
  3. package/lib/browser/filesystem-preferences.js +6 -0
  4. package/lib/browser/filesystem-preferences.js.map +1 -1
  5. package/lib/browser-only/browser-only-filesystem-frontend-module.js +7 -7
  6. package/lib/browser-only/browser-only-filesystem-frontend-module.js.map +1 -1
  7. package/lib/browser-only/opfs-filesystem-initialization.d.ts +11 -0
  8. package/lib/browser-only/opfs-filesystem-initialization.d.ts.map +1 -0
  9. package/lib/browser-only/opfs-filesystem-initialization.js +33 -0
  10. package/lib/browser-only/opfs-filesystem-initialization.js.map +1 -0
  11. package/lib/browser-only/opfs-filesystem-provider.d.ts +31 -0
  12. package/lib/browser-only/opfs-filesystem-provider.d.ts.map +1 -0
  13. package/lib/browser-only/opfs-filesystem-provider.js +323 -0
  14. package/lib/browser-only/opfs-filesystem-provider.js.map +1 -0
  15. package/package.json +4 -5
  16. package/src/browser/filesystem-preferences.ts +7 -0
  17. package/src/browser-only/browser-only-filesystem-frontend-module.ts +7 -7
  18. package/src/browser-only/opfs-filesystem-initialization.ts +36 -0
  19. package/src/browser-only/opfs-filesystem-provider.ts +347 -0
  20. package/lib/browser-only/browserfs-filesystem-initialization.d.ts +0 -13
  21. package/lib/browser-only/browserfs-filesystem-initialization.d.ts.map +0 -1
  22. package/lib/browser-only/browserfs-filesystem-initialization.js +0 -55
  23. package/lib/browser-only/browserfs-filesystem-initialization.js.map +0 -1
  24. package/lib/browser-only/browserfs-filesystem-provider.d.ts +0 -46
  25. package/lib/browser-only/browserfs-filesystem-provider.d.ts.map +0 -1
  26. package/lib/browser-only/browserfs-filesystem-provider.js +0 -440
  27. package/lib/browser-only/browserfs-filesystem-provider.js.map +0 -1
  28. package/src/browser-only/browserfs-filesystem-initialization.ts +0 -61
  29. package/src/browser-only/browserfs-filesystem-provider.ts +0 -462
@@ -20,6 +20,7 @@ export interface FileSystemConfiguration {
20
20
  'files.participants.timeout': number;
21
21
  'files.maxFileSizeMB': number;
22
22
  'files.trimTrailingWhitespace': boolean;
23
+ 'files.insertFinalNewline': boolean;
23
24
  'files.maxConcurrentUploads': number;
24
25
  }
25
26
  export declare const FileSystemPreferenceContribution: unique symbol;
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem-preferences.d.ts","sourceRoot":"","sources":["../../src/browser/filesystem-preferences.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAEH,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAEnB,MAAM,qCAAqC,CAAC;AAK7C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,wBAAwB,QAAY,CAAC;AAElD,eAAO,MAAM,gBAAgB,QAIrB,CAAC;AAET,eAAO,MAAM,0BAA0B,EAAE,gBAqExC,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACpC,sBAAsB,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IAC1D,eAAe,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IAC3C,mBAAmB,EAAE,OAAO,CAAA;IAC5B,oBAAoB,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvD,gBAAgB,EAAE,MAAM,CAAA;IACxB,yBAAyB,EAAE,OAAO,CAAA;IAClC,4BAA4B,EAAE,MAAM,CAAA;IACpC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,8BAA8B,EAAE,OAAO,CAAA;IACvC,4BAA4B,EAAE,MAAM,CAAA;CACvC;AAED,eAAO,MAAM,gCAAgC,eAA6C,CAAC;AAC3F,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AACrE,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC,uBAAuB,CAAC,CAAC;AAE7E,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,GAAE,gBAA6C,GAAG,qBAAqB,CAExJ;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAQrE"}
1
+ {"version":3,"file":"filesystem-preferences.d.ts","sourceRoot":"","sources":["../../src/browser/filesystem-preferences.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAEH,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAEnB,MAAM,qCAAqC,CAAC;AAK7C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,wBAAwB,QAAY,CAAC;AAElD,eAAO,MAAM,gBAAgB,QAIrB,CAAC;AAET,eAAO,MAAM,0BAA0B,EAAE,gBA2ExC,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACpC,sBAAsB,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IAC1D,eAAe,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IAC3C,mBAAmB,EAAE,OAAO,CAAA;IAC5B,oBAAoB,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvD,gBAAgB,EAAE,MAAM,CAAA;IACxB,yBAAyB,EAAE,OAAO,CAAA;IAClC,4BAA4B,EAAE,MAAM,CAAA;IACpC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,8BAA8B,EAAE,OAAO,CAAA;IACvC,0BAA0B,EAAE,OAAO,CAAA;IACnC,4BAA4B,EAAE,MAAM,CAAA;CACvC;AAED,eAAO,MAAM,gCAAgC,eAA6C,CAAC;AAC3F,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AACrE,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC,uBAAuB,CAAC,CAAC;AAE7E,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,GAAE,gBAA6C,GAAG,qBAAqB,CAExJ;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAQrE"}
@@ -84,6 +84,12 @@ exports.filesystemPreferenceSchema = {
84
84
  description: nls_1.nls.localizeByDefault('When enabled, will trim trailing whitespace when saving a file.'),
85
85
  scope: 'language-overridable'
86
86
  },
87
+ 'files.insertFinalNewline': {
88
+ type: 'boolean',
89
+ default: false,
90
+ description: nls_1.nls.localizeByDefault('When enabled, insert a final new line at the end of the file when saving it.'),
91
+ scope: 'language-overridable'
92
+ },
87
93
  'files.maxConcurrentUploads': {
88
94
  type: 'integer',
89
95
  default: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem-preferences.js","sourceRoot":"","sources":["../../src/browser/filesystem-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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;;;AAGhF,qEAM6C;AAC7C,qFAAkF;AAClF,oDAAiD;AAEjD,uDAAuD;AAC1C,QAAA,sBAAsB,GAAG,GAAG,CAAC,CAAC,SAAS;AACvC,QAAA,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ;AAE9C,QAAA,gBAAgB,GAAG,OAAO,OAAO,KAAK,QAAQ;IACvD,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;QACrB,CAAC,CAAC,8BAAsB;QACxB,CAAC,CAAC,gCAAwB;IAC9B,CAAC,CAAC,EAAE,CAAC;AAEI,QAAA,0BAA0B,GAAqB;IACxD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,sBAAsB,EAAE;YACpB,mCAAmC;YACnC,WAAW,EAAE,SAAG,CAAC,iBAAiB,CAAC,sYAAsY,CAAC;YAC1a,oBAAoB,EAAE;gBAClB,IAAI,EAAE,SAAS;aAClB;YACD,OAAO,EAAE;gBACL,oBAAoB,EAAE,IAAI;gBAC1B,0BAA0B,EAAE,IAAI;aACnC;YACD,KAAK,EAAE,UAAU;SACpB;QACD,eAAe,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;YACnG,mCAAmC;YACnC,mBAAmB,EAAE,SAAG,CAAC,QAAQ,CAAC,+BAA+B,EAAE,gKAAgK,CAAC;YACpO,KAAK,EAAE,UAAU;SACpB;QACD,mBAAmB,EAAE;YACjB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,SAAG,CAAC,iBAAiB,CAAC,mIAAmI,CAAC;SAC1K;QACD,oBAAoB,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,mBAAmB,EAAE,SAAG,CAAC,iBAAiB;YACtC,mCAAmC;YACnC,mWAAmW,CACtW;SACJ;QACD,yBAAyB,EAAE;YACvB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,mCAAmC;YACnC,WAAW,EAAE,SAAG,CAAC,iBAAiB,CAAC,4NAA4N,EAAE,oBAAoB,CAAC;YACtR,KAAK,EAAE,sBAAsB;YAC7B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,yCAAmB,CAAC,CAAC,MAAM,GAAG,CAAC;SACxD;QACD,4BAA4B,EAAE;YAC1B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,mBAAmB,EAAE,SAAG,CAAC,iBAAiB,CACtC,sIAAsI,CACzI;SACJ;QACD,qBAAqB,EAAE;YACnB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,wBAAgB;YACzB,mBAAmB,EAAE,SAAG,CAAC,QAAQ,CAAC,gCAAgC,EAAE,6DAA6D,CAAC;SACrI;QACD,8BAA8B,EAAE;YAC5B,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,SAAG,CAAC,iBAAiB,CAAC,iEAAiE,CAAC;YACrG,KAAK,EAAE,sBAAsB;SAChC;QACD,4BAA4B,EAAE;YAC1B,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,SAAG,CAAC,QAAQ,CACrB,uCAAuC,EACvC,8HAA8H,CACjI;SACJ;KACJ;CACJ,CAAC;AAeW,QAAA,gCAAgC,GAAG,MAAM,CAAC,kCAAkC,CAAC,CAAC;AAC9E,QAAA,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAGrE,SAAgB,2BAA2B,CAAC,WAA8B,EAAE,SAA2B,kCAA0B;IAC7H,OAAO,IAAA,mCAAqB,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAFD,kEAEC;AAED,SAAgB,yBAAyB,CAAC,IAAqB;IAC3D,IAAI,CAAC,6BAAqB,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QAC7C,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAoB,+BAAiB,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAyB,wCAAgC,CAAC,CAAC;QACjG,OAAO,2BAA2B,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtB,IAAI,CAAC,wCAAgC,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,kCAA0B,EAAE,CAAC,CAAC;IAC/F,IAAI,CAAC,oCAAsB,CAAC,CAAC,SAAS,CAAC,wCAAgC,CAAC,CAAC;AAC7E,CAAC;AARD,8DAQC"}
1
+ {"version":3,"file":"filesystem-preferences.js","sourceRoot":"","sources":["../../src/browser/filesystem-preferences.ts"],"names":[],"mappings":"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"}
@@ -17,19 +17,19 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const inversify_1 = require("@theia/core/shared/inversify");
19
19
  const files_1 = require("../common/files");
20
- const browserfs_filesystem_provider_1 = require("./browserfs-filesystem-provider");
20
+ const opfs_filesystem_provider_1 = require("./opfs-filesystem-provider");
21
21
  const remote_file_system_provider_1 = require("../common/remote-file-system-provider");
22
- const browserfs_filesystem_initialization_1 = require("./browserfs-filesystem-initialization");
22
+ const opfs_filesystem_initialization_1 = require("./opfs-filesystem-initialization");
23
23
  const browser_only_filesystem_provider_server_1 = require("./browser-only-filesystem-provider-server");
24
24
  exports.default = new inversify_1.ContainerModule((bind, _unbind, isBound, rebind) => {
25
- bind(browserfs_filesystem_initialization_1.DefaultBrowserFSInitialization).toSelf();
26
- bind(browserfs_filesystem_provider_1.BrowserFSFileSystemProvider).toSelf();
27
- bind(browserfs_filesystem_initialization_1.BrowserFSInitialization).toService(browserfs_filesystem_initialization_1.DefaultBrowserFSInitialization);
25
+ bind(opfs_filesystem_initialization_1.DefaultOPFSInitialization).toSelf();
26
+ bind(opfs_filesystem_provider_1.OPFSFileSystemProvider).toSelf();
27
+ bind(opfs_filesystem_initialization_1.OPFSInitialization).toService(opfs_filesystem_initialization_1.DefaultOPFSInitialization);
28
28
  if (isBound(files_1.FileSystemProvider)) {
29
- rebind(files_1.FileSystemProvider).to(browserfs_filesystem_provider_1.BrowserFSFileSystemProvider).inSingletonScope();
29
+ rebind(files_1.FileSystemProvider).to(opfs_filesystem_provider_1.OPFSFileSystemProvider).inSingletonScope();
30
30
  }
31
31
  else {
32
- bind(files_1.FileSystemProvider).to(browserfs_filesystem_provider_1.BrowserFSFileSystemProvider).inSingletonScope();
32
+ bind(files_1.FileSystemProvider).to(opfs_filesystem_provider_1.OPFSFileSystemProvider).inSingletonScope();
33
33
  }
34
34
  if (isBound(remote_file_system_provider_1.RemoteFileSystemProvider)) {
35
35
  rebind(remote_file_system_provider_1.RemoteFileSystemServer).to(browser_only_filesystem_provider_server_1.BrowserOnlyFileSystemProviderServer).inSingletonScope();
@@ -1 +1 @@
1
- {"version":3,"file":"browser-only-filesystem-frontend-module.js","sourceRoot":"","sources":["../../src/browser-only/browser-only-filesystem-frontend-module.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;;AAEhF,4DAA+D;AAC/D,2CAAqD;AACrD,mFAA8E;AAC9E,uFAAyG;AACzG,+FAAgH;AAChH,uGAAgG;AAEhG,kBAAe,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAClE,IAAI,CAAC,oEAA8B,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9C,IAAI,CAAC,2DAA2B,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3C,IAAI,CAAC,6DAAuB,CAAC,CAAC,SAAS,CAAC,oEAA8B,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,0BAAkB,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,0BAAkB,CAAC,CAAC,EAAE,CAAC,2DAA2B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAClF,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,0BAAkB,CAAC,CAAC,EAAE,CAAC,2DAA2B,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,OAAO,CAAC,sDAAwB,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,oDAAsB,CAAC,CAAC,EAAE,CAAC,6EAAmC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9F,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,oDAAsB,CAAC,CAAC,EAAE,CAAC,6EAAmC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5F,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"browser-only-filesystem-frontend-module.js","sourceRoot":"","sources":["../../src/browser-only/browser-only-filesystem-frontend-module.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;;AAEhF,4DAA+D;AAC/D,2CAAqD;AACrD,yEAAoE;AACpE,uFAAyG;AACzG,qFAAiG;AACjG,uGAAgG;AAEhG,kBAAe,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAClE,IAAI,CAAC,0DAAyB,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,IAAI,CAAC,iDAAsB,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC,IAAI,CAAC,mDAAkB,CAAC,CAAC,SAAS,CAAC,0DAAyB,CAAC,CAAC;IAC9D,IAAI,OAAO,CAAC,0BAAkB,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,0BAAkB,CAAC,CAAC,EAAE,CAAC,iDAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC7E,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,0BAAkB,CAAC,CAAC,EAAE,CAAC,iDAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,CAAC,sDAAwB,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,oDAAsB,CAAC,CAAC,EAAE,CAAC,6EAAmC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9F,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,oDAAsB,CAAC,CAAC,EAAE,CAAC,6EAAmC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5F,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { OPFSFileSystemProvider } from './opfs-filesystem-provider';
2
+ export declare const OPFSInitialization: unique symbol;
3
+ export interface OPFSInitialization {
4
+ getRootDirectory(): Promise<FileSystemDirectoryHandle>;
5
+ initializeFS(provider: OPFSFileSystemProvider): Promise<void>;
6
+ }
7
+ export declare class DefaultOPFSInitialization implements OPFSInitialization {
8
+ getRootDirectory(): Promise<FileSystemDirectoryHandle>;
9
+ initializeFS(provider: OPFSFileSystemProvider): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=opfs-filesystem-initialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opfs-filesystem-initialization.d.ts","sourceRoot":"","sources":["../../src/browser-only/opfs-filesystem-initialization.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGzE,eAAO,MAAM,kBAAkB,eAA+B,CAAC;AAC/D,MAAM,WAAW,kBAAkB;IAC/B,gBAAgB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAAA;IACtD,YAAY,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,qBACa,yBAA0B,YAAW,kBAAkB;IAEhE,gBAAgB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAIhD,YAAY,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtE"}
@@ -0,0 +1,33 @@
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.DefaultOPFSInitialization = exports.OPFSInitialization = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ exports.OPFSInitialization = Symbol('OPFSInitialization');
22
+ let DefaultOPFSInitialization = class DefaultOPFSInitialization {
23
+ getRootDirectory() {
24
+ return navigator.storage.getDirectory();
25
+ }
26
+ async initializeFS(provider) {
27
+ }
28
+ };
29
+ exports.DefaultOPFSInitialization = DefaultOPFSInitialization;
30
+ exports.DefaultOPFSInitialization = DefaultOPFSInitialization = tslib_1.__decorate([
31
+ (0, inversify_1.injectable)()
32
+ ], DefaultOPFSInitialization);
33
+ //# sourceMappingURL=opfs-filesystem-initialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opfs-filesystem-initialization.js","sourceRoot":"","sources":["../../src/browser-only/opfs-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;;;;AAGhF,4DAA0D;AAE7C,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAOxD,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAElC,gBAAgB;QACZ,OAAO,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgC;IAEnD,CAAC;CACJ,CAAA;AATY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,sBAAU,GAAE;GACA,yBAAyB,CASrC"}
@@ -0,0 +1,31 @@
1
+ import { FileChange, FileDeleteOptions, FileOverwriteOptions, FileSystemProviderCapabilities, FileSystemProviderWithFileReadWriteCapability, FileType, FileWriteOptions, Stat, WatchOptions } from '../common/files';
2
+ import { Event, URI, Disposable } from '@theia/core';
3
+ import { OPFSInitialization } from './opfs-filesystem-initialization';
4
+ export declare class OPFSFileSystemProvider implements FileSystemProviderWithFileReadWriteCapability {
5
+ capabilities: FileSystemProviderCapabilities;
6
+ onDidChangeCapabilities: Event<void>;
7
+ private readonly onDidChangeFileEmitter;
8
+ readonly onDidChangeFile: Event<readonly FileChange[]>;
9
+ onFileWatchError: Event<void>;
10
+ protected readonly initialization: OPFSInitialization;
11
+ private directoryHandle;
12
+ private initialized;
13
+ protected init(): void;
14
+ watch(_resource: URI, _opts: WatchOptions): Disposable;
15
+ exists(resource: URI): Promise<boolean>;
16
+ stat(resource: URI): Promise<Stat>;
17
+ mkdir(resource: URI): Promise<void>;
18
+ readdir(resource: URI): Promise<[string, FileType][]>;
19
+ delete(resource: URI, _opts: FileDeleteOptions): Promise<void>;
20
+ rename(from: URI, to: URI, opts: FileOverwriteOptions): Promise<void>;
21
+ readFile(resource: URI): Promise<Uint8Array>;
22
+ writeFile(resource: URI, content: Uint8Array, opts: FileWriteOptions): Promise<void>;
23
+ /**
24
+ * Returns the FileSystemHandle for the given resource given by a URI.
25
+ * @param resource URI/path of the resource
26
+ * @param options Options for the creation of the handle while traversing the path
27
+ * @returns FileSystemHandle for the given resource
28
+ */
29
+ private toFileSystemHandle;
30
+ }
31
+ //# sourceMappingURL=opfs-filesystem-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opfs-filesystem-provider.d.ts","sourceRoot":"","sources":["../../src/browser-only/opfs-filesystem-provider.ts"],"names":[],"mappings":"AAiBA,OAAO,EACH,UAAU,EAAkB,iBAAiB,EAC7C,oBAAoB,EAAE,8BAA8B,EAGpD,6CAA6C,EAC7C,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EACjD,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAW,KAAK,EAAE,GAAG,EAAE,UAAU,EAAQ,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAQtE,qBACa,sBAAuB,YAAW,6CAA6C;IACxF,YAAY,EAAE,8BAA8B,CAAgD;IAC5F,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAc;IAElD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAwC;IAC/E,QAAQ,CAAC,eAAe,+BAAqC;IAC7D,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAc;IAG3C,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAEtD,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,WAAW,CAAgB;IAGnC,SAAS,CAAC,IAAI,IAAI,IAAI;IAgBtB,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,GAAG,UAAU;IAIhD,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAUvC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BlC,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnC,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;IAyBrD,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9D,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BrE,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAkB5C,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC1F;;;;;OAKG;YACW,kBAAkB;CAKnC"}
@@ -0,0 +1,323 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2024 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.OPFSFileSystemProvider = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const files_1 = require("../common/files");
22
+ const core_1 = require("@theia/core");
23
+ const opfs_filesystem_initialization_1 = require("./opfs-filesystem-initialization");
24
+ let OPFSFileSystemProvider = class OPFSFileSystemProvider {
25
+ constructor() {
26
+ this.capabilities = 2 /* FileSystemProviderCapabilities.FileReadWrite */;
27
+ this.onDidChangeCapabilities = core_1.Event.None;
28
+ this.onDidChangeFileEmitter = new core_1.Emitter();
29
+ this.onDidChangeFile = this.onDidChangeFileEmitter.event;
30
+ this.onFileWatchError = core_1.Event.None;
31
+ }
32
+ init() {
33
+ const setup = async () => {
34
+ this.directoryHandle = await this.initialization.getRootDirectory();
35
+ await this.initialization.initializeFS(new Proxy(this, {
36
+ get(target, prop, receiver) {
37
+ if (prop === 'initialized') {
38
+ return Promise.resolve(true);
39
+ }
40
+ return Reflect.get(target, prop, receiver);
41
+ }
42
+ }));
43
+ return true;
44
+ };
45
+ this.initialized = setup();
46
+ }
47
+ watch(_resource, _opts) {
48
+ return core_1.Disposable.NULL;
49
+ }
50
+ async exists(resource) {
51
+ try {
52
+ await this.initialized;
53
+ await this.toFileSystemHandle(resource);
54
+ return true;
55
+ }
56
+ catch (error) {
57
+ return false;
58
+ }
59
+ }
60
+ async stat(resource) {
61
+ try {
62
+ await this.initialized;
63
+ const handle = await this.toFileSystemHandle(resource);
64
+ if (handle.kind === 'file') {
65
+ const fileHandle = handle;
66
+ const file = await fileHandle.getFile();
67
+ return {
68
+ type: files_1.FileType.File,
69
+ ctime: file.lastModified,
70
+ mtime: file.lastModified,
71
+ size: file.size
72
+ };
73
+ }
74
+ else if (handle.kind === 'directory') {
75
+ return {
76
+ type: files_1.FileType.Directory,
77
+ ctime: 0,
78
+ mtime: 0,
79
+ size: 0
80
+ };
81
+ }
82
+ throw (0, files_1.createFileSystemProviderError)('Unknown file handle error', files_1.FileSystemProviderErrorCode.Unknown);
83
+ }
84
+ catch (error) {
85
+ throw (0, files_1.createFileSystemProviderError)(`Error while accessing resource ${resource.toString()}`, files_1.FileSystemProviderErrorCode.Unknown);
86
+ }
87
+ }
88
+ async mkdir(resource) {
89
+ await this.initialized;
90
+ try {
91
+ await this.toFileSystemHandle(resource, { create: true, isDirectory: true });
92
+ this.onDidChangeFileEmitter.fire([{ resource, type: 1 /* FileChangeType.ADDED */ }]);
93
+ }
94
+ catch (error) {
95
+ throw toFileSystemProviderError(error, true);
96
+ }
97
+ }
98
+ async readdir(resource) {
99
+ await this.initialized;
100
+ try {
101
+ // Get the directory handle from the directoryHandle
102
+ const directoryHandle = await this.toFileSystemHandle(resource, { create: false, isDirectory: true });
103
+ const result = [];
104
+ // Iterate through the entries in the directory (files and subdirectories)
105
+ for await (const [name, handle] of directoryHandle.entries()) {
106
+ // Determine the type of the entry (file or directory)
107
+ if (handle.kind === 'file') {
108
+ result.push([name, files_1.FileType.File]);
109
+ }
110
+ else if (handle.kind === 'directory') {
111
+ result.push([name, files_1.FileType.Directory]);
112
+ }
113
+ }
114
+ return result;
115
+ }
116
+ catch (error) {
117
+ throw toFileSystemProviderError(error, true);
118
+ }
119
+ }
120
+ async delete(resource, _opts) {
121
+ await this.initialized;
122
+ try {
123
+ const parentURI = resource.parent;
124
+ const parentHandle = await this.toFileSystemHandle(parentURI, { create: false, isDirectory: true });
125
+ if (parentHandle.kind !== 'directory') {
126
+ throw (0, files_1.createFileSystemProviderError)(new Error('Parent is not a directory'), files_1.FileSystemProviderErrorCode.FileNotADirectory);
127
+ }
128
+ const name = resource.path.base;
129
+ return parentHandle.removeEntry(name, { recursive: _opts.recursive });
130
+ }
131
+ catch (error) {
132
+ throw toFileSystemProviderError(error);
133
+ }
134
+ finally {
135
+ this.onDidChangeFileEmitter.fire([{ resource, type: 2 /* FileChangeType.DELETED */ }]);
136
+ }
137
+ }
138
+ async rename(from, to, opts) {
139
+ await this.initialized;
140
+ try {
141
+ const fromHandle = await this.toFileSystemHandle(from);
142
+ // Check whether the source is a file or directory
143
+ if (fromHandle.kind === 'directory') {
144
+ // Create the new directory and get the handle
145
+ await this.mkdir(to);
146
+ const toHandle = await this.toFileSystemHandle(to);
147
+ await copyDirectoryContents(fromHandle, toHandle);
148
+ // Delete the old directory
149
+ await this.delete(from, { recursive: true, useTrash: false });
150
+ }
151
+ else {
152
+ const content = await this.readFile(from);
153
+ await this.writeFile(to, content, { create: true, overwrite: opts.overwrite });
154
+ await this.delete(from, { recursive: true, useTrash: false });
155
+ }
156
+ this.onDidChangeFileEmitter.fire([{ resource: to, type: 1 /* FileChangeType.ADDED */ }]);
157
+ }
158
+ catch (error) {
159
+ throw toFileSystemProviderError(error);
160
+ }
161
+ }
162
+ async readFile(resource) {
163
+ await this.initialized;
164
+ try {
165
+ // Get the file handle from the directoryHandle
166
+ const fileHandle = await this.toFileSystemHandle(resource, { create: false, isDirectory: false });
167
+ // Get the file itself (which includes the content)
168
+ const file = await fileHandle.getFile();
169
+ // Read the file as an ArrayBuffer and convert it to Uint8Array
170
+ const arrayBuffer = await file.arrayBuffer();
171
+ return new Uint8Array(arrayBuffer);
172
+ }
173
+ catch (error) {
174
+ throw toFileSystemProviderError(error, false);
175
+ }
176
+ }
177
+ async writeFile(resource, content, opts) {
178
+ await this.initialized;
179
+ let writeableHandle = undefined;
180
+ try {
181
+ // Validate target unless { create: true, overwrite: true }
182
+ if (!opts.create || !opts.overwrite) {
183
+ const fileExists = await this.stat(resource).then(() => true, () => false);
184
+ if (fileExists) {
185
+ if (!opts.overwrite) {
186
+ throw (0, files_1.createFileSystemProviderError)('File already exists', files_1.FileSystemProviderErrorCode.FileExists);
187
+ }
188
+ }
189
+ else {
190
+ if (!opts.create) {
191
+ throw (0, files_1.createFileSystemProviderError)('File does not exist', files_1.FileSystemProviderErrorCode.FileNotFound);
192
+ }
193
+ }
194
+ }
195
+ const handle = await this.toFileSystemHandle(resource, { create: true, isDirectory: false });
196
+ // Open
197
+ writeableHandle = await (handle === null || handle === void 0 ? void 0 : handle.createWritable());
198
+ // Write content at once
199
+ await (writeableHandle === null || writeableHandle === void 0 ? void 0 : writeableHandle.write(content));
200
+ this.onDidChangeFileEmitter.fire([{ resource: resource, type: 0 /* FileChangeType.UPDATED */ }]);
201
+ }
202
+ catch (error) {
203
+ throw toFileSystemProviderError(error, false);
204
+ }
205
+ finally {
206
+ if (typeof writeableHandle !== 'undefined') {
207
+ await writeableHandle.close();
208
+ }
209
+ }
210
+ }
211
+ /**
212
+ * Returns the FileSystemHandle for the given resource given by a URI.
213
+ * @param resource URI/path of the resource
214
+ * @param options Options for the creation of the handle while traversing the path
215
+ * @returns FileSystemHandle for the given resource
216
+ */
217
+ async toFileSystemHandle(resource, options) {
218
+ const pathParts = resource.path.toString().split(core_1.Path.separator).filter(Boolean);
219
+ return recursiveFileSystemHandle(this.directoryHandle, pathParts, options);
220
+ }
221
+ };
222
+ exports.OPFSFileSystemProvider = OPFSFileSystemProvider;
223
+ tslib_1.__decorate([
224
+ (0, inversify_1.inject)(opfs_filesystem_initialization_1.OPFSInitialization),
225
+ tslib_1.__metadata("design:type", Object)
226
+ ], OPFSFileSystemProvider.prototype, "initialization", void 0);
227
+ tslib_1.__decorate([
228
+ (0, inversify_1.postConstruct)(),
229
+ tslib_1.__metadata("design:type", Function),
230
+ tslib_1.__metadata("design:paramtypes", []),
231
+ tslib_1.__metadata("design:returntype", void 0)
232
+ ], OPFSFileSystemProvider.prototype, "init", null);
233
+ exports.OPFSFileSystemProvider = OPFSFileSystemProvider = tslib_1.__decorate([
234
+ (0, inversify_1.injectable)()
235
+ ], OPFSFileSystemProvider);
236
+ // #region Helper functions
237
+ async function recursiveFileSystemHandle(handle, pathParts, options) {
238
+ // We reached the end of the path, this happens only when not creating
239
+ if (pathParts.length === 0) {
240
+ return handle;
241
+ }
242
+ // If there are parts left, the handle must be a directory
243
+ if (handle.kind !== 'directory') {
244
+ throw files_1.FileSystemProviderErrorCode.FileNotADirectory;
245
+ }
246
+ const dirHandle = handle;
247
+ // We need to create it and thus we need to stop early to create the file or directory
248
+ if (pathParts.length === 1 && (options === null || options === void 0 ? void 0 : options.create)) {
249
+ if (options === null || options === void 0 ? void 0 : options.isDirectory) {
250
+ return dirHandle.getDirectoryHandle(pathParts[0], { create: options.create });
251
+ }
252
+ else {
253
+ return dirHandle.getFileHandle(pathParts[0], { create: options.create });
254
+ }
255
+ }
256
+ // Continue to resolve the path
257
+ const part = pathParts.shift();
258
+ for await (const entry of dirHandle.entries()) {
259
+ // Check the entry name in the current directory
260
+ if (entry[0] === part) {
261
+ return recursiveFileSystemHandle(entry[1], pathParts, options);
262
+ }
263
+ }
264
+ // If we haven't found the part, we need to create it along the way
265
+ if (options === null || options === void 0 ? void 0 : options.create) {
266
+ const newHandle = await dirHandle.getDirectoryHandle(part, { create: true });
267
+ return recursiveFileSystemHandle(newHandle, pathParts, options);
268
+ }
269
+ throw files_1.FileSystemProviderErrorCode.FileNotFound;
270
+ }
271
+ // Function to copy directory contents recursively
272
+ async function copyDirectoryContents(sourceHandle, destinationHandle) {
273
+ for await (const [name, handle] of sourceHandle.entries()) {
274
+ if (handle.kind === 'file') {
275
+ const file = await handle.getFile();
276
+ const newFileHandle = await destinationHandle.getFileHandle(name, { create: true });
277
+ const writable = await newFileHandle.createWritable();
278
+ try {
279
+ await writable.write(await file.arrayBuffer());
280
+ }
281
+ finally {
282
+ await writable.close();
283
+ }
284
+ }
285
+ else if (handle.kind === 'directory') {
286
+ const newSubDirHandle = await destinationHandle.getDirectoryHandle(name, { create: true });
287
+ await copyDirectoryContents(handle, newSubDirHandle);
288
+ }
289
+ }
290
+ }
291
+ function toFileSystemProviderError(error, is_dir) {
292
+ if (error instanceof files_1.FileSystemProviderError) {
293
+ return error; // avoid double conversion
294
+ }
295
+ let code;
296
+ switch (error.name) {
297
+ case 'NotFoundError':
298
+ code = files_1.FileSystemProviderErrorCode.FileNotFound;
299
+ break;
300
+ case 'InvalidModificationError':
301
+ code = files_1.FileSystemProviderErrorCode.FileExists;
302
+ break;
303
+ case 'NotAllowedError':
304
+ code = files_1.FileSystemProviderErrorCode.NoPermissions;
305
+ break;
306
+ case 'TypeMismatchError':
307
+ if (!is_dir) {
308
+ code = files_1.FileSystemProviderErrorCode.FileIsADirectory;
309
+ }
310
+ else {
311
+ code = files_1.FileSystemProviderErrorCode.FileNotADirectory;
312
+ }
313
+ break;
314
+ case 'QuotaExceededError':
315
+ code = files_1.FileSystemProviderErrorCode.FileTooLarge;
316
+ break;
317
+ default:
318
+ code = files_1.FileSystemProviderErrorCode.Unknown;
319
+ }
320
+ return (0, files_1.createFileSystemProviderError)(error, code);
321
+ }
322
+ // #endregion
323
+ //# sourceMappingURL=opfs-filesystem-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opfs-filesystem-provider.js","sourceRoot":"","sources":["../../src/browser-only/opfs-filesystem-provider.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;;;;AAEhF,4DAAiF;AACjF,2CAOyB;AACzB,sCAAoE;AACpE,qFAAsE;AAS/D,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAA5B;QACH,iBAAY,wDAAgF;QAC5F,4BAAuB,GAAgB,YAAK,CAAC,IAAI,CAAC;QAEjC,2BAAsB,GAAG,IAAI,cAAO,EAAyB,CAAC;QACtE,oBAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAC7D,qBAAgB,GAAgB,YAAK,CAAC,IAAI,CAAC;IAqN/C,CAAC;IA5Ma,IAAI;QACV,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;YACpC,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;YACpE,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE;gBACnD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;oBACtB,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;wBACzB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjC,CAAC;oBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC/C,CAAC;aACJ,CAAC,CAAC,CAAC;YACJ,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAc,EAAE,KAAmB;QACrC,OAAO,iBAAU,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAa;QACtB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAC;YACvB,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAa;QACpB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAC;YAEvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAEvD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,MAA8B,CAAC;gBAClD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxC,OAAO;oBACH,IAAI,EAAE,gBAAQ,CAAC,IAAI;oBACnB,KAAK,EAAE,IAAI,CAAC,YAAY;oBACxB,KAAK,EAAE,IAAI,CAAC,YAAY;oBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAClB,CAAC;YACN,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACrC,OAAO;oBACH,IAAI,EAAE,gBAAQ,CAAC,SAAS;oBACxB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,IAAI,EAAE,CAAC;iBACV,CAAC;YACN,CAAC;YAED,MAAM,IAAA,qCAA6B,EAAC,2BAA2B,EAAE,mCAA2B,CAAC,OAAO,CAAC,CAAC;QAE1G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAA,qCAA6B,EAAC,kCAAkC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,mCAA2B,CAAC,OAAO,CAAC,CAAC;QACtI,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAa;QACrB,MAAM,IAAI,CAAC,WAAW,CAAC;QACvB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,8BAAsB,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAa;QACvB,MAAM,IAAI,CAAC,WAAW,CAAC;QAEvB,IAAI,CAAC;YACD,oDAAoD;YACpD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAA8B,CAAC;YAEnI,MAAM,MAAM,GAAyB,EAAE,CAAC;YAExC,0EAA0E;YAC1E,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3D,sDAAsD;gBACtD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,gBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvC,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,gBAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC;YAED,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAa,EAAE,KAAwB;QAChD,MAAM,IAAI,CAAC,WAAW,CAAC;QACvB,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;YAClC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACpG,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,MAAM,IAAA,qCAA6B,EAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,EAAE,mCAA2B,CAAC,iBAAiB,CAAC,CAAC;YAC/H,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,OAAQ,YAA0C,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACzG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,gCAAwB,EAAE,CAAC,CAAC,CAAC;QACnF,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAS,EAAE,EAAO,EAAE,IAA0B;QACvD,MAAM,IAAI,CAAC,WAAW,CAAC;QAEvB,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACvD,kDAAkD;YAClD,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAClC,8CAA8C;gBAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAA8B,CAAC;gBAChF,MAAM,qBAAqB,CAAC,UAAuC,EAAE,QAAQ,CAAC,CAAC;gBAE/E,2BAA2B;gBAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC/E,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,8BAAsB,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAa;QACxB,MAAM,IAAI,CAAC,WAAW,CAAC;QAEvB,IAAI,CAAC;YACD,+CAA+C;YAC/C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAyB,CAAC;YAE1H,mDAAmD;YACnD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;YAExC,+DAA+D;YAC/D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAa,EAAE,OAAmB,EAAE,IAAsB;QACtE,MAAM,IAAI,CAAC,WAAW,CAAC;QACvB,IAAI,eAAe,GAA6C,SAAS,CAAC;QAC1E,IAAI,CAAC;YACD,2DAA2D;YAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC3E,IAAI,UAAU,EAAE,CAAC;oBACb,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;wBAClB,MAAM,IAAA,qCAA6B,EAAC,qBAAqB,EAAE,mCAA2B,CAAC,UAAU,CAAC,CAAC;oBACvG,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBACf,MAAM,IAAA,qCAA6B,EAAC,qBAAqB,EAAE,mCAA2B,CAAC,YAAY,CAAC,CAAC;oBACzG,CAAC;gBACL,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAyB,CAAC;YAErH,OAAO;YACP,eAAe,GAAG,MAAM,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,EAAE,CAAA,CAAC;YAEjD,wBAAwB;YACxB,MAAM,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,CAAC,OAAO,CAAC,CAAA,CAAC;YAEtC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,gCAAwB,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;gBAAS,CAAC;YACP,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE,CAAC;gBACzC,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,kBAAkB,CAAC,QAAa,EAAE,OAAuC;QACnF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,WAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEjF,OAAO,yBAAyB,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;CACJ,CAAA;AA3NY,wDAAsB;AASZ;IADlB,IAAA,kBAAM,EAAC,mDAAkB,CAAC;;8DAC2B;AAM5C;IADT,IAAA,yBAAa,GAAE;;;;kDAef;iCA7BQ,sBAAsB;IADlC,IAAA,sBAAU,GAAE;GACA,sBAAsB,CA2NlC;AAED,2BAA2B;AAC3B,KAAK,UAAU,yBAAyB,CAAC,MAAwB,EAAE,SAAmB,EAAE,OAAuC;IAC3H,sEAAsE;IACtE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,0DAA0D;IAC1D,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,MAAM,mCAA2B,CAAC,iBAAiB,CAAC;IACxD,CAAC;IACD,MAAM,SAAS,GAAG,MAAmC,CAAC;IACtD,sFAAsF;IACtF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,EAAE,CAAC;QAC5C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAClF,CAAC;aAAM,CAAC;YACJ,OAAO,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAG,CAAC;IAChC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,gDAAgD;QAChD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,OAAO,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,mCAA2B,CAAC,YAAY,CAAC;AACnD,CAAC;AAED,kDAAkD;AAClD,KAAK,UAAU,qBAAqB,CAAC,YAAuC,EAAE,iBAA4C;IACtH,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAO,MAA+B,CAAC,OAAO,EAAE,CAAC;YAC9D,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACpF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,CAAC;YACtD,IAAI,CAAC;gBACD,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACnD,CAAC;oBAAS,CAAC;gBACP,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC3B,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACrC,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3F,MAAM,qBAAqB,CAAC,MAAmC,EAAE,eAAe,CAAC,CAAC;QACtF,CAAC;IACL,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAmB,EAAE,MAAgB;IACpE,IAAI,KAAK,YAAY,+BAAuB,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,CAAC,0BAA0B;IAC5C,CAAC;IAED,IAAI,IAAiC,CAAC;IACtC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,eAAe;YAChB,IAAI,GAAG,mCAA2B,CAAC,YAAY,CAAC;YAChD,MAAM;QACV,KAAK,0BAA0B;YAC3B,IAAI,GAAG,mCAA2B,CAAC,UAAU,CAAC;YAC9C,MAAM;QACV,KAAK,iBAAiB;YAClB,IAAI,GAAG,mCAA2B,CAAC,aAAa,CAAC;YACjD,MAAM;QACV,KAAK,mBAAmB;YACpB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,IAAI,GAAG,mCAA2B,CAAC,gBAAgB,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACJ,IAAI,GAAG,mCAA2B,CAAC,iBAAiB,CAAC;YACzD,CAAC;YAED,MAAM;QACV,KAAK,oBAAoB;YACrB,IAAI,GAAG,mCAA2B,CAAC,YAAY,CAAC;YAChD,MAAM;QACV;YACI,IAAI,GAAG,mCAA2B,CAAC,OAAO,CAAC;IACnD,CAAC;IAED,OAAO,IAAA,qCAA6B,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AACD,aAAa"}
package/package.json CHANGED
@@ -1,15 +1,14 @@
1
1
  {
2
2
  "name": "@theia/filesystem",
3
- "version": "1.55.0-next.97+52cad8a35",
3
+ "version": "1.56.0",
4
4
  "description": "Theia - FileSystem Extension",
5
5
  "dependencies": {
6
- "@theia/core": "1.55.0-next.97+52cad8a35",
6
+ "@theia/core": "1.56.0",
7
7
  "@types/body-parser": "^1.17.0",
8
8
  "@types/multer": "^1.4.7",
9
9
  "@types/tar-fs": "^1.16.1",
10
10
  "async-mutex": "^0.3.1",
11
11
  "body-parser": "^1.18.3",
12
- "browserfs": "^1.4.3",
13
12
  "http-status-codes": "^1.3.0",
14
13
  "minimatch": "^5.1.0",
15
14
  "multer": "1.4.4-lts.1",
@@ -72,10 +71,10 @@
72
71
  "watch": "theiaext watch"
73
72
  },
74
73
  "devDependencies": {
75
- "@theia/ext-scripts": "1.55.0"
74
+ "@theia/ext-scripts": "1.56.0"
76
75
  },
77
76
  "nyc": {
78
77
  "extends": "../../configs/nyc.json"
79
78
  },
80
- "gitHead": "52cad8a35c3c86231f1b3efc74608bd159840a69"
79
+ "gitHead": "3b4498f8f1c66be688847418fcc35595282671dc"
81
80
  }
@@ -95,6 +95,12 @@ export const filesystemPreferenceSchema: PreferenceSchema = {
95
95
  description: nls.localizeByDefault('When enabled, will trim trailing whitespace when saving a file.'),
96
96
  scope: 'language-overridable'
97
97
  },
98
+ 'files.insertFinalNewline': {
99
+ type: 'boolean',
100
+ default: false,
101
+ description: nls.localizeByDefault('When enabled, insert a final new line at the end of the file when saving it.'),
102
+ scope: 'language-overridable'
103
+ },
98
104
  'files.maxConcurrentUploads': {
99
105
  type: 'integer',
100
106
  default: 1,
@@ -116,6 +122,7 @@ export interface FileSystemConfiguration {
116
122
  'files.participants.timeout': number
117
123
  'files.maxFileSizeMB': number
118
124
  'files.trimTrailingWhitespace': boolean
125
+ 'files.insertFinalNewline': boolean
119
126
  'files.maxConcurrentUploads': number
120
127
  }
121
128
 
@@ -16,19 +16,19 @@
16
16
 
17
17
  import { ContainerModule } from '@theia/core/shared/inversify';
18
18
  import { FileSystemProvider } from '../common/files';
19
- import { BrowserFSFileSystemProvider } from './browserfs-filesystem-provider';
19
+ import { OPFSFileSystemProvider } from './opfs-filesystem-provider';
20
20
  import { RemoteFileSystemProvider, RemoteFileSystemServer } from '../common/remote-file-system-provider';
21
- import { BrowserFSInitialization, DefaultBrowserFSInitialization } from './browserfs-filesystem-initialization';
21
+ import { OPFSInitialization, DefaultOPFSInitialization } from './opfs-filesystem-initialization';
22
22
  import { BrowserOnlyFileSystemProviderServer } from './browser-only-filesystem-provider-server';
23
23
 
24
24
  export default new ContainerModule((bind, _unbind, isBound, rebind) => {
25
- bind(DefaultBrowserFSInitialization).toSelf();
26
- bind(BrowserFSFileSystemProvider).toSelf();
27
- bind(BrowserFSInitialization).toService(DefaultBrowserFSInitialization);
25
+ bind(DefaultOPFSInitialization).toSelf();
26
+ bind(OPFSFileSystemProvider).toSelf();
27
+ bind(OPFSInitialization).toService(DefaultOPFSInitialization);
28
28
  if (isBound(FileSystemProvider)) {
29
- rebind(FileSystemProvider).to(BrowserFSFileSystemProvider).inSingletonScope();
29
+ rebind(FileSystemProvider).to(OPFSFileSystemProvider).inSingletonScope();
30
30
  } else {
31
- bind(FileSystemProvider).to(BrowserFSFileSystemProvider).inSingletonScope();
31
+ bind(FileSystemProvider).to(OPFSFileSystemProvider).inSingletonScope();
32
32
  }
33
33
  if (isBound(RemoteFileSystemProvider)) {
34
34
  rebind(RemoteFileSystemServer).to(BrowserOnlyFileSystemProviderServer).inSingletonScope();
@@ -0,0 +1,36 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2023 EclipseSource and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import type { OPFSFileSystemProvider } from './opfs-filesystem-provider';
18
+ import { injectable } from '@theia/core/shared/inversify';
19
+
20
+ export const OPFSInitialization = Symbol('OPFSInitialization');
21
+ export interface OPFSInitialization {
22
+ getRootDirectory(): Promise<FileSystemDirectoryHandle>
23
+ initializeFS(provider: OPFSFileSystemProvider): Promise<void>;
24
+ }
25
+
26
+ @injectable()
27
+ export class DefaultOPFSInitialization implements OPFSInitialization {
28
+
29
+ getRootDirectory(): Promise<FileSystemDirectoryHandle> {
30
+ return navigator.storage.getDirectory();
31
+ }
32
+
33
+ async initializeFS(provider: OPFSFileSystemProvider): Promise<void> {
34
+
35
+ }
36
+ }