UNPKG

ayanami

Version:
35 lines (34 loc) 1.48 kB
import { __assign } from "tslib"; import { skip } from 'rxjs/operators'; import { SSRSymbol } from './constants'; import { isSSREnabled } from './flag'; import { Effect } from '../core/decorators'; export var SKIP_SYMBOL = Symbol('skip'); export var reqMap = new Map(); function addDecorator(target, method, middleware) { var existedMetas = Reflect.getMetadata(SSRSymbol, target); var meta = { action: method, middleware: middleware }; if (existedMetas) { existedMetas.push(meta); } else { Reflect.defineMetadata(SSRSymbol, [meta], target); } } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export function SSREffect(options) { var _a = __assign({ payloadGetter: undefined, skipFirstClientDispatch: true }, options), payloadGetter = _a.payloadGetter, skipFirstClientDispatch = _a.skipFirstClientDispatch; return function (target, method, descriptor) { addDecorator(target, method, payloadGetter); if (!isSSREnabled() && skipFirstClientDispatch) { var originalValue_1 = descriptor.value; descriptor.value = function (action$, state$) { if (Reflect.getMetadata(this.ssrLoadKey, this)) { return originalValue_1.call(this, action$.pipe(skip(1)), state$); } return originalValue_1.call(this, action$, state$); }; } return Effect()(target, method, descriptor); }; }