UNPKG

@metamask/snaps-simulation

Version:

A simulation framework for MetaMask Snaps, enabling headless testing of Snaps in a controlled environment

53 lines 1.95 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createStore = void 0; const toolkit_1 = require("@reduxjs/toolkit"); const redux_saga_1 = __importDefault(require("redux-saga")); const mocks_1 = require("./mocks.cjs"); const notifications_1 = require("./notifications.cjs"); const state_1 = require("./state.cjs"); const trackables_1 = require("./trackables.cjs"); const ui_1 = require("./ui.cjs"); /** * Create a Redux store. * * @param options - The simulation options. * @param options.state - The initial state for the Snap. * @param options.unencryptedState - The initial unencrypted state for the Snap. * @returns A Redux store with the default state. */ function createStore({ state, unencryptedState }) { const sagaMiddleware = (0, redux_saga_1.default)(); const store = (0, toolkit_1.configureStore)({ reducer: { mocks: mocks_1.mocksSlice.reducer, notifications: notifications_1.notificationsSlice.reducer, state: state_1.stateSlice.reducer, trackables: trackables_1.trackablesSlice.reducer, ui: ui_1.uiSlice.reducer, }, middleware: (getDefaultMiddleware) => getDefaultMiddleware({ thunk: false }).concat(sagaMiddleware), }); // Set initial state for the Snap. if (state) { store.dispatch((0, state_1.setState)({ state: JSON.stringify(state), encrypted: true, })); } if (unencryptedState) { store.dispatch((0, state_1.setState)({ state: JSON.stringify(unencryptedState), encrypted: false, })); } return { store, runSaga: sagaMiddleware.run.bind(sagaMiddleware), }; } exports.createStore = createStore; //# sourceMappingURL=store.cjs.map