UNPKG

@nephele/adapter-s3

Version:

S3 (or compatible) object storage adapter for the Nephele WebDAV server.

83 lines (82 loc) 2.73 kB
import { Readable } from 'node:stream'; import type { Resource as ResourceInterface, User } from 'nephele'; import type Adapter from './Adapter.js'; import Properties from './Properties.js'; import Lock from './Lock.js'; export type MetaStorage = { props?: { [name: string]: any; }; locks?: { [token: string]: { username: string; date: number; timeout: number; scope: 'exclusive' | 'shared'; depth: '0' | 'infinity'; provisional: boolean; owner: any; }; }; }; export default class Resource implements ResourceInterface { adapter: Adapter; baseUrl: URL; path: string; key: string; private meta; private createCollection; private collection; private inStorage; private etag; private size; private contentType; private lastModified; private metaReadyPromise; constructor({ adapter, baseUrl, path: pathname, exists, collection, }: { adapter: Adapter; baseUrl: URL; path: string; exists?: boolean; collection?: boolean; }); getLocks(): Promise<Lock[]>; getLocksByUser(user: User): Promise<Lock[]>; createLockForUser(user: User): Promise<Lock>; getProperties(): Promise<Properties>; getStream(range?: { start: number; end: number; }): Promise<Readable>; setStream(input: Readable, _user: User, mediaType?: string): Promise<void>; create(_user: User): Promise<void>; delete(_user: User): Promise<void>; copy(destination: URL, baseUrl: URL, user: User): Promise<void>; move(destination: URL, baseUrl: URL, user: User): Promise<void>; getLength(): Promise<number>; getEtag(): Promise<string>; getMediaType(): Promise<string | null>; getLastModified(): Promise<Date | null>; getCanonicalName(): Promise<string>; getCanonicalPath(): Promise<string>; getCanonicalUrl(): Promise<URL>; listKeys(prefix?: string, maxKeys?: number): AsyncGenerator<{ key: string; size: number; type: string; }, void, unknown>; isCollection(): Promise<boolean>; isEmpty(): Promise<boolean>; isRoot(key?: string): boolean; getInternalMembers(_user: User): Promise<Resource[]>; exists(key?: string): Promise<boolean>; existsInStorage(key?: string): Promise<boolean>; resourceTreeExists(key?: string): Promise<boolean>; createEmptyDir(key: string): Promise<void>; deleteEmptyDir(key: string): Promise<void>; getMetadata(): Promise<MetaStorage>; translateMetadata(meta: MetaStorage): { [k: string]: string; }; saveMetadata(meta: MetaStorage): Promise<void>; }