@lightningkite/ktor-batteries
Version:
89 lines • 4.47 kB
JavaScript
;
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