UNPKG

@lightningkite/ktor-batteries

Version:
89 lines 4.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.xObservableFilter = exports.xObservableToListObservable = exports.LiveObserveModelApi = void 0; // Package: com.lightningkite.ktordb.live // Generated by Khrysalis - this file will be overwritten. const ObserveModelApi_1 = require("../ObserveModelApi"); const ListChange_1 = require("../db/ListChange"); const Query_1 = require("../db/Query"); const SortPart_1 = require("../db/SortPart"); const sockets_1 = require("./sockets"); const khrysalis_runtime_1 = require("@lightningkite/khrysalis-runtime"); const operators_1 = require("rxjs/operators"); //! Declares com.lightningkite.ktordb.live.LiveObserveModelApi class LiveObserveModelApi extends ObserveModelApi_1.ObserveModelApi { constructor(openSocket) { super(); this.openSocket = openSocket; this.alreadyOpen = new khrysalis_runtime_1.EqualOverrideMap(); } observe(query) { //multiplexedSocket<ListChange<Model>, Query<Model>>("$multiplexUrl?jwt=$token", path) return (0, khrysalis_runtime_1.xMutableMapGetOrPut)(this.alreadyOpen, query, () => (this.openSocket(query) .pipe((0, operators_1.tap)({ unsubscribe: () => { this.alreadyOpen.delete(query); } })) .pipe((0, operators_1.publishReplay)(1)) .pipe((0, operators_1.refCount)()))); } } exports.LiveObserveModelApi = LiveObserveModelApi; (function (LiveObserveModelApi) { //! Declares com.lightningkite.ktordb.live.LiveObserveModelApi.Companion class Companion { constructor() { } create(Model, multiplexUrl, token, headers, path) { return new LiveObserveModelApi((query) => (xObservableFilter((0, sockets_1.multiplexedSocketReified)([ListChange_1.ListChange, Model], [Query_1.Query, Model], (() => { if (token !== null) { return `${multiplexUrl}?jwt=${token}`; } else { return multiplexUrl; } })(), path), query))); } } Companion.INSTANCE = new Companion(); LiveObserveModelApi.Companion = Companion; })(LiveObserveModelApi = exports.LiveObserveModelApi || (exports.LiveObserveModelApi = {})); //! Declares com.lightningkite.ktordb.live.toListObservable>io.reactivex.rxjava3.core.Observablecom.lightningkite.ktordb.ListChangecom.lightningkite.ktordb.live.toListObservable.T function xObservableToListObservable(this_, ordering) { const localList = []; return this_.pipe((0, operators_1.map)((it) => { const it_7 = it.wholeList; if (it_7 !== null) { localList.length = 0; localList.push(...it_7.slice().sort(ordering)); } const it_9 = it._new; if (it_9 !== null) { (0, khrysalis_runtime_1.listRemoveAll)(localList, (o) => ((0, khrysalis_runtime_1.safeEq)(it_9._id, o._id))); let index = localList.findIndex((inList) => (ordering(it_9, inList) < 0)); if (index === (-1)) { index = localList.length; } localList.splice(index, 0, it_9); } else { const it_16 = it.old; if (it_16 !== null) { (0, khrysalis_runtime_1.listRemoveAll)(localList, (o) => ((0, khrysalis_runtime_1.safeEq)(it_16._id, o._id))); } } return Array.from(localList); })); } exports.xObservableToListObservable = xObservableToListObservable; //! Declares com.lightningkite.ktordb.live.filter>io.reactivex.rxjava3.core.Observablecom.lightningkite.ktordb.live.WebSocketIshcom.lightningkite.ktordb.ListChangecom.lightningkite.ktordb.live.filter.T, com.lightningkite.ktordb.Querycom.lightningkite.ktordb.live.filter.T function xObservableFilter(this_, query) { var _a; return xObservableToListObservable(this_ .pipe((0, operators_1.tap)((it) => { it.send(query); })) .pipe((0, operators_1.switchMap)((it) => (it.messages))) .pipe((0, operators_1.retryWhen)((it) => (it.pipe((0, operators_1.delay)(5000))))), (_a = (0, SortPart_1.xListComparatorGet)(query.orderBy)) !== null && _a !== void 0 ? _a : (0, khrysalis_runtime_1.compareBy)((it) => (it._id))); } exports.xObservableFilter = xObservableFilter; //# sourceMappingURL=LiveObserveModelApi.js.map