@shockpkg/core
Version:
shockpkg core
265 lines (264 loc) • 6.54 kB
TypeScript
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;
}