@nephele/adapter-file-system
Version:
File system adapter for the Nephele WebDAV server.
34 lines (33 loc) • 1.66 kB
TypeScript
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;
}