UNPKG

@simplux/core

Version:

The core package of simplux. Contains everything to manage your application state in a simple way.

64 lines (63 loc) 12.2 kB
import { createStore } from 'redux'; import { createModule, } from './src/module.js'; import { simpluxStore, _setReduxStore } from './src/store.js'; // we create and set a default redux store for simple scenarios setReduxStoreForSimplux(createStore(getSimpluxReducer()), (s) => s); export { createEffect, createEffects, SIMPLUX_EFFECT, _getEffectMocks, _isSimpluxEffect, } from './src/effects.js'; export { SIMPLUX_MODULE, _isSimpluxModule } from './src/module.js'; export { createMutations, SIMPLUX_MUTATION, _isSimpluxMutation, } from './src/mutations.js'; export { createSelectors, SIMPLUX_SELECTOR, _isSimpluxSelector, } from './src/selectors.js'; export { _getStoreProxy } from './src/store.js'; export * from './src/types.js'; // tslint:disable: max-line-length (cannot line break the links) /** * Returns the root reducer that manages all simplux state. * This reducer should be combined with all the other reducers * your application has. * * To learn more, have a look at the [getting started recipe](https://github.com/MrWolfZ/simplux/tree/master/recipes/basics/getting-started). * * @returns the simplux root reducer * * @public */ export function getSimpluxReducer() { return simpluxStore.rootReducer; } export function createSimpluxModule(configOrName, initialState) { if (typeof configOrName === 'string') { const config = { name: configOrName, initialState: initialState, }; return createModule(simpluxStore, config); } return createModule(simpluxStore, configOrName); } /** * Set the redux store that simplux should use. It is required to call * this function before any created simplux module can be used. * * The second parameter must be a function that maps from the redux store's * root state to the simplux root state. * * If this function is called again with a new store, simplux will safely * switch over to the new store. However, no state is transferred and * therefore all modules are reset to their initial state. This is primarily * useful in server-side rendering scenarios. * * To learn more, have a look at the [getting started recipe](https://github.com/MrWolfZ/simplux/tree/master/recipes/basics/getting-started). * * @param storeToUse - the redux store that simplux should use * @param simpluxStateGetter - a mapper function from the redux root state * to the simplux root state * * @returns a cleanup function that when called disconnects simplux from the * redux store (but it does not remove any of the simplux state from the store) * * @public */ export function setReduxStoreForSimplux(storeToUse, simpluxStateGetter) { return _setReduxStore(storeToUse, simpluxStateGetter); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIkBzaW1wbHV4L2NvcmUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU3RvcmUsIFJlZHVjZXIsIFN0b3JlIH0gZnJvbSAncmVkdXgnXHJcbmltcG9ydCB7XHJcbiAgY3JlYXRlTW9kdWxlLFxyXG4gIFNpbXBsdXhNb2R1bGUsXHJcbiAgU2ltcGx1eE1vZHVsZUNvbmZpZyxcclxufSBmcm9tICcuL3NyYy9tb2R1bGUuanMnXHJcbmltcG9ydCB7IHNpbXBsdXhTdG9yZSwgX3NldFJlZHV4U3RvcmUgfSBmcm9tICcuL3NyYy9zdG9yZS5qcydcclxuXHJcbi8vIHdlIGNyZWF0ZSBhbmQgc2V0IGEgZGVmYXVsdCByZWR1eCBzdG9yZSBmb3Igc2ltcGxlIHNjZW5hcmlvc1xyXG5zZXRSZWR1eFN0b3JlRm9yU2ltcGx1eChjcmVhdGVTdG9yZShnZXRTaW1wbHV4UmVkdWNlcigpKSwgKHMpID0+IHMpXHJcblxyXG5leHBvcnQge1xyXG4gIGNyZWF0ZUVmZmVjdCxcclxuICBjcmVhdGVFZmZlY3RzLFxyXG4gIFNJTVBMVVhfRUZGRUNULFxyXG4gIF9nZXRFZmZlY3RNb2NrcyxcclxuICBfaXNTaW1wbHV4RWZmZWN0LFxyXG59IGZyb20gJy4vc3JjL2VmZmVjdHMuanMnXHJcbmV4cG9ydCB0eXBlIHtcclxuICBTaW1wbHV4RWZmZWN0LFxyXG4gIFNpbXBsdXhFZmZlY3REZWZpbml0aW9ucyxcclxuICBTaW1wbHV4RWZmZWN0TWFya2VyLFxyXG4gIFNpbXBsdXhFZmZlY3RNZXRhZGF0YSxcclxuICBTaW1wbHV4RWZmZWN0cyxcclxuICBfRWZmZWN0TW9ja0RlZmluaXRpb24sXHJcbn0gZnJvbSAnLi9zcmMvZWZmZWN0cy5qcydcclxuZXhwb3J0IHsgU0lNUExVWF9NT0RVTEUsIF9pc1NpbXBsdXhNb2R1bGUgfSBmcm9tICcuL3NyYy9tb2R1bGUuanMnXHJcbmV4cG9ydCB0eXBlIHtcclxuICBSZXNvbHZlZFN0YXRlQ2hhbmdlSGFuZGxlcixcclxuICBTaW1wbHV4TW9kdWxlLFxyXG4gIFNpbXBsdXhNb2R1bGVDb25maWcsXHJcbiAgU2ltcGx1eE1vZHVsZU1hcmtlcixcclxuICBTdGF0ZUNoYW5nZUhhbmRsZXIsXHJcbiAgU3RhdGVDaGFuZ2VIYW5kbGVyT3B0aW9ucyxcclxuICBTdGF0ZUNoYW5nZVN1YnNjcmlwdGlvbixcclxuICBTdWJzY3JpYmVUb1N0YXRlQ2hhbmdlcyxcclxuICBTdWJzY3JpcHRpb24sXHJcbiAgX1NpbXBsdXhNb2R1bGVJbnRlcm5hbHMsXHJcbn0gZnJvbSAnLi9zcmMvbW9kdWxlLmpzJ1xyXG5leHBvcnQge1xyXG4gIGNyZWF0ZU11dGF0aW9ucyxcclxuICBTSU1QTFVYX01VVEFUSU9OLFxyXG4gIF9pc1NpbXBsdXhNdXRhdGlvbixcclxufSBmcm9tICcuL3NyYy9tdXRhdGlvbnMuanMnXHJcbmV4cG9ydCB0eXBlIHtcclxuICBNdXRhdGlvbkRlZmluaXRpb24sXHJcbiAgTXV0YXRpb25EZWZpbml0aW9ucyxcclxuICBSZXNvbHZlZE11dGF0aW9uLFxyXG4gIFNpbXBsdXhNdXRhdGlvbixcclxuICBTaW1wbHV4TXV0YXRpb25NYXJrZXIsXHJcbiAgU2ltcGx1eE11dGF0aW9ucyxcclxufSBmcm9tICcuL3NyYy9tdXRhdGlvbnMuanMnXHJcbmV4cG9ydCB7XHJcbiAgY3JlYXRlU2VsZWN0b3JzLFxyXG4gIFNJTVBMVVhfU0VMRUNUT1IsXHJcbiAgX2lzU2ltcGx1eFNlbGVjdG9yLFxyXG59IGZyb20gJy4vc3JjL3NlbGVjdG9ycy5qcydcclxuZXhwb3J0IHR5cGUge1xyXG4gIFJlc29sdmVkU2VsZWN0b3IsXHJcbiAgU2VsZWN0b3JEZWZpbml0aW9uLFxyXG4gIFNlbGVjdG9yRGVmaW5pdGlvbnMsXHJcbiAgU2ltcGx1eFNlbGVjdG9yLFxyXG4gIFNpbXBsdXhTZWxlY3Rvck1hcmtlcixcclxuICBTaW1wbHV4U2VsZWN0b3JzLFxyXG59IGZyb20gJy4vc3JjL3NlbGVjdG9ycy5qcydcclxuZXhwb3J0IHsgX2dldFN0b3JlUHJveHkgfSBmcm9tICcuL3NyYy9zdG9yZS5qcydcclxuZXhwb3J0IHR5cGUgeyBfSW50ZXJuYWxSZWR1eFN0b3JlUHJveHksIF9TaW1wbHV4U3RvcmUgfSBmcm9tICcuL3NyYy9zdG9yZS5qcydcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvdHlwZXMuanMnXHJcblxyXG4vLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWxpbmUtbGVuZ3RoIChjYW5ub3QgbGluZSBicmVhayB0aGUgbGlua3MpXHJcblxyXG4vKipcclxuICogUmV0dXJucyB0aGUgcm9vdCByZWR1Y2VyIHRoYXQgbWFuYWdlcyBhbGwgc2ltcGx1eCBzdGF0ZS5cclxuICogVGhpcyByZWR1Y2VyIHNob3VsZCBiZSBjb21iaW5lZCB3aXRoIGFsbCB0aGUgb3RoZXIgcmVkdWNlcnNcclxuICogeW91ciBhcHBsaWNhdGlvbiBoYXMuXHJcbiAqXHJcbiAqIFRvIGxlYXJuIG1vcmUsIGhhdmUgYSBsb29rIGF0IHRoZSBbZ2V0dGluZyBzdGFydGVkIHJlY2lwZV0oaHR0cHM6Ly9naXRodWIuY29tL01yV29sZlovc2ltcGx1eC90cmVlL21hc3Rlci9yZWNpcGVzL2Jhc2ljcy9nZXR0aW5nLXN0YXJ0ZWQpLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB0aGUgc2ltcGx1eCByb290IHJlZHVjZXJcclxuICpcclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbXBsdXhSZWR1Y2VyKCk6IFJlZHVjZXIge1xyXG4gIHJldHVybiBzaW1wbHV4U3RvcmUucm9vdFJlZHVjZXJcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBhIG5ldyBzaW1wbHV4IG1vZHVsZS5cclxuICpcclxuICogQSBtb2R1bGUgaGFzIGEgdW5pcXVlIG5hbWUgKHByb3ZpZGVkIHZpYSB0aGUgYGNvbmZpZ2AgcGFyYW1ldGVyKVxyXG4gKiBhbmQgYSB0eXBlIG9mIHN0YXRlIGl0IGNvbnRhaW5zICh0aGUgaW5pdGlhbCBzdGF0ZSBpcyBwcm92aWRlZCB2aWFcclxuICogdGhlIGBjb25maWdgIHBhcmFtZXRlcikuXHJcbiAqXHJcbiAqIFRoZSByZXR1cm5lZCBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciBiYXNpYyBpbnRlcmFjdGlvbiB3aXRoXHJcbiAqIHRoZSBtb2R1bGUgYXMgd2VsbCBhcyBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByb3ZpZGVkIGJ5IHRoZVxyXG4gKiBleHRlbnNpb24gcGFja2FnZXMgeW91IGhhdmUgbG9hZGVkLlxyXG4gKlxyXG4gKiBUbyBsZWFybiBtb3JlLCBoYXZlIGEgbG9vayBhdCB0aGUgW2dldHRpbmcgc3RhcnRlZCByZWNpcGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9NcldvbGZaL3NpbXBsdXgvdHJlZS9tYXN0ZXIvcmVjaXBlcy9iYXNpY3MvZ2V0dGluZy1zdGFydGVkKS5cclxuICpcclxuICogQHBhcmFtIGNvbmZpZyAtIHRoZSBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgdGhlIG1vZHVsZVxyXG4gKlxyXG4gKiBAcmV0dXJucyB0aGUgY3JlYXRlZCBtb2R1bGVcclxuICpcclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpbXBsdXhNb2R1bGU8VFN0YXRlPihcclxuICBjb25maWc6IFNpbXBsdXhNb2R1bGVDb25maWc8VFN0YXRlPixcclxuKTogU2ltcGx1eE1vZHVsZTxUU3RhdGU+XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGEgbmV3IHNpbXBsdXggbW9kdWxlLlxyXG4gKlxyXG4gKiBBIG1vZHVsZSBoYXMgYSB1bmlxdWUgbmFtZSBhbmQgYSB0eXBlIG9mIHN0YXRlIGl0IGNvbnRhaW5zLlxyXG4gKlxyXG4gKiBUaGUgcmV0dXJuZWQgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3IgYmFzaWMgaW50ZXJhY3Rpb24gd2l0aFxyXG4gKiB0aGUgbW9kdWxlIGFzIHdlbGwgYXMgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcm92aWRlZCBieSB0aGVcclxuICogZXh0ZW5zaW9uIHBhY2thZ2VzIHlvdSBoYXZlIGxvYWRlZC5cclxuICpcclxuICogVG8gbGVhcm4gbW9yZSwgaGF2ZSBhIGxvb2sgYXQgdGhlIFtnZXR0aW5nIHN0YXJ0ZWQgcmVjaXBlXShodHRwczovL2dpdGh1Yi5jb20vTXJXb2xmWi9zaW1wbHV4L3RyZWUvbWFzdGVyL3JlY2lwZXMvYmFzaWNzL2dldHRpbmctc3RhcnRlZCkuXHJcbiAqXHJcbiAqIEBwYXJhbSBuYW1lIC0gdGhlIHVuaXF1ZSBuYW1lIG9mIHRoZSBtb2R1bGVcclxuICogQHBhcmFtIGluaXRpYWxTdGF0ZSAtIHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBtb2R1bGVcclxuICpcclxuICogQHJldHVybnMgdGhlIGNyZWF0ZWQgbW9kdWxlXHJcbiAqXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaW1wbHV4TW9kdWxlPFRTdGF0ZT4oXHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIGluaXRpYWxTdGF0ZTogVFN0YXRlLFxyXG4pOiBTaW1wbHV4TW9kdWxlPFRTdGF0ZT5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaW1wbHV4TW9kdWxlPFRTdGF0ZT4oXHJcbiAgY29uZmlnT3JOYW1lOiBTaW1wbHV4TW9kdWxlQ29uZmlnPFRTdGF0ZT4gfCBzdHJpbmcsXHJcbiAgaW5pdGlhbFN0YXRlPzogVFN0YXRlLFxyXG4pOiBTaW1wbHV4TW9kdWxlPFRTdGF0ZT4ge1xyXG4gIGlmICh0eXBlb2YgY29uZmlnT3JOYW1lID09PSAnc3RyaW5nJykge1xyXG4gICAgY29uc3QgY29uZmlnOiBTaW1wbHV4TW9kdWxlQ29uZmlnPFRTdGF0ZT4gPSB7XHJcbiAgICAgIG5hbWU6IGNvbmZpZ09yTmFtZSxcclxuICAgICAgaW5pdGlhbFN0YXRlOiBpbml0aWFsU3RhdGUhLFxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjcmVhdGVNb2R1bGUoc2ltcGx1eFN0b3JlLCBjb25maWcpXHJcbiAgfVxyXG5cclxuICByZXR1cm4gY3JlYXRlTW9kdWxlKHNpbXBsdXhTdG9yZSwgY29uZmlnT3JOYW1lKVxyXG59XHJcblxyXG4vKipcclxuICogU2V0IHRoZSByZWR1eCBzdG9yZSB0aGF0IHNpbXBsdXggc2hvdWxkIHVzZS4gSXQgaXMgcmVxdWlyZWQgdG8gY2FsbFxyXG4gKiB0aGlzIGZ1bmN0aW9uIGJlZm9yZSBhbnkgY3JlYXRlZCBzaW1wbHV4IG1vZHVsZSBjYW4gYmUgdXNlZC5cclxuICpcclxuICogVGhlIHNlY29uZCBwYXJhbWV0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIHRoYXQgbWFwcyBmcm9tIHRoZSByZWR1eCBzdG9yZSdzXHJcbiAqIHJvb3Qgc3RhdGUgdG8gdGhlIHNpbXBsdXggcm9vdCBzdGF0ZS5cclxuICpcclxuICogSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWdhaW4gd2l0aCBhIG5ldyBzdG9yZSwgc2ltcGx1eCB3aWxsIHNhZmVseVxyXG4gKiBzd2l0Y2ggb3ZlciB0byB0aGUgbmV3IHN0b3JlLiBIb3dldmVyLCBubyBzdGF0ZSBpcyB0cmFuc2ZlcnJlZCBhbmRcclxuICogdGhlcmVmb3JlIGFsbCBtb2R1bGVzIGFyZSByZXNldCB0byB0aGVpciBpbml0aWFsIHN0YXRlLiBUaGlzIGlzIHByaW1hcmlseVxyXG4gKiB1c2VmdWwgaW4gc2VydmVyLXNpZGUgcmVuZGVyaW5nIHNjZW5hcmlvcy5cclxuICpcclxuICogVG8gbGVhcm4gbW9yZSwgaGF2ZSBhIGxvb2sgYXQgdGhlIFtnZXR0aW5nIHN0YXJ0ZWQgcmVjaXBlXShodHRwczovL2dpdGh1Yi5jb20vTXJXb2xmWi9zaW1wbHV4L3RyZWUvbWFzdGVyL3JlY2lwZXMvYmFzaWNzL2dldHRpbmctc3RhcnRlZCkuXHJcbiAqXHJcbiAqIEBwYXJhbSBzdG9yZVRvVXNlIC0gdGhlIHJlZHV4IHN0b3JlIHRoYXQgc2ltcGx1eCBzaG91bGQgdXNlXHJcbiAqIEBwYXJhbSBzaW1wbHV4U3RhdGVHZXR0ZXIgLSBhIG1hcHBlciBmdW5jdGlvbiBmcm9tIHRoZSByZWR1eCByb290IHN0YXRlXHJcbiAqIHRvIHRoZSBzaW1wbHV4IHJvb3Qgc3RhdGVcclxuICpcclxuICogQHJldHVybnMgYSBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgd2hlbiBjYWxsZWQgZGlzY29ubmVjdHMgc2ltcGx1eCBmcm9tIHRoZVxyXG4gKiByZWR1eCBzdG9yZSAoYnV0IGl0IGRvZXMgbm90IHJlbW92ZSBhbnkgb2YgdGhlIHNpbXBsdXggc3RhdGUgZnJvbSB0aGUgc3RvcmUpXHJcbiAqXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRSZWR1eFN0b3JlRm9yU2ltcGx1eDxUU3RhdGU+KFxyXG4gIHN0b3JlVG9Vc2U6IFN0b3JlPFRTdGF0ZT4sXHJcbiAgc2ltcGx1eFN0YXRlR2V0dGVyOiAocm9vdFN0YXRlOiBUU3RhdGUpID0+IGFueSxcclxuKSB7XHJcbiAgcmV0dXJuIF9zZXRSZWR1eFN0b3JlKHN0b3JlVG9Vc2UsIHNpbXBsdXhTdGF0ZUdldHRlcilcclxufVxyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBa0IsTUFBTSxPQUFPLENBQUE7QUFDbkQsT0FBTyxFQUNMLFlBQVksR0FHYixNQUFNLGlCQUFpQixDQUFBO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFN0QsK0RBQStEO0FBQy9ELHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBRW5FLE9BQU8sRUFDTCxZQUFZLEVBQ1osYUFBYSxFQUNiLGNBQWMsRUFDZCxlQUFlLEVBQ2YsZ0JBQWdCLEdBQ2pCLE1BQU0sa0JBQWtCLENBQUE7QUFTekIsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBYWxFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLG9CQUFvQixDQUFBO0FBUzNCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLG9CQUFvQixDQUFBO0FBUzNCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUvQyxjQUFjLGdCQUFnQixDQUFBO0FBRTlCLGdFQUFnRTtBQUVoRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUE7QUFDakMsQ0FBQztBQWdERCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLFlBQWtELEVBQ2xELFlBQXFCO0lBRXJCLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFO1FBQ3BDLE1BQU0sTUFBTSxHQUFnQztZQUMxQyxJQUFJLEVBQUUsWUFBWTtZQUNsQixZQUFZLEVBQUUsWUFBYTtTQUM1QixDQUFBO1FBRUQsT0FBTyxZQUFZLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0tBQzFDO0lBRUQsT0FBTyxZQUFZLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFBO0FBQ2pELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsVUFBeUIsRUFDekIsa0JBQThDO0lBRTlDLE9BQU8sY0FBYyxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0FBQ3ZELENBQUMifQ==