UNPKG

@spartacus/core

Version:

Spartacus - the core framework

52 lines 9.18 kB
import { isPlatformBrowser, isPlatformServer } from '@angular/common'; import { makeStateKey, } from '@angular/platform-browser'; import { INIT } from '@ngrx/store'; import { deepMerge } from '../../config/utils/deep-merge'; import { StateTransferType } from '../config/state-config'; import { filterKeysByType, getStateSlice } from '../utils/get-state-slice'; export const CX_KEY = makeStateKey('cx-state'); export function getTransferStateReducer(platformId, transferState, config, authStatePersistenceService) { var _a, _b; if (transferState && ((_b = (_a = config === null || config === void 0 ? void 0 : config.state) === null || _a === void 0 ? void 0 : _a.ssrTransfer) === null || _b === void 0 ? void 0 : _b.keys)) { if (isPlatformBrowser(platformId)) { return getBrowserTransferStateReducer(transferState, config.state.ssrTransfer.keys, Boolean(authStatePersistenceService === null || authStatePersistenceService === void 0 ? void 0 : authStatePersistenceService.isUserLoggedIn())); } else if (isPlatformServer(platformId)) { return getServerTransferStateReducer(transferState, config.state.ssrTransfer.keys); } } return (reducer) => reducer; } export function getServerTransferStateReducer(transferState, keys) { const transferStateKeys = filterKeysByType(keys, StateTransferType.TRANSFER_STATE); return function (reducer) { return function (state, action) { const newState = reducer(state, action); if (newState) { const stateSlice = getStateSlice(transferStateKeys, [], newState); transferState.set(CX_KEY, stateSlice); } return newState; }; }; } export function getBrowserTransferStateReducer(transferState, keys, isLoggedIn) { const transferStateKeys = filterKeysByType(keys, StateTransferType.TRANSFER_STATE); return function (reducer) { return function (state, action) { if (action.type === INIT) { if (!state) { state = reducer(state, action); } if (!isLoggedIn && transferState.hasKey(CX_KEY)) { const cxKey = transferState.get(CX_KEY, {}); const transferredStateSlice = getStateSlice(transferStateKeys, [], cxKey); state = deepMerge({}, state, transferredStateSlice); } return state; } return reducer(state, action); }; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXItc3RhdGUucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3N0YXRlL3JlZHVjZXJzL3RyYW5zZmVyLXN0YXRlLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEUsT0FBTyxFQUNMLFlBQVksR0FHYixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFBZSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQXFCLFlBQVksQ0FBUyxVQUFVLENBQUMsQ0FBQztBQUV6RSxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLFVBQVUsRUFDVixhQUE2QixFQUM3QixNQUFvQixFQUNwQiwyQkFBeUQ7O0lBRXpELElBQUksYUFBYSxLQUFJLE1BQUEsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsS0FBSywwQ0FBRSxXQUFXLDBDQUFFLElBQUksQ0FBQSxFQUFFO1FBQ3JELElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDakMsT0FBTyw4QkFBOEIsQ0FDbkMsYUFBYSxFQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFDN0IsT0FBTyxDQUFDLDJCQUEyQixhQUEzQiwyQkFBMkIsdUJBQTNCLDJCQUEyQixDQUFFLGNBQWMsRUFBRSxDQUFDLENBQ3ZELENBQUM7U0FDSDthQUFNLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdkMsT0FBTyw2QkFBNkIsQ0FDbEMsYUFBYSxFQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDOUIsQ0FBQztTQUNIO0tBQ0Y7SUFFRCxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FDM0MsYUFBNEIsRUFDNUIsSUFBMEM7SUFFMUMsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FDeEMsSUFBSSxFQUNKLGlCQUFpQixDQUFDLGNBQWMsQ0FDakMsQ0FBQztJQUVGLE9BQU8sVUFBVSxPQUFPO1FBQ3RCLE9BQU8sVUFBVSxLQUFLLEVBQUUsTUFBVztZQUNqQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3hDLElBQUksUUFBUSxFQUFFO2dCQUNaLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2xFLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ3ZDO1lBRUQsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsYUFBNEIsRUFDNUIsSUFBMEMsRUFDMUMsVUFBbUI7SUFFbkIsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FDeEMsSUFBSSxFQUNKLGlCQUFpQixDQUFDLGNBQWMsQ0FDakMsQ0FBQztJQUVGLE9BQU8sVUFBVSxPQUFPO1FBQ3RCLE9BQU8sVUFBVSxLQUFLLEVBQUUsTUFBVztZQUNqQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUN4QixJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNWLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUNoQztnQkFFRCxJQUFJLENBQUMsVUFBVSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQy9DLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQVMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNwRCxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FDekMsaUJBQWlCLEVBQ2pCLEVBQUUsRUFDRixLQUFLLENBQ04sQ0FBQztvQkFFRixLQUFLLEdBQUcsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUscUJBQXFCLENBQUMsQ0FBQztpQkFDckQ7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgbWFrZVN0YXRlS2V5LFxuICBTdGF0ZUtleSxcbiAgVHJhbnNmZXJTdGF0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBJTklUIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQXV0aFN0YXRlUGVyc2lzdGVuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXV0aC91c2VyLWF1dGgvc2VydmljZXMvYXV0aC1zdGF0ZS1wZXJzaXN0ZW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gJy4uLy4uL2NvbmZpZy91dGlscy9kZWVwLW1lcmdlJztcbmltcG9ydCB7IFN0YXRlQ29uZmlnLCBTdGF0ZVRyYW5zZmVyVHlwZSB9IGZyb20gJy4uL2NvbmZpZy9zdGF0ZS1jb25maWcnO1xuaW1wb3J0IHsgZmlsdGVyS2V5c0J5VHlwZSwgZ2V0U3RhdGVTbGljZSB9IGZyb20gJy4uL3V0aWxzL2dldC1zdGF0ZS1zbGljZSc7XG5cbmV4cG9ydCBjb25zdCBDWF9LRVk6IFN0YXRlS2V5PHN0cmluZz4gPSBtYWtlU3RhdGVLZXk8c3RyaW5nPignY3gtc3RhdGUnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zZmVyU3RhdGVSZWR1Y2VyKFxuICBwbGF0Zm9ybUlkLFxuICB0cmFuc2ZlclN0YXRlPzogVHJhbnNmZXJTdGF0ZSxcbiAgY29uZmlnPzogU3RhdGVDb25maWcsXG4gIGF1dGhTdGF0ZVBlcnNpc3RlbmNlU2VydmljZT86IEF1dGhTdGF0ZVBlcnNpc3RlbmNlU2VydmljZVxuKSB7XG4gIGlmICh0cmFuc2ZlclN0YXRlICYmIGNvbmZpZz8uc3RhdGU/LnNzclRyYW5zZmVyPy5rZXlzKSB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gZ2V0QnJvd3NlclRyYW5zZmVyU3RhdGVSZWR1Y2VyKFxuICAgICAgICB0cmFuc2ZlclN0YXRlLFxuICAgICAgICBjb25maWcuc3RhdGUuc3NyVHJhbnNmZXIua2V5cyxcbiAgICAgICAgQm9vbGVhbihhdXRoU3RhdGVQZXJzaXN0ZW5jZVNlcnZpY2U/LmlzVXNlckxvZ2dlZEluKCkpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNQbGF0Zm9ybVNlcnZlcihwbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuIGdldFNlcnZlclRyYW5zZmVyU3RhdGVSZWR1Y2VyKFxuICAgICAgICB0cmFuc2ZlclN0YXRlLFxuICAgICAgICBjb25maWcuc3RhdGUuc3NyVHJhbnNmZXIua2V5c1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKHJlZHVjZXIpID0+IHJlZHVjZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXJ2ZXJUcmFuc2ZlclN0YXRlUmVkdWNlcihcbiAgdHJhbnNmZXJTdGF0ZTogVHJhbnNmZXJTdGF0ZSxcbiAga2V5czogeyBba2V5OiBzdHJpbmddOiBTdGF0ZVRyYW5zZmVyVHlwZSB9XG4pIHtcbiAgY29uc3QgdHJhbnNmZXJTdGF0ZUtleXMgPSBmaWx0ZXJLZXlzQnlUeXBlKFxuICAgIGtleXMsXG4gICAgU3RhdGVUcmFuc2ZlclR5cGUuVFJBTlNGRVJfU1RBVEVcbiAgKTtcblxuICByZXR1cm4gZnVuY3Rpb24gKHJlZHVjZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHN0YXRlLCBhY3Rpb246IGFueSkge1xuICAgICAgY29uc3QgbmV3U3RhdGUgPSByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuICAgICAgaWYgKG5ld1N0YXRlKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlU2xpY2UgPSBnZXRTdGF0ZVNsaWNlKHRyYW5zZmVyU3RhdGVLZXlzLCBbXSwgbmV3U3RhdGUpO1xuICAgICAgICB0cmFuc2ZlclN0YXRlLnNldChDWF9LRVksIHN0YXRlU2xpY2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJyb3dzZXJUcmFuc2ZlclN0YXRlUmVkdWNlcihcbiAgdHJhbnNmZXJTdGF0ZTogVHJhbnNmZXJTdGF0ZSxcbiAga2V5czogeyBba2V5OiBzdHJpbmddOiBTdGF0ZVRyYW5zZmVyVHlwZSB9LFxuICBpc0xvZ2dlZEluOiBib29sZWFuXG4pIHtcbiAgY29uc3QgdHJhbnNmZXJTdGF0ZUtleXMgPSBmaWx0ZXJLZXlzQnlUeXBlKFxuICAgIGtleXMsXG4gICAgU3RhdGVUcmFuc2ZlclR5cGUuVFJBTlNGRVJfU1RBVEVcbiAgKTtcblxuICByZXR1cm4gZnVuY3Rpb24gKHJlZHVjZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHN0YXRlLCBhY3Rpb246IGFueSkge1xuICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBJTklUKSB7XG4gICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICBzdGF0ZSA9IHJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzTG9nZ2VkSW4gJiYgdHJhbnNmZXJTdGF0ZS5oYXNLZXkoQ1hfS0VZKSkge1xuICAgICAgICAgIGNvbnN0IGN4S2V5ID0gdHJhbnNmZXJTdGF0ZS5nZXQ8T2JqZWN0PihDWF9LRVksIHt9KTtcbiAgICAgICAgICBjb25zdCB0cmFuc2ZlcnJlZFN0YXRlU2xpY2UgPSBnZXRTdGF0ZVNsaWNlKFxuICAgICAgICAgICAgdHJhbnNmZXJTdGF0ZUtleXMsXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIGN4S2V5XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHN0YXRlID0gZGVlcE1lcmdlKHt9LCBzdGF0ZSwgdHJhbnNmZXJyZWRTdGF0ZVNsaWNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcbiAgICB9O1xuICB9O1xufVxuIl19