@doeixd/machine 1.2.0 → 1.3.0

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 +1 @@
1
- {"version":3,"file":"minimal.d.ts","sourceRoot":"","sources":["../../src/minimal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"minimal.d.ts","sourceRoot":"","sources":["../../src/minimal.ts"],"names":[],"mappings":"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"}
@@ -80,8 +80,8 @@ export declare namespace tag {
80
80
  * @param name - The tag name
81
81
  * @example const idle = tag.factory<{ count: number }>('idle');
82
82
  */
83
- function factory<C extends object, T extends object = {}>(name: string): (props: C) => {
84
- readonly tag: string;
83
+ function factory<C extends object, T extends object = {}, K extends string = string>(name: K): (props: C) => {
84
+ readonly tag: K;
85
85
  } & C & T;
86
86
  /**
87
87
  * Creates a curried tag factory, ideal for use with the States utility.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doeixd/machine",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "files": [
5
5
  "dist",
6
6
  "src"
package/src/index.ts CHANGED
@@ -384,13 +384,15 @@ export function createMachine<C extends object, M extends BaseMachine<C>>(
384
384
 
385
385
  export function createMachine(context: any, fnsOrFactory: any): any {
386
386
  if (typeof fnsOrFactory === 'function') {
387
+ let self: any;
387
388
  let transitions: any;
388
389
  const transition = (newContext: any) => {
389
- return createMachine(newContext, transitions);
390
+ return newContext === context ? self : createMachine(newContext, transitions);
390
391
  };
391
392
  transitions = fnsOrFactory(transition);
392
393
 
393
- return attachTransitions(Object.assign({ context }, transitions), transitions);
394
+ self = attachTransitions(Object.assign({ context }, transitions), transitions);
395
+ return self;
394
396
  }
395
397
 
396
398
  // If fns is a machine (has context property), extract just the transition functions
package/src/minimal.ts CHANGED
@@ -30,9 +30,10 @@ export function machine<C extends object, T>(
30
30
  context: C,
31
31
  factory: (ctx: C, next: (context: C) => any) => T
32
32
  ): C & T {
33
- const next = (newContext: C) => machine(newContext, factory);
34
- const transitions = factory(context, next);
35
- return Object.assign({}, context, transitions) as C & T;
33
+ let self!: C & T;
34
+ const next = (newContext: C): any => (newContext === context ? self : machine(newContext, factory));
35
+ self = Object.assign({}, context, factory(context, next)) as C & T;
36
+ return self;
36
37
  }
37
38
 
38
39
  // ============================================================================
@@ -210,9 +211,16 @@ export function withChildren<
210
211
  // Re-exports from types.ts are enough
211
212
 
212
213
  export function factory<C extends object>() {
213
- return <T>(
214
- transitionFactory: (ctx: C, next: (context: C) => any) => T
215
- ) => (context: C): C & T => machine(context, transitionFactory);
214
+ return <T extends Record<string, Function>>(
215
+ transitionFactory: (ctx: C, next: (context: C) => C & T) => T
216
+ ) => {
217
+ type M = C & T;
218
+ const resultFactory = (context: C): M => {
219
+ const next = (c: C) => resultFactory(c);
220
+ return machine(context, (ctx: any) => transitionFactory(ctx, next as any)) as any;
221
+ };
222
+ return resultFactory;
223
+ };
216
224
  }
217
225
 
218
226
  /**
@@ -223,45 +231,19 @@ export type UnionOf<F extends (...args: any[]) => any> = ReturnType<F>;
223
231
  /**
224
232
  * Creates a union factory that routes to different transition factories based on a tag.
225
233
  * This is the primary way to define multi-state machines (Type-States) in the minimal API.
226
- *
227
- * @param factories - A map of tags to transition factories.
228
- * @returns A single factory function that produces the correct machine based on the input context's tag.
229
- *
230
- * @example
231
- * const auth = union({
232
- * idle: (ctx, next) => ({ login: () => next({ tag: 'loggedIn', user: 'alice' }) }),
233
- * loggedIn: (ctx, next) => ({ logout: () => next({ tag: 'idle' }) })
234
- * });
235
- *
236
- * const m = auth({ tag: 'idle' });
237
- * const next = m.login(); // Transition to loggedIn state
238
- */
239
- /**
240
- * Creates a union factory that routes to different transition factories based on a tag.
241
- * This is the primary way to define multi-state machines (Type-States) in the minimal API.
242
- *
243
- * @example
244
- * const auth = union<AuthState>()({
245
- * idle: (ctx, next) => ({ login: () => next({ tag: 'loggedIn', user: 'alice' }) }),
246
- * loggedIn: (ctx, next) => ({ logout: () => next({ tag: 'idle' }) })
247
- * });
248
- *
249
- * const m = auth({ tag: 'idle' });
250
- * const next = m.login(); // Transition to loggedIn state
251
234
  */
252
235
  export function union<C extends Tagged>() {
253
236
  return <F extends { [K in TagOf<C>]: (ctx: Extract<C, { tag: K }>, next: (c: C) => any) => any }>(
254
237
  factories: F
255
238
  ) => {
256
- type MachineMap = {
257
- [K in TagOf<C> & keyof F]: F[K] extends (ctx: any, next: any) => infer T
258
- ? Extract<C, { tag: K }> & T
259
- : never
260
- };
239
+ type MachineUnion = {
240
+ [K in TagOf<C> & keyof F]: Extract<C, { tag: K }> & ReturnType<F[K]>
241
+ }[TagOf<C> & keyof F];
261
242
 
262
- const resultFactory = <T extends C>(context: T): MachineMap[T['tag'] & keyof MachineMap] => {
243
+ const resultFactory = <T extends C>(context: T): Extract<MachineUnion, { tag: T['tag'] }> => {
263
244
  const factoryFn = (factories as any)[(context as any).tag];
264
- return machine(context as any, (ctx: any, _next: any) => factoryFn(ctx as any, resultFactory as any)) as any;
245
+ const next = (c: C) => resultFactory(c as any);
246
+ return machine(context as any, (ctx: any) => factoryFn(ctx as any, next as any)) as any;
265
247
  };
266
248
 
267
249
  return resultFactory;
package/src/types.ts CHANGED
@@ -88,7 +88,7 @@ export namespace tag {
88
88
  * @param name - The tag name
89
89
  * @example const idle = tag.factory<{ count: number }>('idle');
90
90
  */
91
- export function factory<C extends object, T extends object = {}>(name: string): (props: C) => { readonly tag: string } & C & T;
91
+ export function factory<C extends object, T extends object = {}, K extends string = string>(name: K): (props: C) => { readonly tag: K } & C & T;
92
92
  /**
93
93
  * Creates a curried tag factory, ideal for use with the States utility.
94
94
  * @example const state = tag.factory<AppState>()('idle')({ count: 0 });