@lyra/base
Version:
Lyra plugin containing the base components and roles for a Lyra configuration
81 lines (64 loc) • 2.29 kB
JavaScript
;
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 });