/// import { PassThrough } from 'stream'; import { Callback, CallbackAction, StringValue } from '../commons'; import { Config, Logger } from '../configuration'; import { MergeTags, Package, Token, Version } from '../manifest'; import { IPlugin } from './commons'; export declare class IUploadTarball extends PassThrough { abort(): void; done(): void; } export declare class IReadTarball extends PassThrough { abort(): void; } export declare type StorageList = string[]; export interface LocalStorage { list: any; secret: string; } export interface ILocalStorage { add(name: string): void; remove(name: string): void; get(): StorageList; sync(): void; } interface TarballActions { addTarball(name: string, filename: string): IUploadTarball; getTarball(name: string, filename: string): IReadTarball; removeTarball(name: string, filename: string, revision: string, callback: Callback): void; } interface StoragePackageActions extends TarballActions { addVersion(name: string, version: string, metadata: Version, tag: StringValue, callback: Callback): void; mergeTags(name: string, tags: MergeTags, callback: Callback): void; removePackage(name: string, callback: Callback): void; changePackage(name: string, metadata: Package, revision: string, callback: Callback): void; } export interface IStorageManager extends StoragePackageActions { config: T & Config; logger: Logger; init(config: T & Config, filters: any): Promise; addPackage(name: string, metadata: any, callback: Callback): Promise; getPackage(options: any): void; search(startkey: string, options: any): IReadTarball; getLocalDatabase(callback: Callback): void; } export interface IBasicStorage extends StoragePackageActions { addPackage(name: string, info: Package, callback: Callback): void; updateVersions(name: string, packageInfo: Package, callback: Callback): void; getPackageMetadata(name: string, callback: Callback): void; search(startKey: string, options: any): IReadTarball; getSecret(config: T & Config): Promise; } export interface TokenFilter { user: string; } export interface ITokenActions { saveToken(token: Token): Promise; deleteToken(user: string, tokenKey: string): Promise; readTokens(filter: TokenFilter): Promise; } /** * This method expect return a Package object * eg: * { * name: string; * time: number; * ... and other props * } * * The `cb` callback object will be executed if: * - it might return object (truly) * - it might reutrn null */ export declare type onSearchPackage = (item: Package, cb: CallbackAction) => void; export declare type onEndSearchPackage = (error?: any) => void; export declare type onValidatePackage = (name: string) => boolean; export declare type StorageUpdateCallback = (data: Package, cb: CallbackAction) => void; export declare type StorageWriteCallback = (name: string, json: Package, callback: Callback) => void; export declare type PackageTransformer = (pkg: Package) => Package; export declare type ReadPackageCallback = (err: any | null, data?: Package) => void; export interface ILocalPackageManager { logger: Logger; writeTarball(pkgName: string): IUploadTarball; readTarball(pkgName: string): IReadTarball; readPackage(fileName: string, callback: ReadPackageCallback): void; createPackage(pkgName: string, value: Package, cb: CallbackAction): void; deletePackage(fileName: string, callback: CallbackAction): void; removePackage(callback: CallbackAction): void; updatePackage(pkgFileName: string, updateHandler: StorageUpdateCallback, onWrite: StorageWriteCallback, transformPackage: PackageTransformer, onEnd: CallbackAction): void; savePackage(fileName: string, json: Package, callback: CallbackAction): void; } export declare type IPackageStorage = ILocalPackageManager | void; export declare type IPluginStorage = ILocalData; export declare type IPackageStorageManager = ILocalPackageManager; export interface ILocalData extends IPlugin, ITokenActions { logger: Logger; config: T & Config; add(name: string, callback: Callback): void; remove(name: string, callback: Callback): void; get(callback: Callback): void; getSecret(): Promise; setSecret(secret: string): Promise; getPackageStorage(packageInfo: string): IPackageStorage; search(onPackage: onSearchPackage, onEnd: onEndSearchPackage, validateName: onValidatePackage): void; } export {};