UNPKG

@gensx/storage

Version:

Cloud storage, blobs, sqlite, and vector database providers/hooks for GenSX.

1 lines 3.83 kB
{"version":3,"file":"blobClient.cjs","sources":["@gensx/storage/../../../../src/blob/blobClient.ts"],"sourcesContent":["import { join } from \"path\";\n\nimport { getProjectAndEnvironment } from \"../utils/config.js\";\nimport { FileSystemBlobStorage } from \"./filesystem.js\";\nimport { RemoteBlobStorage } from \"./remote.js\";\nimport {\n Blob,\n BlobStorage,\n BlobStorageOptions,\n DeleteBlobResult,\n ListBlobsOptions,\n ListBlobsResponse,\n} from \"./types.js\";\n\n/**\n * Client for interacting with blob storage functionality outside of JSX context\n */\nexport class BlobClient {\n private storage: BlobStorage;\n\n /**\n * Create a new BlobClient\n * @param options Optional configuration properties for the blob storage\n */\n constructor(options: BlobStorageOptions = {}) {\n const kind =\n options.kind ??\n (process.env.GENSX_RUNTIME === \"cloud\" ? \"cloud\" : \"filesystem\");\n\n if (kind === \"filesystem\") {\n const rootDir =\n options.kind === \"filesystem\" && options.rootDir\n ? options.rootDir\n : join(process.cwd(), \".gensx\", \"blobs\");\n\n this.storage = new FileSystemBlobStorage(rootDir, options.defaultPrefix);\n } else {\n const { project, environment } = getProjectAndEnvironment({\n project: options.project,\n environment: options.environment,\n });\n this.storage = new RemoteBlobStorage(\n project,\n environment,\n options.defaultPrefix,\n );\n }\n }\n\n /**\n * Get a blob\n * @param key The blob key\n * @returns A Blob instance for the given key\n */\n getBlob<T = unknown>(key: string): Blob<T> {\n return this.storage.getBlob<T>(key);\n }\n\n /**\n * List all blobs with optional filtering and pagination\n * @param options Optional listing options including prefix, limit, and cursor for pagination\n * @returns A Promise resolving to the list response containing keys and pagination info\n */\n async listBlobs(options?: ListBlobsOptions): Promise<ListBlobsResponse> {\n return this.storage.listBlobs(options);\n }\n\n /**\n * Check if a blob exists\n * @param key The blob key\n * @returns A Promise resolving to a boolean indicating if the blob exists\n */\n async blobExists(key: string): Promise<boolean> {\n return this.storage.blobExists(key);\n }\n\n /**\n * Delete a blob\n * @param key The blob key\n * @returns A Promise resolving to the result of the delete operation\n */\n async deleteBlob(key: string): Promise<DeleteBlobResult> {\n return this.storage.deleteBlob(key);\n }\n}\n"],"names":["join","FileSystemBlobStorage","getProjectAndEnvironment","RemoteBlobStorage"],"mappings":";;;;;;;;;;;;;AAcA;;AAEG;MACU,UAAU,CAAA;AACb,IAAA,OAAO;AAEf;;;AAGG;AACH,IAAA,WAAA,CAAY,UAA8B,EAAE,EAAA;AAC1C,QAAA,MAAM,IAAI,GACR,OAAO,CAAC,IAAI;AACZ,aAAC,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC;AAElE,QAAA,IAAI,IAAI,KAAK,YAAY,EAAE;YACzB,MAAM,OAAO,GACX,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC;kBACrC,OAAO,CAAC;AACV,kBAAEA,SAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC;AAE5C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAIC,gCAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC;;aACnE;AACL,YAAA,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAGC,+BAAwB,CAAC;gBACxD,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,WAAW,EAAE,OAAO,CAAC,WAAW;AACjC,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,GAAG,IAAIC,wBAAiB,CAClC,OAAO,EACP,WAAW,EACX,OAAO,CAAC,aAAa,CACtB;;;AAIL;;;;AAIG;AACH,IAAA,OAAO,CAAc,GAAW,EAAA;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAI,GAAG,CAAC;;AAGrC;;;;AAIG;IACH,MAAM,SAAS,CAAC,OAA0B,EAAA;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;;AAGxC;;;;AAIG;IACH,MAAM,UAAU,CAAC,GAAW,EAAA;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;;AAGrC;;;;AAIG;IACH,MAAM,UAAU,CAAC,GAAW,EAAA;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;;AAEtC;;;;"}