UNPKG

@nephele/adapter-file-system

Version:

File system adapter for the Nephele WebDAV server.

34 lines (33 loc) 1.66 kB
import fsp from 'node:fs/promises'; import type { Request } from 'express'; import type { Adapter as AdapterInterface, AuthResponse, Method, User } from 'nephele'; import Resource from './Resource.js'; export type AdapterConfig = { root: string; followLinks?: boolean; properties?: 'meta-files' | 'disallow' | 'emulate'; locks?: 'meta-files' | 'disallow' | 'emulate'; contentEtagMaxBytes?: number; }; export default class Adapter implements AdapterInterface { root: string; followLinks: boolean; properties: 'meta-files' | 'disallow' | 'emulate'; locks: 'meta-files' | 'disallow' | 'emulate'; stat: typeof fsp.stat; contentEtagMaxBytes: number; constructor({ root, followLinks, properties, locks, contentEtagMaxBytes, }: AdapterConfig); urlToRelativePath(url: URL, baseUrl: URL): string | null; urlToAbsolutePath(url: URL, baseUrl: URL): string | null; getUid(user: User): Promise<number>; getGid(user: User): Promise<number>; getGids(user: User): Promise<number[]>; getComplianceClasses(_url: URL, _request: Request, _response: AuthResponse): Promise<string[]>; getAllowedMethods(_url: URL, _request: Request, _response: AuthResponse): Promise<never[]>; getOptionsResponseCacheControl(_url: URL, _request: Request, _response: AuthResponse): Promise<string>; isAuthorized(url: URL, method: string, baseUrl: URL, user: User): Promise<boolean>; getResource(url: URL, baseUrl: URL): Promise<Resource>; newResource(url: URL, baseUrl: URL): Promise<Resource>; newCollection(url: URL, baseUrl: URL): Promise<Resource>; getMethod(method: string): typeof Method; }