UNPKG

@shockpkg/core

Version:
265 lines (264 loc) 6.54 kB
import { IPackagesListPackage, Package } from './package.ts'; export interface IPackageUpdated { /** * Package name. */ name: string; /** * File name. */ file: string; /** * File size. */ size: number; /** * SHA256 hash of the file contents. */ sha256: string; } export interface IPackagesList { /** * Format version. */ format: string; /** * Package list. */ packages: IPackagesListPackage[]; } /** * Packages object. */ export declare class Packages { /** * Packages data. */ protected _packagesList: IPackagesList | null; /** * Packages array. */ protected _packages: Set<Package>; /** * Packages mapped by name. */ protected _packagesByName: Map<string, Package>; /** * Packages mapped by sha256. */ protected _packagesBySha256: Map<string, Package>; /** * Packages mapped by sha1. */ protected _packagesBySha1: Map<string, Package>; /** * Packages mapped by md5. */ protected _packagesByMd5: Map<string, Package>; /** * Packages mapped by unique. */ protected _packagesByUnique: Map<string, Package>; /** * The path to the packages file. */ protected readonly _path: string; /** * Format version. */ static readonly FORMAT: string; /** * Packages constructor. * * @param path The path to the packages file. */ constructor(path: string); /** * Get path of the packages file. * * @returns The path. */ get path(): string; /** * Get if packages loaded. * * @returns Is loaded. */ get loaded(): boolean; /** * Update packages. * * @param data Encoded data. * @returns Update report. */ update(data: string): { updated: IPackageUpdated[]; added: IPackageUpdated[]; removed: IPackageUpdated[]; }; /** * Assert loaded. */ assertLoaded(): void; /** * Check if the file path exists. * * @returns Does exist. */ exists(): Promise<boolean>; /** * Read the file path. */ read(): Promise<void>; /** * Write packages to the file path. */ write(): Promise<void>; /** * Read the file path if the file exists. * * @returns Did exist. */ readIfExists(): Promise<boolean>; /** * Itterate over the packages. * * @yields Package object. */ packages(): Generator<Package, void, unknown>; /** * Check if package is in this collection. * * @param pkg Package instance. * @returns If the package instance is present. */ has(pkg: Package): boolean; /** * Assert the package is in this collection. * * @param pkg Package instance. */ assertHas(pkg: Package): void; /** * Get package by the unique name. * * @param name Package name. * @returns The package or null. */ byName(name: string): Package | null; /** * Get package by the sha256 hash. * * @param sha256 Package sha256. * @returns The package or null. */ bySha256(sha256: string): Package | null; /** * Get package by the sha1 hash. * * @param sha1 Package sha1. * @returns The package or null. */ bySha1(sha1: string): Package | null; /** * Get package by the md5 hash. * * @param md5 Package md5. * @returns The package or null. */ byMd5(md5: string): Package | null; /** * Get package by the unique value. * * @param unique Package unique. * @returns The package or null. */ byUnique(unique: string): Package | null; /** * Create a package instance. * * @param info Package info. * @returns Package instance. */ protected _createPackage(info: Readonly<IPackagesListPackage>): Package; /** * Set the packages list. * * @param packagesList Parsed list. */ protected _setPackagesList(packagesList: Readonly<IPackagesList>): void; /** * Validate format version string. * * @param format The format version string. */ protected _validateFormat(format: string): void; /** * Parse the packages list. * * @param packages Packages list. * @returns Parsed list. */ protected _parsePackages(packages: readonly Readonly<IPackagesListPackage>[]): Package[]; /** * List all packages deep. * * @param packages A list of packages. * @returns A set of all packages and their children. */ protected _listPackages(packages: readonly Package[]): Set<Package>; /** * Map out package list by name. * Throws on any duplicates. * * @param packages Packages list. * @returns Map from package name to package. */ protected _packagesMapName(packages: Readonly<Set<Package>>): Map<string, Package>; /** * Map out package list by sha256. * Throws on any duplicates. * * @param packages Packages list. * @returns Map from package sha256 to package. */ protected _packagesMapSha256(packages: Readonly<Set<Package>>): Map<string, Package>; /** * Map out package list by sha1. * Throws on any duplicates. * * @param packages Packages list. * @returns Map from package sha256 to package. */ protected _packagesMapSha1(packages: Readonly<Set<Package>>): Map<string, Package>; /** * Map out package list by md5. * Throws on any duplicates. * * @param packages Packages list. * @returns Map from package sha256 to package. */ protected _packagesMapMd5(packages: Readonly<Set<Package>>): Map<string, Package>; /** * Map out package list by unique. * Throws on any duplicates. * * @param packages Packages list. * @returns Map from package unique to package. */ protected _packagesMapUnique(packages: Readonly<Set<Package>>): Map<string, Package>; /** * Parse and cast the encoded data. * * @param data Encoded data. * @returns Parsed and cast data. */ protected _parseData(data: string): IPackagesList; /** * Cast the parsed data. * * @param packages Parsed data. * @returns Cast data. */ protected _castData(packages: unknown): IPackagesList; }