wechaty-redux
Version:
Wechaty Redux Plugin Powered By Ducks
85 lines • 5.24 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.puppet$ = void 0;
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
const mod_js_1 = require("./registry/mod.js");
const duck = __importStar(require("./duck/mod.js"));
const fromEvent = rxjs_1.fromEvent;
/**
* Ducks operations need to get Puppet instance by id
* this map is used to store the Puppet instances
*/
const puppet$ = (puppetInterface, options) => {
const puppet = puppetInterface;
/**
* active/inactive state change
*/
const state = puppet.state;
const stateActive$ = fromEvent(state, 'active');
const stateInactive$ = fromEvent(state, 'inactive');
/**
* events
*/
const dong$ = fromEvent(puppet, 'dong');
const error$ = fromEvent(puppet, 'error');
const friendship$ = fromEvent(puppet, 'friendship');
const heartbeat$ = fromEvent(puppet, 'heartbeat');
const login$ = fromEvent(puppet, 'login');
const logout$ = fromEvent(puppet, 'logout');
const message$ = fromEvent(puppet, 'message');
const ready$ = fromEvent(puppet, 'ready');
const reset$ = fromEvent(puppet, 'reset');
const roomInvite$ = fromEvent(puppet, 'room-invite');
const roomJoin$ = fromEvent(puppet, 'room-join');
const roomLeave$ = fromEvent(puppet, 'room-leave');
const roomTopic$ = fromEvent(puppet, 'room-topic');
const scan$ = fromEvent(puppet, 'scan');
const start$ = fromEvent(puppet, 'start');
const stop$ = fromEvent(puppet, 'stop');
/**
* Merge everything to one stream$
*/
return (0, rxjs_1.merge)(
/* eslint-disable func-call-spacing */
/* eslint-disable no-whitespace-before-property */
stateActive$.pipe((0, operators_1.map)(status => duck.actions.STATE_ACTIVATED_EVENT(puppet.id, status))), stateInactive$.pipe((0, operators_1.map)(status => duck.actions.STATE_INACTIVATED_EVENT(puppet.id, status))), start$.pipe((0, operators_1.map)(() => duck.actions.STARTED_EVENT(puppet.id))), stop$.pipe((0, operators_1.map)(() => duck.actions.STOPPED_EVENT(puppet.id))), dong$.pipe((0, operators_1.map)(payload => duck.actions.DONG_RECEIVED_EVENT(puppet.id, payload))), error$.pipe((0, operators_1.map)(payload => duck.actions.ERROR_RECEIVED_EVENT(puppet.id, payload))), friendship$.pipe((0, operators_1.map)(payload => duck.actions.FRIENDSHIP_RECEIVED_EVENT(puppet.id, payload))), heartbeat$.pipe((0, operators_1.map)(payload => duck.actions.HEARTBEAT_RECEIVED_EVENT(puppet.id, payload))), login$.pipe((0, operators_1.map)(payload => duck.actions.LOGIN_RECEIVED_EVENT(puppet.id, payload))), logout$.pipe((0, operators_1.map)(payload => duck.actions.LOGOUT_RECEIVED_EVENT(puppet.id, payload))), message$.pipe((0, operators_1.map)(payload => duck.actions.MESSAGE_RECEIVED_EVENT(puppet.id, payload))), ready$.pipe((0, operators_1.map)(payload => duck.actions.READY_RECEIVED_EVENT(puppet.id, payload))), reset$.pipe((0, operators_1.map)(payload => duck.actions.RESET_RECEIVED_EVENT(puppet.id, payload))), roomInvite$.pipe((0, operators_1.map)(payload => duck.actions.ROOM_INVITE_RECEIVED_EVENT(puppet.id, payload))), roomJoin$.pipe((0, operators_1.map)(payload => duck.actions.ROOM_JOIN_RECEIVED_EVENT(puppet.id, payload))), roomLeave$.pipe((0, operators_1.map)(payload => duck.actions.ROOM_LEAVE_RECEIVED_EVENT(puppet.id, payload))), roomTopic$.pipe((0, operators_1.map)(payload => duck.actions.ROOM_TOPIC_RECEIVED_EVENT(puppet.id, payload))), scan$.pipe((0, operators_1.map)(payload => duck.actions.SCAN_RECEIVED_EVENT(puppet.id, payload)))).pipe(
/**
* share() === multicast(() => new Subject()).refCount()
* @see https://itnext.io/the-magic-of-rxjs-sharing-operators-and-their-differences-3a03d699d255
*/
(0, operators_1.share)(),
/**
* Save the puppet instance to the map when there's any subscription
* and automatically remove the puppet instance from the map when there's no subscription
*
* - Huan(202111): put it below the `share()`
* because we want to count the ref numbers internally
*/
(0, mod_js_1.registerPuppet)(puppet, options));
};
exports.puppet$ = puppet$;
//# sourceMappingURL=puppet$.js.map