ngforage
Version:
localForage bindings for Angular
66 lines • 6.84 kB
JavaScript
import { Injectable } from '@angular/core';
import 'localforage';
import { localForage as lf } from '../imports/localforage';
import * as i0 from "@angular/core";
import * as i1 from "../config/ng-forage-config.service";
/** @internal */
const stores = new Map();
/** @internal */
function getDriverString(driver) {
if (!driver) {
return '';
}
else if (Array.isArray(driver)) {
return driver.slice().sort().join(',');
}
else {
return driver;
}
}
/** @internal */
function getHash(cfg) {
return [
getDriverString(cfg.driver),
cfg.name,
cfg.size,
cfg.storeName,
cfg.version,
cfg.description,
cfg.cacheTime
].join('|');
}
/** @internal */
const conf$ = Symbol('Config');
/**
* Creates localForage instances
*/
export class InstanceFactory {
/** @internal */
[conf$];
constructor(conf) {
this[conf$] = conf;
}
getInstance(cfg) {
const resolvedCfg = { ...this[conf$].config, ...cfg };
const hash = getHash(resolvedCfg);
const existing = stores.get(hash);
if (existing) {
return existing;
}
const nu = lf.createInstance(resolvedCfg);
const origDropInstance = nu.dropInstance;
nu.dropInstance = function () {
stores.delete(hash);
return origDropInstance.apply(this, arguments);
};
stores.set(hash, nu);
return nu;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: InstanceFactory, deps: [{ token: i1.NgForageConfig }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: InstanceFactory, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: InstanceFactory, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: i1.NgForageConfig }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UtZmFjdG9yeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdmb3JhZ2Uvc3JjL2xpYi9pbnN0YW5jZS1mYWN0b3J5L2luc3RhbmNlLWZhY3Rvcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sYUFBYSxDQUFDO0FBR3JCLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7OztBQUd6RCxnQkFBZ0I7QUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7QUFFOUMsZ0JBQWdCO0FBQ2hCLFNBQVMsZUFBZSxDQUFDLE1BQWtDO0lBQ3pELElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxPQUFPLEVBQUUsQ0FBQztLQUNYO1NBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN4QztTQUFNO1FBQ0wsT0FBZSxNQUFNLENBQUM7S0FDdkI7QUFDSCxDQUFDO0FBRUQsZ0JBQWdCO0FBQ2hCLFNBQVMsT0FBTyxDQUFDLEdBQW9CO0lBQ25DLE9BQU87UUFDTCxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUMzQixHQUFHLENBQUMsSUFBSTtRQUNSLEdBQUcsQ0FBQyxJQUFJO1FBQ1IsR0FBRyxDQUFDLFNBQVM7UUFDYixHQUFHLENBQUMsT0FBTztRQUNYLEdBQUcsQ0FBQyxXQUFXO1FBQ2YsR0FBRyxDQUFDLFNBQVM7S0FDZCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNkLENBQUM7QUFFRCxnQkFBZ0I7QUFDaEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRS9COztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFFMUIsZ0JBQWdCO0lBQ0MsQ0FBQyxLQUFLLENBQUMsQ0FBaUI7SUFFekMsWUFBbUIsSUFBb0I7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQW9CO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxFQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWxDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxRQUFRLEVBQUU7WUFDWixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUVELE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsV0FBaUMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztRQUN6QyxFQUFFLENBQUMsWUFBWSxHQUFHO1lBQ2hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQWdCLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVyQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7dUdBM0JVLGVBQWU7MkdBQWYsZUFBZSxjQURILE1BQU07OzJGQUNsQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgJ2xvY2FsZm9yYWdlJztcbmltcG9ydCB0eXBlIHtOZ0ZvcmFnZU9wdGlvbnN9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQge05nRm9yYWdlQ29uZmlnfSBmcm9tICcuLi9jb25maWcvbmctZm9yYWdlLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7bG9jYWxGb3JhZ2UgYXMgbGZ9IGZyb20gJy4uL2ltcG9ydHMvbG9jYWxmb3JhZ2UnO1xuaW1wb3J0IHtEcml2ZXJUeXBlfSBmcm9tICcuLi9taXNjL2RyaXZlci10eXBlLnR5cGUnO1xuXG4vKiogQGludGVybmFsICovXG5jb25zdCBzdG9yZXMgPSBuZXcgTWFwPHN0cmluZywgTG9jYWxGb3JhZ2U+KCk7XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmZ1bmN0aW9uIGdldERyaXZlclN0cmluZyhkcml2ZXI/OiBEcml2ZXJUeXBlIHwgRHJpdmVyVHlwZVtdKTogc3RyaW5nIHtcbiAgaWYgKCFkcml2ZXIpIHtcbiAgICByZXR1cm4gJyc7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkcml2ZXIpKSB7XG4gICAgcmV0dXJuIGRyaXZlci5zbGljZSgpLnNvcnQoKS5qb2luKCcsJyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDxzdHJpbmc+ZHJpdmVyO1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmZ1bmN0aW9uIGdldEhhc2goY2ZnOiBOZ0ZvcmFnZU9wdGlvbnMpOiBzdHJpbmcge1xuICByZXR1cm4gW1xuICAgIGdldERyaXZlclN0cmluZyhjZmcuZHJpdmVyKSxcbiAgICBjZmcubmFtZSxcbiAgICBjZmcuc2l6ZSxcbiAgICBjZmcuc3RvcmVOYW1lLFxuICAgIGNmZy52ZXJzaW9uLFxuICAgIGNmZy5kZXNjcmlwdGlvbixcbiAgICBjZmcuY2FjaGVUaW1lXG4gIF0uam9pbignfCcpO1xufVxuXG4vKiogQGludGVybmFsICovXG5jb25zdCBjb25mJCA9IFN5bWJvbCgnQ29uZmlnJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBsb2NhbEZvcmFnZSBpbnN0YW5jZXNcbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VGYWN0b3J5IHtcblxuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgcmVhZG9ubHkgW2NvbmYkXTogTmdGb3JhZ2VDb25maWc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmY6IE5nRm9yYWdlQ29uZmlnKSB7XG4gICAgdGhpc1tjb25mJF0gPSBjb25mO1xuICB9XG5cbiAgcHVibGljIGdldEluc3RhbmNlKGNmZzogTmdGb3JhZ2VPcHRpb25zKTogTG9jYWxGb3JhZ2Uge1xuICAgIGNvbnN0IHJlc29sdmVkQ2ZnID0gey4uLnRoaXNbY29uZiRdLmNvbmZpZywgLi4uY2ZnfTtcbiAgICBjb25zdCBoYXNoID0gZ2V0SGFzaChyZXNvbHZlZENmZyk7XG5cbiAgICBjb25zdCBleGlzdGluZyA9IHN0b3Jlcy5nZXQoaGFzaCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuXG4gICAgY29uc3QgbnUgPSBsZi5jcmVhdGVJbnN0YW5jZShyZXNvbHZlZENmZyBhcyBMb2NhbEZvcmFnZU9wdGlvbnMpO1xuICAgIGNvbnN0IG9yaWdEcm9wSW5zdGFuY2UgPSBudS5kcm9wSW5zdGFuY2U7XG4gICAgbnUuZHJvcEluc3RhbmNlID0gZnVuY3Rpb24gKHRoaXM6IExvY2FsRm9yYWdlKSB7XG4gICAgICBzdG9yZXMuZGVsZXRlKGhhc2gpO1xuICAgICAgcmV0dXJuIG9yaWdEcm9wSW5zdGFuY2UuYXBwbHkodGhpcywgYXJndW1lbnRzIGFzIGFueSk7XG4gICAgfTtcbiAgICBzdG9yZXMuc2V0KGhhc2gsIG51KTtcblxuICAgIHJldHVybiBudTtcbiAgfVxufVxuIl19