ngx-uploadx
Version:
Angular Resumable Upload Module
63 lines • 7.09 kB
JavaScript
const HOUR = 1000 * 60 * 60;
export class Store {
prefix;
ttl = 24 * HOUR;
constructor(prefix = 'UPLOADX-v4.0-') {
this.prefix = prefix;
}
set(key, value) {
this.ttl &&
localStorage.setItem(this.prefix + key, JSON.stringify([value, Date.now() + this.ttl]));
}
get(key) {
const item = localStorage.getItem(this.prefix + key);
if (item) {
try {
const [value, expires] = JSON.parse(item);
if (Date.now() < expires) {
return value;
}
}
catch { }
this.delete(key);
}
return null;
}
delete(key) {
localStorage.removeItem(this.prefix + key);
}
clear(maxAgeHours = 0) {
this.ttl = maxAgeHours * HOUR;
const now = Date.now();
this.keys().forEach(key => {
const item = localStorage.getItem(key);
if (item && maxAgeHours) {
try {
const [, expires] = JSON.parse(item);
now > expires && localStorage.removeItem(key);
return;
}
catch { }
}
localStorage.removeItem(key);
});
}
keys() {
return Object.keys(localStorage).filter(key => key.indexOf(this.prefix) === 0);
}
}
export const store = isLocalStorageAvailable() ? new Store() : new Map();
export function isLocalStorageAvailable() {
try {
const key = 'LocalStorageTest';
const value = 'value';
localStorage.setItem(key, value);
const getValue = localStorage.getItem(key);
localStorage.removeItem(key);
return getValue === value;
}
catch {
return false;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXBsb2FkeC9saWIvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFFNUIsTUFBTSxPQUFPLEtBQUs7SUFFSztJQURiLEdBQUcsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLFlBQXFCLFNBQVMsZUFBZTtRQUF4QixXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUFHLENBQUM7SUFFakQsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFRO1FBQ3ZCLElBQUksQ0FBQyxHQUFHO1lBQ04sWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVztRQUNiLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDO2dCQUNILE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWdCLENBQUM7Z0JBQ3pELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO29CQUN6QixPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO1lBQ0gsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUM7WUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBVztRQUNoQixZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDO29CQUNILE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFnQixDQUFDO29CQUNwRCxHQUFHLEdBQUcsT0FBTyxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzlDLE9BQU87Z0JBQ1QsQ0FBQztnQkFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1lBQ1osQ0FBQztZQUNELFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sSUFBSTtRQUNWLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQWtCLENBQUM7QUFFekYsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDdEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakMsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sUUFBUSxLQUFLLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhPVVIgPSAxMDAwICogNjAgKiA2MDtcblxuZXhwb3J0IGNsYXNzIFN0b3JlPFQgPSBzdHJpbmc+IHtcbiAgcHJpdmF0ZSB0dGwgPSAyNCAqIEhPVVI7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHByZWZpeCA9ICdVUExPQURYLXY0LjAtJykge31cblxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgdGhpcy50dGwgJiZcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMucHJlZml4ICsga2V5LCBKU09OLnN0cmluZ2lmeShbdmFsdWUsIERhdGUubm93KCkgKyB0aGlzLnR0bF0pKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IFQgfCBudWxsIHtcbiAgICBjb25zdCBpdGVtID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5wcmVmaXggKyBrZXkpO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBbdmFsdWUsIGV4cGlyZXNdID0gSlNPTi5wYXJzZShpdGVtKSBhcyBbVCwgbnVtYmVyXTtcbiAgICAgICAgaWYgKERhdGUubm93KCkgPCBleHBpcmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHt9XG4gICAgICB0aGlzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGRlbGV0ZShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMucHJlZml4ICsga2V5KTtcbiAgfVxuXG4gIGNsZWFyKG1heEFnZUhvdXJzID0gMCk6IHZvaWQge1xuICAgIHRoaXMudHRsID0gbWF4QWdlSG91cnMgKiBIT1VSO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgdGhpcy5rZXlzKCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICBpZiAoaXRlbSAmJiBtYXhBZ2VIb3Vycykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IFssIGV4cGlyZXNdID0gSlNPTi5wYXJzZShpdGVtKSBhcyBbVCwgbnVtYmVyXTtcbiAgICAgICAgICBub3cgPiBleHBpcmVzICYmIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGNhdGNoIHt9XG4gICAgICB9XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5maWx0ZXIoa2V5ID0+IGtleS5pbmRleE9mKHRoaXMucHJlZml4KSA9PT0gMCk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHN0b3JlID0gaXNMb2NhbFN0b3JhZ2VBdmFpbGFibGUoKSA/IG5ldyBTdG9yZSgpIDogbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTG9jYWxTdG9yYWdlQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGtleSA9ICdMb2NhbFN0b3JhZ2VUZXN0JztcbiAgICBjb25zdCB2YWx1ZSA9ICd2YWx1ZSc7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gICAgY29uc3QgZ2V0VmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgcmV0dXJuIGdldFZhbHVlID09PSB2YWx1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=