@stacksjs/stx
Version:
A performant UI Framework. Powered by Bun.
109 lines • 3.46 kB
TypeScript
/**
* Create a Netlify API client
*/
export declare function createNetlifyClient(config: NetlifyClientConfig): NetlifyClient;
/**
* Calculate SHA1 hash of file content
*/
export declare function calculateSha1(content: ArrayBuffer | Uint8Array): Promise<string>;
/**
* Collect files from a directory for deployment
*/
export declare function collectDeployFiles(directory: string, options?: { ignore?: string[] }): Promise<DeployFile[]>;
/**
* Create file manifest (path -> sha1 hash mapping)
*/
export declare function createFileManifest(files: DeployFile[]): Record<string, string>;
/**
* Filter files that need uploading (not already on Netlify)
*/
export declare function filterRequiredFiles(files: DeployFile[], required: string[]): DeployFile[];
/**
* Format file size for display
*/
export declare function formatSize(bytes: number): string;
/**
* Get total size of files
*/
export declare function getTotalSize(files: DeployFile[]): number;
// ============================================================================
// Types
// ============================================================================
export declare interface NetlifySite {
id: string
name: string
url: string
ssl_url: string
admin_url: string
created_at: string
updated_at: string
custom_domain?: string
default_domain: string
deploy_url: string
published_deploy?: NetlifyDeploy
}
export declare interface NetlifyDeploy {
id: string
site_id: string
state: 'new' | 'pending_review' | 'uploading' | 'uploaded' | 'preparing' | 'prepared' | 'processing' | 'ready' | 'error' | 'retrying'
name: string
url: string
ssl_url: string
admin_url: string
deploy_url: string
deploy_ssl_url: string
created_at: string
updated_at: string
published_at?: string
title?: string
context: string
branch?: string
commit_ref?: string
commit_url?: string
review_url?: string
error_message?: string
required: string[]
required_functions?: string[]
}
export declare interface CreateDeployOptions {
title?: string
branch?: string
draft?: boolean
files: Record<string, string>
functions?: Record<string, string>
async?: boolean
}
export declare interface DeployFile {
path: string
content: ArrayBuffer | Uint8Array
sha1: string
}
export declare interface NetlifyClientConfig {
token: string
baseUrl?: string
}
export declare interface NetlifyError extends Error {
status: number
code?: string
details?: unknown
}
// ============================================================================
// Netlify Client
// ============================================================================
export declare interface NetlifyClient {
getSite(siteId: string): Promise<NetlifySite>
listSites(): Promise<NetlifySite[]>
createSite(name?: string): Promise<NetlifySite>
createDeploy(siteId: string, options: CreateDeployOptions): Promise<NetlifyDeploy>
uploadFile(deployId: string, path: string, content: ArrayBuffer | Uint8Array): Promise<void>
uploadFiles(deployId: string, files: DeployFile[]): Promise<void>
getDeploy(deployId: string): Promise<NetlifyDeploy>
waitForDeploy(deployId: string, options?: WaitOptions): Promise<NetlifyDeploy>
lockDeploy(deployId: string): Promise<NetlifyDeploy>
unlockDeploy(deployId: string): Promise<NetlifyDeploy>
}
export declare interface WaitOptions {
timeout?: number
pollInterval?: number
onProgress?: (deploy: NetlifyDeploy) => void
}