@doeixd/machine 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- var b=(t=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(t,{get:(e,r)=>(typeof require!="undefined"?require:e)[r]}):t)(function(t){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});function E(t,e){let r=t(e),i=e;for(;;){let{value:n,done:o}=r.next(i);if(o)return n;i=n}}function N(t){return function*(){return yield t}()}function v(t){return t}function R(t,e){return e.reduce((r,i)=>E(i,r),t)}function O(t){return t}function P(t,e,r=(i,n)=>{console.log(`Step ${i}:`,n.context)}){let i=t(e),n=e,o=0;for(r(o,n);;){let{value:a,done:s}=i.next(n);if(s)return console.log("Final:",a),a;n=a,o++,r(o,n)}}async function K(t,e){let r=t(e),i=e;for(;;){let{value:n,done:o}=await r.next(i);if(o)return n;i=n}}async function*$(t){return yield t}var D=Symbol("MachineMeta"),M=Symbol("__machine_runtime_meta__");function g(t,e){let r=t[M]||{},i={...r,...e};e.guards&&r.guards?i.guards=[...r.guards,...e.guards]:e.guards&&(i.guards=[...e.guards]),e.actions&&r.actions?i.actions=[...r.actions,...e.actions]:e.actions&&(i.actions=[...e.actions]),Object.defineProperty(t,M,{value:i,enumerable:!1,writable:!1,configurable:!0})}function L(t,e){return g(e,{target:t.name||t.toString()}),e}function I(t,e){return g(e,{description:t}),e}function _(t,e){return g(e,{guards:[t]}),e}function W(t,e){return g(e,{invoke:{src:t.src,onDone:t.onDone.name||t.onDone.toString(),onError:t.onError.name||t.onError.toString(),description:t.description}}),e}function G(t,e){return g(e,{actions:[t]}),e}function V(t,e){return e}import{Project as A,Node as c}from"ts-morph";function k(t){return c.isIdentifier(t)?t.getText():c.isTypeOfExpression(t)?t.getExpression().getText():"unknown"}function h(t){if(!c.isObjectLiteralExpression(t))return{};let e={};for(let r of t.getProperties())if(c.isPropertyAssignment(r)){let i=r.getName(),n=r.getInitializer();n&&(c.isStringLiteral(n)||c.isNumericLiteral(n)?e[i]=n.getLiteralValue():n.getText()==="true"||n.getText()==="false"?e[i]=n.getText()==="true":c.isIdentifier(n)?e[i]=n.getText():c.isObjectLiteralExpression(n)?e[i]=h(n):c.isArrayLiteralExpression(n)&&(e[i]=n.getElements().map(o=>c.isObjectLiteralExpression(o)?h(o):o.getText())))}return e}function z(t){if(!c.isObjectLiteralExpression(t))return{};let e={};for(let r of t.getProperties())if(c.isPropertyAssignment(r)){let i=r.getName(),n=r.getInitializer();if(!n)continue;i==="onDone"||i==="onError"?e[i]=k(n):c.isStringLiteral(n)?e[i]=n.getLiteralValue():c.isIdentifier(n)&&(e[i]=n.getText())}return e}function p(t,e=!1){if(!c.isCallExpression(t))return null;let r=t.getExpression(),i=c.isIdentifier(r)?r.getText():null;if(!i)return null;let n={},o=t.getArguments();switch(i){case"transitionTo":o[0]&&(n.target=k(o[0]));break;case"describe":if(o[0]&&c.isStringLiteral(o[0])&&(n.description=o[0].getLiteralValue()),o[1]&&c.isCallExpression(o[1])){let a=p(o[1],e);a&&Object.assign(n,a)}break;case"guarded":if(o[0]){let a=h(o[0]);Object.keys(a).length>0&&(n.guards=[a])}if(o[1]&&c.isCallExpression(o[1])){let a=p(o[1],e);a&&Object.assign(n,a)}break;case"invoke":if(o[0]){let a=z(o[0]);Object.keys(a).length>0&&(n.invoke=a)}break;case"action":if(o[0]){let a=h(o[0]);Object.keys(a).length>0&&(n.actions=[a])}if(o[1]&&c.isCallExpression(o[1])){let a=p(o[1],e);a&&Object.assign(n,a)}break;default:return null}return Object.keys(n).length>0?n:null}function B(t,e=!1){if(!c.isPropertyDeclaration(t))return e&&console.error(" ⚠️ Not a property declaration"),null;let r=t.getInitializer();if(!r)return e&&console.error(" ⚠️ No initializer"),null;if(!c.isCallExpression(r))return e&&console.error(" ⚠️ Initializer is not a call expression"),null;let i=p(r,e);return i&&e&&console.error(" ✅ Extracted metadata:",JSON.stringify(i,null,2)),i}function U(t,e=!1){let r={on:{}},i=t.getDeclarations()[0];if(!i||!c.isClassDeclaration(i))return e&&console.error(`⚠️ Warning: Could not get class declaration for ${t.getName()}`),r;let n=t.getName();e&&console.error(` Analyzing state: ${n}`);for(let o of i.getInstanceMembers()){let a=o.getName();e&&console.error(` Checking member: ${a}`);let s=B(o,e);if(!s)continue;e&&console.error(` Found transition: ${a}`);let{invoke:u,actions:l,guards:f,...x}=s;if(u&&(r.invoke||(r.invoke=[]),r.invoke.push({src:u.src,onDone:{target:u.onDone},onError:{target:u.onError},description:u.description}),e&&console.error(` → Invoke: ${u.src}`)),x.target){let d={target:x.target};x.description&&(d.description=x.description),f&&(d.cond=f.map(C=>C.name).join(" && "),e&&console.error(` → Guard: ${d.cond}`)),l&&l.length>0&&(d.actions=l.map(C=>C.name),e&&console.error(` → Actions: ${d.actions.join(", ")}`)),r.on[a]=d,e&&console.error(` → Target: ${x.target}`)}}return r}function m(t,e,r=!1){r&&(console.error(`
1
+ var b=(t=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(t,{get:(e,r)=>(typeof require!="undefined"?require:e)[r]}):t)(function(t){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});function E(t,e){let r=t(e),i=e;for(;;){let{value:n,done:o}=r.next(i);if(o)return n;i=n}}function N(t){return function*(){return yield t}()}function v(t){return t}function R(t,e){return e.reduce((r,i)=>E(i,r),t)}function O(t){return t}function P(t,e,r=(i,n)=>{console.log(`Step ${i}:`,n.context)}){let i=t(e),n=e,o=0;for(r(o,n);;){let{value:a,done:s}=i.next(n);if(s)return console.log("Final:",a),a;n=a,o++,r(o,n)}}async function K(t,e){let r=t(e),i=e;for(;;){let{value:n,done:o}=await r.next(i);if(o)return n;i=n}}async function*$(t){return yield t}var D=Symbol("MachineMeta"),M=Symbol("__machine_runtime_meta__");function g(t,e){let r=t[M]||{},i={...r,...e};e.guards&&r.guards?i.guards=[...e.guards,...r.guards]:e.guards&&(i.guards=[...e.guards]),e.actions&&r.actions?i.actions=[...e.actions,...r.actions]:e.actions&&(i.actions=[...e.actions]),Object.defineProperty(t,M,{value:i,enumerable:!1,writable:!1,configurable:!0})}function L(t,e){return g(e,{target:t.name||t.toString()}),e}function I(t,e){return g(e,{description:t}),e}function _(t,e){return g(e,{guards:[t]}),e}function W(t,e){return g(e,{invoke:{src:t.src,onDone:t.onDone.name||t.onDone.toString(),onError:t.onError.name||t.onError.toString(),description:t.description}}),e}function G(t,e){return g(e,{actions:[t]}),e}function V(t,e){return e}import{Project as A,Node as c}from"ts-morph";function k(t){return c.isIdentifier(t)?t.getText():c.isTypeOfExpression(t)?t.getExpression().getText():"unknown"}function h(t){if(!c.isObjectLiteralExpression(t))return{};let e={};for(let r of t.getProperties())if(c.isPropertyAssignment(r)){let i=r.getName(),n=r.getInitializer();n&&(c.isStringLiteral(n)||c.isNumericLiteral(n)?e[i]=n.getLiteralValue():n.getText()==="true"||n.getText()==="false"?e[i]=n.getText()==="true":c.isIdentifier(n)?e[i]=n.getText():c.isObjectLiteralExpression(n)?e[i]=h(n):c.isArrayLiteralExpression(n)&&(e[i]=n.getElements().map(o=>c.isObjectLiteralExpression(o)?h(o):o.getText())))}return e}function z(t){if(!c.isObjectLiteralExpression(t))return{};let e={};for(let r of t.getProperties())if(c.isPropertyAssignment(r)){let i=r.getName(),n=r.getInitializer();if(!n)continue;i==="onDone"||i==="onError"?e[i]=k(n):c.isStringLiteral(n)?e[i]=n.getLiteralValue():c.isIdentifier(n)&&(e[i]=n.getText())}return e}function p(t,e=!1){if(!c.isCallExpression(t))return null;let r=t.getExpression(),i=c.isIdentifier(r)?r.getText():null;if(!i)return null;let n={},o=t.getArguments();switch(i){case"transitionTo":o[0]&&(n.target=k(o[0]));break;case"describe":if(o[0]&&c.isStringLiteral(o[0])&&(n.description=o[0].getLiteralValue()),o[1]&&c.isCallExpression(o[1])){let a=p(o[1],e);a&&Object.assign(n,a)}break;case"guarded":if(o[0]){let a=h(o[0]);Object.keys(a).length>0&&(n.guards=[a])}if(o[1]&&c.isCallExpression(o[1])){let a=p(o[1],e);a&&Object.assign(n,a)}break;case"invoke":if(o[0]){let a=z(o[0]);Object.keys(a).length>0&&(n.invoke=a)}break;case"action":if(o[0]){let a=h(o[0]);Object.keys(a).length>0&&(n.actions=[a])}if(o[1]&&c.isCallExpression(o[1])){let a=p(o[1],e);a&&Object.assign(n,a)}break;default:return null}return Object.keys(n).length>0?n:null}function B(t,e=!1){if(!c.isPropertyDeclaration(t))return e&&console.error(" ⚠️ Not a property declaration"),null;let r=t.getInitializer();if(!r)return e&&console.error(" ⚠️ No initializer"),null;if(!c.isCallExpression(r))return e&&console.error(" ⚠️ Initializer is not a call expression"),null;let i=p(r,e);return i&&e&&console.error(" ✅ Extracted metadata:",JSON.stringify(i,null,2)),i}function U(t,e=!1){let r={on:{}},i=t.getDeclarations()[0];if(!i||!c.isClassDeclaration(i))return e&&console.error(`⚠️ Warning: Could not get class declaration for ${t.getName()}`),r;let n=t.getName();e&&console.error(` Analyzing state: ${n}`);for(let o of i.getInstanceMembers()){let a=o.getName();e&&console.error(` Checking member: ${a}`);let s=B(o,e);if(!s)continue;e&&console.error(` Found transition: ${a}`);let{invoke:u,actions:l,guards:f,...x}=s;if(u&&(r.invoke||(r.invoke=[]),r.invoke.push({src:u.src,onDone:{target:u.onDone},onError:{target:u.onError},description:u.description}),e&&console.error(` → Invoke: ${u.src}`)),x.target){let d={target:x.target};x.description&&(d.description=x.description),f&&(d.cond=f.map(C=>C.name).join(" && "),e&&console.error(` → Guard: ${d.cond}`)),l&&l.length>0&&(d.actions=l.map(C=>C.name),e&&console.error(` → Actions: ${d.actions.join(", ")}`)),r.on[a]=d,e&&console.error(` → Target: ${x.target}`)}}return r}function m(t,e,r=!1){r&&(console.error(`
2
2
  🔍 Analyzing machine: ${t.id}`),console.error(` Source: ${t.input}`));let i=e.getSourceFile(t.input);if(!i)throw new Error(`Source file not found: ${t.input}`);let n={id:t.id,initial:t.initialState,states:{}};t.description&&(n.description=t.description);for(let o of t.classes){let a=i.getClass(o);if(!a){console.warn(`⚠️ Warning: Class '${o}' not found in '${t.input}'. Skipping.`);continue}let s=a.getSymbolOrThrow(),u=U(s,r);n.states[o]=u}return r&&console.error(` ✅ Extracted ${t.classes.length} states`),n}function q(t){var n;let e=(n=t.verbose)!=null?n:!1;e&&(console.error(`
3
3
  📊 Starting statechart extraction`),console.error(` Machines to extract: ${t.machines.length}`));let r=new A;r.addSourceFilesAtPaths("src/**/*.ts"),r.addSourceFilesAtPaths("examples/**/*.ts");let i=[];for(let o of t.machines)try{let a=m(o,r,e);i.push(a)}catch(a){console.error(`❌ Error extracting machine '${o.id}':`,a),e||console.error(" Run with --verbose for more details")}return e&&console.error(`
4
4
  ✅ Extraction complete: ${i.length}/${t.machines.length} machines extracted`),i}function S(){let t={input:"examples/authMachine.ts",classes:["LoggedOutMachine","LoggingInMachine","LoggedInMachine","SessionExpiredMachine","ErrorMachine"],id:"auth",initialState:"LoggedOutMachine",description:"Authentication state machine"};console.error("🔍 Using legacy generateChart function"),console.error(`⚠️ Consider using extractMachines() with a config file instead
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/primitives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH;;;GAGG;AACH,eAAO,MAAM,QAAQ,eAAwB,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,YAAY,eAAqC,CAAC;AAE/D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,MAAM,EAAE,gBAAgB,CAAC;IACzB,iDAAiD;IACjD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,oEAAoE;IACpE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAClB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACjC,CAAC,SAAS,cAAc,IACtB,CAAC,GAAG;IAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAM1B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,MAAM,CAAC,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AA+CD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,CAAC,SAAS,gBAAgB,EAC1B,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAEjC,OAAO,EAAE,CAAC,EACV,cAAc,EAAE,CAAC,GAChB,QAAQ,CAAC,CAAC,EAAE;IAAE,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,CAO5B;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACjC,CAAC,SAAS,cAAc,EAExB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GACzB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAO1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CACrB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACjC,CAAC,SAAS,cAAc,EAExB,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GACzB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,OAAO,KAAK,CAAC,CAAA;CAAE,CAAC,CAQ7C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CACpB,CAAC,SAAS,gBAAgB,EAC1B,CAAC,SAAS,gBAAgB,EAC1B,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAEjC,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EACrE,cAAc,EAAE,CAAC,GAChB,QAAQ,CAAC,CAAC,EAAE;IAAE,MAAM,EAAE,OAAO,OAAO,CAAA;CAAE,CAAC,CAYzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CACpB,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACjC,CAAC,SAAS,cAAc,EAExB,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GACzB,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;IAAE,OAAO,EAAE,CAAC,OAAO,MAAM,CAAC,CAAA;CAAE,CAAC,CAQ/C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAIvE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doeixd/machine",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "files": [
5
5
  "dist",
6
6
  "src"
package/src/primitives.ts CHANGED
@@ -130,14 +130,15 @@ function attachRuntimeMeta(fn: any, metadata: Partial<RuntimeTransitionMeta>): v
130
130
  const merged: any = { ...existing, ...metadata };
131
131
 
132
132
  // Deep merge for array properties
133
+ // Prepend new items to preserve order (outer wraps first in call stack)
133
134
  if (metadata.guards && existing.guards) {
134
- merged.guards = [...existing.guards, ...metadata.guards];
135
+ merged.guards = [...metadata.guards, ...existing.guards];
135
136
  } else if (metadata.guards) {
136
137
  merged.guards = [...metadata.guards];
137
138
  }
138
139
 
139
140
  if (metadata.actions && existing.actions) {
140
- merged.actions = [...existing.actions, ...metadata.actions];
141
+ merged.actions = [...metadata.actions, ...existing.actions];
141
142
  } else if (metadata.actions) {
142
143
  merged.actions = [...metadata.actions];
143
144
  }
package/src/solid.ts CHANGED
@@ -22,7 +22,7 @@ import {
22
22
  type Accessor,
23
23
  type Setter
24
24
  } from 'solid-js';
25
- import { createStore, type SetStoreFunction, type Store, produce } from 'solid-js/store';
25
+ import { createStore, type SetStoreFunction, type Store } from 'solid-js/store';
26
26
  import { Machine, AsyncMachine, Event, Context, runMachine as runMachineCore } from './index';
27
27
 
28
28
  // =============================================================================
@@ -86,12 +86,12 @@ export function createMachine<M extends Machine<any>>(
86
86
  const { context, ...transitions } = machine();
87
87
 
88
88
  const handlers = Object.fromEntries(
89
- Object.entries(transitions).map(([key, fn]) => [
89
+ Object.entries(transitions).map(([key]) => [
90
90
  key,
91
91
  (...args: any[]) => {
92
92
  const currentMachine = machine();
93
93
  const nextMachine = (currentMachine as any)[key](...args);
94
- setMachine(() => nextMachine);
94
+ setMachine(nextMachine);
95
95
  return nextMachine;
96
96
  }
97
97
  ])
@@ -153,11 +153,11 @@ export function createMachineStore<M extends Machine<any>>(
153
153
  const { context, ...transitions } = initial;
154
154
 
155
155
  const handlers = Object.fromEntries(
156
- Object.entries(transitions).map(([key, fn]) => [
156
+ Object.entries(transitions).map(([key]) => [
157
157
  key,
158
158
  (...args: any[]) => {
159
159
  const nextMachine = (store as any)[key](...args);
160
- setStore(() => nextMachine);
160
+ setStore(nextMachine);
161
161
  return nextMachine;
162
162
  }
163
163
  ])
@@ -289,12 +289,12 @@ export function createMachineContext<C extends object, M extends Machine<C>>(
289
289
  const { context: _, ...transitions } = currentMachine;
290
290
 
291
291
  const handlers = Object.fromEntries(
292
- Object.entries(transitions).map(([key, fn]) => [
292
+ Object.entries(transitions).map(([key]) => [
293
293
  key,
294
294
  (...args: any[]) => {
295
295
  const nextMachine = (currentMachine as any)[key](...args);
296
296
  currentMachine = nextMachine;
297
- setContext(() => nextMachine.context);
297
+ setContext(nextMachine.context);
298
298
  return nextMachine;
299
299
  }
300
300
  ])
@@ -383,7 +383,7 @@ export function batchTransitions<M extends Machine<any>>(
383
383
 
384
384
  return batch(() => {
385
385
  const finalMachine = transitions.reduce((m, transition) => transition(m), machine);
386
- setMachine(finalMachine);
386
+ setMachine(() => finalMachine);
387
387
  return finalMachine;
388
388
  });
389
389
  }