/** * @license * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /// import { Location } from './implementation/location'; import { ListOptions, UploadResult } from './public-types'; import { StringFormat } from './implementation/string'; import { Metadata } from './metadata'; import { FirebaseStorageImpl } from './service'; import { ListResult } from './list'; import { UploadTask } from './task'; /** * Provides methods to interact with a bucket in the Firebase Storage service. * @internal * @param _location - An fbs.location, or the URL at * which to base this object, in one of the following forms: * gs:/// * http[s]://firebasestorage.googleapis.com/ * /b//o/ * Any query or fragment strings will be ignored in the http[s] * format. If no value is passed, the storage object will use a URL based on * the project ID of the base firebase.App instance. */ export declare class Reference { private _service; _location: Location; constructor(_service: FirebaseStorageImpl, location: string | Location); /** * Returns the URL for the bucket and path this object references, * in the form gs:/// * @override */ toString(): string; protected _newRef(service: FirebaseStorageImpl, location: Location): Reference; /** * A reference to the root of this object's bucket. */ get root(): Reference; /** * The name of the bucket containing this reference's object. */ get bucket(): string; /** * The full path of this object. */ get fullPath(): string; /** * The short name of this object, which is the last component of the full path. * For example, if fullPath is 'full/path/image.png', name is 'image.png'. */ get name(): string; /** * The `StorageService` instance this `StorageReference` is associated with. */ get storage(): FirebaseStorageImpl; /** * A `StorageReference` pointing to the parent location of this `StorageReference`, or null if * this reference is the root. */ get parent(): Reference | null; /** * Utility function to throw an error in methods that do not accept a root reference. */ _throwIfRoot(name: string): void; } /** * Download the bytes at the object's location. * @returns A Promise containing the downloaded bytes. */ export declare function getBytesInternal(ref: Reference, maxDownloadSizeBytes?: number): Promise; /** * Download the bytes at the object's location. * @returns A Promise containing the downloaded blob. */ export declare function getBlobInternal(ref: Reference, maxDownloadSizeBytes?: number): Promise; /** Stream the bytes at the object's location. */ export declare function getStreamInternal(ref: Reference, maxDownloadSizeBytes?: number): NodeJS.ReadableStream; /** * Uploads data to this object's location. * The upload is not resumable. * * @param ref - StorageReference where data should be uploaded. * @param data - The data to upload. * @param metadata - Metadata for the newly uploaded data. * @returns A Promise containing an UploadResult */ export declare function uploadBytes(ref: Reference, data: Blob | Uint8Array | ArrayBuffer, metadata?: Metadata): Promise; /** * Uploads data to this object's location. * The upload can be paused and resumed, and exposes progress updates. * @public * @param ref - StorageReference where data should be uploaded. * @param data - The data to upload. * @param metadata - Metadata for the newly uploaded data. * @returns An UploadTask */ export declare function uploadBytesResumable(ref: Reference, data: Blob | Uint8Array | ArrayBuffer, metadata?: Metadata): UploadTask; /** * Uploads a string to this object's location. * The upload is not resumable. * @public * @param ref - StorageReference where string should be uploaded. * @param value - The string to upload. * @param format - The format of the string to upload. * @param metadata - Metadata for the newly uploaded string. * @returns A Promise containing an UploadResult */ export declare function uploadString(ref: Reference, value: string, format?: StringFormat, metadata?: Metadata): Promise; /** * List all items (files) and prefixes (folders) under this storage reference. * * This is a helper method for calling list() repeatedly until there are * no more results. The default pagination size is 1000. * * Note: The results may not be consistent if objects are changed while this * operation is running. * * Warning: listAll may potentially consume too many resources if there are * too many results. * @public * @param ref - StorageReference to get list from. * * @returns A Promise that resolves with all the items and prefixes under * the current storage reference. `prefixes` contains references to * sub-directories and `items` contains references to objects in this * folder. `nextPageToken` is never returned. */ export declare function listAll(ref: Reference): Promise; /** * List items (files) and prefixes (folders) under this storage reference. * * List API is only available for Firebase Rules Version 2. * * GCS is a key-blob store. Firebase Storage imposes the semantic of '/' * delimited folder structure. * Refer to GCS's List API if you want to learn more. * * To adhere to Firebase Rules's Semantics, Firebase Storage does not * support objects whose paths end with "/" or contain two consecutive * "/"s. Firebase Storage List API will filter these unsupported objects. * list() may fail if there are too many unsupported objects in the bucket. * @public * * @param ref - StorageReference to get list from. * @param options - See ListOptions for details. * @returns A Promise that resolves with the items and prefixes. * `prefixes` contains references to sub-folders and `items` * contains references to objects in this folder. `nextPageToken` * can be used to get the rest of the results. */ export declare function list(ref: Reference, options?: ListOptions | null): Promise; /** * A `Promise` that resolves with the metadata for this object. If this * object doesn't exist or metadata cannot be retreived, the promise is * rejected. * @public * @param ref - StorageReference to get metadata from. */ export declare function getMetadata(ref: Reference): Promise; /** * Updates the metadata for this object. * @public * @param ref - StorageReference to update metadata for. * @param metadata - The new metadata for the object. * Only values that have been explicitly set will be changed. Explicitly * setting a value to null will remove the metadata. * @returns A `Promise` that resolves * with the new metadata for this object. * See `firebaseStorage.Reference.prototype.getMetadata` */ export declare function updateMetadata(ref: Reference, metadata: Partial): Promise; /** * Returns the download URL for the given Reference. * @public * @returns A `Promise` that resolves with the download * URL for this object. */ export declare function getDownloadURL(ref: Reference): Promise; /** * Deletes the object at this location. * @public * @param ref - StorageReference for object to delete. * @returns A `Promise` that resolves if the deletion succeeds. */ export declare function deleteObject(ref: Reference): Promise; /** * Returns reference for object obtained by appending `childPath` to `ref`. * * @param ref - StorageReference to get child of. * @param childPath - Child path from provided ref. * @returns A reference to the object obtained by * appending childPath, removing any duplicate, beginning, or trailing * slashes. * */ export declare function _getChild(ref: Reference, childPath: string): Reference;