UNPKG

@itwin/object-storage-azure

Version:

Object storage implementation using Azure Blob Storage

66 lines 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BlobServiceClientWrapper = void 0; const internal_1 = require("@itwin/object-storage-core/lib/common/internal"); const internal_2 = require("../../common/internal"); class BlobServiceClientWrapper { _client; constructor(client) { this._client = client; } getContainerClient(containerName) { return this._client.getContainerClient(containerName); } getBlobClient(reference) { return this._client .getContainerClient(reference.baseDirectory) .getBlobClient((0, internal_2.buildBlobName)(reference)); } getBlockBlobClient(reference) { return this._client .getContainerClient(reference.baseDirectory) .getBlockBlobClient((0, internal_2.buildBlobName)(reference)); } async getDirectoriesNextPage(options) { const iterator = this._client.listContainers().byPage({ maxPageSize: options.maxPageSize, continuationToken: options.continuationToken, }); const response = (await iterator.next()).value; const directories = response.containerItems.map((directory) => ({ baseDirectory: directory.name })); const page = { entities: directories, next: response.continuationToken == "" ? undefined : () => this.getDirectoriesNextPage({ maxPageSize: options.maxPageSize, continuationToken: response.continuationToken, }), }; return page; } async getObjectsNextPage(directory, options) { const containerClient = this._client.getContainerClient(directory.baseDirectory); const iterator = containerClient.listBlobsFlat().byPage({ maxPageSize: options.maxPageSize, continuationToken: options.continuationToken, }); const response = (await iterator.next()).value; const objects = response.segment.blobItems.map((item) => (0, internal_1.buildObjectReference)((0, internal_1.buildObjectKey)({ ...directory, objectName: item.name, }))); const page = { entities: objects, next: response.continuationToken == "" ? undefined : () => this.getObjectsNextPage(directory, { maxPageSize: options.maxPageSize, continuationToken: response.continuationToken, }), }; return page; } } exports.BlobServiceClientWrapper = BlobServiceClientWrapper; //# sourceMappingURL=BlobServiceClientWrapper.js.map