@instantdb/core
Version:
Instant's core local abstraction
65 lines • 2.17 kB
JavaScript
import { jsonFetch } from './utils/fetch.js';
export async function uploadFile({ apiURI, appId, path, file, refreshToken, contentType, contentDisposition, }) {
const headers = {
app_id: appId,
path,
authorization: `Bearer ${refreshToken}`,
'content-type': contentType || file.type,
};
if (contentDisposition) {
headers['content-disposition'] = contentDisposition;
}
const data = await jsonFetch(`${apiURI}/storage/upload`, {
method: 'PUT',
headers,
body: file,
});
return data;
}
export async function deleteFile({ apiURI, appId, path, refreshToken, }) {
const { data } = await jsonFetch(`${apiURI}/storage/files?app_id=${appId}&filename=${encodeURIComponent(path)}`, {
method: 'DELETE',
headers: {
'content-type': 'application/json',
authorization: `Bearer ${refreshToken}`,
},
});
return data;
}
// Deprecated Storage API (Jan 2025)
// ---------------------------------
export async function getSignedUploadUrl({ apiURI, appId, fileName, refreshToken, metadata = {}, }) {
const { data } = await jsonFetch(`${apiURI}/storage/signed-upload-url`, {
method: 'POST',
headers: {
'content-type': 'application/json',
authorization: `Bearer ${refreshToken}`,
},
body: JSON.stringify({
app_id: appId,
filename: fileName,
}),
});
return data;
}
export async function upload(presignedUrl, file) {
const response = await fetch(presignedUrl, {
method: 'PUT',
body: file,
headers: {
'Content-Type': file.type,
},
});
return response.ok;
}
export async function getDownloadUrl({ apiURI, appId, path, refreshToken, }) {
const { data } = await jsonFetch(`${apiURI}/storage/signed-download-url?app_id=${appId}&filename=${encodeURIComponent(path)}`, {
method: 'GET',
headers: {
'content-type': 'application/json',
authorization: `Bearer ${refreshToken}`,
},
});
return data;
}
//# sourceMappingURL=StorageAPI.js.map