UNPKG

ayanami

Version:
39 lines (38 loc) 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SSREffect = exports.reqMap = exports.SKIP_SYMBOL = void 0; var tslib_1 = require("tslib"); var operators_1 = require("rxjs/operators"); var constants_1 = require("./constants"); var flag_1 = require("./flag"); var decorators_1 = require("../core/decorators"); exports.SKIP_SYMBOL = Symbol('skip'); exports.reqMap = new Map(); function addDecorator(target, method, middleware) { var existedMetas = Reflect.getMetadata(constants_1.SSRSymbol, target); var meta = { action: method, middleware: middleware }; if (existedMetas) { existedMetas.push(meta); } else { Reflect.defineMetadata(constants_1.SSRSymbol, [meta], target); } } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types function SSREffect(options) { var _a = tslib_1.__assign({ payloadGetter: undefined, skipFirstClientDispatch: true }, options), payloadGetter = _a.payloadGetter, skipFirstClientDispatch = _a.skipFirstClientDispatch; return function (target, method, descriptor) { addDecorator(target, method, payloadGetter); if (!flag_1.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(operators_1.skip(1)), state$); } return originalValue_1.call(this, action$, state$); }; } return decorators_1.Effect()(target, method, descriptor); }; } exports.SSREffect = SSREffect;