12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var utils = require('./utils.js');
- function stringifyFunction(fn) {
- return {
- $function: fn.toString()
- };
- }
- function getStateNodeId(stateNode) {
- return "#".concat(stateNode.id);
- } // derive config from machine
- function machineToJSON(stateNode) {
- var config = {
- type: stateNode.type,
- initial: stateNode.initial === undefined ? undefined : String(stateNode.initial),
- id: stateNode.id,
- key: stateNode.key,
- entry: stateNode.onEntry,
- exit: stateNode.onExit,
- on: utils.mapValues(stateNode.on, function (transition) {
- return transition.map(function (t) {
- return {
- target: t.target ? t.target.map(getStateNodeId) : [],
- source: getStateNodeId(t.source),
- actions: t.actions,
- cond: t.cond,
- eventType: t.eventType
- };
- });
- }),
- invoke: stateNode.invoke,
- states: {}
- };
- Object.values(stateNode.states).forEach(function (sn) {
- config.states[sn.key] = machineToJSON(sn);
- });
- return config;
- }
- function stringify(machine) {
- return JSON.stringify(machineToJSON(machine), function (_, value) {
- if (utils.isFunction(value)) {
- return {
- $function: value.toString()
- };
- }
- return value;
- });
- }
- function parse(machineString) {
- var config = JSON.parse(machineString, function (_, value) {
- if (typeof value === 'object' && '$function' in value) {
- return new Function(value.value);
- }
- return value;
- });
- return config;
- }
- function jsonify(value) {
- Object.defineProperty(value, 'toJSON', {
- value: function () {
- return utils.mapValues(value, function (subValue) {
- if (utils.isFunction(subValue)) {
- return stringifyFunction(subValue);
- } else if (typeof subValue === 'object' && !Array.isArray(subValue)) {
- // mostly for assignments
- return utils.mapValues(subValue, function (subSubValue) {
- if (utils.isFunction(subSubValue)) {
- return stringifyFunction(subSubValue);
- }
- return subSubValue;
- });
- }
- return subValue;
- });
- }
- });
- return value;
- }
- exports.jsonify = jsonify;
- exports.machineToJSON = machineToJSON;
- exports.parse = parse;
- exports.stringify = stringify;
- exports.stringifyFunction = stringifyFunction;
|