@supabase/storage-js
Advanced tools
| import { ErrorNamespace, isStorageError, StorageError } from './errors' | ||
| import { Fetch } from './fetch' | ||
| import { resolveFetch } from './helpers' | ||
| /** | ||
| * @ignore | ||
| * Base API client class for all Storage API classes | ||
| * Provides common infrastructure for error handling and configuration | ||
| * | ||
| * @typeParam TError - The error type (StorageError or subclass) | ||
| */ | ||
| export default abstract class BaseApiClient<TError extends StorageError = StorageError> { | ||
| protected url: string | ||
| protected headers: { [key: string]: string } | ||
| protected fetch: Fetch | ||
| protected shouldThrowOnError = false | ||
| protected namespace: ErrorNamespace | ||
| /** | ||
| * Creates a new BaseApiClient instance | ||
| * @param url - Base URL for API requests | ||
| * @param headers - Default headers for API requests | ||
| * @param fetch - Optional custom fetch implementation | ||
| * @param namespace - Error namespace ('storage' or 'vectors') | ||
| */ | ||
| constructor( | ||
| url: string, | ||
| headers: { [key: string]: string } = {}, | ||
| fetch?: Fetch, | ||
| namespace: ErrorNamespace = 'storage' | ||
| ) { | ||
| this.url = url | ||
| this.headers = headers | ||
| this.fetch = resolveFetch(fetch) | ||
| this.namespace = namespace | ||
| } | ||
| /** | ||
| * Enable throwing errors instead of returning them. | ||
| * When enabled, errors are thrown instead of returned in { data, error } format. | ||
| * | ||
| * @returns this - For method chaining | ||
| */ | ||
| public throwOnError(): this { | ||
| this.shouldThrowOnError = true | ||
| return this | ||
| } | ||
| /** | ||
| * Handles API operation with standardized error handling | ||
| * Eliminates repetitive try-catch blocks across all API methods | ||
| * | ||
| * This wrapper: | ||
| * 1. Executes the operation | ||
| * 2. Returns { data, error: null } on success | ||
| * 3. Returns { data: null, error } on failure (if shouldThrowOnError is false) | ||
| * 4. Throws error on failure (if shouldThrowOnError is true) | ||
| * | ||
| * @typeParam T - The expected data type from the operation | ||
| * @param operation - Async function that performs the API call | ||
| * @returns Promise with { data, error } tuple | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * async listBuckets() { | ||
| * return this.handleOperation(async () => { | ||
| * return await get(this.fetch, `${this.url}/bucket`, { | ||
| * headers: this.headers, | ||
| * }) | ||
| * }) | ||
| * } | ||
| * ``` | ||
| */ | ||
| protected async handleOperation<T>( | ||
| operation: () => Promise<T> | ||
| ): Promise<{ data: T; error: null } | { data: null; error: TError }> { | ||
| try { | ||
| const data = await operation() | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error: error as TError } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| } |
| /** | ||
| * Namespace type for error classes | ||
| * Determines the error class names and type guards | ||
| */ | ||
| export type ErrorNamespace = 'storage' | 'vectors' | ||
| /** | ||
| * Base error class for all Storage errors | ||
| * Supports both 'storage' and 'vectors' namespaces | ||
| */ | ||
| export class StorageError extends Error { | ||
| protected __isStorageError = true | ||
| protected namespace: ErrorNamespace | ||
| status?: number | ||
| statusCode?: string | ||
| constructor( | ||
| message: string, | ||
| namespace: ErrorNamespace = 'storage', | ||
| status?: number, | ||
| statusCode?: string | ||
| ) { | ||
| super(message) | ||
| this.namespace = namespace | ||
| this.name = namespace === 'vectors' ? 'StorageVectorsError' : 'StorageError' | ||
| this.status = status | ||
| this.statusCode = statusCode | ||
| } | ||
| } | ||
| /** | ||
| * Type guard to check if an error is a StorageError | ||
| * @param error - The error to check | ||
| * @returns True if the error is a StorageError | ||
| */ | ||
| export function isStorageError(error: unknown): error is StorageError { | ||
| return typeof error === 'object' && error !== null && '__isStorageError' in error | ||
| } | ||
| /** | ||
| * API error returned from Storage service | ||
| * Includes HTTP status code and service-specific error code | ||
| */ | ||
| export class StorageApiError extends StorageError { | ||
| override status: number | ||
| override statusCode: string | ||
| constructor( | ||
| message: string, | ||
| status: number, | ||
| statusCode: string, | ||
| namespace: ErrorNamespace = 'storage' | ||
| ) { | ||
| super(message, namespace, status, statusCode) | ||
| this.name = namespace === 'vectors' ? 'StorageVectorsApiError' : 'StorageApiError' | ||
| this.status = status | ||
| this.statusCode = statusCode | ||
| } | ||
| toJSON() { | ||
| return { | ||
| name: this.name, | ||
| message: this.message, | ||
| status: this.status, | ||
| statusCode: this.statusCode, | ||
| } | ||
| } | ||
| } | ||
| /** | ||
| * Unknown error that doesn't match expected error patterns | ||
| * Wraps the original error for debugging | ||
| */ | ||
| export class StorageUnknownError extends StorageError { | ||
| originalError: unknown | ||
| constructor(message: string, originalError: unknown, namespace: ErrorNamespace = 'storage') { | ||
| super(message, namespace) | ||
| this.name = namespace === 'vectors' ? 'StorageVectorsUnknownError' : 'StorageUnknownError' | ||
| this.originalError = originalError | ||
| } | ||
| } | ||
| // ============================================================================ | ||
| // Backward Compatibility Exports for Vectors | ||
| // ============================================================================ | ||
| /** | ||
| * @deprecated Use StorageError with namespace='vectors' instead | ||
| * Alias for backward compatibility with existing vector storage code | ||
| */ | ||
| export class StorageVectorsError extends StorageError { | ||
| constructor(message: string) { | ||
| super(message, 'vectors') | ||
| } | ||
| } | ||
| /** | ||
| * Type guard to check if an error is a StorageVectorsError | ||
| * @param error - The error to check | ||
| * @returns True if the error is a StorageVectorsError | ||
| */ | ||
| export function isStorageVectorsError(error: unknown): error is StorageVectorsError { | ||
| return isStorageError(error) && (error as StorageError)['namespace'] === 'vectors' | ||
| } | ||
| /** | ||
| * @deprecated Use StorageApiError with namespace='vectors' instead | ||
| * Alias for backward compatibility with existing vector storage code | ||
| */ | ||
| export class StorageVectorsApiError extends StorageApiError { | ||
| constructor(message: string, status: number, statusCode: string) { | ||
| super(message, status, statusCode, 'vectors') | ||
| } | ||
| } | ||
| /** | ||
| * @deprecated Use StorageUnknownError with namespace='vectors' instead | ||
| * Alias for backward compatibility with existing vector storage code | ||
| */ | ||
| export class StorageVectorsUnknownError extends StorageUnknownError { | ||
| constructor(message: string, originalError: unknown) { | ||
| super(message, originalError, 'vectors') | ||
| } | ||
| } | ||
| /** | ||
| * Error codes specific to S3 Vectors API | ||
| * Maps AWS service errors to application-friendly error codes | ||
| */ | ||
| export enum StorageVectorsErrorCode { | ||
| /** Internal server fault (HTTP 500) */ | ||
| InternalError = 'InternalError', | ||
| /** Resource already exists / conflict (HTTP 409) */ | ||
| S3VectorConflictException = 'S3VectorConflictException', | ||
| /** Resource not found (HTTP 404) */ | ||
| S3VectorNotFoundException = 'S3VectorNotFoundException', | ||
| /** Delete bucket while not empty (HTTP 400) */ | ||
| S3VectorBucketNotEmpty = 'S3VectorBucketNotEmpty', | ||
| /** Exceeds bucket quota/limit (HTTP 400) */ | ||
| S3VectorMaxBucketsExceeded = 'S3VectorMaxBucketsExceeded', | ||
| /** Exceeds index quota/limit (HTTP 400) */ | ||
| S3VectorMaxIndexesExceeded = 'S3VectorMaxIndexesExceeded', | ||
| } |
| import { StorageApiError, StorageUnknownError, ErrorNamespace } from './errors' | ||
| import { isPlainObject, resolveResponse } from './helpers' | ||
| export type Fetch = typeof fetch | ||
| /** | ||
| * Options for fetch requests | ||
| */ | ||
| export interface FetchOptions { | ||
| headers?: { | ||
| [key: string]: string | ||
| } | ||
| duplex?: string | ||
| noResolveJson?: boolean | ||
| } | ||
| /** | ||
| * Additional fetch parameters (e.g., signal for cancellation) | ||
| */ | ||
| export interface FetchParameters { | ||
| signal?: AbortSignal | ||
| } | ||
| /** | ||
| * HTTP methods supported by the API | ||
| */ | ||
| export type RequestMethodType = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | ||
| /** | ||
| * Extracts error message from various error response formats | ||
| * @param err - Error object from API | ||
| * @returns Human-readable error message | ||
| */ | ||
| const _getErrorMessage = (err: any): string => | ||
| err.msg || | ||
| err.message || | ||
| err.error_description || | ||
| (typeof err.error === 'string' ? err.error : err.error?.message) || | ||
| JSON.stringify(err) | ||
| /** | ||
| * Handles fetch errors and converts them to Storage error types | ||
| * @param error - The error caught from fetch | ||
| * @param reject - Promise rejection function | ||
| * @param options - Fetch options that may affect error handling | ||
| * @param namespace - Error namespace ('storage' or 'vectors') | ||
| */ | ||
| const handleError = async ( | ||
| error: unknown, | ||
| reject: (reason?: any) => void, | ||
| options: FetchOptions | undefined, | ||
| namespace: ErrorNamespace | ||
| ) => { | ||
| // Check if error is a Response-like object (has status and ok properties) | ||
| // This is more reliable than instanceof which can fail across realms | ||
| const isResponseLike = | ||
| error && | ||
| typeof error === 'object' && | ||
| 'status' in error && | ||
| 'ok' in error && | ||
| typeof (error as any).status === 'number' | ||
| if (isResponseLike && !options?.noResolveJson) { | ||
| const responseError = error as any | ||
| const status = responseError.status || 500 | ||
| // Try to parse JSON body if available | ||
| if (typeof responseError.json === 'function') { | ||
| responseError | ||
| .json() | ||
| .then((err: any) => { | ||
| const statusCode = err?.statusCode || err?.code || status + '' | ||
| reject(new StorageApiError(_getErrorMessage(err), status, statusCode, namespace)) | ||
| }) | ||
| .catch(() => { | ||
| // If JSON parsing fails for vectors, create ApiError with HTTP status | ||
| if (namespace === 'vectors') { | ||
| const statusCode = status + '' | ||
| const message = responseError.statusText || `HTTP ${status} error` | ||
| reject(new StorageApiError(message, status, statusCode, namespace)) | ||
| } else { | ||
| const statusCode = status + '' | ||
| const message = responseError.statusText || `HTTP ${status} error` | ||
| reject(new StorageApiError(message, status, statusCode, namespace)) | ||
| } | ||
| }) | ||
| } else { | ||
| // No json() method available, create error from status | ||
| const statusCode = status + '' | ||
| const message = responseError.statusText || `HTTP ${status} error` | ||
| reject(new StorageApiError(message, status, statusCode, namespace)) | ||
| } | ||
| } else { | ||
| reject(new StorageUnknownError(_getErrorMessage(error), error, namespace)) | ||
| } | ||
| } | ||
| /** | ||
| * Builds request parameters for fetch calls | ||
| * @param method - HTTP method | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters like AbortSignal | ||
| * @param body - Request body (will be JSON stringified if plain object) | ||
| * @returns Complete fetch request parameters | ||
| */ | ||
| const _getRequestParams = ( | ||
| method: RequestMethodType, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters, | ||
| body?: object | ||
| ) => { | ||
| const params: { [k: string]: any } = { method, headers: options?.headers || {} } | ||
| if (method === 'GET' || method === 'HEAD' || !body) { | ||
| return { ...params, ...parameters } | ||
| } | ||
| if (isPlainObject(body)) { | ||
| params.headers = { 'Content-Type': 'application/json', ...options?.headers } | ||
| params.body = JSON.stringify(body) | ||
| } else { | ||
| params.body = body | ||
| } | ||
| if (options?.duplex) { | ||
| params.duplex = options.duplex | ||
| } | ||
| return { ...params, ...parameters } | ||
| } | ||
| /** | ||
| * Internal request handler that wraps fetch with error handling | ||
| * @param fetcher - Fetch function to use | ||
| * @param method - HTTP method | ||
| * @param url - Request URL | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @param body - Request body | ||
| * @param namespace - Error namespace ('storage' or 'vectors') | ||
| * @returns Promise with parsed response or error | ||
| */ | ||
| async function _handleRequest( | ||
| fetcher: Fetch, | ||
| method: RequestMethodType, | ||
| url: string, | ||
| options: FetchOptions | undefined, | ||
| parameters: FetchParameters | undefined, | ||
| body: object | undefined, | ||
| namespace: ErrorNamespace | ||
| ): Promise<any> { | ||
| return new Promise((resolve, reject) => { | ||
| fetcher(url, _getRequestParams(method, options, parameters, body)) | ||
| .then((result) => { | ||
| if (!result.ok) throw result | ||
| if (options?.noResolveJson) return result | ||
| // Handle empty responses (204, empty body) - especially for vectors | ||
| if (namespace === 'vectors') { | ||
| const contentType = result.headers.get('content-type') | ||
| if (!contentType || !contentType.includes('application/json')) { | ||
| return {} | ||
| } | ||
| } | ||
| return result.json() | ||
| }) | ||
| .then((data) => resolve(data)) | ||
| .catch((error) => handleError(error, reject, options, namespace)) | ||
| }) | ||
| } | ||
| /** | ||
| * Creates a fetch API with the specified namespace | ||
| * @param namespace - Error namespace ('storage' or 'vectors') | ||
| * @returns Object with HTTP method functions | ||
| */ | ||
| export function createFetchApi(namespace: ErrorNamespace = 'storage') { | ||
| return { | ||
| /** | ||
| * Performs a GET request | ||
| * @param fetcher - Fetch function to use | ||
| * @param url - Request URL | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @returns Promise with parsed response | ||
| */ | ||
| get: async ( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters | ||
| ): Promise<any> => { | ||
| return _handleRequest(fetcher, 'GET', url, options, parameters, undefined, namespace) | ||
| }, | ||
| /** | ||
| * Performs a POST request | ||
| * @param fetcher - Fetch function to use | ||
| * @param url - Request URL | ||
| * @param body - Request body to be JSON stringified | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @returns Promise with parsed response | ||
| */ | ||
| post: async ( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| body: object, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters | ||
| ): Promise<any> => { | ||
| return _handleRequest(fetcher, 'POST', url, options, parameters, body, namespace) | ||
| }, | ||
| /** | ||
| * Performs a PUT request | ||
| * @param fetcher - Fetch function to use | ||
| * @param url - Request URL | ||
| * @param body - Request body to be JSON stringified | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @returns Promise with parsed response | ||
| */ | ||
| put: async ( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| body: object, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters | ||
| ): Promise<any> => { | ||
| return _handleRequest(fetcher, 'PUT', url, options, parameters, body, namespace) | ||
| }, | ||
| /** | ||
| * Performs a HEAD request | ||
| * @param fetcher - Fetch function to use | ||
| * @param url - Request URL | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @returns Promise with Response object (not JSON parsed) | ||
| */ | ||
| head: async ( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters | ||
| ): Promise<any> => { | ||
| return _handleRequest( | ||
| fetcher, | ||
| 'HEAD', | ||
| url, | ||
| { | ||
| ...options, | ||
| noResolveJson: true, | ||
| }, | ||
| parameters, | ||
| undefined, | ||
| namespace | ||
| ) | ||
| }, | ||
| /** | ||
| * Performs a DELETE request | ||
| * @param fetcher - Fetch function to use | ||
| * @param url - Request URL | ||
| * @param body - Request body to be JSON stringified | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @returns Promise with parsed response | ||
| */ | ||
| remove: async ( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| body: object, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters | ||
| ): Promise<any> => { | ||
| return _handleRequest(fetcher, 'DELETE', url, options, parameters, body, namespace) | ||
| }, | ||
| } | ||
| } | ||
| // Default exports for backward compatibility with 'storage' namespace | ||
| const defaultApi = createFetchApi('storage') | ||
| export const { get, post, put, head, remove } = defaultApi |
| type Fetch = typeof fetch | ||
| /** | ||
| * Resolves the fetch implementation to use | ||
| * Uses custom fetch if provided, otherwise uses native fetch | ||
| * | ||
| * @param customFetch - Optional custom fetch implementation | ||
| * @returns Resolved fetch function | ||
| */ | ||
| export const resolveFetch = (customFetch?: Fetch): Fetch => { | ||
| if (customFetch) { | ||
| return (...args) => customFetch(...args) | ||
| } | ||
| return (...args) => fetch(...args) | ||
| } | ||
| /** | ||
| * Resolves the Response constructor to use | ||
| * Returns native Response constructor | ||
| * | ||
| * @returns Response constructor | ||
| */ | ||
| export const resolveResponse = (): typeof Response => { | ||
| return Response | ||
| } | ||
| /** | ||
| * Determine if input is a plain object | ||
| * An object is plain if it's created by either {}, new Object(), or Object.create(null) | ||
| * | ||
| * @param value - Value to check | ||
| * @returns True if value is a plain object | ||
| * @source https://github.com/sindresorhus/is-plain-obj | ||
| */ | ||
| export const isPlainObject = (value: object): boolean => { | ||
| if (typeof value !== 'object' || value === null) { | ||
| return false | ||
| } | ||
| const prototype = Object.getPrototypeOf(value) | ||
| return ( | ||
| (prototype === null || | ||
| prototype === Object.prototype || | ||
| Object.getPrototypeOf(prototype) === null) && | ||
| !(Symbol.toStringTag in value) && | ||
| !(Symbol.iterator in value) | ||
| ) | ||
| } | ||
| /** | ||
| * Recursively converts object keys from snake_case to camelCase | ||
| * Used for normalizing API responses | ||
| * | ||
| * @param item - Object to convert | ||
| * @returns Converted object with camelCase keys | ||
| */ | ||
| export const recursiveToCamel = (item: Record<string, any>): unknown => { | ||
| if (Array.isArray(item)) { | ||
| return item.map((el) => recursiveToCamel(el)) | ||
| } else if (typeof item === 'function' || item !== Object(item)) { | ||
| return item | ||
| } | ||
| const result: Record<string, any> = {} | ||
| Object.entries(item).forEach(([key, value]) => { | ||
| const newKey = key.replace(/([-_][a-z])/gi, (c) => c.toUpperCase().replace(/[-_]/g, '')) | ||
| result[newKey] = recursiveToCamel(value) | ||
| }) | ||
| return result | ||
| } | ||
| /** | ||
| * Validates if a given bucket name is valid according to Supabase Storage API rules | ||
| * Mirrors backend validation from: storage/src/storage/limits.ts:isValidBucketName() | ||
| * | ||
| * Rules: | ||
| * - Length: 1-100 characters | ||
| * - Allowed characters: alphanumeric (a-z, A-Z, 0-9), underscore (_), and safe special characters | ||
| * - Safe special characters: ! - . * ' ( ) space & $ @ = ; : + , ? | ||
| * - Forbidden: path separators (/, \), path traversal (..), leading/trailing whitespace | ||
| * | ||
| * AWS S3 Reference: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html | ||
| * | ||
| * @param bucketName - The bucket name to validate | ||
| * @returns true if valid, false otherwise | ||
| */ | ||
| export const isValidBucketName = (bucketName: string): boolean => { | ||
| if (!bucketName || typeof bucketName !== 'string') { | ||
| return false | ||
| } | ||
| // Check length constraints (1-100 characters) | ||
| if (bucketName.length === 0 || bucketName.length > 100) { | ||
| return false | ||
| } | ||
| // Check for leading/trailing whitespace | ||
| if (bucketName.trim() !== bucketName) { | ||
| return false | ||
| } | ||
| // Explicitly reject path separators (security) | ||
| // Note: Consecutive periods (..) are allowed by backend - the AWS restriction | ||
| // on relative paths applies to object keys, not bucket names | ||
| if (bucketName.includes('/') || bucketName.includes('\\')) { | ||
| return false | ||
| } | ||
| // Validate against allowed character set | ||
| // Pattern matches backend regex: /^(\w|!|-|\.|\*|'|\(|\)| |&|\$|@|=|;|:|\+|,|\?)*$/ | ||
| // This explicitly excludes path separators (/, \) and other problematic characters | ||
| const bucketNameRegex = /^[\w!.\*'() &$@=;:+,?-]+$/ | ||
| return bucketNameRegex.test(bucketName) | ||
| } | ||
| /** | ||
| * Normalizes a number array to float32 format | ||
| * Ensures all vector values are valid 32-bit floats | ||
| * | ||
| * @param values - Array of numbers to normalize | ||
| * @returns Normalized float32 array | ||
| */ | ||
| export const normalizeToFloat32 = (values: number[]): number[] => { | ||
| // Use Float32Array to ensure proper precision | ||
| return Array.from(new Float32Array(values)) | ||
| } | ||
| /** | ||
| * Validates vector dimensions match expected dimension | ||
| * Throws error if dimensions don't match | ||
| * | ||
| * @param vector - Vector data to validate | ||
| * @param expectedDimension - Expected vector dimension | ||
| * @throws Error if dimensions don't match | ||
| */ | ||
| export const validateVectorDimension = ( | ||
| vector: { float32: number[] }, | ||
| expectedDimension?: number | ||
| ): void => { | ||
| if (expectedDimension !== undefined && vector.float32.length !== expectedDimension) { | ||
| throw new Error( | ||
| `Vector dimension mismatch: expected ${expectedDimension}, got ${vector.float32.length}` | ||
| ) | ||
| } | ||
| } |
| import VectorIndexApi, { CreateIndexOptions } from './VectorIndexApi' | ||
| import VectorDataApi from './VectorDataApi' | ||
| import { Fetch } from '../lib/common/fetch' | ||
| import VectorBucketApi from './VectorBucketApi' | ||
| import { | ||
| ApiResponse, | ||
| DeleteVectorsOptions, | ||
| GetVectorsOptions, | ||
| ListIndexesOptions, | ||
| ListVectorsOptions, | ||
| ListVectorBucketsOptions, | ||
| ListVectorBucketsResponse, | ||
| PutVectorsOptions, | ||
| QueryVectorsOptions, | ||
| VectorBucket, | ||
| } from '../lib/types' | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Configuration options for the Storage Vectors client | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| */ | ||
| export interface StorageVectorsClientOptions { | ||
| /** | ||
| * Custom headers to include in all requests | ||
| */ | ||
| headers?: { [key: string]: string } | ||
| /** | ||
| * Custom fetch implementation (optional) | ||
| * Useful for testing or custom request handling | ||
| */ | ||
| fetch?: Fetch | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Main client for interacting with S3 Vectors API | ||
| * Provides access to bucket, index, and vector data operations | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * **Usage Patterns:** | ||
| * | ||
| * ```typescript | ||
| * const { data, error } = await supabase | ||
| * .storage | ||
| * .vectors | ||
| * .createBucket('embeddings-prod') | ||
| * | ||
| * // Access index operations via buckets | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * await bucket.createIndex({ | ||
| * indexName: 'documents', | ||
| * dataType: 'float32', | ||
| * dimension: 1536, | ||
| * distanceMetric: 'cosine' | ||
| * }) | ||
| * | ||
| * // Access vector operations via index | ||
| * const index = bucket.index('documents') | ||
| * await index.putVectors({ | ||
| * vectors: [ | ||
| * { key: 'doc-1', data: { float32: [...] }, metadata: { title: 'Intro' } } | ||
| * ] | ||
| * }) | ||
| * | ||
| * // Query similar vectors | ||
| * const { data } = await index.queryVectors({ | ||
| * queryVector: { float32: [...] }, | ||
| * topK: 5, | ||
| * returnDistance: true | ||
| * }) | ||
| * ``` | ||
| */ | ||
| export class StorageVectorsClient extends VectorBucketApi { | ||
| /** | ||
| * @alpha | ||
| * | ||
| * Creates a StorageVectorsClient that can manage buckets, indexes, and vectors. | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param url - Base URL of the Storage Vectors REST API. | ||
| * @param options.headers - Optional headers (for example `Authorization`) applied to every request. | ||
| * @param options.fetch - Optional custom `fetch` implementation for non-browser runtimes. | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const client = new StorageVectorsClient(url, options) | ||
| * ``` | ||
| */ | ||
| constructor(url: string, options: StorageVectorsClientOptions = {}) { | ||
| super(url, options.headers || {}, options.fetch) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Access operations for a specific vector bucket | ||
| * Returns a scoped client for index and vector operations within the bucket | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param vectorBucketName - Name of the vector bucket | ||
| * @returns Bucket-scoped client with index and vector operations | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * ``` | ||
| */ | ||
| from(vectorBucketName: string): VectorBucketScope { | ||
| return new VectorBucketScope(this.url, this.headers, vectorBucketName, this.fetch) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Creates a new vector bucket | ||
| * Vector buckets are containers for vector indexes and their data | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param vectorBucketName - Unique name for the vector bucket | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const { data, error } = await supabase | ||
| * .storage | ||
| * .vectors | ||
| * .createBucket('embeddings-prod') | ||
| * ``` | ||
| */ | ||
| async createBucket(vectorBucketName: string): Promise<ApiResponse<undefined>> { | ||
| return super.createBucket(vectorBucketName) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Retrieves metadata for a specific vector bucket | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param vectorBucketName - Name of the vector bucket | ||
| * @returns Promise with bucket metadata or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const { data, error } = await supabase | ||
| * .storage | ||
| * .vectors | ||
| * .getBucket('embeddings-prod') | ||
| * | ||
| * console.log('Bucket created:', data?.vectorBucket.creationTime) | ||
| * ``` | ||
| */ | ||
| async getBucket(vectorBucketName: string): Promise<ApiResponse<{ vectorBucket: VectorBucket }>> { | ||
| return super.getBucket(vectorBucketName) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Lists all vector buckets with optional filtering and pagination | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Optional filters (prefix, maxResults, nextToken) | ||
| * @returns Promise with list of buckets or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const { data, error } = await supabase | ||
| * .storage | ||
| * .vectors | ||
| * .listBuckets({ prefix: 'embeddings-' }) | ||
| * | ||
| * data?.vectorBuckets.forEach(bucket => { | ||
| * console.log(bucket.vectorBucketName) | ||
| * }) | ||
| * ``` | ||
| */ | ||
| async listBuckets( | ||
| options: ListVectorBucketsOptions = {} | ||
| ): Promise<ApiResponse<ListVectorBucketsResponse>> { | ||
| return super.listBuckets(options) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Deletes a vector bucket (bucket must be empty) | ||
| * All indexes must be deleted before deleting the bucket | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param vectorBucketName - Name of the vector bucket to delete | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const { data, error } = await supabase | ||
| * .storage | ||
| * .vectors | ||
| * .deleteBucket('embeddings-old') | ||
| * ``` | ||
| */ | ||
| async deleteBucket(vectorBucketName: string): Promise<ApiResponse<undefined>> { | ||
| return super.deleteBucket(vectorBucketName) | ||
| } | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Scoped client for operations within a specific vector bucket | ||
| * Provides index management and access to vector operations | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| */ | ||
| export class VectorBucketScope extends VectorIndexApi { | ||
| private vectorBucketName: string | ||
| /** | ||
| * @alpha | ||
| * | ||
| * Creates a helper that automatically scopes all index operations to the provided bucket. | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * ``` | ||
| */ | ||
| constructor( | ||
| url: string, | ||
| headers: { [key: string]: string }, | ||
| vectorBucketName: string, | ||
| fetch?: Fetch | ||
| ) { | ||
| super(url, headers, fetch) | ||
| this.vectorBucketName = vectorBucketName | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Creates a new vector index in this bucket | ||
| * Convenience method that automatically includes the bucket name | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Index configuration (vectorBucketName is automatically set) | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * await bucket.createIndex({ | ||
| * indexName: 'documents-openai', | ||
| * dataType: 'float32', | ||
| * dimension: 1536, | ||
| * distanceMetric: 'cosine', | ||
| * metadataConfiguration: { | ||
| * nonFilterableMetadataKeys: ['raw_text'] | ||
| * } | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async createIndex(options: Omit<CreateIndexOptions, 'vectorBucketName'>) { | ||
| return super.createIndex({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Lists indexes in this bucket | ||
| * Convenience method that automatically includes the bucket name | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Listing options (vectorBucketName is automatically set) | ||
| * @returns Promise with response containing indexes array and pagination token or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * const { data } = await bucket.listIndexes({ prefix: 'documents-' }) | ||
| * ``` | ||
| */ | ||
| override async listIndexes(options: Omit<ListIndexesOptions, 'vectorBucketName'> = {}) { | ||
| return super.listIndexes({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Retrieves metadata for a specific index in this bucket | ||
| * Convenience method that automatically includes the bucket name | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param indexName - Name of the index to retrieve | ||
| * @returns Promise with index metadata or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * const { data } = await bucket.getIndex('documents-openai') | ||
| * console.log('Dimension:', data?.index.dimension) | ||
| * ``` | ||
| */ | ||
| override async getIndex(indexName: string) { | ||
| return super.getIndex(this.vectorBucketName, indexName) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Deletes an index from this bucket | ||
| * Convenience method that automatically includes the bucket name | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param indexName - Name of the index to delete | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * await bucket.deleteIndex('old-index') | ||
| * ``` | ||
| */ | ||
| override async deleteIndex(indexName: string) { | ||
| return super.deleteIndex(this.vectorBucketName, indexName) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Access operations for a specific index within this bucket | ||
| * Returns a scoped client for vector data operations | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param indexName - Name of the index | ||
| * @returns Index-scoped client with vector data operations | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * | ||
| * // Insert vectors | ||
| * await index.putVectors({ | ||
| * vectors: [ | ||
| * { key: 'doc-1', data: { float32: [...] }, metadata: { title: 'Intro' } } | ||
| * ] | ||
| * }) | ||
| * | ||
| * // Query similar vectors | ||
| * const { data } = await index.queryVectors({ | ||
| * queryVector: { float32: [...] }, | ||
| * topK: 5 | ||
| * }) | ||
| * ``` | ||
| */ | ||
| index(indexName: string): VectorIndexScope { | ||
| return new VectorIndexScope( | ||
| this.url, | ||
| this.headers, | ||
| this.vectorBucketName, | ||
| indexName, | ||
| this.fetch | ||
| ) | ||
| } | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Scoped client for operations within a specific vector index | ||
| * Provides vector data operations (put, get, list, query, delete) | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| */ | ||
| export class VectorIndexScope extends VectorDataApi { | ||
| private vectorBucketName: string | ||
| private indexName: string | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Creates a helper that automatically scopes all vector operations to the provided bucket/index names. | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * ``` | ||
| */ | ||
| constructor( | ||
| url: string, | ||
| headers: { [key: string]: string }, | ||
| vectorBucketName: string, | ||
| indexName: string, | ||
| fetch?: Fetch | ||
| ) { | ||
| super(url, headers, fetch) | ||
| this.vectorBucketName = vectorBucketName | ||
| this.indexName = indexName | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Inserts or updates vectors in this index | ||
| * Convenience method that automatically includes bucket and index names | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Vector insertion options (bucket and index names automatically set) | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * await index.putVectors({ | ||
| * vectors: [ | ||
| * { | ||
| * key: 'doc-1', | ||
| * data: { float32: [0.1, 0.2, ...] }, | ||
| * metadata: { title: 'Introduction', page: 1 } | ||
| * } | ||
| * ] | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async putVectors(options: Omit<PutVectorsOptions, 'vectorBucketName' | 'indexName'>) { | ||
| return super.putVectors({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| indexName: this.indexName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Retrieves vectors by keys from this index | ||
| * Convenience method that automatically includes bucket and index names | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Vector retrieval options (bucket and index names automatically set) | ||
| * @returns Promise with response containing vectors array or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * const { data } = await index.getVectors({ | ||
| * keys: ['doc-1', 'doc-2'], | ||
| * returnMetadata: true | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async getVectors(options: Omit<GetVectorsOptions, 'vectorBucketName' | 'indexName'>) { | ||
| return super.getVectors({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| indexName: this.indexName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Lists vectors in this index with pagination | ||
| * Convenience method that automatically includes bucket and index names | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Listing options (bucket and index names automatically set) | ||
| * @returns Promise with response containing vectors array and pagination token or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * const { data } = await index.listVectors({ | ||
| * maxResults: 500, | ||
| * returnMetadata: true | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async listVectors( | ||
| options: Omit<ListVectorsOptions, 'vectorBucketName' | 'indexName'> = {} | ||
| ) { | ||
| return super.listVectors({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| indexName: this.indexName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Queries for similar vectors in this index | ||
| * Convenience method that automatically includes bucket and index names | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Query options (bucket and index names automatically set) | ||
| * @returns Promise with response containing matches array of similar vectors ordered by distance or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * const { data } = await index.queryVectors({ | ||
| * queryVector: { float32: [0.1, 0.2, ...] }, | ||
| * topK: 5, | ||
| * filter: { category: 'technical' }, | ||
| * returnDistance: true, | ||
| * returnMetadata: true | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async queryVectors( | ||
| options: Omit<QueryVectorsOptions, 'vectorBucketName' | 'indexName'> | ||
| ) { | ||
| return super.queryVectors({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| indexName: this.indexName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Deletes vectors by keys from this index | ||
| * Convenience method that automatically includes bucket and index names | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Deletion options (bucket and index names automatically set) | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * await index.deleteVectors({ | ||
| * keys: ['doc-1', 'doc-2', 'doc-3'] | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async deleteVectors( | ||
| options: Omit<DeleteVectorsOptions, 'vectorBucketName' | 'indexName'> | ||
| ) { | ||
| return super.deleteVectors({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| indexName: this.indexName, | ||
| }) | ||
| } | ||
| } |
| import { DEFAULT_HEADERS } from '../lib/constants' | ||
| import { StorageError } from '../lib/common/errors' | ||
| import { Fetch, post } from '../lib/common/fetch' | ||
| import BaseApiClient from '../lib/common/BaseApiClient' | ||
| import { | ||
| ApiResponse, | ||
| VectorBucket, | ||
| ListVectorBucketsOptions, | ||
| ListVectorBucketsResponse, | ||
| } from '../lib/types' | ||
| /** | ||
| * @hidden | ||
| * Base implementation for vector bucket operations. | ||
| * Use {@link StorageVectorsClient} via `supabase.storage.vectors` instead. | ||
| */ | ||
| export default class VectorBucketApi extends BaseApiClient<StorageError> { | ||
| /** Creates a new VectorBucketApi instance */ | ||
| constructor(url: string, headers: { [key: string]: string } = {}, fetch?: Fetch) { | ||
| const finalUrl = url.replace(/\/$/, '') | ||
| const finalHeaders = { ...DEFAULT_HEADERS, 'Content-Type': 'application/json', ...headers } | ||
| super(finalUrl, finalHeaders, fetch, 'vectors') | ||
| } | ||
| /** Creates a new vector bucket */ | ||
| async createBucket(vectorBucketName: string): Promise<ApiResponse<undefined>> { | ||
| return this.handleOperation(async () => { | ||
| const data = await post( | ||
| this.fetch, | ||
| `${this.url}/CreateVectorBucket`, | ||
| { vectorBucketName }, | ||
| { headers: this.headers } | ||
| ) | ||
| return data || {} | ||
| }) | ||
| } | ||
| /** Retrieves metadata for a specific vector bucket */ | ||
| async getBucket(vectorBucketName: string): Promise<ApiResponse<{ vectorBucket: VectorBucket }>> { | ||
| return this.handleOperation(async () => { | ||
| return await post( | ||
| this.fetch, | ||
| `${this.url}/GetVectorBucket`, | ||
| { vectorBucketName }, | ||
| { headers: this.headers } | ||
| ) | ||
| }) | ||
| } | ||
| /** Lists vector buckets with optional filtering and pagination */ | ||
| async listBuckets( | ||
| options: ListVectorBucketsOptions = {} | ||
| ): Promise<ApiResponse<ListVectorBucketsResponse>> { | ||
| return this.handleOperation(async () => { | ||
| return await post(this.fetch, `${this.url}/ListVectorBuckets`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| }) | ||
| } | ||
| /** Deletes a vector bucket (must be empty first) */ | ||
| async deleteBucket(vectorBucketName: string): Promise<ApiResponse<undefined>> { | ||
| return this.handleOperation(async () => { | ||
| const data = await post( | ||
| this.fetch, | ||
| `${this.url}/DeleteVectorBucket`, | ||
| { vectorBucketName }, | ||
| { headers: this.headers } | ||
| ) | ||
| return data || {} | ||
| }) | ||
| } | ||
| } |
| import { DEFAULT_HEADERS } from '../lib/constants' | ||
| import { StorageError } from '../lib/common/errors' | ||
| import { Fetch, post } from '../lib/common/fetch' | ||
| import BaseApiClient from '../lib/common/BaseApiClient' | ||
| import { | ||
| ApiResponse, | ||
| PutVectorsOptions, | ||
| GetVectorsOptions, | ||
| GetVectorsResponse, | ||
| DeleteVectorsOptions, | ||
| ListVectorsOptions, | ||
| ListVectorsResponse, | ||
| QueryVectorsOptions, | ||
| QueryVectorsResponse, | ||
| } from '../lib/types' | ||
| /** | ||
| * @hidden | ||
| * Base implementation for vector data operations. | ||
| * Use {@link VectorIndexScope} via `supabase.storage.vectors.from('bucket').index('idx')` instead. | ||
| */ | ||
| export default class VectorDataApi extends BaseApiClient<StorageError> { | ||
| /** Creates a new VectorDataApi instance */ | ||
| constructor(url: string, headers: { [key: string]: string } = {}, fetch?: Fetch) { | ||
| const finalUrl = url.replace(/\/$/, '') | ||
| const finalHeaders = { ...DEFAULT_HEADERS, 'Content-Type': 'application/json', ...headers } | ||
| super(finalUrl, finalHeaders, fetch, 'vectors') | ||
| } | ||
| /** Inserts or updates vectors in batch (1-500 per request) */ | ||
| async putVectors(options: PutVectorsOptions): Promise<ApiResponse<undefined>> { | ||
| // Validate batch size | ||
| if (options.vectors.length < 1 || options.vectors.length > 500) { | ||
| throw new Error('Vector batch size must be between 1 and 500 items') | ||
| } | ||
| return this.handleOperation(async () => { | ||
| const data = await post(this.fetch, `${this.url}/PutVectors`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return data || {} | ||
| }) | ||
| } | ||
| /** Retrieves vectors by their keys in batch */ | ||
| async getVectors(options: GetVectorsOptions): Promise<ApiResponse<GetVectorsResponse>> { | ||
| return this.handleOperation(async () => { | ||
| return await post(this.fetch, `${this.url}/GetVectors`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| }) | ||
| } | ||
| /** Lists vectors in an index with pagination */ | ||
| async listVectors(options: ListVectorsOptions): Promise<ApiResponse<ListVectorsResponse>> { | ||
| // Validate segment configuration | ||
| if (options.segmentCount !== undefined) { | ||
| if (options.segmentCount < 1 || options.segmentCount > 16) { | ||
| throw new Error('segmentCount must be between 1 and 16') | ||
| } | ||
| if (options.segmentIndex !== undefined) { | ||
| if (options.segmentIndex < 0 || options.segmentIndex >= options.segmentCount) { | ||
| throw new Error(`segmentIndex must be between 0 and ${options.segmentCount - 1}`) | ||
| } | ||
| } | ||
| } | ||
| return this.handleOperation(async () => { | ||
| return await post(this.fetch, `${this.url}/ListVectors`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| }) | ||
| } | ||
| /** Queries for similar vectors using approximate nearest neighbor search */ | ||
| async queryVectors(options: QueryVectorsOptions): Promise<ApiResponse<QueryVectorsResponse>> { | ||
| return this.handleOperation(async () => { | ||
| return await post(this.fetch, `${this.url}/QueryVectors`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| }) | ||
| } | ||
| /** Deletes vectors by their keys in batch (1-500 per request) */ | ||
| async deleteVectors(options: DeleteVectorsOptions): Promise<ApiResponse<undefined>> { | ||
| // Validate batch size | ||
| if (options.keys.length < 1 || options.keys.length > 500) { | ||
| throw new Error('Keys batch size must be between 1 and 500 items') | ||
| } | ||
| return this.handleOperation(async () => { | ||
| const data = await post(this.fetch, `${this.url}/DeleteVectors`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return data || {} | ||
| }) | ||
| } | ||
| } |
| import { DEFAULT_HEADERS } from '../lib/constants' | ||
| import { StorageError } from '../lib/common/errors' | ||
| import { Fetch, post } from '../lib/common/fetch' | ||
| import BaseApiClient from '../lib/common/BaseApiClient' | ||
| import { | ||
| ApiResponse, | ||
| VectorIndex, | ||
| ListIndexesOptions, | ||
| ListIndexesResponse, | ||
| VectorDataType, | ||
| DistanceMetric, | ||
| MetadataConfiguration, | ||
| } from '../lib/types' | ||
| /** | ||
| * @alpha | ||
| * | ||
| * Options for creating a vector index | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| */ | ||
| export interface CreateIndexOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| dataType: VectorDataType | ||
| dimension: number | ||
| distanceMetric: DistanceMetric | ||
| metadataConfiguration?: MetadataConfiguration | ||
| } | ||
| /** | ||
| * @hidden | ||
| * Base implementation for vector index operations. | ||
| * Use {@link VectorBucketScope} via `supabase.storage.vectors.from('bucket')` instead. | ||
| */ | ||
| export default class VectorIndexApi extends BaseApiClient<StorageError> { | ||
| /** Creates a new VectorIndexApi instance */ | ||
| constructor(url: string, headers: { [key: string]: string } = {}, fetch?: Fetch) { | ||
| const finalUrl = url.replace(/\/$/, '') | ||
| const finalHeaders = { ...DEFAULT_HEADERS, 'Content-Type': 'application/json', ...headers } | ||
| super(finalUrl, finalHeaders, fetch, 'vectors') | ||
| } | ||
| /** Creates a new vector index within a bucket */ | ||
| async createIndex(options: CreateIndexOptions): Promise<ApiResponse<undefined>> { | ||
| return this.handleOperation(async () => { | ||
| const data = await post(this.fetch, `${this.url}/CreateIndex`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return data || {} | ||
| }) | ||
| } | ||
| /** Retrieves metadata for a specific vector index */ | ||
| async getIndex( | ||
| vectorBucketName: string, | ||
| indexName: string | ||
| ): Promise<ApiResponse<{ index: VectorIndex }>> { | ||
| return this.handleOperation(async () => { | ||
| return await post( | ||
| this.fetch, | ||
| `${this.url}/GetIndex`, | ||
| { vectorBucketName, indexName }, | ||
| { headers: this.headers } | ||
| ) | ||
| }) | ||
| } | ||
| /** Lists vector indexes within a bucket with optional filtering and pagination */ | ||
| async listIndexes(options: ListIndexesOptions): Promise<ApiResponse<ListIndexesResponse>> { | ||
| return this.handleOperation(async () => { | ||
| return await post(this.fetch, `${this.url}/ListIndexes`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| }) | ||
| } | ||
| /** Deletes a vector index and all its data */ | ||
| async deleteIndex(vectorBucketName: string, indexName: string): Promise<ApiResponse<undefined>> { | ||
| return this.handleOperation(async () => { | ||
| const data = await post( | ||
| this.fetch, | ||
| `${this.url}/DeleteIndex`, | ||
| { vectorBucketName, indexName }, | ||
| { headers: this.headers } | ||
| ) | ||
| return data || {} | ||
| }) | ||
| } | ||
| } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.cts","names":[],"sources":["../src/lib/errors.ts","../src/lib/types.ts","../src/lib/fetch.ts","../src/packages/StreamDownloadBuilder.ts","../src/packages/BlobDownloadBuilder.ts","../src/packages/StorageFileApi.ts","../src/packages/StorageBucketApi.ts","../src/packages/StorageAnalyticsClient.ts","../src/lib/vectors/errors.ts","../src/lib/vectors/types.ts","../src/lib/vectors/fetch.ts","../src/lib/vectors/VectorIndexApi.ts","../src/lib/vectors/VectorDataApi.ts","../src/lib/vectors/VectorBucketApi.ts","../src/lib/vectors/StorageVectorsClient.ts","../src/lib/vectors/helpers.ts","../src/StorageClient.ts"],"sourcesContent":[],"mappings":"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"} | ||
| {"version":3,"file":"index.d.cts","names":[],"sources":["../src/lib/common/errors.ts","../src/lib/common/fetch.ts","../src/lib/common/BaseApiClient.ts","../src/lib/types.ts","../src/packages/StreamDownloadBuilder.ts","../src/packages/BlobDownloadBuilder.ts","../src/packages/StorageFileApi.ts","../src/packages/StorageBucketApi.ts","../src/packages/StorageAnalyticsClient.ts","../src/packages/VectorIndexApi.ts","../src/packages/VectorDataApi.ts","../src/packages/VectorBucketApi.ts","../src/packages/StorageVectorsClient.ts","../src/StorageClient.ts"],"sourcesContent":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.mts","names":[],"sources":["../src/lib/errors.ts","../src/lib/types.ts","../src/lib/fetch.ts","../src/packages/StreamDownloadBuilder.ts","../src/packages/BlobDownloadBuilder.ts","../src/packages/StorageFileApi.ts","../src/packages/StorageBucketApi.ts","../src/packages/StorageAnalyticsClient.ts","../src/lib/vectors/errors.ts","../src/lib/vectors/types.ts","../src/lib/vectors/fetch.ts","../src/lib/vectors/VectorIndexApi.ts","../src/lib/vectors/VectorDataApi.ts","../src/lib/vectors/VectorBucketApi.ts","../src/lib/vectors/StorageVectorsClient.ts","../src/lib/vectors/helpers.ts","../src/StorageClient.ts"],"sourcesContent":[],"mappings":"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"} | ||
| {"version":3,"file":"index.d.mts","names":[],"sources":["../src/lib/common/errors.ts","../src/lib/common/fetch.ts","../src/lib/common/BaseApiClient.ts","../src/lib/types.ts","../src/packages/StreamDownloadBuilder.ts","../src/packages/BlobDownloadBuilder.ts","../src/packages/StorageFileApi.ts","../src/packages/StorageBucketApi.ts","../src/packages/StorageAnalyticsClient.ts","../src/packages/VectorIndexApi.ts","../src/packages/VectorDataApi.ts","../src/packages/VectorBucketApi.ts","../src/packages/StorageVectorsClient.ts","../src/StorageClient.ts"],"sourcesContent":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| var supabase=(function(e){var t=class extends Error{constructor(e){super(e),this.__isStorageError=!0,this.name=`StorageError`}};function n(e){return typeof e==`object`&&!!e&&`__isStorageError`in e}var r=class extends t{constructor(e,t,n){super(e),this.name=`StorageApiError`,this.status=t,this.statusCode=n}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},i=class extends t{constructor(e,t){super(e),this.name=`StorageUnknownError`,this.originalError=t}};let a=e=>e?(...t)=>e(...t):(...e)=>fetch(...e),o=()=>Response,s=e=>{if(Array.isArray(e))return e.map(e=>s(e));if(typeof e==`function`||e!==Object(e))return e;let t={};return Object.entries(e).forEach(([e,n])=>{let r=e.replace(/([-_][a-z])/gi,e=>e.toUpperCase().replace(/[-_]/g,``));t[r]=s(n)}),t},c=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},l=e=>!e||typeof e!=`string`||e.length===0||e.length>100||e.trim()!==e||e.includes(`/`)||e.includes(`\\`)?!1:/^[\w!.\*'() &$@=;:+,?-]+$/.test(e),u=e=>e.msg||e.message||e.error_description||(typeof e.error==`string`?e.error:e.error?.message)||JSON.stringify(e),d=async(e,t,n)=>{e instanceof await o()&&!n?.noResolveJson?e.json().then(n=>{let i=e.status||500,a=n?.statusCode||i+``;t(new r(u(n),i,a))}).catch(e=>{t(new i(u(e),e))}):t(new i(u(e),e))},f=(e,t,n,r)=>{let i={method:e,headers:t?.headers||{}};return e===`GET`||!r?i:(c(r)?(i.headers={"Content-Type":`application/json`,...t?.headers},i.body=JSON.stringify(r)):i.body=r,t?.duplex&&(i.duplex=t.duplex),{...i,...n})};async function p(e,t,n,r,i,a){return new Promise((o,s)=>{e(n,f(t,r,i,a)).then(e=>{if(!e.ok)throw e;return r?.noResolveJson?e:e.json()}).then(e=>o(e)).catch(e=>d(e,s,r))})}async function m(e,t,n,r){return p(e,`GET`,t,n,r)}async function h(e,t,n,r,i){return p(e,`POST`,t,r,i,n)}async function g(e,t,n,r,i){return p(e,`PUT`,t,r,i,n)}async function ee(e,t,n,r){return p(e,`HEAD`,t,{...n,noResolveJson:!0},r)}async function _(e,t,n,r,i){return p(e,`DELETE`,t,r,i,n)}var v=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t}then(e,t){return this.execute().then(e,t)}async execute(){try{return{data:(await this.downloadFn()).body,error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}};let y;var te=class{static{y=Symbol.toStringTag}constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[y]=`BlobDownloadBuilder`,this.promise=null}asStream(){return new v(this.downloadFn,this.shouldThrowOnError)}then(e,t){return this.getPromise().then(e,t)}catch(e){return this.getPromise().catch(e)}finally(e){return this.getPromise().finally(e)}getPromise(){return this.promise||=this.execute(),this.promise}async execute(){try{return{data:await(await this.downloadFn()).blob(),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}};let ne={limit:100,offset:0,sortBy:{column:`name`,order:`asc`}},b={cacheControl:`3600`,contentType:`text/plain;charset=UTF-8`,upsert:!1};var x=class{constructor(e,t={},n,r){this.shouldThrowOnError=!1,this.url=e,this.headers=t,this.bucketId=n,this.fetch=a(r)}throwOnError(){return this.shouldThrowOnError=!0,this}async uploadOrUpdate(e,t,r,i){try{let n,a={...b,...i},o={...this.headers,...e===`POST`&&{"x-upsert":String(a.upsert)}},s=a.metadata;typeof Blob<`u`&&r instanceof Blob?(n=new FormData,n.append(`cacheControl`,a.cacheControl),s&&n.append(`metadata`,this.encodeMetadata(s)),n.append(``,r)):typeof FormData<`u`&&r instanceof FormData?(n=r,n.has(`cacheControl`)||n.append(`cacheControl`,a.cacheControl),s&&!n.has(`metadata`)&&n.append(`metadata`,this.encodeMetadata(s))):(n=r,o[`cache-control`]=`max-age=${a.cacheControl}`,o[`content-type`]=a.contentType,s&&(o[`x-metadata`]=this.toBase64(this.encodeMetadata(s))),(typeof ReadableStream<`u`&&n instanceof ReadableStream||n&&typeof n==`object`&&`pipe`in n&&typeof n.pipe==`function`)&&!a.duplex&&(a.duplex=`half`)),i?.headers&&(o={...o,...i.headers});let c=this._removeEmptyFolders(t),l=this._getFinalPath(c),u=await(e==`PUT`?g:h)(this.fetch,`${this.url}/object/${l}`,n,{headers:o,...a?.duplex?{duplex:a.duplex}:{}});return{data:{path:c,id:u.Id,fullPath:u.Key},error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async upload(e,t,n){return this.uploadOrUpdate(`POST`,e,t,n)}async uploadToSignedUrl(e,t,r,i){let a=this._removeEmptyFolders(e),o=this._getFinalPath(a),s=new URL(this.url+`/object/upload/sign/${o}`);s.searchParams.set(`token`,t);try{let e,t={upsert:b.upsert,...i},n={...this.headers,"x-upsert":String(t.upsert)};return typeof Blob<`u`&&r instanceof Blob?(e=new FormData,e.append(`cacheControl`,t.cacheControl),e.append(``,r)):typeof FormData<`u`&&r instanceof FormData?(e=r,e.append(`cacheControl`,t.cacheControl)):(e=r,n[`cache-control`]=`max-age=${t.cacheControl}`,n[`content-type`]=t.contentType),{data:{path:a,fullPath:(await g(this.fetch,s.toString(),e,{headers:n})).Key},error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async createSignedUploadUrl(e,r){try{let n=this._getFinalPath(e),i={...this.headers};r?.upsert&&(i[`x-upsert`]=`true`);let a=await h(this.fetch,`${this.url}/object/upload/sign/${n}`,{},{headers:i}),o=new URL(this.url+a.url),s=o.searchParams.get(`token`);if(!s)throw new t(`No token returned by API`);return{data:{signedUrl:o.toString(),path:e,token:s},error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async update(e,t,n){return this.uploadOrUpdate(`PUT`,e,t,n)}async move(e,t,r){try{return{data:await h(this.fetch,`${this.url}/object/move`,{bucketId:this.bucketId,sourceKey:e,destinationKey:t,destinationBucket:r?.destinationBucket},{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async copy(e,t,r){try{return{data:{path:(await h(this.fetch,`${this.url}/object/copy`,{bucketId:this.bucketId,sourceKey:e,destinationKey:t,destinationBucket:r?.destinationBucket},{headers:this.headers})).Key},error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async createSignedUrl(e,t,r){try{let n=this._getFinalPath(e),i=await h(this.fetch,`${this.url}/object/sign/${n}`,{expiresIn:t,...r?.transform?{transform:r.transform}:{}},{headers:this.headers}),a=r?.download?`&download=${r.download===!0?``:r.download}`:``;return i={signedUrl:encodeURI(`${this.url}${i.signedURL}${a}`)},{data:i,error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async createSignedUrls(e,t,r){try{let n=await h(this.fetch,`${this.url}/object/sign/${this.bucketId}`,{expiresIn:t,paths:e},{headers:this.headers}),i=r?.download?`&download=${r.download===!0?``:r.download}`:``;return{data:n.map(e=>({...e,signedUrl:e.signedURL?encodeURI(`${this.url}${e.signedURL}${i}`):null})),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}download(e,t){let n=t?.transform===void 0?`object`:`render/image/authenticated`,r=this.transformOptsToQueryString(t?.transform||{}),i=r?`?${r}`:``,a=this._getFinalPath(e);return new te(()=>m(this.fetch,`${this.url}/${n}/${a}${i}`,{headers:this.headers,noResolveJson:!0}),this.shouldThrowOnError)}async info(e){let t=this._getFinalPath(e);try{return{data:s(await m(this.fetch,`${this.url}/object/info/${t}`,{headers:this.headers})),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async exists(e){let t=this._getFinalPath(e);try{return await ee(this.fetch,`${this.url}/object/${t}`,{headers:this.headers}),{data:!0,error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e)&&e instanceof i){let t=e.originalError;if([400,404].includes(t?.status))return{data:!1,error:e}}throw e}}getPublicUrl(e,t){let n=this._getFinalPath(e),r=[],i=t?.download?`download=${t.download===!0?``:t.download}`:``;i!==``&&r.push(i);let a=t?.transform===void 0?`object`:`render/image`,o=this.transformOptsToQueryString(t?.transform||{});o!==``&&r.push(o);let s=r.join(`&`);return s!==``&&(s=`?${s}`),{data:{publicUrl:encodeURI(`${this.url}/${a}/public/${n}${s}`)}}}async remove(e){try{return{data:await _(this.fetch,`${this.url}/object/${this.bucketId}`,{prefixes:e},{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async list(e,t,r){try{let n={...ne,...t,prefix:e||``};return{data:await h(this.fetch,`${this.url}/object/list/${this.bucketId}`,n,{headers:this.headers},r),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async listV2(e,t){try{let n={...e};return{data:await h(this.fetch,`${this.url}/object/list-v2/${this.bucketId}`,n,{headers:this.headers},t),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}encodeMetadata(e){return JSON.stringify(e)}toBase64(e){return typeof Buffer<`u`?Buffer.from(e).toString(`base64`):btoa(e)}_getFinalPath(e){return`${this.bucketId}/${e.replace(/^\/+/,``)}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,``).replace(/\/+/g,`/`)}transformOptsToQueryString(e){let t=[];return e.width&&t.push(`width=${e.width}`),e.height&&t.push(`height=${e.height}`),e.resize&&t.push(`resize=${e.resize}`),e.format&&t.push(`format=${e.format}`),e.quality&&t.push(`quality=${e.quality}`),t.join(`&`)}};let S=`2.91.1`,C={"X-Client-Info":`storage-js/${S}`};var re=class{constructor(e,t={},n,r){this.shouldThrowOnError=!1;let i=new URL(e);r?.useNewHostname&&/supabase\.(co|in|red)$/.test(i.hostname)&&!i.hostname.includes(`storage.supabase.`)&&(i.hostname=i.hostname.replace(`supabase.`,`storage.supabase.`)),this.url=i.href.replace(/\/$/,``),this.headers={...C,...t},this.fetch=a(n)}throwOnError(){return this.shouldThrowOnError=!0,this}async listBuckets(e){try{let t=this.listBucketOptionsToQueryString(e);return{data:await m(this.fetch,`${this.url}/bucket${t}`,{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async getBucket(e){try{return{data:await m(this.fetch,`${this.url}/bucket/${e}`,{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async createBucket(e,t={public:!1}){try{return{data:await h(this.fetch,`${this.url}/bucket`,{id:e,name:e,type:t.type,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async updateBucket(e,t){try{return{data:await g(this.fetch,`${this.url}/bucket/${e}`,{id:e,name:e,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async emptyBucket(e){try{return{data:await h(this.fetch,`${this.url}/bucket/${e}/empty`,{},{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async deleteBucket(e){try{return{data:await _(this.fetch,`${this.url}/bucket/${e}`,{},{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}listBucketOptionsToQueryString(e){let t={};return e&&(`limit`in e&&(t.limit=String(e.limit)),`offset`in e&&(t.offset=String(e.offset)),e.search&&(t.search=e.search),e.sortColumn&&(t.sortColumn=e.sortColumn),e.sortOrder&&(t.sortOrder=e.sortOrder)),Object.keys(t).length>0?`?`+new URLSearchParams(t).toString():``}},w=class extends Error{constructor(e,t){super(e),this.name=`IcebergError`,this.status=t.status,this.icebergType=t.icebergType,this.icebergCode=t.icebergCode,this.details=t.details,this.isCommitStateUnknown=t.icebergType===`CommitStateUnknownException`||[500,502,504].includes(t.status)&&t.icebergType?.includes(`CommitState`)===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function ie(e,t,n){let r=new URL(t,e);if(n)for(let[e,t]of Object.entries(n))t!==void 0&&r.searchParams.set(e,t);return r.toString()}async function T(e){return!e||e.type===`none`?{}:e.type===`bearer`?{Authorization:`Bearer ${e.token}`}:e.type===`header`?{[e.name]:e.value}:e.type===`custom`?await e.getHeaders():{}}function E(e){let t=e.fetchImpl??globalThis.fetch;return{async request({method:n,path:r,query:i,body:a,headers:o}){let s=ie(e.baseUrl,r,i),c=await T(e.auth),l=await t(s,{method:n,headers:{...a?{"Content-Type":`application/json`}:{},...c,...o},body:a?JSON.stringify(a):void 0}),u=await l.text(),d=(l.headers.get(`content-type`)||``).includes(`application/json`),f=d&&u?JSON.parse(u):u;if(!l.ok){let e=d?f:void 0,t=e?.error;throw new w(t?.message??`Request failed with status ${l.status}`,{status:l.status,icebergType:t?.type,icebergCode:t?.code,details:e})}return{status:l.status,headers:l.headers,data:f}}}}function D(e){return e.join(``)}var O=class{constructor(e,t=``){this.client=e,this.prefix=t}async listNamespaces(e){let t=e?{parent:D(e.namespace)}:void 0;return(await this.client.request({method:`GET`,path:`${this.prefix}/namespaces`,query:t})).data.namespaces.map(e=>({namespace:e}))}async createNamespace(e,t){let n={namespace:e.namespace,properties:t?.properties};return(await this.client.request({method:`POST`,path:`${this.prefix}/namespaces`,body:n})).data}async dropNamespace(e){await this.client.request({method:`DELETE`,path:`${this.prefix}/namespaces/${D(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:`GET`,path:`${this.prefix}/namespaces/${D(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:`HEAD`,path:`${this.prefix}/namespaces/${D(e.namespace)}`}),!0}catch(e){if(e instanceof w&&e.status===404)return!1;throw e}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(e){if(e instanceof w&&e.status===409)return;throw e}}};function k(e){return e.join(``)}var A=class{constructor(e,t=``,n){this.client=e,this.prefix=t,this.accessDelegation=n}async listTables(e){return(await this.client.request({method:`GET`,path:`${this.prefix}/namespaces/${k(e.namespace)}/tables`})).data.identifiers}async createTable(e,t){let n={};return this.accessDelegation&&(n[`X-Iceberg-Access-Delegation`]=this.accessDelegation),(await this.client.request({method:`POST`,path:`${this.prefix}/namespaces/${k(e.namespace)}/tables`,body:t,headers:n})).data.metadata}async updateTable(e,t){let n=await this.client.request({method:`POST`,path:`${this.prefix}/namespaces/${k(e.namespace)}/tables/${e.name}`,body:t});return{"metadata-location":n.data[`metadata-location`],metadata:n.data.metadata}}async dropTable(e,t){await this.client.request({method:`DELETE`,path:`${this.prefix}/namespaces/${k(e.namespace)}/tables/${e.name}`,query:{purgeRequested:String(t?.purge??!1)}})}async loadTable(e){let t={};return this.accessDelegation&&(t[`X-Iceberg-Access-Delegation`]=this.accessDelegation),(await this.client.request({method:`GET`,path:`${this.prefix}/namespaces/${k(e.namespace)}/tables/${e.name}`,headers:t})).data.metadata}async tableExists(e){let t={};this.accessDelegation&&(t[`X-Iceberg-Access-Delegation`]=this.accessDelegation);try{return await this.client.request({method:`HEAD`,path:`${this.prefix}/namespaces/${k(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(e){if(e instanceof w&&e.status===404)return!1;throw e}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(n){if(n instanceof w&&n.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw n}}},ae=class{constructor(e){let t=`v1`;e.catalogName&&(t+=`/${e.catalogName}`),this.client=E({baseUrl:e.baseUrl.endsWith(`/`)?e.baseUrl:`${e.baseUrl}/`,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=e.accessDelegation?.join(`,`),this.namespaceOps=new O(this.client,t),this.tableOps=new A(this.client,t,this.accessDelegation)}async listNamespaces(e){return this.namespaceOps.listNamespaces(e)}async createNamespace(e,t){return this.namespaceOps.createNamespace(e,t)}async dropNamespace(e){await this.namespaceOps.dropNamespace(e)}async loadNamespaceMetadata(e){return this.namespaceOps.loadNamespaceMetadata(e)}async listTables(e){return this.tableOps.listTables(e)}async createTable(e,t){return this.tableOps.createTable(e,t)}async updateTable(e,t){return this.tableOps.updateTable(e,t)}async dropTable(e,t){await this.tableOps.dropTable(e,t)}async loadTable(e){return this.tableOps.loadTable(e)}async namespaceExists(e){return this.namespaceOps.namespaceExists(e)}async tableExists(e){return this.tableOps.tableExists(e)}async createNamespaceIfNotExists(e,t){return this.namespaceOps.createNamespaceIfNotExists(e,t)}async createTableIfNotExists(e,t){return this.tableOps.createTableIfNotExists(e,t)}},j=class{constructor(e,t={},n){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,``),this.headers={...C,...t},this.fetch=a(n)}throwOnError(){return this.shouldThrowOnError=!0,this}async createBucket(e){try{return{data:await h(this.fetch,`${this.url}/bucket`,{name:e},{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async listBuckets(e){try{let t=new URLSearchParams;e?.limit!==void 0&&t.set(`limit`,e.limit.toString()),e?.offset!==void 0&&t.set(`offset`,e.offset.toString()),e?.sortColumn&&t.set(`sortColumn`,e.sortColumn),e?.sortOrder&&t.set(`sortOrder`,e.sortOrder),e?.search&&t.set(`search`,e.search);let n=t.toString(),r=n?`${this.url}/bucket?${n}`:`${this.url}/bucket`;return{data:await m(this.fetch,r,{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}async deleteBucket(e){try{return{data:await _(this.fetch,`${this.url}/bucket/${e}`,{},{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}from(e){if(!l(e))throw new t(`Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.`);let n=new ae({baseUrl:this.url,catalogName:e,auth:{type:`custom`,getHeaders:async()=>this.headers},fetch:this.fetch}),r=this.shouldThrowOnError;return new Proxy(n,{get(e,t){let n=e[t];return typeof n==`function`?async(...t)=>{try{return{data:await n.apply(e,t),error:null}}catch(e){if(r)throw e;return{data:null,error:e}}}:n}})}};let M={"X-Client-Info":`storage-js/${S}`,"Content-Type":`application/json`};var N=class extends Error{constructor(e){super(e),this.__isStorageVectorsError=!0,this.name=`StorageVectorsError`}};function P(e){return typeof e==`object`&&!!e&&`__isStorageVectorsError`in e}var F=class extends N{constructor(e,t,n){super(e),this.name=`StorageVectorsApiError`,this.status=t,this.statusCode=n}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},I=class extends N{constructor(e,t){super(e),this.name=`StorageVectorsUnknownError`,this.originalError=t}};let L=function(e){return e.InternalError=`InternalError`,e.S3VectorConflictException=`S3VectorConflictException`,e.S3VectorNotFoundException=`S3VectorNotFoundException`,e.S3VectorBucketNotEmpty=`S3VectorBucketNotEmpty`,e.S3VectorMaxBucketsExceeded=`S3VectorMaxBucketsExceeded`,e.S3VectorMaxIndexesExceeded=`S3VectorMaxIndexesExceeded`,e}({}),R=e=>e?(...t)=>e(...t):(...e)=>fetch(...e),z=()=>Response,B=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},V=e=>Array.from(new Float32Array(e)),H=(e,t)=>{if(t!==void 0&&e.float32.length!==t)throw Error(`Vector dimension mismatch: expected ${t}, got ${e.float32.length}`)},U=e=>e.msg||e.message||e.error_description||e.error||JSON.stringify(e),W=async(e,t,n)=>{if(e&&typeof e==`object`&&`status`in e&&`ok`in e&&typeof e.status==`number`&&!n?.noResolveJson){let n=e.status||500,r=e;if(typeof r.json==`function`)r.json().then(e=>{let r=e?.statusCode||e?.code||n+``;t(new F(U(e),n,r))}).catch(()=>{let e=n+``;t(new F(r.statusText||`HTTP ${n} error`,n,e))});else{let e=n+``;t(new F(r.statusText||`HTTP ${n} error`,n,e))}}else t(new I(U(e),e))},G=(e,t,n,r)=>{let i={method:e,headers:t?.headers||{}};return e===`GET`||!r?i:(B(r)?(i.headers={"Content-Type":`application/json`,...t?.headers},i.body=JSON.stringify(r)):i.body=r,{...i,...n})};async function K(e,t,n,r,i,a){return new Promise((o,s)=>{e(n,G(t,r,i,a)).then(e=>{if(!e.ok)throw e;if(r?.noResolveJson)return e;let t=e.headers.get(`content-type`);return!t||!t.includes(`application/json`)?{}:e.json()}).then(e=>o(e)).catch(e=>W(e,s,r))})}async function q(e,t,n,r,i){return K(e,`POST`,t,r,i,n)}var J=class{constructor(e,t={},n){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,``),this.headers={...M,...t},this.fetch=R(n)}throwOnError(){return this.shouldThrowOnError=!0,this}async createIndex(e){try{return{data:await q(this.fetch,`${this.url}/CreateIndex`,e,{headers:this.headers})||{},error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}async getIndex(e,t){try{return{data:await q(this.fetch,`${this.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}async listIndexes(e){try{return{data:await q(this.fetch,`${this.url}/ListIndexes`,e,{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}async deleteIndex(e,t){try{return{data:await q(this.fetch,`${this.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:this.headers})||{},error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}},Y=class{constructor(e,t={},n){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,``),this.headers={...M,...t},this.fetch=R(n)}throwOnError(){return this.shouldThrowOnError=!0,this}async putVectors(e){try{if(e.vectors.length<1||e.vectors.length>500)throw Error(`Vector batch size must be between 1 and 500 items`);return{data:await q(this.fetch,`${this.url}/PutVectors`,e,{headers:this.headers})||{},error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}async getVectors(e){try{return{data:await q(this.fetch,`${this.url}/GetVectors`,e,{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}async listVectors(e){try{if(e.segmentCount!==void 0){if(e.segmentCount<1||e.segmentCount>16)throw Error(`segmentCount must be between 1 and 16`);if(e.segmentIndex!==void 0&&(e.segmentIndex<0||e.segmentIndex>=e.segmentCount))throw Error(`segmentIndex must be between 0 and ${e.segmentCount-1}`)}return{data:await q(this.fetch,`${this.url}/ListVectors`,e,{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}async queryVectors(e){try{return{data:await q(this.fetch,`${this.url}/QueryVectors`,e,{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}async deleteVectors(e){try{if(e.keys.length<1||e.keys.length>500)throw Error(`Keys batch size must be between 1 and 500 items`);return{data:await q(this.fetch,`${this.url}/DeleteVectors`,e,{headers:this.headers})||{},error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}},X=class{constructor(e,t={},n){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,``),this.headers={...M,...t},this.fetch=R(n)}throwOnError(){return this.shouldThrowOnError=!0,this}async createBucket(e){try{return{data:await q(this.fetch,`${this.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:this.headers})||{},error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}async getBucket(e){try{return{data:await q(this.fetch,`${this.url}/GetVectorBucket`,{vectorBucketName:e},{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}async listBuckets(e={}){try{return{data:await q(this.fetch,`${this.url}/ListVectorBuckets`,e,{headers:this.headers}),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}async deleteBucket(e){try{return{data:await q(this.fetch,`${this.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:this.headers})||{},error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(P(e))return{data:null,error:e};throw e}}},Z=class extends X{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new Q(this.url,this.headers,e,this.fetch)}async createBucket(e){return super.createBucket(e)}async getBucket(e){return super.getBucket(e)}async listBuckets(e={}){return super.listBuckets(e)}async deleteBucket(e){return super.deleteBucket(e)}},Q=class extends J{constructor(e,t,n,r){super(e,t,r),this.vectorBucketName=n}async createIndex(e){return super.createIndex({...e,vectorBucketName:this.vectorBucketName})}async listIndexes(e={}){return super.listIndexes({...e,vectorBucketName:this.vectorBucketName})}async getIndex(e){return super.getIndex(this.vectorBucketName,e)}async deleteIndex(e){return super.deleteIndex(this.vectorBucketName,e)}index(e){return new $(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},$=class extends Y{constructor(e,t,n,r,i){super(e,t,i),this.vectorBucketName=n,this.indexName=r}async putVectors(e){return super.putVectors({...e,vectorBucketName:this.vectorBucketName,indexName:this.indexName})}async getVectors(e){return super.getVectors({...e,vectorBucketName:this.vectorBucketName,indexName:this.indexName})}async listVectors(e={}){return super.listVectors({...e,vectorBucketName:this.vectorBucketName,indexName:this.indexName})}async queryVectors(e){return super.queryVectors({...e,vectorBucketName:this.vectorBucketName,indexName:this.indexName})}async deleteVectors(e){return super.deleteVectors({...e,vectorBucketName:this.vectorBucketName,indexName:this.indexName})}},oe=class extends re{constructor(e,t={},n,r){super(e,t,n,r)}from(e){return new x(this.url,this.headers,e,this.fetch)}get vectors(){return new Z(this.url+`/vector`,{headers:this.headers,fetch:this.fetch})}get analytics(){return new j(this.url+`/iceberg`,this.headers,this.fetch)}};return e.StorageAnalyticsClient=j,e.StorageApiError=r,e.StorageClient=oe,e.StorageError=t,e.StorageUnknownError=i,e.StorageVectorsApiError=F,e.StorageVectorsClient=Z,e.StorageVectorsError=N,e.StorageVectorsErrorCode=L,e.StorageVectorsUnknownError=I,e.VectorBucketApi=X,e.VectorBucketScope=Q,e.VectorDataApi=Y,e.VectorIndexApi=J,e.VectorIndexScope=$,e.isPlainObject=B,e.isStorageError=n,e.isStorageVectorsError=P,e.normalizeToFloat32=V,e.resolveFetch=R,e.resolveResponse=z,e.validateVectorDimension=H,e})({}); | ||
| var supabase=(function(e){var t=class extends Error{constructor(e,t=`storage`,n,r){super(e),this.__isStorageError=!0,this.namespace=t,this.name=t===`vectors`?`StorageVectorsError`:`StorageError`,this.status=n,this.statusCode=r}};function n(e){return typeof e==`object`&&!!e&&`__isStorageError`in e}var r=class extends t{constructor(e,t,n,r=`storage`){super(e,r,t,n),this.name=r===`vectors`?`StorageVectorsApiError`:`StorageApiError`,this.status=t,this.statusCode=n}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}},i=class extends t{constructor(e,t,n=`storage`){super(e,n),this.name=n===`vectors`?`StorageVectorsUnknownError`:`StorageUnknownError`,this.originalError=t}},a=class extends t{constructor(e){super(e,`vectors`)}};function o(e){return n(e)&&e.namespace===`vectors`}var s=class extends r{constructor(e,t,n){super(e,t,n,`vectors`)}},c=class extends i{constructor(e,t){super(e,t,`vectors`)}};let l=function(e){return e.InternalError=`InternalError`,e.S3VectorConflictException=`S3VectorConflictException`,e.S3VectorNotFoundException=`S3VectorNotFoundException`,e.S3VectorBucketNotEmpty=`S3VectorBucketNotEmpty`,e.S3VectorMaxBucketsExceeded=`S3VectorMaxBucketsExceeded`,e.S3VectorMaxIndexesExceeded=`S3VectorMaxIndexesExceeded`,e}({}),u=e=>e?(...t)=>e(...t):(...e)=>fetch(...e),d=e=>{if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},f=e=>{if(Array.isArray(e))return e.map(e=>f(e));if(typeof e==`function`||e!==Object(e))return e;let t={};return Object.entries(e).forEach(([e,n])=>{let r=e.replace(/([-_][a-z])/gi,e=>e.toUpperCase().replace(/[-_]/g,``));t[r]=f(n)}),t},p=e=>!e||typeof e!=`string`||e.length===0||e.length>100||e.trim()!==e||e.includes(`/`)||e.includes(`\\`)?!1:/^[\w!.\*'() &$@=;:+,?-]+$/.test(e),m=e=>e.msg||e.message||e.error_description||(typeof e.error==`string`?e.error:e.error?.message)||JSON.stringify(e),h=async(e,t,n,a)=>{if(e&&typeof e==`object`&&`status`in e&&`ok`in e&&typeof e.status==`number`&&!n?.noResolveJson){let n=e,i=n.status||500;if(typeof n.json==`function`)n.json().then(e=>{let n=e?.statusCode||e?.code||i+``;t(new r(m(e),i,n,a))}).catch(()=>{if(a===`vectors`){let e=i+``;t(new r(n.statusText||`HTTP ${i} error`,i,e,a))}else{let e=i+``;t(new r(n.statusText||`HTTP ${i} error`,i,e,a))}});else{let e=i+``;t(new r(n.statusText||`HTTP ${i} error`,i,e,a))}}else t(new i(m(e),e,a))},g=(e,t,n,r)=>{let i={method:e,headers:t?.headers||{}};return e===`GET`||e===`HEAD`||!r?{...i,...n}:(d(r)?(i.headers={"Content-Type":`application/json`,...t?.headers},i.body=JSON.stringify(r)):i.body=r,t?.duplex&&(i.duplex=t.duplex),{...i,...n})};async function _(e,t,n,r,i,a,o){return new Promise((s,c)=>{e(n,g(t,r,i,a)).then(e=>{if(!e.ok)throw e;if(r?.noResolveJson)return e;if(o===`vectors`){let t=e.headers.get(`content-type`);if(!t||!t.includes(`application/json`))return{}}return e.json()}).then(e=>s(e)).catch(e=>h(e,c,r,o))})}function v(e=`storage`){return{get:async(t,n,r,i)=>_(t,`GET`,n,r,i,void 0,e),post:async(t,n,r,i,a)=>_(t,`POST`,n,i,a,r,e),put:async(t,n,r,i,a)=>_(t,`PUT`,n,i,a,r,e),head:async(t,n,r,i)=>_(t,`HEAD`,n,{...r,noResolveJson:!0},i,void 0,e),remove:async(t,n,r,i,a)=>_(t,`DELETE`,n,i,a,r,e)}}let{get:y,post:b,put:x,head:S,remove:C}=v(`storage`);var w=class{constructor(e,t={},n,r=`storage`){this.shouldThrowOnError=!1,this.url=e,this.headers=t,this.fetch=u(n),this.namespace=r}throwOnError(){return this.shouldThrowOnError=!0,this}async handleOperation(e){try{return{data:await e(),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}},T=class{constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t}then(e,t){return this.execute().then(e,t)}async execute(){try{return{data:(await this.downloadFn()).body,error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}};let E;var D=class{static{E=Symbol.toStringTag}constructor(e,t){this.downloadFn=e,this.shouldThrowOnError=t,this[E]=`BlobDownloadBuilder`,this.promise=null}asStream(){return new T(this.downloadFn,this.shouldThrowOnError)}then(e,t){return this.getPromise().then(e,t)}catch(e){return this.getPromise().catch(e)}finally(e){return this.getPromise().finally(e)}getPromise(){return this.promise||=this.execute(),this.promise}async execute(){try{return{data:await(await this.downloadFn()).blob(),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e))return{data:null,error:e};throw e}}};let O={limit:100,offset:0,sortBy:{column:`name`,order:`asc`}},k={cacheControl:`3600`,contentType:`text/plain;charset=UTF-8`,upsert:!1};var A=class extends w{constructor(e,t={},n,r){super(e,t,r,`storage`),this.bucketId=n}async uploadOrUpdate(e,t,n,r){return this.handleOperation(async()=>{let i,a={...k,...r},o={...this.headers,...e===`POST`&&{"x-upsert":String(a.upsert)}},s=a.metadata;typeof Blob<`u`&&n instanceof Blob?(i=new FormData,i.append(`cacheControl`,a.cacheControl),s&&i.append(`metadata`,this.encodeMetadata(s)),i.append(``,n)):typeof FormData<`u`&&n instanceof FormData?(i=n,i.has(`cacheControl`)||i.append(`cacheControl`,a.cacheControl),s&&!i.has(`metadata`)&&i.append(`metadata`,this.encodeMetadata(s))):(i=n,o[`cache-control`]=`max-age=${a.cacheControl}`,o[`content-type`]=a.contentType,s&&(o[`x-metadata`]=this.toBase64(this.encodeMetadata(s))),(typeof ReadableStream<`u`&&i instanceof ReadableStream||i&&typeof i==`object`&&`pipe`in i&&typeof i.pipe==`function`)&&!a.duplex&&(a.duplex=`half`)),r?.headers&&(o={...o,...r.headers});let c=this._removeEmptyFolders(t),l=this._getFinalPath(c),u=await(e==`PUT`?x:b)(this.fetch,`${this.url}/object/${l}`,i,{headers:o,...a?.duplex?{duplex:a.duplex}:{}});return{path:c,id:u.Id,fullPath:u.Key}})}async upload(e,t,n){return this.uploadOrUpdate(`POST`,e,t,n)}async uploadToSignedUrl(e,t,n,r){let i=this._removeEmptyFolders(e),a=this._getFinalPath(i),o=new URL(this.url+`/object/upload/sign/${a}`);return o.searchParams.set(`token`,t),this.handleOperation(async()=>{let e,t={upsert:k.upsert,...r},a={...this.headers,"x-upsert":String(t.upsert)};return typeof Blob<`u`&&n instanceof Blob?(e=new FormData,e.append(`cacheControl`,t.cacheControl),e.append(``,n)):typeof FormData<`u`&&n instanceof FormData?(e=n,e.append(`cacheControl`,t.cacheControl)):(e=n,a[`cache-control`]=`max-age=${t.cacheControl}`,a[`content-type`]=t.contentType),{path:i,fullPath:(await x(this.fetch,o.toString(),e,{headers:a})).Key}})}async createSignedUploadUrl(e,n){return this.handleOperation(async()=>{let r=this._getFinalPath(e),i={...this.headers};n?.upsert&&(i[`x-upsert`]=`true`);let a=await b(this.fetch,`${this.url}/object/upload/sign/${r}`,{},{headers:i}),o=new URL(this.url+a.url),s=o.searchParams.get(`token`);if(!s)throw new t(`No token returned by API`);return{signedUrl:o.toString(),path:e,token:s}})}async update(e,t,n){return this.uploadOrUpdate(`PUT`,e,t,n)}async move(e,t,n){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/object/move`,{bucketId:this.bucketId,sourceKey:e,destinationKey:t,destinationBucket:n?.destinationBucket},{headers:this.headers}))}async copy(e,t,n){return this.handleOperation(async()=>({path:(await b(this.fetch,`${this.url}/object/copy`,{bucketId:this.bucketId,sourceKey:e,destinationKey:t,destinationBucket:n?.destinationBucket},{headers:this.headers})).Key}))}async createSignedUrl(e,t,n){return this.handleOperation(async()=>{let r=this._getFinalPath(e),i=await b(this.fetch,`${this.url}/object/sign/${r}`,{expiresIn:t,...n?.transform?{transform:n.transform}:{}},{headers:this.headers}),a=n?.download?`&download=${n.download===!0?``:n.download}`:``;return{signedUrl:encodeURI(`${this.url}${i.signedURL}${a}`)}})}async createSignedUrls(e,t,n){return this.handleOperation(async()=>{let r=await b(this.fetch,`${this.url}/object/sign/${this.bucketId}`,{expiresIn:t,paths:e},{headers:this.headers}),i=n?.download?`&download=${n.download===!0?``:n.download}`:``;return r.map(e=>({...e,signedUrl:e.signedURL?encodeURI(`${this.url}${e.signedURL}${i}`):null}))})}download(e,t){let n=t?.transform===void 0?`object`:`render/image/authenticated`,r=this.transformOptsToQueryString(t?.transform||{}),i=r?`?${r}`:``,a=this._getFinalPath(e);return new D(()=>y(this.fetch,`${this.url}/${n}/${a}${i}`,{headers:this.headers,noResolveJson:!0}),this.shouldThrowOnError)}async info(e){let t=this._getFinalPath(e);return this.handleOperation(async()=>f(await y(this.fetch,`${this.url}/object/info/${t}`,{headers:this.headers})))}async exists(e){let t=this._getFinalPath(e);try{return await S(this.fetch,`${this.url}/object/${t}`,{headers:this.headers}),{data:!0,error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(n(e)&&e instanceof i){let t=e.originalError;if([400,404].includes(t?.status))return{data:!1,error:e}}throw e}}getPublicUrl(e,t){let n=this._getFinalPath(e),r=[],i=t?.download?`download=${t.download===!0?``:t.download}`:``;i!==``&&r.push(i);let a=t?.transform===void 0?`object`:`render/image`,o=this.transformOptsToQueryString(t?.transform||{});o!==``&&r.push(o);let s=r.join(`&`);return s!==``&&(s=`?${s}`),{data:{publicUrl:encodeURI(`${this.url}/${a}/public/${n}${s}`)}}}async remove(e){return this.handleOperation(async()=>await C(this.fetch,`${this.url}/object/${this.bucketId}`,{prefixes:e},{headers:this.headers}))}async list(e,t,n){return this.handleOperation(async()=>{let r={...O,...t,prefix:e||``};return await b(this.fetch,`${this.url}/object/list/${this.bucketId}`,r,{headers:this.headers},n)})}async listV2(e,t){return this.handleOperation(async()=>{let n={...e};return await b(this.fetch,`${this.url}/object/list-v2/${this.bucketId}`,n,{headers:this.headers},t)})}encodeMetadata(e){return JSON.stringify(e)}toBase64(e){return typeof Buffer<`u`?Buffer.from(e).toString(`base64`):btoa(e)}_getFinalPath(e){return`${this.bucketId}/${e.replace(/^\/+/,``)}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,``).replace(/\/+/g,`/`)}transformOptsToQueryString(e){let t=[];return e.width&&t.push(`width=${e.width}`),e.height&&t.push(`height=${e.height}`),e.resize&&t.push(`resize=${e.resize}`),e.format&&t.push(`format=${e.format}`),e.quality&&t.push(`quality=${e.quality}`),t.join(`&`)}};let j={"X-Client-Info":`storage-js/2.92.0`};var M=class extends w{constructor(e,t={},n,r){let i=new URL(e);r?.useNewHostname&&/supabase\.(co|in|red)$/.test(i.hostname)&&!i.hostname.includes(`storage.supabase.`)&&(i.hostname=i.hostname.replace(`supabase.`,`storage.supabase.`));let a=i.href.replace(/\/$/,``),o={...j,...t};super(a,o,n,`storage`)}async listBuckets(e){return this.handleOperation(async()=>{let t=this.listBucketOptionsToQueryString(e);return await y(this.fetch,`${this.url}/bucket${t}`,{headers:this.headers})})}async getBucket(e){return this.handleOperation(async()=>await y(this.fetch,`${this.url}/bucket/${e}`,{headers:this.headers}))}async createBucket(e,t={public:!1}){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/bucket`,{id:e,name:e,type:t.type,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:this.headers}))}async updateBucket(e,t){return this.handleOperation(async()=>await x(this.fetch,`${this.url}/bucket/${e}`,{id:e,name:e,public:t.public,file_size_limit:t.fileSizeLimit,allowed_mime_types:t.allowedMimeTypes},{headers:this.headers}))}async emptyBucket(e){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/bucket/${e}/empty`,{},{headers:this.headers}))}async deleteBucket(e){return this.handleOperation(async()=>await C(this.fetch,`${this.url}/bucket/${e}`,{},{headers:this.headers}))}listBucketOptionsToQueryString(e){let t={};return e&&(`limit`in e&&(t.limit=String(e.limit)),`offset`in e&&(t.offset=String(e.offset)),e.search&&(t.search=e.search),e.sortColumn&&(t.sortColumn=e.sortColumn),e.sortOrder&&(t.sortOrder=e.sortOrder)),Object.keys(t).length>0?`?`+new URLSearchParams(t).toString():``}},N=class extends Error{constructor(e,t){super(e),this.name=`IcebergError`,this.status=t.status,this.icebergType=t.icebergType,this.icebergCode=t.icebergCode,this.details=t.details,this.isCommitStateUnknown=t.icebergType===`CommitStateUnknownException`||[500,502,504].includes(t.status)&&t.icebergType?.includes(`CommitState`)===!0}isNotFound(){return this.status===404}isConflict(){return this.status===409}isAuthenticationTimeout(){return this.status===419}};function P(e,t,n){let r=new URL(t,e);if(n)for(let[e,t]of Object.entries(n))t!==void 0&&r.searchParams.set(e,t);return r.toString()}async function F(e){return!e||e.type===`none`?{}:e.type===`bearer`?{Authorization:`Bearer ${e.token}`}:e.type===`header`?{[e.name]:e.value}:e.type===`custom`?await e.getHeaders():{}}function I(e){let t=e.fetchImpl??globalThis.fetch;return{async request({method:n,path:r,query:i,body:a,headers:o}){let s=P(e.baseUrl,r,i),c=await F(e.auth),l=await t(s,{method:n,headers:{...a?{"Content-Type":`application/json`}:{},...c,...o},body:a?JSON.stringify(a):void 0}),u=await l.text(),d=(l.headers.get(`content-type`)||``).includes(`application/json`),f=d&&u?JSON.parse(u):u;if(!l.ok){let e=d?f:void 0,t=e?.error;throw new N(t?.message??`Request failed with status ${l.status}`,{status:l.status,icebergType:t?.type,icebergCode:t?.code,details:e})}return{status:l.status,headers:l.headers,data:f}}}}function L(e){return e.join(``)}var R=class{constructor(e,t=``){this.client=e,this.prefix=t}async listNamespaces(e){let t=e?{parent:L(e.namespace)}:void 0;return(await this.client.request({method:`GET`,path:`${this.prefix}/namespaces`,query:t})).data.namespaces.map(e=>({namespace:e}))}async createNamespace(e,t){let n={namespace:e.namespace,properties:t?.properties};return(await this.client.request({method:`POST`,path:`${this.prefix}/namespaces`,body:n})).data}async dropNamespace(e){await this.client.request({method:`DELETE`,path:`${this.prefix}/namespaces/${L(e.namespace)}`})}async loadNamespaceMetadata(e){return{properties:(await this.client.request({method:`GET`,path:`${this.prefix}/namespaces/${L(e.namespace)}`})).data.properties}}async namespaceExists(e){try{return await this.client.request({method:`HEAD`,path:`${this.prefix}/namespaces/${L(e.namespace)}`}),!0}catch(e){if(e instanceof N&&e.status===404)return!1;throw e}}async createNamespaceIfNotExists(e,t){try{return await this.createNamespace(e,t)}catch(e){if(e instanceof N&&e.status===409)return;throw e}}};function z(e){return e.join(``)}var B=class{constructor(e,t=``,n){this.client=e,this.prefix=t,this.accessDelegation=n}async listTables(e){return(await this.client.request({method:`GET`,path:`${this.prefix}/namespaces/${z(e.namespace)}/tables`})).data.identifiers}async createTable(e,t){let n={};return this.accessDelegation&&(n[`X-Iceberg-Access-Delegation`]=this.accessDelegation),(await this.client.request({method:`POST`,path:`${this.prefix}/namespaces/${z(e.namespace)}/tables`,body:t,headers:n})).data.metadata}async updateTable(e,t){let n=await this.client.request({method:`POST`,path:`${this.prefix}/namespaces/${z(e.namespace)}/tables/${e.name}`,body:t});return{"metadata-location":n.data[`metadata-location`],metadata:n.data.metadata}}async dropTable(e,t){await this.client.request({method:`DELETE`,path:`${this.prefix}/namespaces/${z(e.namespace)}/tables/${e.name}`,query:{purgeRequested:String(t?.purge??!1)}})}async loadTable(e){let t={};return this.accessDelegation&&(t[`X-Iceberg-Access-Delegation`]=this.accessDelegation),(await this.client.request({method:`GET`,path:`${this.prefix}/namespaces/${z(e.namespace)}/tables/${e.name}`,headers:t})).data.metadata}async tableExists(e){let t={};this.accessDelegation&&(t[`X-Iceberg-Access-Delegation`]=this.accessDelegation);try{return await this.client.request({method:`HEAD`,path:`${this.prefix}/namespaces/${z(e.namespace)}/tables/${e.name}`,headers:t}),!0}catch(e){if(e instanceof N&&e.status===404)return!1;throw e}}async createTableIfNotExists(e,t){try{return await this.createTable(e,t)}catch(n){if(n instanceof N&&n.status===409)return await this.loadTable({namespace:e.namespace,name:t.name});throw n}}},V=class{constructor(e){let t=`v1`;e.catalogName&&(t+=`/${e.catalogName}`),this.client=I({baseUrl:e.baseUrl.endsWith(`/`)?e.baseUrl:`${e.baseUrl}/`,auth:e.auth,fetchImpl:e.fetch}),this.accessDelegation=e.accessDelegation?.join(`,`),this.namespaceOps=new R(this.client,t),this.tableOps=new B(this.client,t,this.accessDelegation)}async listNamespaces(e){return this.namespaceOps.listNamespaces(e)}async createNamespace(e,t){return this.namespaceOps.createNamespace(e,t)}async dropNamespace(e){await this.namespaceOps.dropNamespace(e)}async loadNamespaceMetadata(e){return this.namespaceOps.loadNamespaceMetadata(e)}async listTables(e){return this.tableOps.listTables(e)}async createTable(e,t){return this.tableOps.createTable(e,t)}async updateTable(e,t){return this.tableOps.updateTable(e,t)}async dropTable(e,t){await this.tableOps.dropTable(e,t)}async loadTable(e){return this.tableOps.loadTable(e)}async namespaceExists(e){return this.namespaceOps.namespaceExists(e)}async tableExists(e){return this.tableOps.tableExists(e)}async createNamespaceIfNotExists(e,t){return this.namespaceOps.createNamespaceIfNotExists(e,t)}async createTableIfNotExists(e,t){return this.tableOps.createTableIfNotExists(e,t)}},H=class extends w{constructor(e,t={},n){let r=e.replace(/\/$/,``),i={...j,...t};super(r,i,n,`storage`)}async createBucket(e){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/bucket`,{name:e},{headers:this.headers}))}async listBuckets(e){return this.handleOperation(async()=>{let t=new URLSearchParams;e?.limit!==void 0&&t.set(`limit`,e.limit.toString()),e?.offset!==void 0&&t.set(`offset`,e.offset.toString()),e?.sortColumn&&t.set(`sortColumn`,e.sortColumn),e?.sortOrder&&t.set(`sortOrder`,e.sortOrder),e?.search&&t.set(`search`,e.search);let n=t.toString(),r=n?`${this.url}/bucket?${n}`:`${this.url}/bucket`;return await y(this.fetch,r,{headers:this.headers})})}async deleteBucket(e){return this.handleOperation(async()=>await C(this.fetch,`${this.url}/bucket/${e}`,{},{headers:this.headers}))}from(e){if(!p(e))throw new t(`Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines and should avoid the use of any other characters.`);let n=new V({baseUrl:this.url,catalogName:e,auth:{type:`custom`,getHeaders:async()=>this.headers},fetch:this.fetch}),r=this.shouldThrowOnError;return new Proxy(n,{get(e,t){let n=e[t];return typeof n==`function`?async(...t)=>{try{return{data:await n.apply(e,t),error:null}}catch(e){if(r)throw e;return{data:null,error:e}}}:n}})}},U=class extends w{constructor(e,t={},n){let r=e.replace(/\/$/,``),i={...j,"Content-Type":`application/json`,...t};super(r,i,n,`vectors`)}async createIndex(e){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/CreateIndex`,e,{headers:this.headers})||{})}async getIndex(e,t){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/GetIndex`,{vectorBucketName:e,indexName:t},{headers:this.headers}))}async listIndexes(e){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/ListIndexes`,e,{headers:this.headers}))}async deleteIndex(e,t){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/DeleteIndex`,{vectorBucketName:e,indexName:t},{headers:this.headers})||{})}},W=class extends w{constructor(e,t={},n){let r=e.replace(/\/$/,``),i={...j,"Content-Type":`application/json`,...t};super(r,i,n,`vectors`)}async putVectors(e){if(e.vectors.length<1||e.vectors.length>500)throw Error(`Vector batch size must be between 1 and 500 items`);return this.handleOperation(async()=>await b(this.fetch,`${this.url}/PutVectors`,e,{headers:this.headers})||{})}async getVectors(e){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/GetVectors`,e,{headers:this.headers}))}async listVectors(e){if(e.segmentCount!==void 0){if(e.segmentCount<1||e.segmentCount>16)throw Error(`segmentCount must be between 1 and 16`);if(e.segmentIndex!==void 0&&(e.segmentIndex<0||e.segmentIndex>=e.segmentCount))throw Error(`segmentIndex must be between 0 and ${e.segmentCount-1}`)}return this.handleOperation(async()=>await b(this.fetch,`${this.url}/ListVectors`,e,{headers:this.headers}))}async queryVectors(e){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/QueryVectors`,e,{headers:this.headers}))}async deleteVectors(e){if(e.keys.length<1||e.keys.length>500)throw Error(`Keys batch size must be between 1 and 500 items`);return this.handleOperation(async()=>await b(this.fetch,`${this.url}/DeleteVectors`,e,{headers:this.headers})||{})}},G=class extends w{constructor(e,t={},n){let r=e.replace(/\/$/,``),i={...j,"Content-Type":`application/json`,...t};super(r,i,n,`vectors`)}async createBucket(e){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:this.headers})||{})}async getBucket(e){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/GetVectorBucket`,{vectorBucketName:e},{headers:this.headers}))}async listBuckets(e={}){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/ListVectorBuckets`,e,{headers:this.headers}))}async deleteBucket(e){return this.handleOperation(async()=>await b(this.fetch,`${this.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:this.headers})||{})}},K=class extends G{constructor(e,t={}){super(e,t.headers||{},t.fetch)}from(e){return new q(this.url,this.headers,e,this.fetch)}async createBucket(e){return super.createBucket(e)}async getBucket(e){return super.getBucket(e)}async listBuckets(e={}){return super.listBuckets(e)}async deleteBucket(e){return super.deleteBucket(e)}},q=class extends U{constructor(e,t,n,r){super(e,t,r),this.vectorBucketName=n}async createIndex(e){return super.createIndex({...e,vectorBucketName:this.vectorBucketName})}async listIndexes(e={}){return super.listIndexes({...e,vectorBucketName:this.vectorBucketName})}async getIndex(e){return super.getIndex(this.vectorBucketName,e)}async deleteIndex(e){return super.deleteIndex(this.vectorBucketName,e)}index(e){return new J(this.url,this.headers,this.vectorBucketName,e,this.fetch)}},J=class extends W{constructor(e,t,n,r,i){super(e,t,i),this.vectorBucketName=n,this.indexName=r}async putVectors(e){return super.putVectors({...e,vectorBucketName:this.vectorBucketName,indexName:this.indexName})}async getVectors(e){return super.getVectors({...e,vectorBucketName:this.vectorBucketName,indexName:this.indexName})}async listVectors(e={}){return super.listVectors({...e,vectorBucketName:this.vectorBucketName,indexName:this.indexName})}async queryVectors(e){return super.queryVectors({...e,vectorBucketName:this.vectorBucketName,indexName:this.indexName})}async deleteVectors(e){return super.deleteVectors({...e,vectorBucketName:this.vectorBucketName,indexName:this.indexName})}},Y=class extends M{constructor(e,t={},n,r){super(e,t,n,r)}from(e){return new A(this.url,this.headers,e,this.fetch)}get vectors(){return new K(this.url+`/vector`,{headers:this.headers,fetch:this.fetch})}get analytics(){return new H(this.url+`/iceberg`,this.headers,this.fetch)}};return e.StorageAnalyticsClient=H,e.StorageApiError=r,e.StorageClient=Y,e.StorageError=t,e.StorageUnknownError=i,e.StorageVectorsApiError=s,e.StorageVectorsClient=K,e.StorageVectorsError=a,e.StorageVectorsErrorCode=l,e.StorageVectorsUnknownError=c,e.VectorBucketApi=G,e.VectorBucketScope=q,e.VectorDataApi=W,e.VectorIndexApi=U,e.VectorIndexScope=J,e.isStorageError=n,e.isStorageVectorsError=o,e})({}); |
+1
-1
| { | ||
| "name": "@supabase/storage-js", | ||
| "version": "2.91.1", | ||
| "version": "2.92.0", | ||
| "description": "Isomorphic storage client for Supabase.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
+15
-2
| export { StorageClient } from './StorageClient' | ||
| export type { StorageClientOptions } from './StorageClient' | ||
| export { default as StorageAnalyticsClient } from './packages/StorageAnalyticsClient' | ||
| // Vector Storage | ||
| export { | ||
| StorageVectorsClient, | ||
| VectorBucketScope, | ||
| VectorIndexScope, | ||
| } from './packages/StorageVectorsClient' | ||
| export type { StorageVectorsClientOptions } from './packages/StorageVectorsClient' | ||
| export { default as VectorBucketApi } from './packages/VectorBucketApi' | ||
| export { default as VectorDataApi } from './packages/VectorDataApi' | ||
| export { default as VectorIndexApi } from './packages/VectorIndexApi' | ||
| export type { CreateIndexOptions } from './packages/VectorIndexApi' | ||
| // Types and Errors | ||
| export * from './lib/types' | ||
| export * from './lib/errors' | ||
| export * from './lib/vectors' | ||
| export * from './lib/common/errors' |
+304
-1
@@ -1,2 +0,2 @@ | ||
| import { StorageError } from './errors' | ||
| import { StorageError } from './common/errors' | ||
@@ -260,1 +260,304 @@ /** | ||
| } | ||
| // ============================================================================ | ||
| // VECTOR STORAGE TYPES | ||
| // ============================================================================ | ||
| /** | ||
| * Configuration for encryption at rest | ||
| * @property kmsKeyArn - ARN of the KMS key used for encryption | ||
| * @property sseType - Server-side encryption type (e.g., 'KMS') | ||
| */ | ||
| export interface EncryptionConfiguration { | ||
| kmsKeyArn?: string | ||
| sseType?: string | ||
| } | ||
| /** | ||
| * Vector bucket metadata | ||
| * @property vectorBucketName - Unique name of the vector bucket | ||
| * @property creationTime - Unix timestamp of when the bucket was created | ||
| * @property encryptionConfiguration - Optional encryption settings | ||
| */ | ||
| export interface VectorBucket { | ||
| vectorBucketName: string | ||
| creationTime?: number | ||
| encryptionConfiguration?: EncryptionConfiguration | ||
| } | ||
| /** | ||
| * Metadata configuration for vector index | ||
| * Defines which metadata keys should not be indexed for filtering | ||
| * @property nonFilterableMetadataKeys - Array of metadata keys that cannot be used in filters | ||
| */ | ||
| export interface MetadataConfiguration { | ||
| nonFilterableMetadataKeys?: string[] | ||
| } | ||
| /** | ||
| * Supported data types for vectors | ||
| * Currently only float32 is supported | ||
| */ | ||
| export type VectorDataType = 'float32' | ||
| /** | ||
| * Distance metrics for vector similarity search | ||
| */ | ||
| export type DistanceMetric = 'cosine' | 'euclidean' | 'dotproduct' | ||
| /** | ||
| * Vector index configuration and metadata | ||
| * @property indexName - Unique name of the index within the bucket | ||
| * @property vectorBucketName - Name of the parent vector bucket | ||
| * @property dataType - Data type of vector components (currently only 'float32') | ||
| * @property dimension - Dimensionality of vectors (e.g., 384, 768, 1536) | ||
| * @property distanceMetric - Similarity metric used for queries | ||
| * @property metadataConfiguration - Configuration for metadata filtering | ||
| * @property creationTime - Unix timestamp of when the index was created | ||
| */ | ||
| export interface VectorIndex { | ||
| indexName: string | ||
| vectorBucketName: string | ||
| dataType: VectorDataType | ||
| dimension: number | ||
| distanceMetric: DistanceMetric | ||
| metadataConfiguration?: MetadataConfiguration | ||
| creationTime?: number | ||
| } | ||
| /** | ||
| * Vector data representation | ||
| * Vectors must be float32 arrays with dimensions matching the index | ||
| * @property float32 - Array of 32-bit floating point numbers | ||
| */ | ||
| export interface VectorData { | ||
| float32: number[] | ||
| } | ||
| /** | ||
| * Arbitrary JSON metadata attached to vectors | ||
| * Keys configured as non-filterable in the index can be stored but not queried | ||
| */ | ||
| export type VectorMetadata = Record<string, any> | ||
| /** | ||
| * Single vector object for insertion/update | ||
| * @property key - Unique identifier for the vector | ||
| * @property data - Vector embedding data | ||
| * @property metadata - Optional arbitrary metadata | ||
| */ | ||
| export interface VectorObject { | ||
| key: string | ||
| data: VectorData | ||
| metadata?: VectorMetadata | ||
| } | ||
| /** | ||
| * Vector object returned from queries with optional distance | ||
| * @property key - Unique identifier for the vector | ||
| * @property data - Vector embedding data (if requested) | ||
| * @property metadata - Arbitrary metadata (if requested) | ||
| * @property distance - Similarity distance from query vector (if requested) | ||
| */ | ||
| export interface VectorMatch { | ||
| key: string | ||
| data?: VectorData | ||
| metadata?: VectorMetadata | ||
| distance?: number | ||
| } | ||
| /** | ||
| * Options for fetching vector buckets | ||
| * @property prefix - Filter buckets by name prefix | ||
| * @property maxResults - Maximum number of results to return (default: 100) | ||
| * @property nextToken - Token for pagination from previous response | ||
| */ | ||
| export interface ListVectorBucketsOptions { | ||
| prefix?: string | ||
| maxResults?: number | ||
| nextToken?: string | ||
| } | ||
| /** | ||
| * Response from listing vector buckets | ||
| * @property vectorBuckets - Array of bucket names | ||
| * @property nextToken - Token for fetching next page (if more results exist) | ||
| */ | ||
| export interface ListVectorBucketsResponse { | ||
| vectorBuckets: { vectorBucketName: string }[] | ||
| nextToken?: string | ||
| } | ||
| /** | ||
| * Options for listing indexes within a bucket | ||
| * @property vectorBucketName - Name of the parent vector bucket | ||
| * @property prefix - Filter indexes by name prefix | ||
| * @property maxResults - Maximum number of results to return (default: 100) | ||
| * @property nextToken - Token for pagination from previous response | ||
| */ | ||
| export interface ListIndexesOptions { | ||
| vectorBucketName: string | ||
| prefix?: string | ||
| maxResults?: number | ||
| nextToken?: string | ||
| } | ||
| /** | ||
| * Response from listing indexes | ||
| * @property indexes - Array of index names | ||
| * @property nextToken - Token for fetching next page (if more results exist) | ||
| */ | ||
| export interface ListIndexesResponse { | ||
| indexes: { indexName: string }[] | ||
| nextToken?: string | ||
| } | ||
| /** | ||
| * Options for batch reading vectors | ||
| * @property vectorBucketName - Name of the vector bucket | ||
| * @property indexName - Name of the index | ||
| * @property keys - Array of vector keys to retrieve | ||
| * @property returnData - Whether to include vector data in response | ||
| * @property returnMetadata - Whether to include metadata in response | ||
| */ | ||
| export interface GetVectorsOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| keys: string[] | ||
| returnData?: boolean | ||
| returnMetadata?: boolean | ||
| } | ||
| /** | ||
| * Response from getting vectors | ||
| * @property vectors - Array of retrieved vector objects | ||
| */ | ||
| export interface GetVectorsResponse { | ||
| vectors: VectorMatch[] | ||
| } | ||
| /** | ||
| * Options for batch inserting/updating vectors | ||
| * @property vectorBucketName - Name of the vector bucket | ||
| * @property indexName - Name of the index | ||
| * @property vectors - Array of vectors to insert/upsert (1-500 items) | ||
| */ | ||
| export interface PutVectorsOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| vectors: VectorObject[] | ||
| } | ||
| /** | ||
| * Options for batch deleting vectors | ||
| * @property vectorBucketName - Name of the vector bucket | ||
| * @property indexName - Name of the index | ||
| * @property keys - Array of vector keys to delete (1-500 items) | ||
| */ | ||
| export interface DeleteVectorsOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| keys: string[] | ||
| } | ||
| /** | ||
| * Options for listing/scanning vectors in an index | ||
| * Supports parallel scanning via segment configuration | ||
| * @property vectorBucketName - Name of the vector bucket | ||
| * @property indexName - Name of the index | ||
| * @property maxResults - Maximum number of results to return (default: 500, max: 1000) | ||
| * @property nextToken - Token for pagination from previous response | ||
| * @property returnData - Whether to include vector data in response | ||
| * @property returnMetadata - Whether to include metadata in response | ||
| * @property segmentCount - Total number of parallel segments (1-16) | ||
| * @property segmentIndex - Zero-based index of this segment (0 to segmentCount-1) | ||
| */ | ||
| export interface ListVectorsOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| maxResults?: number | ||
| nextToken?: string | ||
| returnData?: boolean | ||
| returnMetadata?: boolean | ||
| segmentCount?: number | ||
| segmentIndex?: number | ||
| } | ||
| /** | ||
| * Response from listing vectors | ||
| * @property vectors - Array of vector objects | ||
| * @property nextToken - Token for fetching next page (if more results exist) | ||
| */ | ||
| export interface ListVectorsResponse { | ||
| vectors: VectorMatch[] | ||
| nextToken?: string | ||
| } | ||
| /** | ||
| * JSON filter expression for metadata filtering | ||
| * Format and syntax depend on the S3 Vectors service implementation | ||
| */ | ||
| export type VectorFilter = Record<string, any> | ||
| /** | ||
| * Options for querying similar vectors (ANN search) | ||
| * @property vectorBucketName - Name of the vector bucket | ||
| * @property indexName - Name of the index | ||
| * @property queryVector - Query vector to find similar vectors | ||
| * @property topK - Number of nearest neighbors to return (default: 10) | ||
| * @property filter - Optional JSON filter for metadata | ||
| * @property returnDistance - Whether to include distance scores | ||
| * @property returnMetadata - Whether to include metadata in results | ||
| */ | ||
| export interface QueryVectorsOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| queryVector: VectorData | ||
| topK?: number | ||
| filter?: VectorFilter | ||
| returnDistance?: boolean | ||
| returnMetadata?: boolean | ||
| } | ||
| /** | ||
| * Response from vector similarity query | ||
| * @property vectors - Array of similar vectors ordered by distance | ||
| * @property distanceMetric - The distance metric used for the similarity search | ||
| */ | ||
| export interface QueryVectorsResponse { | ||
| vectors: VectorMatch[] | ||
| distanceMetric?: DistanceMetric | ||
| } | ||
| /** | ||
| * Fetch-specific parameters like abort signals | ||
| * @property signal - AbortSignal for cancelling requests | ||
| */ | ||
| export interface VectorFetchParameters { | ||
| signal?: AbortSignal | ||
| } | ||
| /** | ||
| * Standard response wrapper for successful operations | ||
| * @property data - Response data of type T | ||
| * @property error - Null on success | ||
| */ | ||
| export interface SuccessResponse<T> { | ||
| data: T | ||
| error: null | ||
| } | ||
| /** | ||
| * Standard response wrapper for failed operations | ||
| * @property data - Null on error | ||
| * @property error - StorageError with details (named StorageVectorsError for vector operations) | ||
| */ | ||
| export interface ErrorResponse { | ||
| data: null | ||
| error: StorageError | ||
| } | ||
| /** | ||
| * Union type for all API responses | ||
| * Follows the pattern: { data: T, error: null } | { data: null, error: Error } | ||
| */ | ||
| export type ApiResponse<T> = SuccessResponse<T> | ErrorResponse |
@@ -7,2 +7,2 @@ // Generated automatically during releases by scripts/update-version-files.ts | ||
| // - Ensuring build artifacts match the published package version | ||
| export const version = '2.91.1' | ||
| export const version = '2.92.0' |
@@ -1,2 +0,2 @@ | ||
| import { isStorageError } from '../lib/errors' | ||
| import { isStorageError } from '../lib/common/errors' | ||
| import { DownloadResult } from '../lib/types' | ||
@@ -3,0 +3,0 @@ import StreamDownloadBuilder from './StreamDownloadBuilder' |
| import { IcebergRestCatalog, IcebergError } from 'iceberg-js' | ||
| import { DEFAULT_HEADERS } from '../lib/constants' | ||
| import { isStorageError, StorageError } from '../lib/errors' | ||
| import { Fetch, get, post, remove } from '../lib/fetch' | ||
| import { isValidBucketName, resolveFetch } from '../lib/helpers' | ||
| import { StorageError } from '../lib/common/errors' | ||
| import { Fetch, get, post, remove } from '../lib/common/fetch' | ||
| import { isValidBucketName } from '../lib/common/helpers' | ||
| import BaseApiClient from '../lib/common/BaseApiClient' | ||
| import { AnalyticBucket } from '../lib/types' | ||
@@ -20,8 +21,3 @@ | ||
| */ | ||
| export default class StorageAnalyticsClient { | ||
| protected url: string | ||
| protected headers: { [key: string]: string } | ||
| protected fetch: Fetch | ||
| protected shouldThrowOnError = false | ||
| export default class StorageAnalyticsClient extends BaseApiClient<StorageError> { | ||
| /** | ||
@@ -45,5 +41,5 @@ * @alpha | ||
| constructor(url: string, headers: { [key: string]: string } = {}, fetch?: Fetch) { | ||
| this.url = url.replace(/\/$/, '') | ||
| this.headers = { ...DEFAULT_HEADERS, ...headers } | ||
| this.fetch = resolveFetch(fetch) | ||
| const finalUrl = url.replace(/\/$/, '') | ||
| const finalHeaders = { ...DEFAULT_HEADERS, ...headers } | ||
| super(finalUrl, finalHeaders, fetch, 'storage') | ||
| } | ||
@@ -54,18 +50,2 @@ | ||
| * | ||
| * Enable throwing errors instead of returning them in the response | ||
| * When enabled, failed operations will throw instead of returning { data: null, error } | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Analytics Buckets | ||
| * @returns This instance for method chaining | ||
| */ | ||
| public throwOnError(): this { | ||
| this.shouldThrowOnError = true | ||
| return this | ||
| } | ||
| /** | ||
| * @alpha | ||
| * | ||
| * Creates a new analytics bucket using Iceberg tables | ||
@@ -112,15 +92,5 @@ * Analytics buckets are optimized for analytical queries and data processing | ||
| > { | ||
| try { | ||
| const data = await post(this.fetch, `${this.url}/bucket`, { name }, { headers: this.headers }) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return this.handleOperation(async () => { | ||
| return await post(this.fetch, `${this.url}/bucket`, { name }, { headers: this.headers }) | ||
| }) | ||
| } | ||
@@ -190,3 +160,3 @@ | ||
| > { | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| // Build query string from options | ||
@@ -203,15 +173,4 @@ const queryParams = new URLSearchParams() | ||
| const data = await get(this.fetch, url, { headers: this.headers }) | ||
| return { data: data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return await get(this.fetch, url, { headers: this.headers }) | ||
| }) | ||
| } | ||
@@ -260,4 +219,4 @@ | ||
| > { | ||
| try { | ||
| const data = await remove( | ||
| return this.handleOperation(async () => { | ||
| return await remove( | ||
| this.fetch, | ||
@@ -268,13 +227,3 @@ `${this.url}/bucket/${bucketName}`, | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| }) | ||
| } | ||
@@ -281,0 +230,0 @@ |
| import { DEFAULT_HEADERS } from '../lib/constants' | ||
| import { isStorageError, StorageError } from '../lib/errors' | ||
| import { Fetch, get, post, put, remove } from '../lib/fetch' | ||
| import { resolveFetch } from '../lib/helpers' | ||
| import { StorageError } from '../lib/common/errors' | ||
| import { Fetch, get, post, put, remove } from '../lib/common/fetch' | ||
| import BaseApiClient from '../lib/common/BaseApiClient' | ||
| import { Bucket, BucketType, ListBucketOptions } from '../lib/types' | ||
| import { StorageClientOptions } from '../StorageClient' | ||
| export default class StorageBucketApi { | ||
| protected url: string | ||
| protected headers: { [key: string]: string } | ||
| protected fetch: Fetch | ||
| protected shouldThrowOnError = false | ||
| export default class StorageBucketApi extends BaseApiClient<StorageError> { | ||
| constructor( | ||
@@ -31,15 +26,6 @@ url: string, | ||
| this.url = baseUrl.href.replace(/\/$/, '') | ||
| this.headers = { ...DEFAULT_HEADERS, ...headers } | ||
| this.fetch = resolveFetch(fetch) | ||
| } | ||
| const finalUrl = baseUrl.href.replace(/\/$/, '') | ||
| const finalHeaders = { ...DEFAULT_HEADERS, ...headers } | ||
| /** | ||
| * Enable throwing errors instead of returning them. | ||
| * | ||
| * @category File Buckets | ||
| */ | ||
| public throwOnError(): this { | ||
| this.shouldThrowOnError = true | ||
| return this | ||
| super(finalUrl, finalHeaders, fetch, 'storage') | ||
| } | ||
@@ -89,18 +75,8 @@ | ||
| > { | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| const queryString = this.listBucketOptionsToQueryString(options) | ||
| const data = await get(this.fetch, `${this.url}/bucket${queryString}`, { | ||
| return await get(this.fetch, `${this.url}/bucket${queryString}`, { | ||
| headers: this.headers, | ||
| }) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| }) | ||
| } | ||
@@ -151,15 +127,5 @@ | ||
| > { | ||
| try { | ||
| const data = await get(this.fetch, `${this.url}/bucket/${id}`, { headers: this.headers }) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return this.handleOperation(async () => { | ||
| return await get(this.fetch, `${this.url}/bucket/${id}`, { headers: this.headers }) | ||
| }) | ||
| } | ||
@@ -224,4 +190,4 @@ | ||
| > { | ||
| try { | ||
| const data = await post( | ||
| return this.handleOperation(async () => { | ||
| return await post( | ||
| this.fetch, | ||
@@ -239,13 +205,3 @@ `${this.url}/bucket`, | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| }) | ||
| } | ||
@@ -305,4 +261,4 @@ | ||
| > { | ||
| try { | ||
| const data = await put( | ||
| return this.handleOperation(async () => { | ||
| return await put( | ||
| this.fetch, | ||
@@ -319,13 +275,3 @@ `${this.url}/bucket/${id}`, | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| }) | ||
| } | ||
@@ -367,20 +313,5 @@ | ||
| > { | ||
| try { | ||
| const data = await post( | ||
| this.fetch, | ||
| `${this.url}/bucket/${id}/empty`, | ||
| {}, | ||
| { headers: this.headers } | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return this.handleOperation(async () => { | ||
| return await post(this.fetch, `${this.url}/bucket/${id}/empty`, {}, { headers: this.headers }) | ||
| }) | ||
| } | ||
@@ -423,20 +354,5 @@ | ||
| > { | ||
| try { | ||
| const data = await remove( | ||
| this.fetch, | ||
| `${this.url}/bucket/${id}`, | ||
| {}, | ||
| { headers: this.headers } | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return this.handleOperation(async () => { | ||
| return await remove(this.fetch, `${this.url}/bucket/${id}`, {}, { headers: this.headers }) | ||
| }) | ||
| } | ||
@@ -443,0 +359,0 @@ |
@@ -1,4 +0,5 @@ | ||
| import { isStorageError, StorageError, StorageUnknownError } from '../lib/errors' | ||
| import { Fetch, get, head, post, put, remove } from '../lib/fetch' | ||
| import { recursiveToCamel, resolveFetch } from '../lib/helpers' | ||
| import { StorageError, StorageUnknownError, isStorageError } from '../lib/common/errors' | ||
| import { get, head, post, put, remove, Fetch } from '../lib/common/fetch' | ||
| import { recursiveToCamel } from '../lib/common/helpers' | ||
| import BaseApiClient from '../lib/common/BaseApiClient' | ||
| import { | ||
@@ -45,8 +46,4 @@ FileObject, | ||
| export default class StorageFileApi { | ||
| protected url: string | ||
| protected headers: { [key: string]: string } | ||
| export default class StorageFileApi extends BaseApiClient<StorageError> { | ||
| protected bucketId?: string | ||
| protected fetch: Fetch | ||
| protected shouldThrowOnError = false | ||
@@ -59,19 +56,7 @@ constructor( | ||
| ) { | ||
| this.url = url | ||
| this.headers = headers | ||
| super(url, headers, fetch, 'storage') | ||
| this.bucketId = bucketId | ||
| this.fetch = resolveFetch(fetch) | ||
| } | ||
| /** | ||
| * Enable throwing errors instead of returning them. | ||
| * | ||
| * @category File Buckets | ||
| */ | ||
| public throwOnError(): this { | ||
| this.shouldThrowOnError = true | ||
| return this | ||
| } | ||
| /** | ||
| * Uploads a file to an existing bucket or replaces an existing file at the specified path with a new one. | ||
@@ -98,3 +83,3 @@ * | ||
| > { | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| let body | ||
@@ -158,16 +143,4 @@ const options = { ...DEFAULT_FILE_OPTIONS, ...fileOptions } | ||
| return { | ||
| data: { path: cleanPath, id: data.Id, fullPath: data.Key }, | ||
| error: null, | ||
| } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return { path: cleanPath, id: data.Id, fullPath: data.Key } | ||
| }) | ||
| } | ||
@@ -279,3 +252,3 @@ | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| let body | ||
@@ -303,16 +276,4 @@ const options = { upsert: DEFAULT_FILE_OPTIONS.upsert, ...fileOptions } | ||
| return { | ||
| data: { path: cleanPath, fullPath: data.Key }, | ||
| error: null, | ||
| } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return { path: cleanPath, fullPath: data.Key } | ||
| }) | ||
| } | ||
@@ -363,3 +324,3 @@ | ||
| > { | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| let _path = this._getFinalPath(path) | ||
@@ -388,13 +349,4 @@ | ||
| return { data: { signedUrl: url.toString(), path, token }, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return { signedUrl: url.toString(), path, token } | ||
| }) | ||
| } | ||
@@ -514,4 +466,4 @@ | ||
| > { | ||
| try { | ||
| const data = await post( | ||
| return this.handleOperation(async () => { | ||
| return await post( | ||
| this.fetch, | ||
@@ -527,13 +479,3 @@ `${this.url}/object/move`, | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| }) | ||
| } | ||
@@ -582,3 +524,3 @@ | ||
| > { | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| const data = await post( | ||
@@ -595,13 +537,4 @@ this.fetch, | ||
| ) | ||
| return { data: { path: data.Key }, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return { path: data.Key } | ||
| }) | ||
| } | ||
@@ -674,3 +607,3 @@ | ||
| > { | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| let _path = this._getFinalPath(path) | ||
@@ -688,14 +621,4 @@ | ||
| const signedUrl = encodeURI(`${this.url}${data.signedURL}${downloadQueryParam}`) | ||
| data = { signedUrl } | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return { signedUrl } | ||
| }) | ||
| } | ||
@@ -755,3 +678,3 @@ | ||
| > { | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| const data = await post( | ||
@@ -767,21 +690,9 @@ this.fetch, | ||
| : '' | ||
| return { | ||
| data: data.map((datum: { signedURL: string }) => ({ | ||
| ...datum, | ||
| signedUrl: datum.signedURL | ||
| ? encodeURI(`${this.url}${datum.signedURL}${downloadQueryParam}`) | ||
| : null, | ||
| })), | ||
| error: null, | ||
| } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return data.map((datum: { signedURL: string }) => ({ | ||
| ...datum, | ||
| signedUrl: datum.signedURL | ||
| ? encodeURI(`${this.url}${datum.signedURL}${downloadQueryParam}`) | ||
| : null, | ||
| })) | ||
| }) | ||
| } | ||
@@ -871,3 +782,3 @@ | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| const data = await get(this.fetch, `${this.url}/object/info/${_path}`, { | ||
@@ -877,13 +788,4 @@ headers: this.headers, | ||
| return { data: recursiveToCamel(data) as Camelize<FileObjectV2>, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| return recursiveToCamel(data) as Camelize<FileObjectV2> | ||
| }) | ||
| } | ||
@@ -1056,4 +958,4 @@ | ||
| > { | ||
| try { | ||
| const data = await remove( | ||
| return this.handleOperation(async () => { | ||
| return await remove( | ||
| this.fetch, | ||
@@ -1064,13 +966,3 @@ `${this.url}/object/${this.bucketId}`, | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| }) | ||
| } | ||
@@ -1214,5 +1106,5 @@ | ||
| > { | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| const body = { ...DEFAULT_SEARCH_OPTIONS, ...options, prefix: path || '' } | ||
| const data = await post( | ||
| return await post( | ||
| this.fetch, | ||
@@ -1224,13 +1116,3 @@ `${this.url}/object/list/${this.bucketId}`, | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| }) | ||
| } | ||
@@ -1258,5 +1140,5 @@ | ||
| > { | ||
| try { | ||
| return this.handleOperation(async () => { | ||
| const body = { ...options } | ||
| const data = await post( | ||
| return await post( | ||
| this.fetch, | ||
@@ -1268,13 +1150,3 @@ `${this.url}/object/list-v2/${this.bucketId}`, | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| }) | ||
| } | ||
@@ -1281,0 +1153,0 @@ |
@@ -1,2 +0,2 @@ | ||
| import { isStorageError } from '../lib/errors' | ||
| import { isStorageError } from '../lib/common/errors' | ||
| import { DownloadResult } from '../lib/types' | ||
@@ -3,0 +3,0 @@ |
| import StorageFileApi from './packages/StorageFileApi' | ||
| import StorageBucketApi from './packages/StorageBucketApi' | ||
| import StorageAnalyticsClient from './packages/StorageAnalyticsClient' | ||
| import { Fetch } from './lib/fetch' | ||
| import { StorageVectorsClient } from './lib/vectors' | ||
| import { Fetch } from './lib/common/fetch' | ||
| import { StorageVectorsClient } from './packages/StorageVectorsClient' | ||
@@ -7,0 +7,0 @@ export interface StorageClientOptions { |
| export class StorageError extends Error { | ||
| protected __isStorageError = true | ||
| constructor(message: string) { | ||
| super(message) | ||
| this.name = 'StorageError' | ||
| } | ||
| } | ||
| export function isStorageError(error: unknown): error is StorageError { | ||
| return typeof error === 'object' && error !== null && '__isStorageError' in error | ||
| } | ||
| export class StorageApiError extends StorageError { | ||
| status: number | ||
| statusCode: string | ||
| constructor(message: string, status: number, statusCode: string) { | ||
| super(message) | ||
| this.name = 'StorageApiError' | ||
| this.status = status | ||
| this.statusCode = statusCode | ||
| } | ||
| toJSON() { | ||
| return { | ||
| name: this.name, | ||
| message: this.message, | ||
| status: this.status, | ||
| statusCode: this.statusCode, | ||
| } | ||
| } | ||
| } | ||
| export class StorageUnknownError extends StorageError { | ||
| originalError: unknown | ||
| constructor(message: string, originalError: unknown) { | ||
| super(message) | ||
| this.name = 'StorageUnknownError' | ||
| this.originalError = originalError | ||
| } | ||
| } |
-148
| import { StorageApiError, StorageUnknownError } from './errors' | ||
| import { isPlainObject, resolveResponse } from './helpers' | ||
| import { FetchParameters } from './types' | ||
| export type Fetch = typeof fetch | ||
| export interface FetchOptions { | ||
| headers?: { | ||
| [key: string]: string | ||
| } | ||
| duplex?: string | ||
| noResolveJson?: boolean | ||
| } | ||
| export type RequestMethodType = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | ||
| const _getErrorMessage = (err: any): string => | ||
| err.msg || | ||
| err.message || | ||
| err.error_description || | ||
| (typeof err.error === 'string' ? err.error : err.error?.message) || | ||
| JSON.stringify(err) | ||
| const handleError = async ( | ||
| error: unknown, | ||
| reject: (reason?: any) => void, | ||
| options?: FetchOptions | ||
| ) => { | ||
| const Res = await resolveResponse() | ||
| if (error instanceof Res && !options?.noResolveJson) { | ||
| error | ||
| .json() | ||
| .then((err) => { | ||
| const status = error.status || 500 | ||
| const statusCode = err?.statusCode || status + '' | ||
| reject(new StorageApiError(_getErrorMessage(err), status, statusCode)) | ||
| }) | ||
| .catch((err) => { | ||
| reject(new StorageUnknownError(_getErrorMessage(err), err)) | ||
| }) | ||
| } else { | ||
| reject(new StorageUnknownError(_getErrorMessage(error), error)) | ||
| } | ||
| } | ||
| const _getRequestParams = ( | ||
| method: RequestMethodType, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters, | ||
| body?: object | ||
| ) => { | ||
| const params: { [k: string]: any } = { method, headers: options?.headers || {} } | ||
| if (method === 'GET' || !body) { | ||
| return params | ||
| } | ||
| if (isPlainObject(body)) { | ||
| params.headers = { 'Content-Type': 'application/json', ...options?.headers } | ||
| params.body = JSON.stringify(body) | ||
| } else { | ||
| params.body = body | ||
| } | ||
| if (options?.duplex) { | ||
| params.duplex = options.duplex | ||
| } | ||
| return { ...params, ...parameters } | ||
| } | ||
| async function _handleRequest( | ||
| fetcher: Fetch, | ||
| method: RequestMethodType, | ||
| url: string, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters, | ||
| body?: object | ||
| ): Promise<any> { | ||
| return new Promise((resolve, reject) => { | ||
| fetcher(url, _getRequestParams(method, options, parameters, body)) | ||
| .then((result) => { | ||
| if (!result.ok) throw result | ||
| if (options?.noResolveJson) return result | ||
| return result.json() | ||
| }) | ||
| .then((data) => resolve(data)) | ||
| .catch((error) => handleError(error, reject, options)) | ||
| }) | ||
| } | ||
| export async function get( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters | ||
| ): Promise<any> { | ||
| return _handleRequest(fetcher, 'GET', url, options, parameters) | ||
| } | ||
| export async function post( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| body: object, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters | ||
| ): Promise<any> { | ||
| return _handleRequest(fetcher, 'POST', url, options, parameters, body) | ||
| } | ||
| export async function put( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| body: object, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters | ||
| ): Promise<any> { | ||
| return _handleRequest(fetcher, 'PUT', url, options, parameters, body) | ||
| } | ||
| export async function head( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters | ||
| ): Promise<any> { | ||
| return _handleRequest( | ||
| fetcher, | ||
| 'HEAD', | ||
| url, | ||
| { | ||
| ...options, | ||
| noResolveJson: true, | ||
| }, | ||
| parameters | ||
| ) | ||
| } | ||
| export async function remove( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| body: object, | ||
| options?: FetchOptions, | ||
| parameters?: FetchParameters | ||
| ): Promise<any> { | ||
| return _handleRequest(fetcher, 'DELETE', url, options, parameters, body) | ||
| } |
| type Fetch = typeof fetch | ||
| export const resolveFetch = (customFetch?: Fetch): Fetch => { | ||
| if (customFetch) { | ||
| return (...args) => customFetch(...args) | ||
| } | ||
| return (...args) => fetch(...args) | ||
| } | ||
| export const resolveResponse = (): typeof Response => { | ||
| return Response | ||
| } | ||
| export const recursiveToCamel = (item: Record<string, any>): unknown => { | ||
| if (Array.isArray(item)) { | ||
| return item.map((el) => recursiveToCamel(el)) | ||
| } else if (typeof item === 'function' || item !== Object(item)) { | ||
| return item | ||
| } | ||
| const result: Record<string, any> = {} | ||
| Object.entries(item).forEach(([key, value]) => { | ||
| const newKey = key.replace(/([-_][a-z])/gi, (c) => c.toUpperCase().replace(/[-_]/g, '')) | ||
| result[newKey] = recursiveToCamel(value) | ||
| }) | ||
| return result | ||
| } | ||
| /** | ||
| * Determine if input is a plain object | ||
| * An object is plain if it's created by either {}, new Object(), or Object.create(null) | ||
| * source: https://github.com/sindresorhus/is-plain-obj | ||
| */ | ||
| export const isPlainObject = (value: object): boolean => { | ||
| if (typeof value !== 'object' || value === null) { | ||
| return false | ||
| } | ||
| const prototype = Object.getPrototypeOf(value) | ||
| return ( | ||
| (prototype === null || | ||
| prototype === Object.prototype || | ||
| Object.getPrototypeOf(prototype) === null) && | ||
| !(Symbol.toStringTag in value) && | ||
| !(Symbol.iterator in value) | ||
| ) | ||
| } | ||
| /** | ||
| * Validates if a given bucket name is valid according to Supabase Storage API rules | ||
| * Mirrors backend validation from: storage/src/storage/limits.ts:isValidBucketName() | ||
| * | ||
| * Rules: | ||
| * - Length: 1-100 characters | ||
| * - Allowed characters: alphanumeric (a-z, A-Z, 0-9), underscore (_), and safe special characters | ||
| * - Safe special characters: ! - . * ' ( ) space & $ @ = ; : + , ? | ||
| * - Forbidden: path separators (/, \), path traversal (..), leading/trailing whitespace | ||
| * | ||
| * AWS S3 Reference: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html | ||
| * | ||
| * @param bucketName - The bucket name to validate | ||
| * @returns true if valid, false otherwise | ||
| */ | ||
| export const isValidBucketName = (bucketName: string): boolean => { | ||
| if (!bucketName || typeof bucketName !== 'string') { | ||
| return false | ||
| } | ||
| // Check length constraints (1-100 characters) | ||
| if (bucketName.length === 0 || bucketName.length > 100) { | ||
| return false | ||
| } | ||
| // Check for leading/trailing whitespace | ||
| if (bucketName.trim() !== bucketName) { | ||
| return false | ||
| } | ||
| // Explicitly reject path separators (security) | ||
| // Note: Consecutive periods (..) are allowed by backend - the AWS restriction | ||
| // on relative paths applies to object keys, not bucket names | ||
| if (bucketName.includes('/') || bucketName.includes('\\')) { | ||
| return false | ||
| } | ||
| // Validate against allowed character set | ||
| // Pattern matches backend regex: /^(\w|!|-|\.|\*|'|\(|\)| |&|\$|@|=|;|:|\+|,|\?)*$/ | ||
| // This explicitly excludes path separators (/, \) and other problematic characters | ||
| const bucketNameRegex = /^[\w!.\*'() &$@=;:+,?-]+$/ | ||
| return bucketNameRegex.test(bucketName) | ||
| } |
| export * from '../packages/StorageBucketApi' | ||
| export * from '../packages/StorageFileApi' | ||
| export * from './types' | ||
| export * from './constants' | ||
| export * from './vectors' |
| import { version } from '../version' | ||
| export const DEFAULT_HEADERS = { | ||
| 'X-Client-Info': `storage-js/${version}`, | ||
| 'Content-Type': 'application/json', | ||
| } |
| /** | ||
| * Base error class for all Storage Vectors errors | ||
| */ | ||
| export class StorageVectorsError extends Error { | ||
| protected __isStorageVectorsError = true | ||
| constructor(message: string) { | ||
| super(message) | ||
| this.name = 'StorageVectorsError' | ||
| } | ||
| } | ||
| /** | ||
| * Type guard to check if an error is a StorageVectorsError | ||
| * @param error - The error to check | ||
| * @returns True if the error is a StorageVectorsError | ||
| */ | ||
| export function isStorageVectorsError(error: unknown): error is StorageVectorsError { | ||
| return typeof error === 'object' && error !== null && '__isStorageVectorsError' in error | ||
| } | ||
| /** | ||
| * API error returned from S3 Vectors service | ||
| * Includes HTTP status code and service-specific error code | ||
| */ | ||
| export class StorageVectorsApiError extends StorageVectorsError { | ||
| status: number | ||
| statusCode: string | ||
| constructor(message: string, status: number, statusCode: string) { | ||
| super(message) | ||
| this.name = 'StorageVectorsApiError' | ||
| this.status = status | ||
| this.statusCode = statusCode | ||
| } | ||
| toJSON() { | ||
| return { | ||
| name: this.name, | ||
| message: this.message, | ||
| status: this.status, | ||
| statusCode: this.statusCode, | ||
| } | ||
| } | ||
| } | ||
| /** | ||
| * Unknown error that doesn't match expected error patterns | ||
| * Wraps the original error for debugging | ||
| */ | ||
| export class StorageVectorsUnknownError extends StorageVectorsError { | ||
| originalError: unknown | ||
| constructor(message: string, originalError: unknown) { | ||
| super(message) | ||
| this.name = 'StorageVectorsUnknownError' | ||
| this.originalError = originalError | ||
| } | ||
| } | ||
| /** | ||
| * Error codes specific to S3 Vectors API | ||
| * Maps AWS service errors to application-friendly error codes | ||
| */ | ||
| export enum StorageVectorsErrorCode { | ||
| /** Internal server fault (HTTP 500) */ | ||
| InternalError = 'InternalError', | ||
| /** Resource already exists / conflict (HTTP 409) */ | ||
| S3VectorConflictException = 'S3VectorConflictException', | ||
| /** Resource not found (HTTP 404) */ | ||
| S3VectorNotFoundException = 'S3VectorNotFoundException', | ||
| /** Delete bucket while not empty (HTTP 400) */ | ||
| S3VectorBucketNotEmpty = 'S3VectorBucketNotEmpty', | ||
| /** Exceeds bucket quota/limit (HTTP 400) */ | ||
| S3VectorMaxBucketsExceeded = 'S3VectorMaxBucketsExceeded', | ||
| /** Exceeds index quota/limit (HTTP 400) */ | ||
| S3VectorMaxIndexesExceeded = 'S3VectorMaxIndexesExceeded', | ||
| } |
| import { StorageVectorsApiError, StorageVectorsUnknownError } from './errors' | ||
| import { isPlainObject, resolveResponse } from './helpers' | ||
| import { VectorFetchParameters } from './types' | ||
| export type Fetch = typeof fetch | ||
| /** | ||
| * Options for fetch requests | ||
| * @property headers - Custom HTTP headers | ||
| * @property noResolveJson - If true, return raw Response instead of parsing JSON | ||
| */ | ||
| export interface FetchOptions { | ||
| headers?: { | ||
| [key: string]: string | ||
| } | ||
| noResolveJson?: boolean | ||
| } | ||
| /** | ||
| * HTTP methods supported by the API | ||
| */ | ||
| export type RequestMethodType = 'GET' | 'POST' | 'PUT' | 'DELETE' | ||
| /** | ||
| * Extracts error message from various error response formats | ||
| * @param err - Error object from API | ||
| * @returns Human-readable error message | ||
| */ | ||
| const _getErrorMessage = (err: any): string => | ||
| err.msg || err.message || err.error_description || err.error || JSON.stringify(err) | ||
| /** | ||
| * Handles fetch errors and converts them to StorageVectors error types | ||
| * @param error - The error caught from fetch | ||
| * @param reject - Promise rejection function | ||
| * @param options - Fetch options that may affect error handling | ||
| */ | ||
| const handleError = async ( | ||
| error: unknown, | ||
| reject: (reason?: any) => void, | ||
| options?: FetchOptions | ||
| ) => { | ||
| // Check if error is a Response-like object (has status and ok properties) | ||
| // This is more reliable than instanceof which can fail across realms | ||
| const isResponseLike = | ||
| error && | ||
| typeof error === 'object' && | ||
| 'status' in error && | ||
| 'ok' in error && | ||
| typeof (error as any).status === 'number' | ||
| if (isResponseLike && !options?.noResolveJson) { | ||
| const status = (error as any).status || 500 | ||
| const responseError = error as any | ||
| // Try to parse JSON body if available | ||
| if (typeof responseError.json === 'function') { | ||
| responseError | ||
| .json() | ||
| .then((err: any) => { | ||
| const statusCode = err?.statusCode || err?.code || status + '' | ||
| reject(new StorageVectorsApiError(_getErrorMessage(err), status, statusCode)) | ||
| }) | ||
| .catch(() => { | ||
| // If JSON parsing fails, create an ApiError with the HTTP status code | ||
| const statusCode = status + '' | ||
| const message = responseError.statusText || `HTTP ${status} error` | ||
| reject(new StorageVectorsApiError(message, status, statusCode)) | ||
| }) | ||
| } else { | ||
| // No json() method available, create error from status | ||
| const statusCode = status + '' | ||
| const message = responseError.statusText || `HTTP ${status} error` | ||
| reject(new StorageVectorsApiError(message, status, statusCode)) | ||
| } | ||
| } else { | ||
| reject(new StorageVectorsUnknownError(_getErrorMessage(error), error)) | ||
| } | ||
| } | ||
| /** | ||
| * Builds request parameters for fetch calls | ||
| * @param method - HTTP method | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters like AbortSignal | ||
| * @param body - Request body (will be JSON stringified if plain object) | ||
| * @returns Complete fetch request parameters | ||
| */ | ||
| const _getRequestParams = ( | ||
| method: RequestMethodType, | ||
| options?: FetchOptions, | ||
| parameters?: VectorFetchParameters, | ||
| body?: object | ||
| ) => { | ||
| const params: { [k: string]: any } = { method, headers: options?.headers || {} } | ||
| if (method === 'GET' || !body) { | ||
| return params | ||
| } | ||
| if (isPlainObject(body)) { | ||
| params.headers = { 'Content-Type': 'application/json', ...options?.headers } | ||
| params.body = JSON.stringify(body) | ||
| } else { | ||
| params.body = body | ||
| } | ||
| return { ...params, ...parameters } | ||
| } | ||
| /** | ||
| * Internal request handler that wraps fetch with error handling | ||
| * @param fetcher - Fetch function to use | ||
| * @param method - HTTP method | ||
| * @param url - Request URL | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @param body - Request body | ||
| * @returns Promise with parsed response or error | ||
| */ | ||
| async function _handleRequest( | ||
| fetcher: Fetch, | ||
| method: RequestMethodType, | ||
| url: string, | ||
| options?: FetchOptions, | ||
| parameters?: VectorFetchParameters, | ||
| body?: object | ||
| ): Promise<any> { | ||
| return new Promise((resolve, reject) => { | ||
| fetcher(url, _getRequestParams(method, options, parameters, body)) | ||
| .then((result) => { | ||
| if (!result.ok) throw result | ||
| if (options?.noResolveJson) return result | ||
| // Handle empty responses (204, empty body) | ||
| const contentType = result.headers.get('content-type') | ||
| if (!contentType || !contentType.includes('application/json')) { | ||
| return {} | ||
| } | ||
| return result.json() | ||
| }) | ||
| .then((data) => resolve(data)) | ||
| .catch((error) => handleError(error, reject, options)) | ||
| }) | ||
| } | ||
| /** | ||
| * Performs a GET request | ||
| * @param fetcher - Fetch function to use | ||
| * @param url - Request URL | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @returns Promise with parsed response | ||
| */ | ||
| export async function get( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| options?: FetchOptions, | ||
| parameters?: VectorFetchParameters | ||
| ): Promise<any> { | ||
| return _handleRequest(fetcher, 'GET', url, options, parameters) | ||
| } | ||
| /** | ||
| * Performs a POST request | ||
| * @param fetcher - Fetch function to use | ||
| * @param url - Request URL | ||
| * @param body - Request body to be JSON stringified | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @returns Promise with parsed response | ||
| */ | ||
| export async function post( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| body: object, | ||
| options?: FetchOptions, | ||
| parameters?: VectorFetchParameters | ||
| ): Promise<any> { | ||
| return _handleRequest(fetcher, 'POST', url, options, parameters, body) | ||
| } | ||
| /** | ||
| * Performs a PUT request | ||
| * @param fetcher - Fetch function to use | ||
| * @param url - Request URL | ||
| * @param body - Request body to be JSON stringified | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @returns Promise with parsed response | ||
| */ | ||
| export async function put( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| body: object, | ||
| options?: FetchOptions, | ||
| parameters?: VectorFetchParameters | ||
| ): Promise<any> { | ||
| return _handleRequest(fetcher, 'PUT', url, options, parameters, body) | ||
| } | ||
| /** | ||
| * Performs a DELETE request | ||
| * @param fetcher - Fetch function to use | ||
| * @param url - Request URL | ||
| * @param body - Request body to be JSON stringified | ||
| * @param options - Custom fetch options | ||
| * @param parameters - Additional fetch parameters | ||
| * @returns Promise with parsed response | ||
| */ | ||
| export async function remove( | ||
| fetcher: Fetch, | ||
| url: string, | ||
| body: object, | ||
| options?: FetchOptions, | ||
| parameters?: VectorFetchParameters | ||
| ): Promise<any> { | ||
| return _handleRequest(fetcher, 'DELETE', url, options, parameters, body) | ||
| } |
| type Fetch = typeof fetch | ||
| /** | ||
| * Resolves the fetch implementation to use | ||
| * Uses custom fetch if provided, otherwise uses native fetch | ||
| * | ||
| * @param customFetch - Optional custom fetch implementation | ||
| * @returns Resolved fetch function | ||
| */ | ||
| export const resolveFetch = (customFetch?: Fetch): Fetch => { | ||
| if (customFetch) { | ||
| return (...args) => customFetch(...args) | ||
| } | ||
| return (...args) => fetch(...args) | ||
| } | ||
| /** | ||
| * Resolves the Response constructor to use | ||
| * Returns native Response constructor | ||
| * | ||
| * @returns Response constructor | ||
| */ | ||
| export const resolveResponse = (): typeof Response => { | ||
| return Response | ||
| } | ||
| /** | ||
| * Determine if input is a plain object | ||
| * An object is plain if it's created by either {}, new Object(), or Object.create(null) | ||
| * | ||
| * @param value - Value to check | ||
| * @returns True if value is a plain object | ||
| * @source https://github.com/sindresorhus/is-plain-obj | ||
| */ | ||
| export const isPlainObject = (value: object): boolean => { | ||
| if (typeof value !== 'object' || value === null) { | ||
| return false | ||
| } | ||
| const prototype = Object.getPrototypeOf(value) | ||
| return ( | ||
| (prototype === null || | ||
| prototype === Object.prototype || | ||
| Object.getPrototypeOf(prototype) === null) && | ||
| !(Symbol.toStringTag in value) && | ||
| !(Symbol.iterator in value) | ||
| ) | ||
| } | ||
| /** | ||
| * Normalizes a number array to float32 format | ||
| * Ensures all vector values are valid 32-bit floats | ||
| * | ||
| * @param values - Array of numbers to normalize | ||
| * @returns Normalized float32 array | ||
| */ | ||
| export const normalizeToFloat32 = (values: number[]): number[] => { | ||
| // Use Float32Array to ensure proper precision | ||
| return Array.from(new Float32Array(values)) | ||
| } | ||
| /** | ||
| * Validates vector dimensions match expected dimension | ||
| * Throws error if dimensions don't match | ||
| * | ||
| * @param vector - Vector data to validate | ||
| * @param expectedDimension - Expected vector dimension | ||
| * @throws Error if dimensions don't match | ||
| */ | ||
| export const validateVectorDimension = ( | ||
| vector: { float32: number[] }, | ||
| expectedDimension?: number | ||
| ): void => { | ||
| if (expectedDimension !== undefined && vector.float32.length !== expectedDimension) { | ||
| throw new Error( | ||
| `Vector dimension mismatch: expected ${expectedDimension}, got ${vector.float32.length}` | ||
| ) | ||
| } | ||
| } |
| // Main client | ||
| export { StorageVectorsClient, VectorBucketScope, VectorIndexScope } from './StorageVectorsClient' | ||
| export type { StorageVectorsClientOptions } from './StorageVectorsClient' | ||
| // API classes (for advanced usage) | ||
| export { default as VectorBucketApi } from './VectorBucketApi' | ||
| export { default as VectorIndexApi } from './VectorIndexApi' | ||
| export { default as VectorDataApi } from './VectorDataApi' | ||
| export type { CreateIndexOptions } from './VectorIndexApi' | ||
| // Types | ||
| export type { | ||
| // Core types | ||
| VectorBucket, | ||
| VectorIndex, | ||
| VectorData, | ||
| VectorMetadata, | ||
| VectorObject, | ||
| VectorMatch, | ||
| EncryptionConfiguration, | ||
| MetadataConfiguration, | ||
| VectorDataType, | ||
| DistanceMetric, | ||
| VectorFilter, | ||
| // Request/Response types | ||
| ListVectorBucketsOptions, | ||
| ListVectorBucketsResponse, | ||
| ListIndexesOptions, | ||
| ListIndexesResponse, | ||
| PutVectorsOptions, | ||
| GetVectorsOptions, | ||
| GetVectorsResponse, | ||
| DeleteVectorsOptions, | ||
| ListVectorsOptions, | ||
| ListVectorsResponse, | ||
| QueryVectorsOptions, | ||
| QueryVectorsResponse, | ||
| // Response wrappers | ||
| ApiResponse, | ||
| SuccessResponse, | ||
| ErrorResponse, | ||
| VectorFetchParameters, | ||
| } from './types' | ||
| // Errors | ||
| export { | ||
| StorageVectorsError, | ||
| StorageVectorsApiError, | ||
| StorageVectorsUnknownError, | ||
| StorageVectorsErrorCode, | ||
| isStorageVectorsError, | ||
| } from './errors' | ||
| // Fetch utilities (for custom implementations) | ||
| export type { Fetch, FetchOptions, RequestMethodType } from './fetch' | ||
| // Helper utilities | ||
| export { | ||
| resolveFetch, | ||
| resolveResponse, | ||
| isPlainObject, | ||
| normalizeToFloat32, | ||
| validateVectorDimension, | ||
| } from './helpers' |
| import VectorIndexApi, { CreateIndexOptions } from './VectorIndexApi' | ||
| import VectorDataApi from './VectorDataApi' | ||
| import { Fetch } from './fetch' | ||
| import VectorBucketApi from './VectorBucketApi' | ||
| import { | ||
| ApiResponse, | ||
| DeleteVectorsOptions, | ||
| GetVectorsOptions, | ||
| ListIndexesOptions, | ||
| ListVectorsOptions, | ||
| ListVectorBucketsOptions, | ||
| ListVectorBucketsResponse, | ||
| PutVectorsOptions, | ||
| QueryVectorsOptions, | ||
| VectorBucket, | ||
| } from './types' | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Configuration options for the Storage Vectors client | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| */ | ||
| export interface StorageVectorsClientOptions { | ||
| /** | ||
| * Custom headers to include in all requests | ||
| */ | ||
| headers?: { [key: string]: string } | ||
| /** | ||
| * Custom fetch implementation (optional) | ||
| * Useful for testing or custom request handling | ||
| */ | ||
| fetch?: Fetch | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Main client for interacting with S3 Vectors API | ||
| * Provides access to bucket, index, and vector data operations | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * **Usage Patterns:** | ||
| * | ||
| * ```typescript | ||
| * const { data, error } = await supabase | ||
| * .storage | ||
| * .vectors | ||
| * .createBucket('embeddings-prod') | ||
| * | ||
| * // Access index operations via buckets | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * await bucket.createIndex({ | ||
| * indexName: 'documents', | ||
| * dataType: 'float32', | ||
| * dimension: 1536, | ||
| * distanceMetric: 'cosine' | ||
| * }) | ||
| * | ||
| * // Access vector operations via index | ||
| * const index = bucket.index('documents') | ||
| * await index.putVectors({ | ||
| * vectors: [ | ||
| * { key: 'doc-1', data: { float32: [...] }, metadata: { title: 'Intro' } } | ||
| * ] | ||
| * }) | ||
| * | ||
| * // Query similar vectors | ||
| * const { data } = await index.queryVectors({ | ||
| * queryVector: { float32: [...] }, | ||
| * topK: 5, | ||
| * returnDistance: true | ||
| * }) | ||
| * ``` | ||
| */ | ||
| export class StorageVectorsClient extends VectorBucketApi { | ||
| /** | ||
| * @alpha | ||
| * | ||
| * Creates a StorageVectorsClient that can manage buckets, indexes, and vectors. | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param url - Base URL of the Storage Vectors REST API. | ||
| * @param options.headers - Optional headers (for example `Authorization`) applied to every request. | ||
| * @param options.fetch - Optional custom `fetch` implementation for non-browser runtimes. | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const client = new StorageVectorsClient(url, options) | ||
| * ``` | ||
| */ | ||
| constructor(url: string, options: StorageVectorsClientOptions = {}) { | ||
| super(url, options.headers || {}, options.fetch) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Access operations for a specific vector bucket | ||
| * Returns a scoped client for index and vector operations within the bucket | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param vectorBucketName - Name of the vector bucket | ||
| * @returns Bucket-scoped client with index and vector operations | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * ``` | ||
| */ | ||
| from(vectorBucketName: string): VectorBucketScope { | ||
| return new VectorBucketScope(this.url, this.headers, vectorBucketName, this.fetch) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Creates a new vector bucket | ||
| * Vector buckets are containers for vector indexes and their data | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param vectorBucketName - Unique name for the vector bucket | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const { data, error } = await supabase | ||
| * .storage | ||
| * .vectors | ||
| * .createBucket('embeddings-prod') | ||
| * ``` | ||
| */ | ||
| async createBucket(vectorBucketName: string): Promise<ApiResponse<undefined>> { | ||
| return super.createBucket(vectorBucketName) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Retrieves metadata for a specific vector bucket | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param vectorBucketName - Name of the vector bucket | ||
| * @returns Promise with bucket metadata or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const { data, error } = await supabase | ||
| * .storage | ||
| * .vectors | ||
| * .getBucket('embeddings-prod') | ||
| * | ||
| * console.log('Bucket created:', data?.vectorBucket.creationTime) | ||
| * ``` | ||
| */ | ||
| async getBucket(vectorBucketName: string): Promise<ApiResponse<{ vectorBucket: VectorBucket }>> { | ||
| return super.getBucket(vectorBucketName) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Lists all vector buckets with optional filtering and pagination | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Optional filters (prefix, maxResults, nextToken) | ||
| * @returns Promise with list of buckets or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const { data, error } = await supabase | ||
| * .storage | ||
| * .vectors | ||
| * .listBuckets({ prefix: 'embeddings-' }) | ||
| * | ||
| * data?.vectorBuckets.forEach(bucket => { | ||
| * console.log(bucket.vectorBucketName) | ||
| * }) | ||
| * ``` | ||
| */ | ||
| async listBuckets( | ||
| options: ListVectorBucketsOptions = {} | ||
| ): Promise<ApiResponse<ListVectorBucketsResponse>> { | ||
| return super.listBuckets(options) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Deletes a vector bucket (bucket must be empty) | ||
| * All indexes must be deleted before deleting the bucket | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param vectorBucketName - Name of the vector bucket to delete | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const { data, error } = await supabase | ||
| * .storage | ||
| * .vectors | ||
| * .deleteBucket('embeddings-old') | ||
| * ``` | ||
| */ | ||
| async deleteBucket(vectorBucketName: string): Promise<ApiResponse<undefined>> { | ||
| return super.deleteBucket(vectorBucketName) | ||
| } | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Scoped client for operations within a specific vector bucket | ||
| * Provides index management and access to vector operations | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| */ | ||
| export class VectorBucketScope extends VectorIndexApi { | ||
| private vectorBucketName: string | ||
| /** | ||
| * @alpha | ||
| * | ||
| * Creates a helper that automatically scopes all index operations to the provided bucket. | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * ``` | ||
| */ | ||
| constructor( | ||
| url: string, | ||
| headers: { [key: string]: string }, | ||
| vectorBucketName: string, | ||
| fetch?: Fetch | ||
| ) { | ||
| super(url, headers, fetch) | ||
| this.vectorBucketName = vectorBucketName | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Creates a new vector index in this bucket | ||
| * Convenience method that automatically includes the bucket name | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Index configuration (vectorBucketName is automatically set) | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * await bucket.createIndex({ | ||
| * indexName: 'documents-openai', | ||
| * dataType: 'float32', | ||
| * dimension: 1536, | ||
| * distanceMetric: 'cosine', | ||
| * metadataConfiguration: { | ||
| * nonFilterableMetadataKeys: ['raw_text'] | ||
| * } | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async createIndex(options: Omit<CreateIndexOptions, 'vectorBucketName'>) { | ||
| return super.createIndex({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Lists indexes in this bucket | ||
| * Convenience method that automatically includes the bucket name | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Listing options (vectorBucketName is automatically set) | ||
| * @returns Promise with response containing indexes array and pagination token or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * const { data } = await bucket.listIndexes({ prefix: 'documents-' }) | ||
| * ``` | ||
| */ | ||
| override async listIndexes(options: Omit<ListIndexesOptions, 'vectorBucketName'> = {}) { | ||
| return super.listIndexes({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Retrieves metadata for a specific index in this bucket | ||
| * Convenience method that automatically includes the bucket name | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param indexName - Name of the index to retrieve | ||
| * @returns Promise with index metadata or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * const { data } = await bucket.getIndex('documents-openai') | ||
| * console.log('Dimension:', data?.index.dimension) | ||
| * ``` | ||
| */ | ||
| override async getIndex(indexName: string) { | ||
| return super.getIndex(this.vectorBucketName, indexName) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Deletes an index from this bucket | ||
| * Convenience method that automatically includes the bucket name | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param indexName - Name of the index to delete | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const bucket = supabase.storage.vectors.from('embeddings-prod') | ||
| * await bucket.deleteIndex('old-index') | ||
| * ``` | ||
| */ | ||
| override async deleteIndex(indexName: string) { | ||
| return super.deleteIndex(this.vectorBucketName, indexName) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Access operations for a specific index within this bucket | ||
| * Returns a scoped client for vector data operations | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param indexName - Name of the index | ||
| * @returns Index-scoped client with vector data operations | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * | ||
| * // Insert vectors | ||
| * await index.putVectors({ | ||
| * vectors: [ | ||
| * { key: 'doc-1', data: { float32: [...] }, metadata: { title: 'Intro' } } | ||
| * ] | ||
| * }) | ||
| * | ||
| * // Query similar vectors | ||
| * const { data } = await index.queryVectors({ | ||
| * queryVector: { float32: [...] }, | ||
| * topK: 5 | ||
| * }) | ||
| * ``` | ||
| */ | ||
| index(indexName: string): VectorIndexScope { | ||
| return new VectorIndexScope( | ||
| this.url, | ||
| this.headers, | ||
| this.vectorBucketName, | ||
| indexName, | ||
| this.fetch | ||
| ) | ||
| } | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Scoped client for operations within a specific vector index | ||
| * Provides vector data operations (put, get, list, query, delete) | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| */ | ||
| export class VectorIndexScope extends VectorDataApi { | ||
| private vectorBucketName: string | ||
| private indexName: string | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Creates a helper that automatically scopes all vector operations to the provided bucket/index names. | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * ``` | ||
| */ | ||
| constructor( | ||
| url: string, | ||
| headers: { [key: string]: string }, | ||
| vectorBucketName: string, | ||
| indexName: string, | ||
| fetch?: Fetch | ||
| ) { | ||
| super(url, headers, fetch) | ||
| this.vectorBucketName = vectorBucketName | ||
| this.indexName = indexName | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Inserts or updates vectors in this index | ||
| * Convenience method that automatically includes bucket and index names | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Vector insertion options (bucket and index names automatically set) | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * await index.putVectors({ | ||
| * vectors: [ | ||
| * { | ||
| * key: 'doc-1', | ||
| * data: { float32: [0.1, 0.2, ...] }, | ||
| * metadata: { title: 'Introduction', page: 1 } | ||
| * } | ||
| * ] | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async putVectors(options: Omit<PutVectorsOptions, 'vectorBucketName' | 'indexName'>) { | ||
| return super.putVectors({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| indexName: this.indexName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Retrieves vectors by keys from this index | ||
| * Convenience method that automatically includes bucket and index names | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Vector retrieval options (bucket and index names automatically set) | ||
| * @returns Promise with response containing vectors array or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * const { data } = await index.getVectors({ | ||
| * keys: ['doc-1', 'doc-2'], | ||
| * returnMetadata: true | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async getVectors(options: Omit<GetVectorsOptions, 'vectorBucketName' | 'indexName'>) { | ||
| return super.getVectors({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| indexName: this.indexName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Lists vectors in this index with pagination | ||
| * Convenience method that automatically includes bucket and index names | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Listing options (bucket and index names automatically set) | ||
| * @returns Promise with response containing vectors array and pagination token or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * const { data } = await index.listVectors({ | ||
| * maxResults: 500, | ||
| * returnMetadata: true | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async listVectors( | ||
| options: Omit<ListVectorsOptions, 'vectorBucketName' | 'indexName'> = {} | ||
| ) { | ||
| return super.listVectors({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| indexName: this.indexName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Queries for similar vectors in this index | ||
| * Convenience method that automatically includes bucket and index names | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Query options (bucket and index names automatically set) | ||
| * @returns Promise with response containing matches array of similar vectors ordered by distance or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * const { data } = await index.queryVectors({ | ||
| * queryVector: { float32: [0.1, 0.2, ...] }, | ||
| * topK: 5, | ||
| * filter: { category: 'technical' }, | ||
| * returnDistance: true, | ||
| * returnMetadata: true | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async queryVectors( | ||
| options: Omit<QueryVectorsOptions, 'vectorBucketName' | 'indexName'> | ||
| ) { | ||
| return super.queryVectors({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| indexName: this.indexName, | ||
| }) | ||
| } | ||
| /** | ||
| * | ||
| * @alpha | ||
| * | ||
| * Deletes vectors by keys from this index | ||
| * Convenience method that automatically includes bucket and index names | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| * | ||
| * @category Vector Buckets | ||
| * @param options - Deletion options (bucket and index names automatically set) | ||
| * @returns Promise with empty response on success or error | ||
| * | ||
| * @example | ||
| * ```typescript | ||
| * const index = supabase.storage.vectors.from('embeddings-prod').index('documents-openai') | ||
| * await index.deleteVectors({ | ||
| * keys: ['doc-1', 'doc-2', 'doc-3'] | ||
| * }) | ||
| * ``` | ||
| */ | ||
| override async deleteVectors( | ||
| options: Omit<DeleteVectorsOptions, 'vectorBucketName' | 'indexName'> | ||
| ) { | ||
| return super.deleteVectors({ | ||
| ...options, | ||
| vectorBucketName: this.vectorBucketName, | ||
| indexName: this.indexName, | ||
| }) | ||
| } | ||
| } |
| import { StorageVectorsError } from './errors' | ||
| /** | ||
| * Configuration for encryption at rest | ||
| * @property kmsKeyArn - ARN of the KMS key used for encryption | ||
| * @property sseType - Server-side encryption type (e.g., 'KMS') | ||
| */ | ||
| export interface EncryptionConfiguration { | ||
| kmsKeyArn?: string | ||
| sseType?: string | ||
| } | ||
| /** | ||
| * Vector bucket metadata | ||
| * @property vectorBucketName - Unique name of the vector bucket | ||
| * @property creationTime - Unix timestamp of when the bucket was created | ||
| * @property encryptionConfiguration - Optional encryption settings | ||
| */ | ||
| export interface VectorBucket { | ||
| vectorBucketName: string | ||
| creationTime?: number | ||
| encryptionConfiguration?: EncryptionConfiguration | ||
| } | ||
| /** | ||
| * Metadata configuration for vector index | ||
| * Defines which metadata keys should not be indexed for filtering | ||
| * @property nonFilterableMetadataKeys - Array of metadata keys that cannot be used in filters | ||
| */ | ||
| export interface MetadataConfiguration { | ||
| nonFilterableMetadataKeys?: string[] | ||
| } | ||
| /** | ||
| * Supported data types for vectors | ||
| * Currently only float32 is supported | ||
| */ | ||
| export type VectorDataType = 'float32' | ||
| /** | ||
| * Distance metrics for vector similarity search | ||
| */ | ||
| export type DistanceMetric = 'cosine' | 'euclidean' | 'dotproduct' | ||
| /** | ||
| * Vector index configuration and metadata | ||
| * @property indexName - Unique name of the index within the bucket | ||
| * @property vectorBucketName - Name of the parent vector bucket | ||
| * @property dataType - Data type of vector components (currently only 'float32') | ||
| * @property dimension - Dimensionality of vectors (e.g., 384, 768, 1536) | ||
| * @property distanceMetric - Similarity metric used for queries | ||
| * @property metadataConfiguration - Configuration for metadata filtering | ||
| * @property creationTime - Unix timestamp of when the index was created | ||
| */ | ||
| export interface VectorIndex { | ||
| indexName: string | ||
| vectorBucketName: string | ||
| dataType: VectorDataType | ||
| dimension: number | ||
| distanceMetric: DistanceMetric | ||
| metadataConfiguration?: MetadataConfiguration | ||
| creationTime?: number | ||
| } | ||
| /** | ||
| * Vector data representation | ||
| * Vectors must be float32 arrays with dimensions matching the index | ||
| * @property float32 - Array of 32-bit floating point numbers | ||
| */ | ||
| export interface VectorData { | ||
| float32: number[] | ||
| } | ||
| /** | ||
| * Arbitrary JSON metadata attached to vectors | ||
| * Keys configured as non-filterable in the index can be stored but not queried | ||
| */ | ||
| export type VectorMetadata = Record<string, any> | ||
| /** | ||
| * Single vector object for insertion/update | ||
| * @property key - Unique identifier for the vector | ||
| * @property data - Vector embedding data | ||
| * @property metadata - Optional arbitrary metadata | ||
| */ | ||
| export interface VectorObject { | ||
| key: string | ||
| data: VectorData | ||
| metadata?: VectorMetadata | ||
| } | ||
| /** | ||
| * Vector object returned from queries with optional distance | ||
| * @property key - Unique identifier for the vector | ||
| * @property data - Vector embedding data (if requested) | ||
| * @property metadata - Arbitrary metadata (if requested) | ||
| * @property distance - Similarity distance from query vector (if requested) | ||
| */ | ||
| export interface VectorMatch { | ||
| key: string | ||
| data?: VectorData | ||
| metadata?: VectorMetadata | ||
| distance?: number | ||
| } | ||
| /** | ||
| * Options for fetching vector buckets | ||
| * @property prefix - Filter buckets by name prefix | ||
| * @property maxResults - Maximum number of results to return (default: 100) | ||
| * @property nextToken - Token for pagination from previous response | ||
| */ | ||
| export interface ListVectorBucketsOptions { | ||
| prefix?: string | ||
| maxResults?: number | ||
| nextToken?: string | ||
| } | ||
| /** | ||
| * Response from listing vector buckets | ||
| * @property vectorBuckets - Array of bucket names | ||
| * @property nextToken - Token for fetching next page (if more results exist) | ||
| */ | ||
| export interface ListVectorBucketsResponse { | ||
| vectorBuckets: { vectorBucketName: string }[] | ||
| nextToken?: string | ||
| } | ||
| /** | ||
| * Options for listing indexes within a bucket | ||
| * @property vectorBucketName - Name of the parent vector bucket | ||
| * @property prefix - Filter indexes by name prefix | ||
| * @property maxResults - Maximum number of results to return (default: 100) | ||
| * @property nextToken - Token for pagination from previous response | ||
| */ | ||
| export interface ListIndexesOptions { | ||
| vectorBucketName: string | ||
| prefix?: string | ||
| maxResults?: number | ||
| nextToken?: string | ||
| } | ||
| /** | ||
| * Response from listing indexes | ||
| * @property indexes - Array of index names | ||
| * @property nextToken - Token for fetching next page (if more results exist) | ||
| */ | ||
| export interface ListIndexesResponse { | ||
| indexes: { indexName: string }[] | ||
| nextToken?: string | ||
| } | ||
| /** | ||
| * Options for batch reading vectors | ||
| * @property vectorBucketName - Name of the vector bucket | ||
| * @property indexName - Name of the index | ||
| * @property keys - Array of vector keys to retrieve | ||
| * @property returnData - Whether to include vector data in response | ||
| * @property returnMetadata - Whether to include metadata in response | ||
| */ | ||
| export interface GetVectorsOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| keys: string[] | ||
| returnData?: boolean | ||
| returnMetadata?: boolean | ||
| } | ||
| /** | ||
| * Response from getting vectors | ||
| * @property vectors - Array of retrieved vector objects | ||
| */ | ||
| export interface GetVectorsResponse { | ||
| vectors: VectorMatch[] | ||
| } | ||
| /** | ||
| * Options for batch inserting/updating vectors | ||
| * @property vectorBucketName - Name of the vector bucket | ||
| * @property indexName - Name of the index | ||
| * @property vectors - Array of vectors to insert/upsert (1-500 items) | ||
| */ | ||
| export interface PutVectorsOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| vectors: VectorObject[] | ||
| } | ||
| /** | ||
| * Options for batch deleting vectors | ||
| * @property vectorBucketName - Name of the vector bucket | ||
| * @property indexName - Name of the index | ||
| * @property keys - Array of vector keys to delete (1-500 items) | ||
| */ | ||
| export interface DeleteVectorsOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| keys: string[] | ||
| } | ||
| /** | ||
| * Options for listing/scanning vectors in an index | ||
| * Supports parallel scanning via segment configuration | ||
| * @property vectorBucketName - Name of the vector bucket | ||
| * @property indexName - Name of the index | ||
| * @property maxResults - Maximum number of results to return (default: 500, max: 1000) | ||
| * @property nextToken - Token for pagination from previous response | ||
| * @property returnData - Whether to include vector data in response | ||
| * @property returnMetadata - Whether to include metadata in response | ||
| * @property segmentCount - Total number of parallel segments (1-16) | ||
| * @property segmentIndex - Zero-based index of this segment (0 to segmentCount-1) | ||
| */ | ||
| export interface ListVectorsOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| maxResults?: number | ||
| nextToken?: string | ||
| returnData?: boolean | ||
| returnMetadata?: boolean | ||
| segmentCount?: number | ||
| segmentIndex?: number | ||
| } | ||
| /** | ||
| * Response from listing vectors | ||
| * @property vectors - Array of vector objects | ||
| * @property nextToken - Token for fetching next page (if more results exist) | ||
| */ | ||
| export interface ListVectorsResponse { | ||
| vectors: VectorMatch[] | ||
| nextToken?: string | ||
| } | ||
| /** | ||
| * JSON filter expression for metadata filtering | ||
| * Format and syntax depend on the S3 Vectors service implementation | ||
| */ | ||
| export type VectorFilter = Record<string, any> | ||
| /** | ||
| * Options for querying similar vectors (ANN search) | ||
| * @property vectorBucketName - Name of the vector bucket | ||
| * @property indexName - Name of the index | ||
| * @property queryVector - Query vector to find similar vectors | ||
| * @property topK - Number of nearest neighbors to return (default: 10) | ||
| * @property filter - Optional JSON filter for metadata | ||
| * @property returnDistance - Whether to include distance scores | ||
| * @property returnMetadata - Whether to include metadata in results | ||
| */ | ||
| export interface QueryVectorsOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| queryVector: VectorData | ||
| topK?: number | ||
| filter?: VectorFilter | ||
| returnDistance?: boolean | ||
| returnMetadata?: boolean | ||
| } | ||
| /** | ||
| * Response from vector similarity query | ||
| * @property vectors - Array of similar vectors ordered by distance | ||
| * @property distanceMetric - The distance metric used for the similarity search | ||
| */ | ||
| export interface QueryVectorsResponse { | ||
| vectors: VectorMatch[] | ||
| distanceMetric?: DistanceMetric | ||
| } | ||
| /** | ||
| * Fetch-specific parameters like abort signals | ||
| * @property signal - AbortSignal for cancelling requests | ||
| */ | ||
| export interface VectorFetchParameters { | ||
| signal?: AbortSignal | ||
| } | ||
| /** | ||
| * Standard response wrapper for successful operations | ||
| * @property data - Response data of type T | ||
| * @property error - Null on success | ||
| */ | ||
| export interface SuccessResponse<T> { | ||
| data: T | ||
| error: null | ||
| } | ||
| /** | ||
| * Standard response wrapper for failed operations | ||
| * @property data - Null on error | ||
| * @property error - StorageVectorsError with details | ||
| */ | ||
| export interface ErrorResponse { | ||
| data: null | ||
| error: StorageVectorsError | ||
| } | ||
| /** | ||
| * Union type for all API responses | ||
| * Follows the pattern: { data: T, error: null } | { data: null, error: Error } | ||
| */ | ||
| export type ApiResponse<T> = SuccessResponse<T> | ErrorResponse |
| import { DEFAULT_HEADERS } from './constants' | ||
| import { isStorageVectorsError } from './errors' | ||
| import { Fetch, post } from './fetch' | ||
| import { resolveFetch } from './helpers' | ||
| import { | ||
| ApiResponse, | ||
| VectorBucket, | ||
| ListVectorBucketsOptions, | ||
| ListVectorBucketsResponse, | ||
| } from './types' | ||
| /** | ||
| * @hidden | ||
| * Base implementation for vector bucket operations. | ||
| * Use {@link StorageVectorsClient} via `supabase.storage.vectors` instead. | ||
| */ | ||
| export default class VectorBucketApi { | ||
| protected url: string | ||
| protected headers: { [key: string]: string } | ||
| protected fetch: Fetch | ||
| protected shouldThrowOnError = false | ||
| /** Creates a new VectorBucketApi instance */ | ||
| constructor(url: string, headers: { [key: string]: string } = {}, fetch?: Fetch) { | ||
| this.url = url.replace(/\/$/, '') | ||
| this.headers = { ...DEFAULT_HEADERS, ...headers } | ||
| this.fetch = resolveFetch(fetch) | ||
| } | ||
| /** Enable throwing errors instead of returning them in the response */ | ||
| public throwOnError(): this { | ||
| this.shouldThrowOnError = true | ||
| return this | ||
| } | ||
| /** Creates a new vector bucket */ | ||
| async createBucket(vectorBucketName: string): Promise<ApiResponse<undefined>> { | ||
| try { | ||
| const data = await post( | ||
| this.fetch, | ||
| `${this.url}/CreateVectorBucket`, | ||
| { vectorBucketName }, | ||
| { headers: this.headers } | ||
| ) | ||
| return { data: data || {}, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| /** Retrieves metadata for a specific vector bucket */ | ||
| async getBucket(vectorBucketName: string): Promise<ApiResponse<{ vectorBucket: VectorBucket }>> { | ||
| try { | ||
| const data = await post( | ||
| this.fetch, | ||
| `${this.url}/GetVectorBucket`, | ||
| { vectorBucketName }, | ||
| { headers: this.headers } | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| /** Lists vector buckets with optional filtering and pagination */ | ||
| async listBuckets( | ||
| options: ListVectorBucketsOptions = {} | ||
| ): Promise<ApiResponse<ListVectorBucketsResponse>> { | ||
| try { | ||
| const data = await post(this.fetch, `${this.url}/ListVectorBuckets`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| /** Deletes a vector bucket (must be empty first) */ | ||
| async deleteBucket(vectorBucketName: string): Promise<ApiResponse<undefined>> { | ||
| try { | ||
| const data = await post( | ||
| this.fetch, | ||
| `${this.url}/DeleteVectorBucket`, | ||
| { vectorBucketName }, | ||
| { headers: this.headers } | ||
| ) | ||
| return { data: data || {}, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| } |
| import { DEFAULT_HEADERS } from './constants' | ||
| import { isStorageVectorsError } from './errors' | ||
| import { Fetch, post } from './fetch' | ||
| import { resolveFetch } from './helpers' | ||
| import { | ||
| ApiResponse, | ||
| PutVectorsOptions, | ||
| GetVectorsOptions, | ||
| GetVectorsResponse, | ||
| DeleteVectorsOptions, | ||
| ListVectorsOptions, | ||
| ListVectorsResponse, | ||
| QueryVectorsOptions, | ||
| QueryVectorsResponse, | ||
| } from './types' | ||
| /** | ||
| * @hidden | ||
| * Base implementation for vector data operations. | ||
| * Use {@link VectorIndexScope} via `supabase.storage.vectors.from('bucket').index('idx')` instead. | ||
| */ | ||
| export default class VectorDataApi { | ||
| protected url: string | ||
| protected headers: { [key: string]: string } | ||
| protected fetch: Fetch | ||
| protected shouldThrowOnError = false | ||
| /** Creates a new VectorDataApi instance */ | ||
| constructor(url: string, headers: { [key: string]: string } = {}, fetch?: Fetch) { | ||
| this.url = url.replace(/\/$/, '') | ||
| this.headers = { ...DEFAULT_HEADERS, ...headers } | ||
| this.fetch = resolveFetch(fetch) | ||
| } | ||
| /** Enable throwing errors instead of returning them in the response */ | ||
| public throwOnError(): this { | ||
| this.shouldThrowOnError = true | ||
| return this | ||
| } | ||
| /** Inserts or updates vectors in batch (1-500 per request) */ | ||
| async putVectors(options: PutVectorsOptions): Promise<ApiResponse<undefined>> { | ||
| try { | ||
| // Validate batch size | ||
| if (options.vectors.length < 1 || options.vectors.length > 500) { | ||
| throw new Error('Vector batch size must be between 1 and 500 items') | ||
| } | ||
| const data = await post(this.fetch, `${this.url}/PutVectors`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return { data: data || {}, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| /** Retrieves vectors by their keys in batch */ | ||
| async getVectors(options: GetVectorsOptions): Promise<ApiResponse<GetVectorsResponse>> { | ||
| try { | ||
| const data = await post(this.fetch, `${this.url}/GetVectors`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| /** Lists vectors in an index with pagination */ | ||
| async listVectors(options: ListVectorsOptions): Promise<ApiResponse<ListVectorsResponse>> { | ||
| try { | ||
| // Validate segment configuration | ||
| if (options.segmentCount !== undefined) { | ||
| if (options.segmentCount < 1 || options.segmentCount > 16) { | ||
| throw new Error('segmentCount must be between 1 and 16') | ||
| } | ||
| if (options.segmentIndex !== undefined) { | ||
| if (options.segmentIndex < 0 || options.segmentIndex >= options.segmentCount) { | ||
| throw new Error(`segmentIndex must be between 0 and ${options.segmentCount - 1}`) | ||
| } | ||
| } | ||
| } | ||
| const data = await post(this.fetch, `${this.url}/ListVectors`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| /** Queries for similar vectors using approximate nearest neighbor search */ | ||
| async queryVectors(options: QueryVectorsOptions): Promise<ApiResponse<QueryVectorsResponse>> { | ||
| try { | ||
| const data = await post(this.fetch, `${this.url}/QueryVectors`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| /** Deletes vectors by their keys in batch (1-500 per request) */ | ||
| async deleteVectors(options: DeleteVectorsOptions): Promise<ApiResponse<undefined>> { | ||
| try { | ||
| // Validate batch size | ||
| if (options.keys.length < 1 || options.keys.length > 500) { | ||
| throw new Error('Keys batch size must be between 1 and 500 items') | ||
| } | ||
| const data = await post(this.fetch, `${this.url}/DeleteVectors`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return { data: data || {}, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| } |
| import { DEFAULT_HEADERS } from './constants' | ||
| import { isStorageVectorsError } from './errors' | ||
| import { Fetch, post } from './fetch' | ||
| import { resolveFetch } from './helpers' | ||
| import { | ||
| ApiResponse, | ||
| VectorIndex, | ||
| ListIndexesOptions, | ||
| ListIndexesResponse, | ||
| VectorDataType, | ||
| DistanceMetric, | ||
| MetadataConfiguration, | ||
| } from './types' | ||
| /** | ||
| * @alpha | ||
| * | ||
| * Options for creating a vector index | ||
| * | ||
| * **Public alpha:** This API is part of a public alpha release and may not be available to your account type. | ||
| */ | ||
| export interface CreateIndexOptions { | ||
| vectorBucketName: string | ||
| indexName: string | ||
| dataType: VectorDataType | ||
| dimension: number | ||
| distanceMetric: DistanceMetric | ||
| metadataConfiguration?: MetadataConfiguration | ||
| } | ||
| /** | ||
| * @hidden | ||
| * Base implementation for vector index operations. | ||
| * Use {@link VectorBucketScope} via `supabase.storage.vectors.from('bucket')` instead. | ||
| */ | ||
| export default class VectorIndexApi { | ||
| protected url: string | ||
| protected headers: { [key: string]: string } | ||
| protected fetch: Fetch | ||
| protected shouldThrowOnError = false | ||
| /** Creates a new VectorIndexApi instance */ | ||
| constructor(url: string, headers: { [key: string]: string } = {}, fetch?: Fetch) { | ||
| this.url = url.replace(/\/$/, '') | ||
| this.headers = { ...DEFAULT_HEADERS, ...headers } | ||
| this.fetch = resolveFetch(fetch) | ||
| } | ||
| /** Enable throwing errors instead of returning them in the response */ | ||
| public throwOnError(): this { | ||
| this.shouldThrowOnError = true | ||
| return this | ||
| } | ||
| /** Creates a new vector index within a bucket */ | ||
| async createIndex(options: CreateIndexOptions): Promise<ApiResponse<undefined>> { | ||
| try { | ||
| const data = await post(this.fetch, `${this.url}/CreateIndex`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return { data: data || {}, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| /** Retrieves metadata for a specific vector index */ | ||
| async getIndex( | ||
| vectorBucketName: string, | ||
| indexName: string | ||
| ): Promise<ApiResponse<{ index: VectorIndex }>> { | ||
| try { | ||
| const data = await post( | ||
| this.fetch, | ||
| `${this.url}/GetIndex`, | ||
| { vectorBucketName, indexName }, | ||
| { headers: this.headers } | ||
| ) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| /** Lists vector indexes within a bucket with optional filtering and pagination */ | ||
| async listIndexes(options: ListIndexesOptions): Promise<ApiResponse<ListIndexesResponse>> { | ||
| try { | ||
| const data = await post(this.fetch, `${this.url}/ListIndexes`, options, { | ||
| headers: this.headers, | ||
| }) | ||
| return { data, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| /** Deletes a vector index and all its data */ | ||
| async deleteIndex(vectorBucketName: string, indexName: string): Promise<ApiResponse<undefined>> { | ||
| try { | ||
| const data = await post( | ||
| this.fetch, | ||
| `${this.url}/DeleteIndex`, | ||
| { vectorBucketName, indexName }, | ||
| { headers: this.headers } | ||
| ) | ||
| return { data: data || {}, error: null } | ||
| } catch (error) { | ||
| if (this.shouldThrowOnError) { | ||
| throw error | ||
| } | ||
| if (isStorageVectorsError(error)) { | ||
| return { data: null, error } | ||
| } | ||
| throw error | ||
| } | ||
| } | ||
| } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
395
-8.35%840808
-5.63%29
-17.14%9186
-11.37%45
15.38%