UNPKG

@metamask/snaps-simulation

Version:

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

70 lines 2.69 kB
"use strict"; 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