Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { FileSystemProviderCapabilities, IStat, FileType, IFileDeleteOptions, IFileOverwriteOptions, IFileWriteOptions, FileSystemProviderErrorCode, IFileSystemProviderWithFileReadWriteCapability, createFileSystemProviderError } from '../../../../platform/files/common/files.js';
7
import { Event } from '../../../../base/common/event.js';
8
import { IDisposable, Disposable } from '../../../../base/common/lifecycle.js';
9
import { URI } from '../../../../base/common/uri.js';
10
import { NotSupportedError } from '../../../../base/common/errors.js';
11
12
export class FetchFileSystemProvider implements IFileSystemProviderWithFileReadWriteCapability {
13
14
readonly capabilities = FileSystemProviderCapabilities.Readonly + FileSystemProviderCapabilities.FileReadWrite + FileSystemProviderCapabilities.PathCaseSensitive;
15
readonly onDidChangeCapabilities = Event.None;
16
readonly onDidChangeFile = Event.None;
17
18
// working implementations
19
async readFile(resource: URI): Promise<Uint8Array> {
20
try {
21
const res = await fetch(resource.toString(true));
22
if (res.status === 200) {
23
return new Uint8Array(await res.arrayBuffer());
24
}
25
throw createFileSystemProviderError(res.statusText, FileSystemProviderErrorCode.Unknown);
26
} catch (err) {
27
throw createFileSystemProviderError(err, FileSystemProviderErrorCode.Unknown);
28
}
29
}
30
31
// fake implementations
32
async stat(_resource: URI): Promise<IStat> {
33
return {
34
type: FileType.File,
35
size: 0,
36
mtime: 0,
37
ctime: 0
38
};
39
}
40
41
watch(): IDisposable {
42
return Disposable.None;
43
}
44
45
// error implementations
46
writeFile(_resource: URI, _content: Uint8Array, _opts: IFileWriteOptions): Promise<void> {
47
throw new NotSupportedError();
48
}
49
readdir(_resource: URI): Promise<[string, FileType][]> {
50
throw new NotSupportedError();
51
}
52
mkdir(_resource: URI): Promise<void> {
53
throw new NotSupportedError();
54
}
55
delete(_resource: URI, _opts: IFileDeleteOptions): Promise<void> {
56
throw new NotSupportedError();
57
}
58
rename(_from: URI, _to: URI, _opts: IFileOverwriteOptions): Promise<void> {
59
throw new NotSupportedError();
60
}
61
}
62
63