@xstate/inspect
Version:
XState inspection utilities
63 lines (56 loc) • 1.93 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _tslib = require('./_virtual/_tslib.js');
var safeStringify = require('fast-safe-stringify');
var xstate = require('xstate');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var safeStringify__default = /*#__PURE__*/_interopDefaultLegacy(safeStringify);
function getLazy(value) {
return typeof value === 'function' ? value() : value;
}
function stringify(value, replacer) {
try {
return JSON.stringify(value, replacer);
}
catch (e) {
return safeStringify__default["default"](value, replacer);
}
}
function isReceiverEvent(event) {
if (!event) {
return false;
}
try {
if (typeof event === 'object' &&
'type' in event &&
event.type.startsWith('service.')) {
return true;
}
}
catch (e) {
return false;
}
return false;
}
function parseState(stateJSON) {
var state = xstate.State.create(JSON.parse(stateJSON));
delete state.history;
return state;
}
function parseReceiverEvent(event) {
switch (event.type) {
case 'service.event':
return _tslib.__assign(_tslib.__assign({}, event), { event: JSON.parse(event.event) });
case 'service.register':
return _tslib.__assign(_tslib.__assign({}, event), { machine: xstate.createMachine(JSON.parse(event.machine)), state: parseState(event.state) });
case 'service.state':
return _tslib.__assign(_tslib.__assign({}, event), { state: parseState(event.state) });
default:
return event;
}
}
exports.getLazy = getLazy;
exports.isReceiverEvent = isReceiverEvent;
exports.parseReceiverEvent = parseReceiverEvent;
exports.parseState = parseState;
exports.stringify = stringify;