@theia/filesystem 1.65.0-next.55 → 1.65.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 (117) hide show
  1. package/lib/browser/download/file-download-command-contribution.d.ts +1 -1
  2. package/lib/browser/download/file-download-command-contribution.d.ts.map +1 -1
  3. package/lib/browser/download/file-download-command-contribution.js +3 -3
  4. package/lib/browser/download/file-download-command-contribution.js.map +1 -1
  5. package/lib/browser/download/file-download-frontend-module.d.ts.map +1 -1
  6. package/lib/browser/download/file-download-frontend-module.js +2 -1
  7. package/lib/browser/download/file-download-frontend-module.js.map +1 -1
  8. package/lib/browser/download/file-download-service.d.ts +2 -10
  9. package/lib/browser/download/file-download-service.d.ts.map +1 -1
  10. package/lib/browser/download/file-download-service.js +8 -7
  11. package/lib/browser/download/file-download-service.js.map +1 -1
  12. package/lib/browser/file-tree/file-tree-widget.d.ts +1 -1
  13. package/lib/browser/file-tree/file-tree-widget.d.ts.map +1 -1
  14. package/lib/browser/file-tree/file-tree-widget.js +3 -3
  15. package/lib/browser/file-tree/file-tree-widget.js.map +1 -1
  16. package/lib/browser/filesystem-frontend-contribution.d.ts +2 -2
  17. package/lib/browser/filesystem-frontend-contribution.d.ts.map +1 -1
  18. package/lib/browser/filesystem-frontend-contribution.js +3 -3
  19. package/lib/browser/filesystem-frontend-contribution.js.map +1 -1
  20. package/lib/browser/filesystem-frontend-module.d.ts.map +1 -1
  21. package/lib/browser/filesystem-frontend-module.js +3 -2
  22. package/lib/browser/filesystem-frontend-module.js.map +1 -1
  23. package/lib/browser/{file-upload-service.d.ts → upload/file-upload-service-impl.d.ts} +16 -52
  24. package/lib/browser/upload/file-upload-service-impl.d.ts.map +1 -0
  25. package/lib/browser/{file-upload-service.js → upload/file-upload-service-impl.js} +27 -27
  26. package/lib/browser/upload/file-upload-service-impl.js.map +1 -0
  27. package/lib/browser-only/browser-only-filesystem-frontend-module.d.ts.map +1 -1
  28. package/lib/browser-only/browser-only-filesystem-frontend-module.js +8 -0
  29. package/lib/browser-only/browser-only-filesystem-frontend-module.js.map +1 -1
  30. package/lib/browser-only/download/file-download-command-contribution.d.ts +15 -0
  31. package/lib/browser-only/download/file-download-command-contribution.d.ts.map +1 -0
  32. package/lib/browser-only/download/file-download-command-contribution.js +55 -0
  33. package/lib/browser-only/download/file-download-command-contribution.js.map +1 -0
  34. package/lib/browser-only/download/file-download-frontend-module.d.ts +4 -0
  35. package/lib/browser-only/download/file-download-frontend-module.d.ts.map +1 -0
  36. package/lib/browser-only/download/file-download-frontend-module.js +27 -0
  37. package/lib/browser-only/download/file-download-frontend-module.js.map +1 -0
  38. package/lib/browser-only/download/file-download-service.d.ts +86 -0
  39. package/lib/browser-only/download/file-download-service.d.ts.map +1 -0
  40. package/lib/browser-only/download/file-download-service.js +551 -0
  41. package/lib/browser-only/download/file-download-service.js.map +1 -0
  42. package/lib/browser-only/file-search.d.ts +38 -0
  43. package/lib/browser-only/file-search.d.ts.map +1 -0
  44. package/lib/browser-only/file-search.js +153 -0
  45. package/lib/browser-only/file-search.js.map +1 -0
  46. package/lib/browser-only/opfs-filesystem-initialization.d.ts +4 -2
  47. package/lib/browser-only/opfs-filesystem-initialization.d.ts.map +1 -1
  48. package/lib/browser-only/opfs-filesystem-initialization.js +4 -1
  49. package/lib/browser-only/opfs-filesystem-initialization.js.map +1 -1
  50. package/lib/browser-only/opfs-filesystem-provider.d.ts +89 -12
  51. package/lib/browser-only/opfs-filesystem-provider.d.ts.map +1 -1
  52. package/lib/browser-only/opfs-filesystem-provider.js +345 -181
  53. package/lib/browser-only/opfs-filesystem-provider.js.map +1 -1
  54. package/lib/browser-only/upload/file-upload-service-impl.d.ts +67 -0
  55. package/lib/browser-only/upload/file-upload-service-impl.d.ts.map +1 -0
  56. package/lib/browser-only/upload/file-upload-service-impl.js +328 -0
  57. package/lib/browser-only/upload/file-upload-service-impl.js.map +1 -0
  58. package/lib/common/download/file-download.d.ts +17 -0
  59. package/lib/common/download/file-download.d.ts.map +1 -0
  60. package/lib/common/download/{file-download-data.js → file-download.js} +3 -2
  61. package/lib/common/download/file-download.js.map +1 -0
  62. package/lib/common/files.d.ts +8 -1
  63. package/lib/common/files.d.ts.map +1 -1
  64. package/lib/common/files.js +35 -1
  65. package/lib/common/files.js.map +1 -1
  66. package/lib/common/io.js +7 -1
  67. package/lib/common/io.js.map +1 -1
  68. package/lib/common/upload/file-upload.d.ts +45 -0
  69. package/lib/common/upload/file-upload.d.ts.map +1 -0
  70. package/{src/common/download/file-download-data.ts → lib/common/upload/file-upload.js} +6 -13
  71. package/lib/common/upload/file-upload.js.map +1 -0
  72. package/lib/node/disk-file-system-provider.d.ts.map +1 -1
  73. package/lib/node/disk-file-system-provider.js +2 -4
  74. package/lib/node/disk-file-system-provider.js.map +1 -1
  75. package/lib/node/download/file-download-handler.js +2 -2
  76. package/lib/node/download/file-download-handler.js.map +1 -1
  77. package/lib/node/filesystem-backend-module.js +1 -1
  78. package/lib/node/filesystem-backend-module.js.map +1 -1
  79. package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts +2 -2
  80. package/lib/node/parcel-watcher/parcel-filesystem-service.d.ts.map +1 -1
  81. package/lib/node/parcel-watcher/parcel-filesystem-service.js.map +1 -1
  82. package/lib/node/upload/node-file-upload-service.d.ts.map +1 -0
  83. package/lib/node/{node-file-upload-service.js → upload/node-file-upload-service.js} +1 -1
  84. package/lib/node/upload/node-file-upload-service.js.map +1 -0
  85. package/package.json +10 -5
  86. package/src/browser/download/file-download-command-contribution.ts +1 -1
  87. package/src/browser/download/file-download-frontend-module.ts +3 -2
  88. package/src/browser/download/file-download-service.ts +7 -12
  89. package/src/browser/file-tree/file-tree-widget.tsx +1 -1
  90. package/src/browser/filesystem-frontend-contribution.ts +2 -2
  91. package/src/browser/filesystem-frontend-module.ts +3 -2
  92. package/src/browser/{file-upload-service.ts → upload/file-upload-service-impl.ts} +31 -72
  93. package/src/browser-only/browser-only-filesystem-frontend-module.ts +10 -0
  94. package/src/browser-only/download/file-download-command-contribution.ts +56 -0
  95. package/src/browser-only/download/file-download-frontend-module.ts +26 -0
  96. package/src/browser-only/download/file-download-service.ts +726 -0
  97. package/src/browser-only/file-search.ts +170 -0
  98. package/src/browser-only/opfs-filesystem-initialization.ts +7 -4
  99. package/src/browser-only/opfs-filesystem-provider.ts +402 -189
  100. package/src/browser-only/upload/file-upload-service-impl.ts +408 -0
  101. package/src/common/download/file-download.ts +40 -0
  102. package/src/common/files.ts +42 -1
  103. package/src/common/io.ts +6 -1
  104. package/src/common/upload/file-upload.ts +65 -0
  105. package/src/node/disk-file-system-provider.ts +3 -4
  106. package/src/node/download/file-download-handler.ts +1 -1
  107. package/src/node/filesystem-backend-module.ts +1 -1
  108. package/src/node/parcel-watcher/parcel-filesystem-service.ts +2 -2
  109. package/src/node/{node-file-upload-service.ts → upload/node-file-upload-service.ts} +1 -1
  110. package/lib/browser/file-upload-service.d.ts.map +0 -1
  111. package/lib/browser/file-upload-service.js.map +0 -1
  112. package/lib/common/download/file-download-data.d.ts +0 -7
  113. package/lib/common/download/file-download-data.d.ts.map +0 -1
  114. package/lib/common/download/file-download-data.js.map +0 -1
  115. package/lib/node/node-file-upload-service.d.ts.map +0 -1
  116. package/lib/node/node-file-upload-service.js.map +0 -1
  117. /package/lib/node/{node-file-upload-service.d.ts → upload/node-file-upload-service.d.ts} +0 -0
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 Maksim Kachurin 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.getIgnorePatterns = exports.createIgnoreMatcher = exports.matchesPattern = exports.normalizeGlob = void 0;
19
+ const minimatch_1 = require("minimatch");
20
+ const ignore_1 = require("ignore");
21
+ /**
22
+ * Normalizes glob patterns to be consistent with ripgrep behavior.
23
+ *
24
+ * Examples of transformations:
25
+ * - "*.js" -> "**\/*.js" (make non-root patterns match anywhere)
26
+ * - "src/" -> "src\/**" (directory patterns match all contents)
27
+ * - "!*.log" -> "!**\/*.log" (negation patterns)
28
+ * - "src/**\/**\/file.js" -> "src/**\/file.js" (collapse repeated double-star patterns)
29
+ *
30
+ * @param glob - The glob pattern to normalize
31
+ * @returns The normalized glob pattern
32
+ */
33
+ function normalizeGlob(glob) {
34
+ let neg = '';
35
+ let root = false;
36
+ // Handle negation patterns (starting with '!')
37
+ if (glob.startsWith('!')) {
38
+ neg = '!';
39
+ glob = glob.slice(1);
40
+ }
41
+ // Convert Windows backslashes to forward slashes for consistency
42
+ glob = glob.replace(/\\/g, '/');
43
+ // Remove redundant './' prefix (same as current directory)
44
+ if (glob.startsWith('./')) {
45
+ glob = glob.slice(1);
46
+ }
47
+ // Check if pattern is root-anchored (starts with '/')
48
+ if (glob.startsWith('/')) {
49
+ root = true;
50
+ }
51
+ // Convert directory patterns to match all contents
52
+ // "src/" becomes "src/**" to match everything inside the directory
53
+ if (glob.endsWith('/') && !glob.endsWith('/**')) {
54
+ glob = glob + '**';
55
+ }
56
+ // Make non-root patterns match anywhere in the directory tree
57
+ // "*.js" becomes "**/*.js" to match .js files anywhere
58
+ if (!root && !glob.startsWith('**')) {
59
+ glob = '**/' + glob;
60
+ }
61
+ // Clean up repeated '**/' patterns
62
+ // "src/**/**/file.js" becomes "src/**/file.js"
63
+ glob = glob.replace(/(\*\*\/)+\*\*\//g, '**/');
64
+ // Restore negation prefix if it was present
65
+ return neg + glob;
66
+ }
67
+ exports.normalizeGlob = normalizeGlob;
68
+ /**
69
+ * Checks if a text matches any of the minimatch patterns
70
+ * @param text - The text to check
71
+ * @param patterns - The patterns to check
72
+ * @returns True if the text matches any of the patterns, false otherwise
73
+ */
74
+ function matchesPattern(text, patterns, opts) {
75
+ return patterns.some(pattern => (0, minimatch_1.minimatch)(text, pattern, opts));
76
+ }
77
+ exports.matchesPattern = matchesPattern;
78
+ /**
79
+ * Creates a new ignore pattern matcher for managing ignore patterns.
80
+ * @returns An object with add and ignores methods
81
+ */
82
+ function createIgnoreMatcher() {
83
+ const ig = (0, ignore_1.default)();
84
+ return {
85
+ add: (patterns) => ig.add(patterns),
86
+ ignores: (path) => ig.ignores(path)
87
+ };
88
+ }
89
+ exports.createIgnoreMatcher = createIgnoreMatcher;
90
+ /**
91
+ * Processes ignore files (.gitignore, .ignore, .rgignore) in a directory.
92
+ * @param dir - The directory URI to process
93
+ * @param read - Function to read the ignore file content
94
+ * @returns Array of processed ignore patterns relative to the directory contains that ignore file
95
+ */
96
+ async function getIgnorePatterns(dir, read) {
97
+ const fromPath = dir.path.toString();
98
+ const ignoreFiles = await Promise.allSettled(['.gitignore', '.ignore', '.rgignore'].map(file => read(dir.resolve(file))));
99
+ const lines = ignoreFiles
100
+ .filter(result => result.status === 'fulfilled')
101
+ .flatMap((result) => result.value
102
+ .split('\n')
103
+ .map(line => prefixGitignoreLine(fromPath, line))
104
+ .filter((line) => typeof line === 'string'));
105
+ return lines;
106
+ }
107
+ exports.getIgnorePatterns = getIgnorePatterns;
108
+ /**
109
+ * Convert patterns from dir base to root-relative git semantics.
110
+ * @param baseRel - The base relative path
111
+ * @param raw - The raw pattern
112
+ * @returns The processed pattern
113
+ */
114
+ function prefixGitignoreLine(baseRel, raw) {
115
+ let line = raw.replace(/\r?\n$/, '');
116
+ if (!line || /^\s*#/.test(line)) {
117
+ return undefined;
118
+ }
119
+ // handle escaped leading '!' and '#'
120
+ const escapedBang = line.startsWith('\\!');
121
+ const escapedHash = line.startsWith('\\#');
122
+ if (escapedBang || escapedHash) {
123
+ line = line.slice(1);
124
+ }
125
+ const neg = !escapedBang && line.startsWith('!');
126
+ if (neg) {
127
+ line = line.slice(1);
128
+ }
129
+ // normalize slashes in the pattern part
130
+ line = line.replace(/\\/g, '/');
131
+ // strip leading "./"
132
+ if (line.startsWith('./')) {
133
+ line = line.slice(2);
134
+ }
135
+ const anchored = line.startsWith('/');
136
+ const hasSlash = line.includes('/');
137
+ const prefix = baseRel ? baseRel.replace(/\\/g, '/').replace(/^\/+/, '').replace(/\/+$/, '') : '';
138
+ let pattern;
139
+ if (anchored) {
140
+ // "/foo" in base -> "base/foo"
141
+ pattern = (prefix ? `${prefix}${line}` : line.slice(1)); // remove leading '/' if no base
142
+ }
143
+ else if (hasSlash) {
144
+ // "bar/*.js" in base -> "base/bar/*.js"
145
+ pattern = prefix ? `${prefix}/${line}` : line;
146
+ }
147
+ else {
148
+ // "foo" in base -> "base/**/foo"
149
+ pattern = prefix ? `${prefix}/**/${line}` : line;
150
+ }
151
+ return neg ? `!${pattern}` : pattern;
152
+ }
153
+ //# sourceMappingURL=file-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-search.js","sourceRoot":"","sources":["../../src/browser-only/file-search.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import type { OPFSFileSystemProvider } from './opfs-filesystem-provider';
2
2
  export declare const OPFSInitialization: unique symbol;
3
3
  export interface OPFSInitialization {
4
- getRootDirectory(): Promise<FileSystemDirectoryHandle>;
4
+ getBroadcastChannel(): BroadcastChannel;
5
+ getRootDirectory(): Promise<string> | string;
5
6
  initializeFS(provider: OPFSFileSystemProvider): Promise<void>;
6
7
  }
7
8
  export declare class DefaultOPFSInitialization implements OPFSInitialization {
8
- getRootDirectory(): Promise<FileSystemDirectoryHandle>;
9
+ getBroadcastChannel(): BroadcastChannel;
10
+ getRootDirectory(): Promise<string> | string;
9
11
  initializeFS(provider: OPFSFileSystemProvider): Promise<void>;
10
12
  }
11
13
  //# sourceMappingURL=opfs-filesystem-initialization.d.ts.map
@@ -1 +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"}
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,mBAAmB,IAAI,gBAAgB,CAAC;IACxC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC7C,YAAY,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,qBACa,yBAA0B,YAAW,kBAAkB;IAChE,mBAAmB,IAAI,gBAAgB;IAIvC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;IAItC,YAAY,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CAEtE"}
@@ -20,8 +20,11 @@ const tslib_1 = require("tslib");
20
20
  const inversify_1 = require("@theia/core/shared/inversify");
21
21
  exports.OPFSInitialization = Symbol('OPFSInitialization');
22
22
  let DefaultOPFSInitialization = class DefaultOPFSInitialization {
23
+ getBroadcastChannel() {
24
+ return new BroadcastChannel('theia-opfs-events');
25
+ }
23
26
  getRootDirectory() {
24
- return navigator.storage.getDirectory();
27
+ return '/';
25
28
  }
26
29
  async initializeFS(provider) {
27
30
  }
@@ -1 +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"}
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;AAQxD,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAClC,mBAAmB;QACf,OAAO,IAAI,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IACrD,CAAC;IAED,gBAAgB;QACZ,OAAO,GAAG,CAAC;IACf,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgC;IACnD,CAAC;CACJ,CAAA;AAXY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,sBAAU,GAAE;GACA,yBAAyB,CAWrC"}
@@ -1,31 +1,108 @@
1
- import { FileChange, FileDeleteOptions, FileOverwriteOptions, FileSystemProviderCapabilities, FileSystemProviderWithFileReadWriteCapability, FileType, FileWriteOptions, Stat, WatchOptions } from '../common/files';
2
- import { Event, URI, Disposable } from '@theia/core';
1
+ import { FileChange, FileDeleteOptions, FileOverwriteOptions, FileSystemProviderCapabilities, FileSystemProviderWithFileReadWriteCapability, FileSystemProviderWithFileFolderCopyCapability, FileSystemProviderWithOpenReadWriteCloseCapability, FileType, FileWriteOptions, Stat, WatchOptions, FileOpenOptions, FileUpdateOptions, FileUpdateResult, type FileReadStreamOptions } from '../common/files';
2
+ import { Event, URI, Disposable, DisposableCollection, type CancellationToken } from '@theia/core';
3
+ import { EncodingService } from '@theia/core/lib/common/encoding-service';
4
+ import { TextDocumentContentChangeEvent } from '@theia/core/shared/vscode-languageserver-protocol';
3
5
  import { OPFSInitialization } from './opfs-filesystem-initialization';
4
- export declare class OPFSFileSystemProvider implements FileSystemProviderWithFileReadWriteCapability {
6
+ import { ReadableStreamEvents } from '@theia/core/lib/common/stream';
7
+ export declare class OPFSFileSystemProvider implements Disposable, FileSystemProviderWithFileReadWriteCapability, FileSystemProviderWithOpenReadWriteCloseCapability, FileSystemProviderWithFileFolderCopyCapability {
8
+ private readonly BUFFER_SIZE;
5
9
  capabilities: FileSystemProviderCapabilities;
6
10
  onDidChangeCapabilities: Event<void>;
7
11
  private readonly onDidChangeFileEmitter;
8
12
  readonly onDidChangeFile: Event<readonly FileChange[]>;
9
- onFileWatchError: Event<void>;
13
+ readonly onFileWatchError: Event<void>;
10
14
  protected readonly initialization: OPFSInitialization;
11
- private directoryHandle;
15
+ protected readonly encodingService: EncodingService;
16
+ private fs;
12
17
  private initialized;
18
+ protected readonly toDispose: DisposableCollection;
19
+ /**
20
+ * Initializes the OPFS file system provider
21
+ */
13
22
  protected init(): void;
14
- watch(_resource: URI, _opts: WatchOptions): Disposable;
23
+ /**
24
+ * Watches a resource for file system changes
25
+ */
26
+ watch(resource: URI, opts: WatchOptions): Disposable;
27
+ /**
28
+ * Creates an index from the map of entries
29
+ */
30
+ createIndex(entries: Map<URI, Uint8Array>): Promise<void>;
31
+ /**
32
+ * Retrieves the current file system index
33
+ */
34
+ index(): Promise<Map<URI, Stat>>;
35
+ /**
36
+ * Clears the file system
37
+ */
38
+ clear(): Promise<void>;
39
+ /**
40
+ * Checks if a resource exists
41
+ */
15
42
  exists(resource: URI): Promise<boolean>;
43
+ /**
44
+ * Gets file system statistics for a resource
45
+ */
16
46
  stat(resource: URI): Promise<Stat>;
47
+ /**
48
+ * Creates a directory
49
+ */
17
50
  mkdir(resource: URI): Promise<void>;
51
+ /**
52
+ * Reads directory contents
53
+ */
18
54
  readdir(resource: URI): Promise<[string, FileType][]>;
19
- delete(resource: URI, _opts: FileDeleteOptions): Promise<void>;
55
+ /**
56
+ * Deletes a resource
57
+ */
58
+ delete(resource: URI, opts: FileDeleteOptions): Promise<void>;
59
+ /**
60
+ * Renames a resource from one location to another
61
+ */
20
62
  rename(from: URI, to: URI, opts: FileOverwriteOptions): Promise<void>;
63
+ /**
64
+ * Copies a resource from one location to another
65
+ */
66
+ copy(from: URI, to: URI, opts: FileOverwriteOptions): Promise<void>;
67
+ /**
68
+ * Reads file content as binary data
69
+ */
21
70
  readFile(resource: URI): Promise<Uint8Array>;
71
+ /**
72
+ * Reads file content as a stream
73
+ */
74
+ readFileStream(resource: URI, opts: FileReadStreamOptions, token: CancellationToken): ReadableStreamEvents<Uint8Array>;
75
+ /**
76
+ * Writes binary content to a file
77
+ */
22
78
  writeFile(resource: URI, content: Uint8Array, opts: FileWriteOptions): Promise<void>;
23
79
  /**
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
80
+ * Opens a file and returns a file descriptor
81
+ */
82
+ open(resource: URI, opts: FileOpenOptions): Promise<number>;
83
+ /**
84
+ * Closes a file descriptor
85
+ */
86
+ close(fd: number): Promise<void>;
87
+ /**
88
+ * Reads data from a file descriptor
89
+ */
90
+ read(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise<number>;
91
+ /**
92
+ * Writes data to a file descriptor
93
+ */
94
+ write(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise<number>;
95
+ /**
96
+ * Updates a text file with content changes
97
+ */
98
+ updateFile(resource: URI, changes: TextDocumentContentChangeEvent[], opts: FileUpdateOptions): Promise<FileUpdateResult>;
99
+ /**
100
+ * Handles file system change events from BroadcastChannel
101
+ */
102
+ private handleFileSystemChange;
103
+ /**
104
+ * Disposes the file system provider
28
105
  */
29
- private toFileSystemHandle;
106
+ dispose(): void;
30
107
  }
31
108
  //# sourceMappingURL=opfs-filesystem-provider.d.ts.map
@@ -1 +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;IA8BlC,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"}
1
+ {"version":3,"file":"opfs-filesystem-provider.d.ts","sourceRoot":"","sources":["../../src/browser-only/opfs-filesystem-provider.ts"],"names":[],"mappings":"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"}