UNPKG

@shockpkg/core

Version:
301 lines (300 loc) 5.74 kB
/// <reference types="node" /> import { Readable } from 'stream'; import request from 'request'; import { Package } from './package'; export declare type PackageLike = Package | string; export declare type OnData = (data: string | Buffer) => any; export declare type OnResponse = (response: request.Response) => any; export interface IPackageInstallBefore { /** * Package instance. */ package: Package; /** * Install method. */ method: string; } export interface IPackageInstallAfter { /** * Package instance. */ package: Package; /** * Install method. */ method: string; } export interface IPackageInstallCurrent { /** * Package instance. */ package: Package; /** * Install method. */ method: string; } export interface IPackageDownloadBefore { /** * Package instance. */ package: Package; } export interface IPackageDownloadAfter { /** * Package instance. */ package: Package; } export interface IPackageDownloadProgress { /** * Package instance. */ package: Package; /** * Progress total. */ total: number; /** * Progress amount. */ amount: number; } export interface IPackageStreamBefore { /** * Package instance. */ package: Package; } export interface IPackageStreamAfter { /** * Package instance. */ package: Package; } export interface IPackageStreamProgress { /** * Package instance. */ package: Package; /** * Progress total. */ total: number; /** * Progress amount. */ amount: number; } export interface IPackageExtractBefore { /** * Package instance. */ package: Package; } export interface IPackageExtractAfter { /** * Package instance. */ package: Package; } export interface IPackageExtractProgress { /** * Package instance. */ package: Package; /** * Progress total. */ total: number; /** * Progress amount. */ amount: number; } export interface IPackageCleanupBefore { /** * Package name. */ package: string; } export interface IPackageCleanupAfter { /** * Package name. */ package: string; /** * Package removed. */ removed: boolean; } export interface IPackageInstalled { /** * Package installed. */ package: Package; /** * List of packages processed. */ installed: Package[]; } export interface IPackageRemovedObsolete { /** * Package removed. */ package: string; /** * Removed or already removed. */ removed: boolean; } export interface IPackageRemovedOutdated { /** * Package removed. */ package: Package; /** * Removed or already removed. */ removed: boolean; } export interface IPackageUpdated { /** * Package name. */ name: string; /** * File name. */ file: string; /** * File size. */ size: number; /** * SHA256 hash of the file contents. */ sha256: string; } export declare type IRequestOptions = (request.UrlOptions & request.CoreOptions) | (request.UriOptions & request.CoreOptions); export declare type IRequestInstance = request.RequestAPI<request.Request, request.CoreOptions, request.RequiredUriUrl>; export declare type IRequestDefaults = request.CoreOptions; export declare type IRequestCallback = request.RequestCallback; export declare type IRequestStream = request.Request; export declare type IRequestResponse = request.Response; export interface IRequestPromiseValue { /** * Request stream. */ stream: IRequestStream; /** * Request response. */ response: IRequestResponse; /** * Request body. */ body: any; } export interface IZipItterEntry { /** * Path. */ path: string; /** * Is directory. */ dir: boolean; /** * CRC32. */ crc32: number; /** * Size compressed. */ sizeC: number; /** * Size decompressed. */ sizeD: number; /** * Stream contents (does not wait for it to be closed). */ stream(): Promise<Readable>; } export declare type ZipItter = (info: IZipItterEntry) => Promise<boolean>; export declare type ZipStreamer = (start: number, end: number) => Readable; export interface IPackageReceipt { /** * Package name. */ name: string; /** * File name. */ file: string; /** * File size. */ size: number; /** * SHA256 hash of the file contents. */ sha256: string; /** * Source, URL for root or file path for children. */ source: string; } export interface IPackagesListPackage { /** * Package name. */ name: string; /** * File name. */ file: string; /** * File size. */ size: number; /** * SHA256 hash of the file contents. */ sha256: string; /** * Source, URL for root or file path for children. */ source: string; /** * Optional child package list. */ packages?: IPackagesListPackage[]; } export interface IPackagesList { /** * Format version. */ format: string; /** * Package list. */ packages: IPackagesListPackage[]; } export declare type HashEncoding = 'hex' | 'base64'; export interface IHash { /** * Hash algorithm. */ algorithm: string; /** * Hash encoding. */ encoding: HashEncoding; /** * Digest value. */ digest: string; }