@nhost/hasura-storage-js
Version:
Hasura-storage client
175 lines (174 loc) • 6.68 kB
TypeScript
import { StorageDeleteParams, StorageDeleteResponse, StorageGetPresignedUrlParams, StorageGetPresignedUrlResponse, StorageGetUrlParams, StorageUploadFileParams, StorageUploadFileResponse, StorageUploadFormDataParams, StorageUploadFormDataResponse, StorageDownloadFileParams, StorageDownloadFileResponse } from './utils';
export interface NhostStorageConstructorParams {
/**
* Storage endpoint.
*/
url: string;
/**
* Admin secret. When set, it is sent as an `x-hasura-admin-secret` header for all requests.
*/
adminSecret?: string;
}
/**
* @alias Storage
*/
export declare class HasuraStorageClient {
readonly url: string;
private api;
constructor({ url, adminSecret }: NhostStorageConstructorParams);
/**
* Use `nhost.storage.upload` to upload a file.
*
* It's possible to use [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) or [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) to upload a file. The `File` instance is only available in the browser while `FormData` with [`form-data`](https://www.npmjs.com/package/form-data) works both in the browser and in NodeJS (server).
*
* If no `bucketId` is specified the bucket `default` is used.
*
* @example
*
* Upload a file from a browser using `File`.
*
* ```ts
* await nhost.storage.upload({ file })
* ```
*
* Upload a file from a browser using `File` to a specific Bucket.
*
@example
* ```ts
* await nhost.storage.upload({ file, bucketId: '<Bucket-ID>' })
* ```
*
* Upload a file from a server using `FormData` with [`form-data`](https://www.npmjs.com/package/form-data).
*
* @example
* ```ts
* const fd = new FormData()
* fd.append('file', fs.createReadStream('./tests/assets/sample.pdf'))
*
* await storage.upload({
* formData: fd
* })
* ```
*
* @docs https://docs.nhost.io/reference/javascript/storage/upload
*/
upload(params: StorageUploadFileParams): Promise<StorageUploadFileResponse>;
upload(params: StorageUploadFormDataParams): Promise<StorageUploadFormDataResponse>;
/**
* Use `nhost.storage.getPublicUrl` to get the public URL of a file. The public URL can be used for un-authenticated users to access files. To access public files the `public` role must have permissions to select the file in the `storage.files` table.
*
* @example
* ```ts
* const publicUrl = nhost.storage.getPublicUrl({ fileId: '<File-ID>' })
* ```
*
* @docs https://docs.nhost.io/reference/javascript/storage/get-public-url
*/
getPublicUrl(params: StorageGetUrlParams): string;
/**
* Use `nhost.storage.getPresignedUrl` to get a presigned URL of a file. To get a presigned URL the user must have permission to select the file in the `storage.files` table.
*
* @example
* ```ts
* const { presignedUrl, error} = await nhost.storage.getPresignedUrl({ fileId: '<File-ID>' })
*
* if (error) {
* throw error;
* }
*
* console.log('url: ', presignedUrl.url)
* console.log('expiration: ', presignedUrl.expiration)
* ```
*
* @docs https://docs.nhost.io/reference/javascript/storage/get-presigned-url
*/
getPresignedUrl(params: StorageGetPresignedUrlParams): Promise<StorageGetPresignedUrlResponse>;
/**
* Use `nhost.storage.download` to download a file. To download a file the user must have permission to select the file in the `storage.files` table.
*
* @example
* ```ts
* const { file, error} = await nhost.storage.download({ fileId: '<File-ID>' })
* ```
*
* @docs https://docs.nhost.io/reference/javascript/storage/download
*/
download(params: StorageDownloadFileParams): Promise<StorageDownloadFileResponse>;
/**
* Use `nhost.storage.delete` to delete a file. To delete a file the user must have permissions to delete the file in the `storage.files` table. Deleting the file using `nhost.storage.delete()` will delete both the file and its metadata.
*
* @example
* ```ts
* const { error } = await nhost.storage.delete({ fileId: 'uuid' })
* ```
*
* @docs https://docs.nhost.io/reference/javascript/storage/delete
*/
delete(params: StorageDeleteParams): Promise<StorageDeleteResponse>;
/**
* Use `nhost.storage.setAccessToken` to a set an access token to be used in subsequent storage requests. Note that if you're signin in users with `nhost.auth.signIn()` the access token will be set automatically.
*
* @example
* ```ts
* nhost.storage.setAccessToken('some-access-token')
* ```
*
* @param accessToken Access token
*
* @docs https://docs.nhost.io/reference/javascript/storage/set-access-token
*/
setAccessToken(accessToken?: string): HasuraStorageClient;
/**
* Use `nhost.storage.adminSecret` to set the admin secret to be used for subsequent storage requests. This is useful if you want to run storage in "admin mode".
*
* @example
* ```ts
* nhost.storage.setAdminSecret('some-admin-secret')
* ```
*
* @param adminSecret Hasura admin secret
*
* @docs https://docs.nhost.io/reference/javascript/storage/set-admin-secret
*/
setAdminSecret(adminSecret?: string): HasuraStorageClient;
/**
* Use `nhost.storage.getHeaders` to get global headers sent with all storage requests.
*
* @example
* ```ts
* nhost.storage.getHeaders()
* ```
*
* @docs https://docs.nhost.io/reference/javascript/storage/get-headers
*/
getHeaders(): Record<string, string>;
/**
* Use `nhost.storage.setHeaders` to set global headers to be sent for all subsequent storage requests.
*
* @example
* ```ts
* nhost.storage.setHeaders({
* 'x-hasura-role': 'admin'
* })
* ```
*
* @param headers key value headers object
*
* @docs https://docs.nhost.io/reference/javascript/storage/set-headers
*/
setHeaders(headers?: Record<string, string>): HasuraStorageClient;
/**
* Use `nhost.storage.unsetHeaders` to remove the global headers sent for all subsequent storage requests.
*
* @example
* ```ts
* nhost.storage.unsetHeaders()
* ```
*
* @param headers key value headers object
*
* @docs https://docs.nhost.io/reference/javascript/storage/unset-headers
*/
unsetHeaders(): HasuraStorageClient;
}
//# sourceMappingURL=hasura-storage-client.d.ts.map