{"version":3,"sources":["../../src/types/config.ts"],"sourcesContent":["import type { StorageUploadResult, StorageListOptions } from \"./storage\";\n\n/**\n * Storage callback functions for flexible storage operations.\n *\n * Instead of hardcoding storage behavior (HTTP endpoints, etc.), users can provide\n * custom callback functions to handle storage operations in any way they choose.\n *\n * @category Configuration\n * @example\n * ```typescript\n * const storageCallbacks: StorageCallbacks = {\n *   async upload(blob, filename, metadata) {\n *     const formData = new FormData();\n *     formData.append('file', blob, filename);\n *     const response = await fetch('/api/storage/upload', {\n *       method: 'POST',\n *       body: formData\n *     });\n *     const data = await response.json();\n *     return {\n *       url: data.url,\n *       size: blob.size,\n *       contentType: blob.type,\n *       metadata: data.metadata\n *     };\n *   },\n *\n *   async download(identifier) {\n *     const response = await fetch(`/api/storage/download/${identifier}`);\n *     return response.blob();\n *   }\n * };\n * ```\n */\nexport interface StorageCallbacks {\n  /**\n   * Upload a blob to storage\n   *\n   * @param blob - The data to upload\n   * @param filename - Optional filename hint\n   * @param metadata - Optional metadata for the upload\n   * @returns Upload result with identifier and metadata\n   */\n  upload: (\n    blob: Blob,\n    filename?: string,\n    metadata?: Record<string, unknown>,\n  ) => Promise<StorageUploadResult>;\n\n  /**\n   * Download data from storage\n   *\n   * @param identifier - The storage identifier (could be URL, hash, path, or any unique ID)\n   * @param options - Optional download options\n   * @returns The downloaded data as a Blob\n   */\n  download: (\n    identifier: string,\n    options?: StorageDownloadOptions,\n  ) => Promise<Blob>;\n\n  /**\n   * List stored items (optional)\n   *\n   * @param prefix - Optional prefix to filter results\n   * @param options - Optional listing options\n   * @returns Array of storage items with metadata\n   */\n  list?: (\n    prefix?: string,\n    options?: StorageListOptions,\n  ) => Promise<StorageListResult>;\n\n  /**\n   * Delete a stored item (optional)\n   *\n   * @param identifier - The storage identifier to delete\n   * @returns Promise that resolves to true if deletion succeeded\n   */\n  delete?: (identifier: string) => Promise<boolean>;\n\n  /**\n   * Extract identifier from a URL or return as-is (optional)\n   * Used for backward compatibility with URL-based systems\n   *\n   * @param url - The URL to extract from\n   * @returns The extracted identifier\n   */\n  extractIdentifier?: (url: string) => string;\n}\n\n/**\n * Options for storage download operations\n *\n * @category Configuration\n */\nexport interface StorageDownloadOptions {\n  /** Optional HTTP headers */\n  headers?: Record<string, string>;\n  /** Optional abort signal for cancellation */\n  signal?: AbortSignal;\n  /** Optional byte range for partial downloads */\n  range?: { start?: number; end?: number };\n}\n\n/**\n * Result from storage list operations\n *\n * @category Configuration\n */\nexport interface StorageListResult {\n  /** Array of storage items */\n  items: Array<{\n    /** Item identifier */\n    identifier: string;\n    /** Item size in bytes */\n    size?: number;\n    /** Last modified timestamp */\n    lastModified?: Date;\n    /** Item metadata */\n    metadata?: Record<string, unknown>;\n  }>;\n  /** Continuation token for pagination */\n  continuationToken?: string;\n  /** Whether more results are available */\n  hasMore?: boolean;\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}