UNPKG

@lyra/base

Version:

Lyra plugin containing the base components and roles for a Lyra configuration

81 lines (64 loc) 2.29 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _rxjs = require('rxjs'); var _documentStore = require('@lyra/document-store'); var _documentStore2 = _interopRequireDefault(_documentStore); var _client = require('part:@lyra/base/client'); var _client2 = _interopRequireDefault(_client); var _getPairListener = require('./getPairListener'); var _operators = require('rxjs/operators'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function fetchDocumentSnapshot(id) { return _client2.default.observable.getDocument(id).pipe((0, _operators.map)(document => ({ type: 'snapshot', document: document }))); } function fetchQuerySnapshot(query, params) { return _client2.default.observable.fetch(query, params).pipe((0, _operators.map)(documents => ({ type: 'snapshot', documents: documents }))); } const serverConnection = { byIdPair(idPair) { return (0, _getPairListener.getPairListener)(idPair); }, byId(id) { return _client2.default.listen('*[_id == $id]', { id: id }, { includeResult: false, events: ['welcome', 'mutation', 'reconnect'] }).pipe((0, _operators.concatMap)(event => { return event.type === 'welcome' ? fetchDocumentSnapshot(id) : (0, _rxjs.of)(event); })); }, query(query, params) { return _client2.default.observable.listen(query, params || {}, { includeResult: false, events: ['welcome', 'mutation', 'reconnect'] }).pipe((0, _operators.concatMap)(event => { return event.type === 'welcome' ? fetchQuerySnapshot(query, params) : (0, _rxjs.of)(event); })); }, mutate(mutations) { return _client2.default.observable.dataRequest('mutate', mutations, { visibility: 'async', returnDocuments: false }); }, delete(id) { return _client2.default.observable.delete(id, { visibility: 'async', returnDocuments: false }); }, create(doc) { return _client2.default.observable.create(doc); }, createIfNotExists(doc) { return _client2.default.observable.createIfNotExists(doc); }, createOrReplace(doc) { return _client2.default.observable.createOrReplace(doc); } }; exports.default = (0, _documentStore2.default)({ serverConnection });