UNPKG

@synerty/vortexjs

Version:

Custom observable data serialisation and routing based on Angular 2+

50 lines 5.56 kB
import { Injectable } from "@angular/core"; import { Capacitor } from "@capacitor/core"; import { CapSqlApi } from "./cap-sql-api"; import { WebSqlApi } from "./web-sql-api"; import * as i0 from "@angular/core"; export class SqlFactoryService { /** Has Storage Limitations * * Returns true if this SQL storage has a small limitation on storage. * * This was implemented to return true on iOS mobile devices, as they have a * 50mb storage limit. * */ hasStorageLimitations() { // iOS safari supports up to a 50mb limit, MAX. // In this case, IndexedDB should be used. // https://stackoverflow.com/questions/9038625/detect-if-device-is-ios // noinspection UnnecessaryLocalVariableJS const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window["MSStream"]; if (Capacitor.isNative) return false; // Other conditions return iOS; } isSupported() { try { return Capacitor.isNative || openDatabase != null; } catch (e) { return false; } } createApi(dbName, dbSchema) { if (Capacitor.isNativePlatform()) return new CapSqlApi(dbName, dbSchema); return new WebSqlApi(dbName, dbSchema); } get storageName() { if (Capacitor.isNativePlatform()) return "CapSql"; return "WebSql"; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SqlFactoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SqlFactoryService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SqlFactoryService, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLWFwaS1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3ZvcnRleC9zdG9yYWdlLWFwaS9zcWwtYXBpLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUsxQyxNQUFNLE9BQU8saUJBQWlCO0lBQzFCOzs7Ozs7O09BT0c7SUFDSCxxQkFBcUI7UUFDakIsK0NBQStDO1FBQy9DLDBDQUEwQztRQUMxQyxzRUFBc0U7UUFDdEUsMENBQTBDO1FBQzFDLE1BQU0sR0FBRyxHQUNMLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEUsSUFBSSxTQUFTLENBQUMsUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXJDLG1CQUFtQjtRQUNuQixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSTtZQUNBLE9BQU8sU0FBUyxDQUFDLFFBQVEsSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDO1NBQ3JEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYyxFQUFFLFFBQWtCO1FBQ3hDLElBQUksU0FBUyxDQUFDLGdCQUFnQixFQUFFO1lBQzVCLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRTtZQUFFLE9BQU8sUUFBUSxDQUFDO1FBQ2xELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7d0dBeENRLGlCQUFpQjs0R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDYXBhY2l0b3IgfSBmcm9tIFwiQGNhcGFjaXRvci9jb3JlXCI7XG5pbXBvcnQgeyBTcWxBcGlBQkMgfSBmcm9tIFwiLi9zcWwtYXBpLWFiY1wiO1xuaW1wb3J0IHsgQ2FwU3FsQXBpIH0gZnJvbSBcIi4vY2FwLXNxbC1hcGlcIjtcbmltcG9ydCB7IFdlYlNxbEFwaSB9IGZyb20gXCIuL3dlYi1zcWwtYXBpXCI7XG5cbmRlY2xhcmUgbGV0IG9wZW5EYXRhYmFzZTogYW55O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3FsRmFjdG9yeVNlcnZpY2Uge1xuICAgIC8qKiBIYXMgU3RvcmFnZSBMaW1pdGF0aW9uc1xuICAgICAqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgU1FMIHN0b3JhZ2UgaGFzIGEgc21hbGwgbGltaXRhdGlvbiBvbiBzdG9yYWdlLlxuICAgICAqXG4gICAgICogVGhpcyB3YXMgaW1wbGVtZW50ZWQgdG8gcmV0dXJuIHRydWUgb24gaU9TIG1vYmlsZSBkZXZpY2VzLCBhcyB0aGV5IGhhdmUgYVxuICAgICAqIDUwbWIgc3RvcmFnZSBsaW1pdC5cbiAgICAgKlxuICAgICAqL1xuICAgIGhhc1N0b3JhZ2VMaW1pdGF0aW9ucygpOiBib29sZWFuIHtcbiAgICAgICAgLy8gaU9TIHNhZmFyaSBzdXBwb3J0cyB1cCB0byBhIDUwbWIgbGltaXQsIE1BWC5cbiAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBJbmRleGVkREIgc2hvdWxkIGJlIHVzZWQuXG4gICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzkwMzg2MjUvZGV0ZWN0LWlmLWRldmljZS1pcy1pb3NcbiAgICAgICAgLy8gbm9pbnNwZWN0aW9uIFVubmVjZXNzYXJ5TG9jYWxWYXJpYWJsZUpTXG4gICAgICAgIGNvbnN0IGlPUyA9XG4gICAgICAgICAgICAvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAhd2luZG93W1wiTVNTdHJlYW1cIl07XG5cbiAgICAgICAgaWYgKENhcGFjaXRvci5pc05hdGl2ZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIC8vIE90aGVyIGNvbmRpdGlvbnNcbiAgICAgICAgcmV0dXJuIGlPUztcbiAgICB9XG5cbiAgICBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBDYXBhY2l0b3IuaXNOYXRpdmUgfHwgb3BlbkRhdGFiYXNlICE9IG51bGw7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZUFwaShkYk5hbWU6IHN0cmluZywgZGJTY2hlbWE6IHN0cmluZ1tdKTogU3FsQXBpQUJDIHtcbiAgICAgICAgaWYgKENhcGFjaXRvci5pc05hdGl2ZVBsYXRmb3JtKCkpXG4gICAgICAgICAgICByZXR1cm4gbmV3IENhcFNxbEFwaShkYk5hbWUsIGRiU2NoZW1hKTtcbiAgICAgICAgcmV0dXJuIG5ldyBXZWJTcWxBcGkoZGJOYW1lLCBkYlNjaGVtYSk7XG4gICAgfVxuXG4gICAgZ2V0IHN0b3JhZ2VOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChDYXBhY2l0b3IuaXNOYXRpdmVQbGF0Zm9ybSgpKSByZXR1cm4gXCJDYXBTcWxcIjtcbiAgICAgICAgcmV0dXJuIFwiV2ViU3FsXCI7XG4gICAgfVxufVxuIl19