UNPKG

core-native

Version:

A lightweight framework based on React Native + Redux + Redux Saga, in strict TypeScript.

69 lines 3.12 kB
import { __generator, __read, __spreadArray, __values } from "tslib"; import { applyMiddleware, compose, createStore } from "redux"; import createSagaMiddleware, {} from "redux-saga"; import { takeEvery } from "redux-saga/effects"; import { LoggerImpl } from "./Logger"; import { executeAction } from "./module"; import { LOADING_ACTION, rootReducer } from "./reducer"; import { captureError } from "./util/error-util"; export var app = createApp(); export var logger = app.logger; function composeWithDevTools(enhancer) { var composeEnhancers = compose; if (process.env.NODE_ENV === "development") { var extension = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__; if (extension) { composeEnhancers = extension({ // Ref: https://github.com/reduxjs/redux-devtools/blob/main/extension/docs/API/Arguments.md#actionsdenylist--actionsallowlist actionsDenylist: [LOADING_ACTION], }); } } return composeEnhancers(enhancer); } function createApp() { var eventLogger = new LoggerImpl(); var sagaMiddleware = createSagaMiddleware({ onError: function (error, info) { return captureError(error, "@@framework/detached-saga", { extraStacktrace: info.sagaStack }); }, }); var store = createStore(rootReducer(), composeWithDevTools(applyMiddleware(sagaMiddleware))); sagaMiddleware.run(function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, takeEvery("*", function (action) { var handler; return __generator(this, function (_a) { switch (_a.label) { case 0: handler = app.actionHandlers[action.type]; if (!handler) return [3 /*break*/, 2]; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore return [5 /*yield**/, __values(executeAction.apply(void 0, __spreadArray([action.type, handler], __read(action.payload), false)))]; case 1: // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore _a.sent(); _a.label = 2; case 2: return [2 /*return*/]; } }); })]; case 1: _a.sent(); return [2 /*return*/]; } }); }); return { store: store, sagaMiddleware: sagaMiddleware, actionHandlers: {}, logger: eventLogger, loggerConfig: null, errorHandler: function () { return __generator(this, function (_a) { return [2 /*return*/]; }); }, }; } //# sourceMappingURL=app.js.map