UNPKG

ngforage

Version:

localForage bindings for Angular

66 lines 6.84 kB
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