247
private async toFileStat(provider: IFileSystemProvider, resource: URI, stat: IStat, siblings: number | undefined, resolveMetadata: true, recurse: (stat: IFileStat, siblings?: number) => boolean): Promise<IFileStatWithMetadata>;
248
private async toFileStat(provider: IFileSystemProvider, resource: URI, stat: IStat | { type: FileType } & Partial<IStat>, siblings: number | undefined, resolveMetadata: boolean, recurse: (stat: IFileStat, siblings?: number) => boolean): Promise<IFileStat> {
249
>
const { providerExtUri } = this.getExtUri(provider);
fileService.ts
250
>
251
>
// convert to file stat
252
>
const fileStat: IFileStat = {
253
>
resource,
254
>
name: providerExtUri.basename(resource),
255
>
isFile: (stat.type & FileType.File) !== 0,
256
>
isDirectory: (stat.type & FileType.Directory) !== 0,
257
>
isSymbolicLink: (stat.type & FileType.SymbolicLink) !== 0,
258
>
mtime: stat.mtime,
259
>
ctime: stat.ctime,
260
>
size: stat.size,
261
>
readonly: Boolean((stat.permissions ?? 0) & FilePermission.Readonly) || Boolean(provider.capabilities & FileSystemProviderCapabilities.Readonly),
262
>
locked: Boolean((stat.permissions ?? 0) & FilePermission.Locked),
263
>
executable: Boolean((stat.permissions ?? 0) & FilePermission.Executable),
264
>
etag: etag({ mtime: stat.mtime, size: stat.size }),
265
>
children: undefined
266
>
};
267
>
268
>
// check to recurse for directories
269
>
if (fileStat.isDirectory && recurse(fileStat, siblings)) {
270
try {
271
const entries = await provider.readdir(resource);