UNPKG

@nephele/adapter-virtual

Version:

Virtual resource adapter for the Nephele WebDAV server.

47 lines (46 loc) 1.71 kB
import type { Request } from 'express'; import type { Adapter as AdapterInterface, AuthResponse, Method, User } from 'nephele'; import Resource from './Resource.js'; export type File = { name: string; properties: { creationdate: Date; getlastmodified: Date; owner?: string; [k: string]: any; }; locks: { [token: string]: { username: string; date: number; timeout: number; scope: 'exclusive' | 'shared'; depth: '0' | 'infinity'; provisional: boolean; owner: any; }; }; content: Buffer; }; export type Folder = Omit<File, 'content'> & { children: (Folder | File)[]; }; export type RootFolder = Omit<Folder, 'name'>; export type AdapterConfig = { files: RootFolder; }; export default class Adapter implements AdapterInterface { files: RootFolder; constructor({ files }: AdapterConfig); urlToRelativePath(url: URL, baseUrl: URL): string | null; basename(path: string): string; dirname(path: string): string; 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; }