update dist

main
Avraham Sakal 2 years ago
parent 03584761b1
commit a6640189de

18
dist/index.d.ts vendored

@ -10,7 +10,7 @@ export interface EventReactionCouplings_T<C> {
eventName: string;
reactions: Array<Reaction_T<C>>;
}
export type Reaction_T<C> = SideEffect_T<C> | ContextMutation_T<C> | Peering_T<C, unknown> | Goto_T;
export type Reaction_T<C> = SideEffect_T<C> | ContextMutation_T<C> | Peer_T<C, unknown> | Goto_T;
export interface SideEffect_T<C> {
type: 'SideEffect';
fn: SideEffectFunction_T<C>;
@ -21,12 +21,12 @@ export interface ContextMutation_T<C> {
fn: ContextMutationFunction_T<C>;
}
export type ContextMutationFunction_T<C> = (ctx: C, e: Event_T, self: Interpreter_T<C>) => C;
export interface Peering_T<C, C_Peer> {
type: 'Peering';
export interface Peer_T<C, C_Peer> {
type: 'SetPeer' | 'SetPeers' | 'AddPeers';
name: string;
peerCreationFunction: PeerCreationFunction_T<C, C_Peer>;
}
export type PeerCreationFunction_T<C, C_Peer> = (ctx: C, e: Event_T, self: Interpreter_T<C>) => Interpreter_T<C_Peer>;
export type PeerCreationFunction_T<C, C_Peer> = (ctx: C, e: Event_T, self: Interpreter_T<C>) => Interpreter_T<C_Peer> | Array<Interpreter_T<C_Peer>>;
export interface Goto_T {
type: 'Goto';
targetStateName: string;
@ -37,12 +37,14 @@ export declare const On: <C>(eventName: string, ...reactions: Reaction_T<C>[]) =
export declare const SideEffect: <C>(fn: SideEffectFunction_T<C>) => SideEffect_T<C>;
export declare const Goto: (targetStateName: string) => Goto_T;
export declare const Context: <C>(fn: ContextMutationFunction_T<C>) => ContextMutation_T<C>;
export declare const Peer: <C, C_Peer>(name: string, peerCreationFunction: PeerCreationFunction_T<C, C_Peer>) => Peering_T<C, C_Peer>;
export declare const Peer: <C, C_Peer>(name: string, peerCreationFunction: PeerCreationFunction_T<C, C_Peer>) => Peer_T<C, C_Peer>;
export declare const Peers: <C, C_Peer>(name: string, peerCreationFunction: PeerCreationFunction_T<C, C_Peer>) => Peer_T<C, C_Peer>;
export declare const AddPeers: <C, C_Peer>(name: string, peerCreationFunction: PeerCreationFunction_T<C, C_Peer>) => Peer_T<C, C_Peer>;
export interface Interpreter_T<C> {
machine: Machine_T<C>;
state: string;
context: C;
peers: Record<string, Interpreter_T<unknown>>;
peers: Record<string, Interpreter_T<unknown> | Array<Interpreter_T<unknown>>>;
peerSubscriptionIds: Map<Interpreter_T<unknown>, string>;
eventQueue: Array<Event_T>;
subscriptionsToEvents: Record<string, EventsSubscriptionCallbackFunction_T<C>>;
@ -84,4 +86,6 @@ export declare const subscribeToSettledState: typeof subscribe;
export declare function subscribeToState<C>(interpreter: Interpreter_T<C>, callback: StateSubscriptionCallbackFunction_T<C>): string;
export declare function subscribeToEvents<C>(interpreter: Interpreter_T<C>, callback: StateSubscriptionCallbackFunction_T<C>): string;
export declare function unsubscribe<C>(interpreter: Interpreter_T<C>, subscriptionId: string): void;
export declare function addPeer<C, C_Peer>(self: Interpreter_T<C>, name: string, peer: Interpreter_T<C_Peer>): void;
export declare function setPeer<C, C_Peer>(self: Interpreter_T<C>, name: string, peer: Interpreter_T<C_Peer>): void;
export declare function setPeers<C, C_Peer>(self: Interpreter_T<C>, name: string, peers: Array<Interpreter_T<C_Peer>>): void;
export declare function addPeers<C, C_Peer>(self: Interpreter_T<C>, name: string, peers: Array<Interpreter_T<C_Peer>>): void;

2
dist/index.js vendored

@ -1,2 +1,2 @@
var v=function(...t){return{states:t}},y=function(t,...e){return{name:t,eventReactionCouplings:e}},P=function(t,...e){return{eventName:t,reactions:e}},I=function(t){return{type:"SideEffect",fn:t}},M=function(t){return{type:"Goto",targetStateName:t}},h=function(t){return{type:"ContextMutation",fn:t}},F=function(t,e){return{type:"Peering",name:t,peerCreationFunction:e}};function R(t,e,n){typeof n>"u"&&(n=t.states[0].name);let o={machine:t,state:n,context:e,eventQueue:[],isTransitioning:!1,peers:{},peerSubscriptionIds:new Map,subscriptionsToEvents:{},subscriptionsToState:{},subscriptionsToSettledState:{},isPaused:!0};return o.start=()=>(f(o),o),c(o,["entry",null]),o}function f(t){t.isPaused===!0&&(t.isPaused=!1,C(t))}function k(t){t.isPaused===!1&&(t.isPaused=!0)}function l(t){return t.machine.states.find(e=>e.name===t.state)}function S(t,e){return t.eventReactionCouplings.filter(n=>n.eventName===e[0])}function c(t,e){t.eventQueue.push(e),t.isTransitioning===!1&&C(t)}var A=c;function C(t){for(t.isTransitioning=!0;t.eventQueue.length>0&&t.isPaused===!1;)g(t);t.isTransitioning=!1,Object.values(t.subscriptionsToSettledState).forEach(e=>{e(t)})}function g(t){let e=t.eventQueue.shift();if(typeof e<"u"){let n=l(t),a=S(n,e).map(i=>i.reactions).flat(),{sideEffects:r,contextMutations:T,peerings:p,goto_:u}=x(a),_=t.context;T.forEach(i=>{t.context=i.fn(t.context,e,t)}),u!==null&&(c(t,["exit",null]),t.state=u.targetStateName,Object.values(t.subscriptionsToState).forEach(i=>{i(e,t)}),c(t,["entry",null])),p.forEach(i=>{E(t,i.name,i.peerCreationFunction(t.context,e,t))}),Object.values(t.subscriptionsToEvents).forEach(i=>{i(e,t)}),r.forEach(i=>{i.fn(t.context,e,t,_)})}}function x(t){let e=[],n=[],o=[],a=null;return t.forEach(r=>{r.type==="SideEffect"?e.push(r):r.type==="ContextMutation"?n.push(r):r.type==="Peering"?o.push(r):r.type==="Goto"&&(a=r)}),{sideEffects:e,contextMutations:n,peerings:o,goto_:a}}var s=0;function d(t,e){return s++,t.subscriptionsToSettledState[s.toString()]=e,s.toString()}var m=d;function G(t,e){return s++,t.subscriptionsToState[s.toString()]=e,s.toString()}function b(t,e){return s++,t.subscriptionsToEvents[s.toString()]=e,s.toString()}function w(t,e){delete t.subscriptionsToSettledState[e.toString()],delete t.subscriptionsToState[e.toString()],delete t.subscriptionsToEvents[e.toString()]}function E(t,e,n){t.peers[e]=n,b(n,(o,a)=>{t.isTransitioning===!1&&c(t,[e+"."+o[0],o[1]])})}export{h as Context,M as Goto,R as Interpreter,v as Machine,P as On,F as Peer,I as SideEffect,y as State,E as addPeer,A as enqueue,k as pause,c as send,f as start,d as subscribe,b as subscribeToEvents,m as subscribeToSettledState,G as subscribeToState,w as unsubscribe};
var v=function(...t){return{states:t}},h=function(t,...e){return{name:t,eventReactionCouplings:e}},A=function(t,...e){return{eventName:t,reactions:e}},F=function(t){return{type:"SideEffect",fn:t}},M=function(t){return{type:"Goto",targetStateName:t}},k=function(t){return{type:"ContextMutation",fn:t}},R=function(t,e){return{type:"SetPeer",name:t,peerCreationFunction:e}},w=function(t,e){return{type:"SetPeers",name:t,peerCreationFunction:e}},G=function(t,e){return{type:"AddPeers",name:t,peerCreationFunction:e}};function O(t,e,n){typeof n>"u"&&(n=t.states[0].name);let r={machine:t,state:n,context:e,eventQueue:[],isTransitioning:!1,peers:{},peerSubscriptionIds:new Map,subscriptionsToEvents:{},subscriptionsToState:{},subscriptionsToSettledState:{},isPaused:!0};return r.start=()=>(x(r),r),c(r,["entry",null]),r}function x(t){t.isPaused===!0&&(t.isPaused=!1,T(t))}function Q(t){t.isPaused===!1&&(t.isPaused=!0)}function d(t){return t.machine.states.find(e=>e.name===t.state)}function l(t,e){return t.eventReactionCouplings.filter(n=>n.eventName===e[0])}function c(t,e){t.eventQueue.push(e),t.isTransitioning===!1&&T(t)}var m=c;function T(t){for(t.isTransitioning=!0;t.eventQueue.length>0&&t.isPaused===!1;)P(t);t.isTransitioning=!1,Object.values(t.subscriptionsToSettledState).forEach(e=>{e(t)})}function P(t){let e=t.eventQueue.shift();if(typeof e<"u"){let n=d(t),i=l(n,e).map(o=>o.reactions).flat(),{sideEffects:s,contextMutations:u,peerings:f,goto_:p}=b(i),S=t.context;u.forEach(o=>{t.context=o.fn(t.context,e,t)}),p!==null&&(c(t,["exit",null]),t.state=p.targetStateName,Object.values(t.subscriptionsToState).forEach(o=>{o(e,t)}),c(t,["entry",null])),f.forEach(o=>{o.type==="SetPeer"?y(t,o.name,o.peerCreationFunction(t.context,e,t)):o.type==="SetPeers"?E(t,o.name,o.peerCreationFunction(t.context,e,t)):o.type==="AddPeers"&&I(t,o.name,o.peerCreationFunction(t.context,e,t))}),Object.values(t.subscriptionsToEvents).forEach(o=>{o(e,t)}),s.forEach(o=>{o.fn(t.context,e,t,S)})}}function b(t){let e=[],n=[],r=[],i=null;return t.forEach(s=>{s.type==="SideEffect"?e.push(s):s.type==="ContextMutation"?n.push(s):s.type==="SetPeer"?r.push(s):s.type==="Goto"&&(i=s)}),{sideEffects:e,contextMutations:n,peerings:r,goto_:i}}var a=0;function g(t,e){return a++,t.subscriptionsToSettledState[a.toString()]=e,a.toString()}var j=g;function N(t,e){return a++,t.subscriptionsToState[a.toString()]=e,a.toString()}function C(t,e){return a++,t.subscriptionsToEvents[a.toString()]=e,a.toString()}function _(t,e){delete t.subscriptionsToSettledState[e.toString()],delete t.subscriptionsToState[e.toString()],delete t.subscriptionsToEvents[e.toString()]}function y(t,e,n){t.peers.hasOwnProperty(e)&&_(t,t.peerSubscriptionIds.get(t.peers[e])),t.peers[e]=n;let r=C(n,(i,s)=>{t.isTransitioning===!1&&c(t,[e+"."+i[0],i[1]])});t.peerSubscriptionIds.set(n,r)}function E(t,e,n){t.peers.hasOwnProperty(e)&&t.peers[e].forEach(r=>{_(t,t.peerSubscriptionIds.get(r))}),t.peers[e]=n,n.forEach(r=>{let i=C(r,(s,u)=>{t.isTransitioning===!1&&c(t,[e+"."+s[0],s[1]])});t.peerSubscriptionIds.set(r,i)})}function I(t,e,n){t.peers.hasOwnProperty(e)||(t.peers[e]=[]),t.peers[e].concat(n),n.forEach(r=>{let i=C(r,(s,u)=>{t.isTransitioning===!1&&c(t,[e+"."+s[0],s[1]])});t.peerSubscriptionIds.set(r,i)})}export{G as AddPeers,k as Context,M as Goto,O as Interpreter,v as Machine,A as On,R as Peer,w as Peers,F as SideEffect,h as State,I as addPeers,m as enqueue,Q as pause,c as send,y as setPeer,E as setPeers,x as start,g as subscribe,C as subscribeToEvents,j as subscribeToSettledState,N as subscribeToState,_ as unsubscribe};
//# sourceMappingURL=index.js.map

6
dist/index.js.map vendored

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save