Kargi-Sitesi/node_modules/rxfire/storage/index.esm.js

91 lines
3.3 KiB
JavaScript

import { getDownloadURL as getDownloadURL$1, getMetadata as getMetadata$1, uploadBytesResumable as uploadBytesResumable$1, uploadString as uploadString$1 } from 'firebase/storage';
import { Observable, from } from 'rxjs';
import { shareReplay, map } from 'rxjs/operators';
function fromTask(task) {
return new Observable(function (subscriber) {
var lastSnapshot = null;
var complete = false;
var hasError = false;
var error = null;
var emit = function (snapshot) {
lastSnapshot = snapshot;
schedule();
};
var id = null;
/**
* Schedules an async event to check and emit
* the most recent snapshot, and complete or error
* if necessary.
*/
var schedule = function () {
if (!id) {
id = setTimeout(function () {
id = null;
if (lastSnapshot)
subscriber.next(lastSnapshot);
if (complete)
subscriber.complete();
if (hasError)
subscriber.error(error);
});
}
};
subscriber.add(function () {
// If we have any emissions checks scheduled, cancel them.
if (id)
clearTimeout(id);
});
// Emit the initial snapshot
emit(task.snapshot);
// Take each update and schedule them to be emitted (see `emit`)
subscriber.add(task.on('state_changed', emit));
// task is a promise, so we can convert that to an observable,
// this is done for the ergonomics around making sure we don't
// try to push errors or completions through closed subscribers
subscriber.add(from(task).subscribe({
next: emit,
error: function (err) {
hasError = true;
error = err;
schedule();
},
complete: function () {
complete = true;
schedule();
},
}));
});
}
function getDownloadURL(ref) {
return from(getDownloadURL$1(ref));
}
// TODO: fix storage typing in firebase, then apply the same fix here
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function getMetadata(ref) {
return from(getMetadata$1(ref));
}
// MARK: Breaking change (renaming put to uploadBytesResumable)
function uploadBytesResumable(ref, data, metadata) {
return new Observable(function (subscriber) {
var task = uploadBytesResumable$1(ref, data, metadata);
var subscription = fromTask(task).subscribe(subscriber);
return function unsubscribe() {
subscription.unsubscribe();
task.cancel();
};
}).pipe(shareReplay({ bufferSize: 1, refCount: true }));
}
// MARK: Breaking change (renaming put to uploadString)
function uploadString(ref, data, format, metadata) {
return from(uploadString$1(ref, data, format, metadata));
}
function percentage(task) {
return fromTask(task).pipe(map(function (snapshot) { return ({
progress: (snapshot.bytesTransferred / snapshot.totalBytes) * 100,
snapshot: snapshot,
}); }));
}
export { fromTask, getDownloadURL, getMetadata, percentage, uploadBytesResumable, uploadString };
//# sourceMappingURL=index.esm.js.map