UNPKG

wechaty-redux

Version:

Wechaty Redux Plugin Powered By Ducks

85 lines 5.24 kB
"use strict"; 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