@metamask/snaps-simulation
Version:
A simulation framework for MetaMask Snaps, enabling headless testing of Snaps in a controlled environment
70 lines • 2.69 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTraces = exports.getEvents = exports.getErrors = exports.clearTrackables = exports.endTrace = exports.startTrace = exports.trackEvent = exports.trackError = exports.trackablesSlice = void 0;
const toolkit_1 = require("@reduxjs/toolkit");
const immer_1 = require("immer");
/**
* The initial events state.
*/
const INITIAL_STATE = {
events: [],
errors: [],
traces: [],
pendingTraces: [],
};
exports.trackablesSlice = (0, toolkit_1.createSlice)({
name: 'trackables',
initialState: INITIAL_STATE,
reducers: {
trackError: (state, action) => {
state.errors.push((0, immer_1.castDraft)(action.payload));
},
trackEvent: (state, action) => {
state.events.push((0, immer_1.castDraft)(action.payload));
},
startTrace: (state, action) => {
const trace = (0, immer_1.castDraft)(action.payload);
state.pendingTraces.push(trace);
},
endTrace: (state, action) => {
const endTrace = (0, immer_1.castDraft)(action.payload);
const index = state.pendingTraces.findLastIndex((pendingTrace) => pendingTrace.id === endTrace.id &&
pendingTrace.name === endTrace.name);
if (index !== -1) {
const pendingTrace = state.pendingTraces[index];
state.pendingTraces.splice(index, 1);
state.traces.push(pendingTrace);
}
},
clearTrackables: (state) => {
state.events = [];
state.errors = [];
state.traces = [];
},
},
});
_a = exports.trackablesSlice.actions, exports.trackError = _a.trackError, exports.trackEvent = _a.trackEvent, exports.startTrace = _a.startTrace, exports.endTrace = _a.endTrace, exports.clearTrackables = _a.clearTrackables;
/**
* Get the errors from the state.
*
* @param state - The application state.
* @returns An array of errors.
*/
exports.getErrors = (0, toolkit_1.createSelector)((state) => state.trackables, ({ errors }) => errors);
/**
* Get the events from the state.
*
* @param state - The application state.
* @returns An array of events.
*/
exports.getEvents = (0, toolkit_1.createSelector)((state) => state.trackables, ({ events }) => events);
/**
* Get the traces from the state. This only includes traces that have been
* ended, not pending traces.
*
* @param state - The application state.
* @returns An array of traces.
*/
exports.getTraces = (0, toolkit_1.createSelector)((state) => state.trackables, ({ traces }) => traces);
//# sourceMappingURL=trackables.cjs.map