@doeixd/machine 1.0.1 → 1.0.3
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.
- package/dist/cjs/development/core.js +50 -23
- package/dist/cjs/development/core.js.map +3 -3
- package/dist/cjs/development/index.js +62 -24
- package/dist/cjs/development/index.js.map +3 -3
- package/dist/cjs/development/react.js +50 -23
- package/dist/cjs/development/react.js.map +3 -3
- package/dist/cjs/production/core.js +1 -1
- package/dist/cjs/production/index.js +2 -2
- package/dist/cjs/production/react.js +1 -1
- package/dist/esm/development/core.js +50 -23
- package/dist/esm/development/core.js.map +3 -3
- package/dist/esm/development/index.js +62 -24
- package/dist/esm/development/index.js.map +3 -3
- package/dist/esm/development/react.js +50 -23
- package/dist/esm/development/react.js.map +3 -3
- package/dist/esm/production/core.js +1 -1
- package/dist/esm/production/index.js +2 -2
- package/dist/esm/production/react.js +1 -1
- package/dist/types/base.d.ts +56 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/context-bound.d.ts.map +1 -1
- package/dist/types/higher-order.d.ts +2 -1
- package/dist/types/higher-order.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -54
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/internal-transitions.d.ts +5 -0
- package/dist/types/internal-transitions.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/base.ts +62 -0
- package/src/context-bound.ts +14 -1
- package/src/higher-order.ts +2 -2
- package/src/index.ts +21 -70
- package/src/internal-transitions.ts +32 -0
package/dist/types/index.d.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file A tiny, immutable, and type-safe state machine library for TypeScript.
|
|
3
|
-
* @author doeixd
|
|
4
|
-
* @version 1.0.0
|
|
5
|
-
*/
|
|
6
1
|
/**
|
|
7
2
|
* A utility type that represents either a value of type T or a Promise that resolves to T.
|
|
8
3
|
* @template T - The value type.
|
|
@@ -557,55 +552,7 @@ export declare function runMachine<M extends AsyncMachine<any>>(initial: M, onCh
|
|
|
557
552
|
/** Stops any pending async operation and cleans up resources. */
|
|
558
553
|
stop: () => void;
|
|
559
554
|
};
|
|
560
|
-
|
|
561
|
-
* An optional base class for creating machines using an Object-Oriented style.
|
|
562
|
-
*
|
|
563
|
-
* This class provides the fundamental structure required by the library: a `context`
|
|
564
|
-
* property to hold the state. By extending `MachineBase`, you get a clear and
|
|
565
|
-
* type-safe starting point for defining states and transitions as classes and methods.
|
|
566
|
-
*
|
|
567
|
-
* Transitions should be implemented as methods that return a new instance of a
|
|
568
|
-
* state machine class (often `new MyClass(...)` or by using a `createMachineBuilder`).
|
|
569
|
-
* The `context` is marked `readonly` to enforce the immutable update pattern.
|
|
570
|
-
*
|
|
571
|
-
* @template C - The context object type that defines the state for this machine.
|
|
572
|
-
*
|
|
573
|
-
* @example
|
|
574
|
-
* // Define a simple counter state
|
|
575
|
-
* class Counter extends MachineBase<{ readonly count: number }> {
|
|
576
|
-
* constructor(count = 0) {
|
|
577
|
-
* super({ count });
|
|
578
|
-
* }
|
|
579
|
-
*
|
|
580
|
-
* increment(): Counter {
|
|
581
|
-
* // Return a new instance for the next state
|
|
582
|
-
* return new Counter(this.context.count + 1);
|
|
583
|
-
* }
|
|
584
|
-
*
|
|
585
|
-
* add(n: number): Counter {
|
|
586
|
-
* return new Counter(this.context.count + n);
|
|
587
|
-
* }
|
|
588
|
-
* }
|
|
589
|
-
*
|
|
590
|
-
* const machine = new Counter(5);
|
|
591
|
-
* const nextState = machine.increment(); // Returns a new Counter instance
|
|
592
|
-
*
|
|
593
|
-
* console.log(machine.context.count); // 5 (original is unchanged)
|
|
594
|
-
* console.log(nextState.context.count); // 6 (new state)
|
|
595
|
-
*/
|
|
596
|
-
export declare class MachineBase<C extends object> {
|
|
597
|
-
/**
|
|
598
|
-
* The immutable state of the machine.
|
|
599
|
-
* To change the state, a transition method must return a new machine instance
|
|
600
|
-
* with a new context object.
|
|
601
|
-
*/
|
|
602
|
-
readonly context: C;
|
|
603
|
-
/**
|
|
604
|
-
* Initializes a new machine instance with its starting context.
|
|
605
|
-
* @param context - The initial state of the machine.
|
|
606
|
-
*/
|
|
607
|
-
constructor(context: C);
|
|
608
|
-
}
|
|
555
|
+
export { MachineBase } from './base';
|
|
609
556
|
/**
|
|
610
557
|
* Applies an update function to a machine's context, returning a new machine.
|
|
611
558
|
* This is a simpler alternative to `setContext` when you always use an updater function.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type TransitionMap = Record<string, (...args: any[]) => any>;
|
|
2
|
+
export declare function attachTransitions<T extends object>(machine: T, transitions: TransitionMap): T;
|
|
3
|
+
export declare function getStoredTransitions(machine: any): TransitionMap | undefined;
|
|
4
|
+
export declare function snapshotOwnTransitions(source: any): TransitionMap;
|
|
5
|
+
//# sourceMappingURL=internal-transitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-transitions.d.ts","sourceRoot":"","sources":["../../src/internal-transitions.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,OAAO,EAAE,CAAC,EACV,WAAW,EAAE,aAAa,GACzB,CAAC,CAOH;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,GAAG,GAAG,aAAa,GAAG,SAAS,CAK5E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,CAQjE"}
|
package/package.json
CHANGED
package/src/base.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Base class for machine implementations
|
|
3
|
+
* @description This file contains the MachineBase class, which is the foundation
|
|
4
|
+
* for creating state machines using an Object-Oriented style. This is separated
|
|
5
|
+
* to avoid circular dependencies with higher-order abstractions.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* An optional base class for creating machines using an Object-Oriented style.
|
|
10
|
+
*
|
|
11
|
+
* This class provides the fundamental structure required by the library: a `context`
|
|
12
|
+
* property to hold the state. By extending `MachineBase`, you get a clear and
|
|
13
|
+
* type-safe starting point for defining states and transitions as classes and methods.
|
|
14
|
+
*
|
|
15
|
+
* Transitions should be implemented as methods that return a new instance of a
|
|
16
|
+
* state machine class (often `new MyClass(...)` or by using a `createMachineBuilder`).
|
|
17
|
+
* The `context` is marked `readonly` to enforce the immutable update pattern.
|
|
18
|
+
*
|
|
19
|
+
* @template C - The context object type that defines the state for this machine.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // Define a simple counter state
|
|
23
|
+
* class Counter extends MachineBase<{ readonly count: number }> {
|
|
24
|
+
* constructor(count = 0) {
|
|
25
|
+
* super({ count });
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* increment(): Counter {
|
|
29
|
+
* // Return a new instance for the next state
|
|
30
|
+
* return new Counter(this.context.count + 1);
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* add(n: number): Counter {
|
|
34
|
+
* return new Counter(this.context.count + n);
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* const machine = new Counter(5);
|
|
39
|
+
* const nextState = machine.increment(); // Returns a new Counter instance
|
|
40
|
+
*
|
|
41
|
+
* console.log(machine.context.count); // 5 (original is unchanged)
|
|
42
|
+
* console.log(nextState.context.count); // 6 (new state)
|
|
43
|
+
*/
|
|
44
|
+
export class MachineBase<C extends object> {
|
|
45
|
+
/**
|
|
46
|
+
* The immutable state of the machine.
|
|
47
|
+
* To change the state, a transition method must return a new machine instance
|
|
48
|
+
* with a new context object.
|
|
49
|
+
*/
|
|
50
|
+
public readonly context: C;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Initializes a new machine instance with its starting context.
|
|
54
|
+
* @param context - The initial state of the machine.
|
|
55
|
+
*/
|
|
56
|
+
constructor(context: C) {
|
|
57
|
+
this.context = context;
|
|
58
|
+
// Object.freeze can provide additional runtime safety against accidental mutation,
|
|
59
|
+
// though it comes with a minor performance cost. It's a good practice for ensuring purity.
|
|
60
|
+
// Object.freeze(this.context);
|
|
61
|
+
}
|
|
62
|
+
}
|
package/src/context-bound.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Machine, Transitions } from './index';
|
|
2
|
+
import { attachTransitions } from './internal-transitions';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Creates a machine where transformers receive context as `this` and return new contexts.
|
|
@@ -65,7 +66,19 @@ export function createContextBoundMachine<
|
|
|
65
66
|
])
|
|
66
67
|
);
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
Object.values(boundTransitions).forEach((fn) => {
|
|
70
|
+
if (typeof fn === 'function') {
|
|
71
|
+
Object.defineProperty(fn, '__contextBound', {
|
|
72
|
+
value: true,
|
|
73
|
+
enumerable: false,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
return attachTransitions(
|
|
79
|
+
Object.assign({ context: initialContext }, boundTransitions),
|
|
80
|
+
boundTransitions as any
|
|
81
|
+
) as any;
|
|
69
82
|
}
|
|
70
83
|
|
|
71
84
|
/**
|
package/src/higher-order.ts
CHANGED
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
* Think of this as the "standard library" of common machine patterns.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
import { MachineBase } from './base'; // Import from base to avoid circular dependency
|
|
12
13
|
import {
|
|
13
|
-
MachineBase,
|
|
14
14
|
Machine,
|
|
15
15
|
Transitions,
|
|
16
16
|
// AsyncMachine,
|
|
17
17
|
setContext,
|
|
18
18
|
Context,
|
|
19
19
|
// MaybePromise,
|
|
20
|
-
} from './index';
|
|
20
|
+
} from './index';
|
|
21
21
|
|
|
22
22
|
// =============================================================================
|
|
23
23
|
// SECTION 1: CUSTOM PRIMITIVES FOR COMPOSITION
|
package/src/index.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @author doeixd
|
|
4
4
|
* @version 1.0.0
|
|
5
5
|
*/
|
|
6
|
+
import { attachTransitions, getStoredTransitions, snapshotOwnTransitions } from './internal-transitions';
|
|
6
7
|
|
|
7
8
|
// =============================================================================
|
|
8
9
|
// SECTION: CORE TYPES & INTERFACES
|
|
@@ -389,16 +390,17 @@ export function createMachine(context: any, fnsOrFactory: any): any {
|
|
|
389
390
|
};
|
|
390
391
|
transitions = fnsOrFactory(transition);
|
|
391
392
|
|
|
392
|
-
return Object.assign({ context }, transitions);
|
|
393
|
+
return attachTransitions(Object.assign({ context }, transitions), transitions);
|
|
393
394
|
}
|
|
394
395
|
|
|
395
396
|
// If fns is a machine (has context property), extract just the transition functions
|
|
396
|
-
const
|
|
397
|
-
|
|
398
|
-
|
|
397
|
+
const stored = getStoredTransitions(fnsOrFactory);
|
|
398
|
+
const transitions = stored ?? ('context' in fnsOrFactory
|
|
399
|
+
? snapshotOwnTransitions(fnsOrFactory)
|
|
400
|
+
: fnsOrFactory);
|
|
399
401
|
|
|
400
402
|
const machine = Object.assign({ context }, transitions);
|
|
401
|
-
return machine;
|
|
403
|
+
return attachTransitions(machine, transitions);
|
|
402
404
|
}
|
|
403
405
|
|
|
404
406
|
/**
|
|
@@ -453,16 +455,17 @@ export function createAsyncMachine(context: any, fnsOrFactory: any): any {
|
|
|
453
455
|
};
|
|
454
456
|
transitions = fnsOrFactory(transition);
|
|
455
457
|
|
|
456
|
-
return Object.assign({ context }, transitions);
|
|
458
|
+
return attachTransitions(Object.assign({ context }, transitions), transitions);
|
|
457
459
|
}
|
|
458
460
|
|
|
459
461
|
// If fns is a machine (has context property), extract just the transition functions
|
|
460
|
-
const
|
|
461
|
-
|
|
462
|
-
|
|
462
|
+
const stored = getStoredTransitions(fnsOrFactory);
|
|
463
|
+
const transitions = stored ?? ('context' in fnsOrFactory
|
|
464
|
+
? snapshotOwnTransitions(fnsOrFactory)
|
|
465
|
+
: fnsOrFactory);
|
|
463
466
|
|
|
464
467
|
const machine = Object.assign({ context }, transitions);
|
|
465
|
-
return machine;
|
|
468
|
+
return attachTransitions(machine, transitions);
|
|
466
469
|
}
|
|
467
470
|
|
|
468
471
|
/**
|
|
@@ -527,10 +530,12 @@ export function setContext<M extends Machine<any>>(
|
|
|
527
530
|
machine: M,
|
|
528
531
|
newContextOrFn: Context<M> | ((ctx: Readonly<Context<M>>) => Context<M>)
|
|
529
532
|
): M {
|
|
530
|
-
const
|
|
533
|
+
const currentContext = machine.context;
|
|
534
|
+
const transitions =
|
|
535
|
+
getStoredTransitions(machine) ?? snapshotOwnTransitions(machine);
|
|
531
536
|
const newContext =
|
|
532
537
|
typeof newContextOrFn === "function"
|
|
533
|
-
? (newContextOrFn as (ctx: Readonly<Context<M>>) => Context<M>)(
|
|
538
|
+
? (newContextOrFn as (ctx: Readonly<Context<M>>) => Context<M>)(currentContext)
|
|
534
539
|
: newContextOrFn;
|
|
535
540
|
|
|
536
541
|
return createMachine(newContext, transitions as any) as M;
|
|
@@ -865,61 +870,8 @@ export function runMachine<M extends AsyncMachine<any>>(
|
|
|
865
870
|
};
|
|
866
871
|
}
|
|
867
872
|
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
*
|
|
871
|
-
* This class provides the fundamental structure required by the library: a `context`
|
|
872
|
-
* property to hold the state. By extending `MachineBase`, you get a clear and
|
|
873
|
-
* type-safe starting point for defining states and transitions as classes and methods.
|
|
874
|
-
*
|
|
875
|
-
* Transitions should be implemented as methods that return a new instance of a
|
|
876
|
-
* state machine class (often `new MyClass(...)` or by using a `createMachineBuilder`).
|
|
877
|
-
* The `context` is marked `readonly` to enforce the immutable update pattern.
|
|
878
|
-
*
|
|
879
|
-
* @template C - The context object type that defines the state for this machine.
|
|
880
|
-
*
|
|
881
|
-
* @example
|
|
882
|
-
* // Define a simple counter state
|
|
883
|
-
* class Counter extends MachineBase<{ readonly count: number }> {
|
|
884
|
-
* constructor(count = 0) {
|
|
885
|
-
* super({ count });
|
|
886
|
-
* }
|
|
887
|
-
*
|
|
888
|
-
* increment(): Counter {
|
|
889
|
-
* // Return a new instance for the next state
|
|
890
|
-
* return new Counter(this.context.count + 1);
|
|
891
|
-
* }
|
|
892
|
-
*
|
|
893
|
-
* add(n: number): Counter {
|
|
894
|
-
* return new Counter(this.context.count + n);
|
|
895
|
-
* }
|
|
896
|
-
* }
|
|
897
|
-
*
|
|
898
|
-
* const machine = new Counter(5);
|
|
899
|
-
* const nextState = machine.increment(); // Returns a new Counter instance
|
|
900
|
-
*
|
|
901
|
-
* console.log(machine.context.count); // 5 (original is unchanged)
|
|
902
|
-
* console.log(nextState.context.count); // 6 (new state)
|
|
903
|
-
*/
|
|
904
|
-
export class MachineBase<C extends object> {
|
|
905
|
-
/**
|
|
906
|
-
* The immutable state of the machine.
|
|
907
|
-
* To change the state, a transition method must return a new machine instance
|
|
908
|
-
* with a new context object.
|
|
909
|
-
*/
|
|
910
|
-
public readonly context: C;
|
|
911
|
-
|
|
912
|
-
/**
|
|
913
|
-
* Initializes a new machine instance with its starting context.
|
|
914
|
-
* @param context - The initial state of the machine.
|
|
915
|
-
*/
|
|
916
|
-
constructor(context: C) {
|
|
917
|
-
this.context = context;
|
|
918
|
-
// Object.freeze can provide additional runtime safety against accidental mutation,
|
|
919
|
-
// though it comes with a minor performance cost. It's a good practice for ensuring purity.
|
|
920
|
-
// Object.freeze(this.context);
|
|
921
|
-
}
|
|
922
|
-
}
|
|
873
|
+
// Export MachineBase from separate file to avoid circular dependency issues
|
|
874
|
+
export { MachineBase } from './base';
|
|
923
875
|
|
|
924
876
|
|
|
925
877
|
/**
|
|
@@ -938,8 +890,7 @@ export function next<C extends object>(
|
|
|
938
890
|
m: Machine<C>,
|
|
939
891
|
update: (ctx: Readonly<C>) => C
|
|
940
892
|
): Machine<C> {
|
|
941
|
-
|
|
942
|
-
return createMachine(update(context), transitions as any) as Machine<C>;
|
|
893
|
+
return setContext(m, (ctx) => update(ctx)) as Machine<C>;
|
|
943
894
|
}
|
|
944
895
|
|
|
945
896
|
/**
|
|
@@ -1127,4 +1078,4 @@ export {
|
|
|
1127
1078
|
callWithContext,
|
|
1128
1079
|
isContextBound,
|
|
1129
1080
|
type ContextBoundMachine
|
|
1130
|
-
} from './context-bound';
|
|
1081
|
+
} from './context-bound';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const TRANSITIONS_SYMBOL = Symbol.for("__machine_transitions__");
|
|
2
|
+
|
|
3
|
+
export type TransitionMap = Record<string, (...args: any[]) => any>;
|
|
4
|
+
|
|
5
|
+
export function attachTransitions<T extends object>(
|
|
6
|
+
machine: T,
|
|
7
|
+
transitions: TransitionMap
|
|
8
|
+
): T {
|
|
9
|
+
Object.defineProperty(machine, TRANSITIONS_SYMBOL, {
|
|
10
|
+
value: transitions,
|
|
11
|
+
enumerable: false,
|
|
12
|
+
configurable: false,
|
|
13
|
+
});
|
|
14
|
+
return machine;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function getStoredTransitions(machine: any): TransitionMap | undefined {
|
|
18
|
+
if (!machine || typeof machine !== "object") {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return machine[TRANSITIONS_SYMBOL];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function snapshotOwnTransitions(source: any): TransitionMap {
|
|
25
|
+
if (!source || typeof source !== "object") {
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
const entries = Object.entries(source).filter(
|
|
29
|
+
([key, value]) => key !== "context" && typeof value === "function"
|
|
30
|
+
);
|
|
31
|
+
return Object.fromEntries(entries) as TransitionMap;
|
|
32
|
+
}
|