@metamask/snaps-simulation
Version:
A simulation framework for MetaMask Snaps, enabling headless testing of Snaps in a controlled environment
53 lines • 1.95 kB
JavaScript
;
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