@stacksjs/launchpad
Version:
Like Homebrew, but faster.
59 lines • 2.6 kB
TypeScript
/**
* Convenience function to download and install PHP using precompiled binaries
*/
export declare function downloadPhpBinary(installPath: string, requestedVersion?: string): Promise<string[]>;
export declare interface BinaryInfo {
filename: string
size: number
php_version: string
platform: string
architecture: string
configuration: string
built_at: string
extensions: string
download_url: string
}
export declare interface BinaryManifest {
version: string
built_at: string
commit: string
binaries: BinaryInfo[]
}
export declare class PrecompiledBinaryDownloader {
readonly private GITHUB_REPO: any;
readonly private GITHUB_API: any;
readonly private BINARY_CACHE_DIR: string;
private installPath: string;
constructor(installPath: string);
private getPlatform(): string;
private getArchitecture(): string;
private getOptimalConfiguration(): string;
private hasCustomExtensions(): Promise<{ hasCustom: boolean, customExtensions: string[], reason: string }>;
private isCompatibleWithFullStack(userExtensions: string[]): boolean;
private detectFrameworkAndDatabase(): Promise<string>;
private downloadManifest(): Promise<BinaryManifest>;
private findMatchingBinary(manifest: BinaryManifest, phpVersion?: string): Promise<BinaryInfo | null>;
private getFallbackConfigurations(detectedConfig: string): string[];
private generateDiscordErrorMessage(detectedConfig: string, platform: string, architecture: string): string;
private downloadBinary(binary: BinaryInfo): Promise<string>;
private getPhpDependenciesFromPantry(): Promise<string[]>;
createPhpShims(packageDir: string, version: string): Promise<void>;
private fixMacOSDylibs(packageDir: string, launchpadLibraryPaths: string[]): Promise<void>;
private findLaunchpadLibraryPaths(): Promise<string[]>;
private ensurePhpDependenciesInstalled(): Promise<void>;
private detectRequiredIcuMajor(): Promise<number | null>;
private createHomebrewCompatSymlinks(launchpadLibraryPaths: string[]): Promise<void>;
validatePhpInstallation(packageDir: string, version: string): Promise<void>;
private extractBinary(binaryPath: string, binary: BinaryInfo): Promise<string>;
private provideSuggestions(customCheck: { hasCustom: boolean, customExtensions: string[], reason: string }): void;
downloadAndInstallPHP(requestedVersion?: string): Promise<{
success: boolean
packageDir: string
version: string
configuration: string
extensions: string[]
error?: string
}>;
isSupported(): Promise<boolean>;
listAvailableBinaries(): Promise<BinaryInfo[]>;
}