UNPKG

jinaga

Version:

Data management for web and mobile applications.

73 lines 3.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JinagaTest = void 0; const authentication_test_1 = require("./authentication/authentication-test"); const authorizationRules_1 = require("./authorization/authorizationRules"); const distribution_engine_1 = require("./distribution/distribution-engine"); const distribution_rules_1 = require("./distribution/distribution-rules"); const hydrate_1 = require("./fact/hydrate"); const pass_through_fork_1 = require("./fork/pass-through-fork"); const web_client_1 = require("./http/web-client"); const jinaga_1 = require("./jinaga"); const factManager_1 = require("./managers/factManager"); const NetworkManager_1 = require("./managers/NetworkManager"); const memory_store_1 = require("./memory/memory-store"); const observable_1 = require("./observable/observable"); const purgeConditions_1 = require("./purge/purgeConditions"); class JinagaTest { static create(config) { const store = new memory_store_1.MemoryStore(); this.saveInitialState(config, store); const observableSource = new observable_1.ObservableSource(store); const syncStatusNotifier = new web_client_1.SyncStatusNotifier(); const fork = new pass_through_fork_1.PassThroughFork(store); const authentication = this.createAuthentication(config, store); const network = this.createNetwork(config, store); const purgeConditions = this.createPurgeConditions(config); const factManager = new factManager_1.FactManager(fork, observableSource, store, network, purgeConditions, config.feedRefreshIntervalSeconds); return new jinaga_1.Jinaga(authentication, factManager, syncStatusNotifier); } static saveInitialState(config, store) { if (config.initialState) { const dehydrate = new hydrate_1.Dehydration(); config.initialState.forEach(obj => dehydrate.dehydrate(obj)); store.save(dehydrate.factRecords().map(f => ({ fact: f, signatures: [] }))); } } static createAuthentication(config, store) { const authorizationRules = config.authorization ? config.authorization(new authorizationRules_1.AuthorizationRules(config.model)) : null; const userFact = JinagaTest.getUserFact(config); const deviceFact = JinagaTest.getDeviceFact(config); return new authentication_test_1.AuthenticationTest(store, authorizationRules, userFact, deviceFact); } static createNetwork(config, store) { if (config.distribution) { const distributionRules = config.distribution(new distribution_rules_1.DistributionRules([])); const distributionEngine = new distribution_engine_1.DistributionEngine(distributionRules, store); return new NetworkManager_1.NetworkDistribution(distributionEngine, this.getUserFact(config)); } else { return new NetworkManager_1.NetworkNoOp(); } } static createPurgeConditions(config) { if (config.purgeConditions) { return config.purgeConditions(new purgeConditions_1.PurgeConditions([])).specifications; } else { return []; } } static getUserFact(config) { return config.user ? (0, hydrate_1.dehydrateFact)(config.user)[0] : null; } static getDeviceFact(config) { return config.device ? (0, hydrate_1.dehydrateFact)(config.device)[0] : null; } } exports.JinagaTest = JinagaTest; //# sourceMappingURL=jinaga-test.js.map