Path: blob/main/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { FileSystemProviderCapabilities, IStat, FileType, IFileDeleteOptions, IFileOverwriteOptions, IFileWriteOptions, FileSystemProviderErrorCode, IFileSystemProviderWithFileReadWriteCapability, createFileSystemProviderError } from '../../../../platform/files/common/files.js';6import { Event } from '../../../../base/common/event.js';7import { IDisposable, Disposable } from '../../../../base/common/lifecycle.js';8import { URI } from '../../../../base/common/uri.js';9import { NotSupportedError } from '../../../../base/common/errors.js';1011export class FetchFileSystemProvider implements IFileSystemProviderWithFileReadWriteCapability {1213readonly capabilities = FileSystemProviderCapabilities.Readonly + FileSystemProviderCapabilities.FileReadWrite + FileSystemProviderCapabilities.PathCaseSensitive;14readonly onDidChangeCapabilities = Event.None;15readonly onDidChangeFile = Event.None;1617// working implementations18async readFile(resource: URI): Promise<Uint8Array> {19try {20const res = await fetch(resource.toString(true));21if (res.status === 200) {22return new Uint8Array(await res.arrayBuffer());23}24throw createFileSystemProviderError(res.statusText, FileSystemProviderErrorCode.Unknown);25} catch (err) {26throw createFileSystemProviderError(err, FileSystemProviderErrorCode.Unknown);27}28}2930// fake implementations31async stat(_resource: URI): Promise<IStat> {32return {33type: FileType.File,34size: 0,35mtime: 0,36ctime: 037};38}3940watch(): IDisposable {41return Disposable.None;42}4344// error implementations45writeFile(_resource: URI, _content: Uint8Array, _opts: IFileWriteOptions): Promise<void> {46throw new NotSupportedError();47}48readdir(_resource: URI): Promise<[string, FileType][]> {49throw new NotSupportedError();50}51mkdir(_resource: URI): Promise<void> {52throw new NotSupportedError();53}54delete(_resource: URI, _opts: IFileDeleteOptions): Promise<void> {55throw new NotSupportedError();56}57rename(_from: URI, _to: URI, _opts: IFileOverwriteOptions): Promise<void> {58throw new NotSupportedError();59}60}616263