@synerty/vortexjs
Version:
Custom observable data serialisation and routing based on Angular 2+
50 lines • 5.56 kB
JavaScript
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