UNPKG

@castore/event-storage-adapter-redux

Version:

DRY Castore EventStorageAdapter implementation using a Redux store

123 lines (93 loc) 5.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useAggregateIds = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _reactRedux = require("react-redux"); var _adapter = require("../adapter"); var _reduxEventStorageAdapterNotFound = require("../errors/reduxEventStorageAdapterNotFound"); var _reduxStateNotFound = require("../errors/reduxStateNotFound"); var _parseAppliedListAggregateIdsOptions = require("../utils/parseAppliedListAggregateIdsOptions"); var _excluded = ["pageToken"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } // eslint-disable-next-line complexity var useAggregateIds = function useAggregateIds(eventStore) { var _useSelector; var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, inputPageToken = _ref.pageToken, inputOptions = (0, _objectWithoutProperties2["default"])(_ref, _excluded); var storeAggregateEntries = (_useSelector = (0, _reactRedux.useSelector)(function (state) { var eventStorageAdapter = eventStore.getEventStorageAdapter(); if (!(eventStorageAdapter instanceof _adapter.ReduxEventStorageAdapter)) { throw new _reduxEventStorageAdapterNotFound.ReduxEventStorageAdapterNotFoundError({ eventStoreId: eventStore.eventStoreId }); } var eventStoreSliceName = eventStorageAdapter.eventStoreSliceName; var eventStoreState = state[eventStoreSliceName]; if (!eventStoreState) { throw new _reduxStateNotFound.ReduxStateNotFoundError({ eventStoreSliceName: eventStoreSliceName }); } return eventStoreState.aggregateIds; })) !== null && _useSelector !== void 0 ? _useSelector : []; var _parseAppliedListAggr = (0, _parseAppliedListAggregateIdsOptions.parseAppliedListAggregateIdsOptions)({ inputPageToken: inputPageToken, inputOptions: inputOptions }), limit = _parseAppliedListAggr.limit, initialEventAfter = _parseAppliedListAggr.initialEventAfter, initialEventBefore = _parseAppliedListAggr.initialEventBefore, reverse = _parseAppliedListAggr.reverse, exclusiveStartKey = _parseAppliedListAggr.exclusiveStartKey; var aggregateIds = (0, _toConsumableArray2["default"])(storeAggregateEntries).sort(function (aggregateA, aggregateB) { return aggregateA.initialEventTimestamp > aggregateB.initialEventTimestamp ? 1 : -1; }); if (initialEventAfter !== undefined) { aggregateIds = aggregateIds.filter(function (_ref2) { var initialEventTimestamp = _ref2.initialEventTimestamp; return initialEventAfter <= initialEventTimestamp; }); } if (initialEventBefore !== undefined) { aggregateIds = aggregateIds.filter(function (_ref3) { var initialEventTimestamp = _ref3.initialEventTimestamp; return initialEventTimestamp <= initialEventBefore; }); } if (reverse === true) { aggregateIds = aggregateIds.reverse(); } if (exclusiveStartKey !== undefined) { var exclusiveStartKeyIndex = aggregateIds.findIndex(function (_ref4) { var aggregateId = _ref4.aggregateId; return aggregateId === exclusiveStartKey.aggregateId; }); aggregateIds = aggregateIds.slice(exclusiveStartKeyIndex + 1); } var numberOfAggregateIdsBeforeLimit = aggregateIds.length; if (limit !== undefined) { aggregateIds = aggregateIds.slice(0, limit); } var hasNextPage = limit === undefined ? false : numberOfAggregateIdsBeforeLimit > limit; var parsedNextPageToken = { limit: limit, initialEventAfter: initialEventAfter, initialEventBefore: initialEventBefore, reverse: reverse, lastEvaluatedKey: aggregateIds[aggregateIds.length - 1] }; return _objectSpread({ aggregateIds: aggregateIds }, hasNextPage ? { nextPageToken: JSON.stringify(parsedNextPageToken) } : {}); }; exports.useAggregateIds = useAggregateIds; //# sourceMappingURL=useAggregateIds.js.map