xstate 6.0.0-alpha.39 → 6.0.0-alpha.40
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/{StateMachine-94084ac7.cjs.js → StateMachine-1464d5e4.cjs.js} +132 -0
- package/dist/{StateMachine-2f47d890.esm.js → StateMachine-6082c3cf.esm.js} +132 -0
- package/dist/{StateMachine-144215d2.development.cjs.js → StateMachine-76ee1d6e.development.cjs.js} +132 -0
- package/dist/{StateMachine-da29dd2e.development.esm.js → StateMachine-f8c7feca.development.esm.js} +132 -0
- package/dist/declarations/src/StateMachine.d.ts +9 -1
- package/dist/declarations/src/createActor.d.ts +2 -2
- package/dist/declarations/src/index.d.ts +1 -1
- package/dist/declarations/src/machineVersion.types.d.ts +37 -0
- package/dist/declarations/src/machineVersions.d.ts +58 -28
- package/dist/declarations/src/types.d.ts +19 -3
- package/dist/xstate-actors.umd.min.js.map +1 -1
- package/dist/xstate-durable.umd.min.js.map +1 -1
- package/dist/xstate-graph.cjs.js +1 -1
- package/dist/xstate-graph.development.cjs.js +1 -1
- package/dist/xstate-graph.development.esm.js +1 -1
- package/dist/xstate-graph.esm.js +1 -1
- package/dist/xstate-graph.umd.min.js +1 -1
- package/dist/xstate-graph.umd.min.js.map +1 -1
- package/dist/xstate.cjs.js +71 -55
- package/dist/xstate.development.cjs.js +71 -55
- package/dist/xstate.development.esm.js +72 -56
- package/dist/xstate.esm.js +72 -56
- package/dist/xstate.umd.min.js +1 -1
- package/dist/xstate.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { StandardSchemaV1 } from "./schema.types.js";
|
|
2
|
+
import type { MachineEventSchema, MachineSnapshotSchema, MachineVersionDescriptor } from "./machineVersion.types.js";
|
|
3
|
+
export type { MachineEventSchema, MachineSnapshotSchema, MachineVersionDescriptor, PersistedMachineSnapshot } from "./machineVersion.types.js";
|
|
2
4
|
import type { AnyStateMachine, ContextFrom, EventFrom, PersistedSnapshotFor, Snapshot } from "./types.js";
|
|
3
5
|
export type PersistedMachineIdentity<TMachine extends AnyStateMachine = AnyStateMachine> = {
|
|
4
6
|
id: TMachine['id'];
|
|
@@ -6,8 +8,10 @@ export type PersistedMachineIdentity<TMachine extends AnyStateMachine = AnyState
|
|
|
6
8
|
};
|
|
7
9
|
type VersionedStateMachine = AnyStateMachine & {
|
|
8
10
|
version: string;
|
|
9
|
-
|
|
11
|
+
snapshotSchema: MachineSnapshotSchema;
|
|
12
|
+
eventSchema: MachineEventSchema;
|
|
10
13
|
};
|
|
14
|
+
type VersionEntry = MachineVersionDescriptor;
|
|
11
15
|
export type PersistedSnapshotFrom<TMachine extends AnyStateMachine> = Snapshot<unknown> & PersistedSnapshotFor<TMachine> & {
|
|
12
16
|
context: ContextFrom<TMachine>;
|
|
13
17
|
machine: PersistedMachineIdentity<TMachine>;
|
|
@@ -17,54 +21,80 @@ export type PersistedSnapshotDataFrom<TMachine extends AnyStateMachine> = Snapsh
|
|
|
17
21
|
context: ContextFrom<TMachine>;
|
|
18
22
|
[key: string]: unknown;
|
|
19
23
|
};
|
|
20
|
-
export type ParsedPersistedSnapshot<
|
|
21
|
-
[K in keyof
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
export type ParsedPersistedSnapshot<TEntries extends readonly VersionEntry[]> = {
|
|
25
|
+
[K in keyof TEntries]: TEntries[K] extends VersionEntry ? TEntries[K] extends VersionedStateMachine ? {
|
|
26
|
+
source: TEntries[K];
|
|
27
|
+
machine: TEntries[K];
|
|
28
|
+
snapshot: PersistedSnapshotFromEntry<TEntries[K]>;
|
|
29
|
+
} : {
|
|
30
|
+
source: TEntries[K];
|
|
31
|
+
snapshot: PersistedSnapshotFromEntry<TEntries[K]>;
|
|
24
32
|
} : never;
|
|
25
33
|
}[number];
|
|
26
|
-
export type MachineVersionsOptions<
|
|
27
|
-
unversioned?:
|
|
34
|
+
export type MachineVersionsOptions<TEntries extends readonly VersionEntry[]> = {
|
|
35
|
+
unversioned?: SnapshotSourceVersion<TEntries>;
|
|
28
36
|
};
|
|
29
37
|
type MaybePromise<T> = T | PromiseLike<T>;
|
|
30
|
-
type MachineVersion<
|
|
31
|
-
type
|
|
32
|
-
[K in keyof
|
|
38
|
+
type MachineVersion<TEntries extends readonly VersionEntry[]> = Extract<TEntries[number], VersionedStateMachine>['version'];
|
|
39
|
+
type SnapshotSourceVersion<TEntries extends readonly VersionEntry[]> = {
|
|
40
|
+
[K in keyof TEntries]: TEntries[K] extends VersionedStateMachine | {
|
|
41
|
+
snapshotSchema: MachineSnapshotSchema;
|
|
42
|
+
} ? TEntries[K]['version'] : never;
|
|
33
43
|
}[number];
|
|
44
|
+
type EventSourceVersion<TEntries extends readonly VersionEntry[]> = {
|
|
45
|
+
[K in keyof TEntries]: TEntries[K] extends VersionedStateMachine | {
|
|
46
|
+
eventSchema: MachineEventSchema;
|
|
47
|
+
} ? TEntries[K]['version'] : never;
|
|
48
|
+
}[number];
|
|
49
|
+
type MachineForVersion<TEntries extends readonly VersionEntry[], TVersion extends string> = {
|
|
50
|
+
[K in keyof TEntries]: TEntries[K] extends VersionedStateMachine ? TEntries[K]['version'] extends TVersion ? TEntries[K] : never : never;
|
|
51
|
+
}[number];
|
|
52
|
+
type SnapshotEntryForVersion<TEntries extends readonly VersionEntry[], TVersion extends string> = {
|
|
53
|
+
[K in keyof TEntries]: TEntries[K] extends VersionedStateMachine | {
|
|
54
|
+
snapshotSchema: MachineSnapshotSchema;
|
|
55
|
+
} ? TEntries[K]['version'] extends TVersion ? TEntries[K] : never : never;
|
|
56
|
+
}[number];
|
|
57
|
+
type EventEntryForVersion<TEntries extends readonly VersionEntry[], TVersion extends string> = {
|
|
58
|
+
[K in keyof TEntries]: TEntries[K] extends VersionedStateMachine | {
|
|
59
|
+
eventSchema: MachineEventSchema;
|
|
60
|
+
} ? TEntries[K]['version'] extends TVersion ? TEntries[K] : never : never;
|
|
61
|
+
}[number];
|
|
62
|
+
type PersistedSnapshotFromEntry<TEntry extends VersionEntry> = TEntry extends {
|
|
63
|
+
snapshotSchema: infer TSchema extends MachineSnapshotSchema;
|
|
64
|
+
} ? StandardSchemaV1.InferOutput<TSchema> : TEntry extends VersionedStateMachine ? PersistedSnapshotFrom<TEntry> : never;
|
|
65
|
+
type EventFromEntry<TEntry extends VersionEntry> = TEntry extends {
|
|
66
|
+
eventSchema: infer TSchema extends MachineEventSchema;
|
|
67
|
+
} ? StandardSchemaV1.InferOutput<TSchema> : TEntry extends VersionedStateMachine ? EventFrom<TEntry> : never;
|
|
34
68
|
export type PersistedSnapshotSource = {
|
|
35
69
|
id?: string;
|
|
36
70
|
version?: string;
|
|
37
71
|
};
|
|
38
|
-
export type SnapshotMigrationHandlers<
|
|
39
|
-
[TVersion in Exclude<
|
|
72
|
+
export type SnapshotMigrationHandlers<TEntries extends readonly VersionEntry[], TTarget extends VersionedStateMachine> = {
|
|
73
|
+
[TVersion in Exclude<SnapshotSourceVersion<TEntries>, TTarget['version']>]?: (snapshot: PersistedSnapshotFromEntry<SnapshotEntryForVersion<TEntries, TVersion>>) => MaybePromise<PersistedSnapshotDataFrom<TTarget>>;
|
|
40
74
|
} & {
|
|
41
75
|
'*'?: (snapshot: unknown, source: PersistedSnapshotSource) => MaybePromise<PersistedSnapshotDataFrom<TTarget>>;
|
|
42
76
|
};
|
|
43
|
-
export type MigrateSnapshotOptions<
|
|
77
|
+
export type MigrateSnapshotOptions<TEntries extends readonly VersionEntry[], TTargetVersion extends MachineVersion<TEntries>> = {
|
|
44
78
|
to: TTargetVersion;
|
|
45
|
-
migrations: SnapshotMigrationHandlers<
|
|
79
|
+
migrations: SnapshotMigrationHandlers<TEntries, MachineForVersion<TEntries, TTargetVersion>>;
|
|
46
80
|
};
|
|
47
81
|
export type EventHistorySource = {
|
|
48
82
|
id?: string;
|
|
49
83
|
version?: string;
|
|
50
84
|
};
|
|
51
|
-
export type EventAdapterHandlers<
|
|
52
|
-
[TVersion in Exclude<
|
|
85
|
+
export type EventAdapterHandlers<TEntries extends readonly VersionEntry[], TTarget extends VersionedStateMachine> = {
|
|
86
|
+
[TVersion in Exclude<EventSourceVersion<TEntries>, TTarget['version']>]?: (events: readonly EventFromEntry<EventEntryForVersion<TEntries, TVersion>>[]) => MaybePromise<readonly EventFrom<TTarget>[]>;
|
|
53
87
|
} & {
|
|
54
88
|
'*'?: (events: readonly unknown[], source: EventHistorySource) => MaybePromise<readonly EventFrom<TTarget>[]>;
|
|
55
89
|
};
|
|
56
|
-
export type AdaptEventsOptions<
|
|
90
|
+
export type AdaptEventsOptions<TEntries extends readonly VersionEntry[], TTargetVersion extends MachineVersion<TEntries>> = {
|
|
57
91
|
from: EventHistorySource;
|
|
58
92
|
to: TTargetVersion;
|
|
59
|
-
adapters: EventAdapterHandlers<
|
|
93
|
+
adapters: EventAdapterHandlers<TEntries, MachineForVersion<TEntries, TTargetVersion>>;
|
|
60
94
|
};
|
|
61
|
-
/** Creates migration and adaptation utilities
|
|
62
|
-
export declare function machineVersions<const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
parseSnapshot: (raw: unknown) => Promise<ParsedPersistedSnapshot<TMachines>>;
|
|
67
|
-
adaptEvents<TTargetVersion extends MachineVersion<TMachines>>(events: readonly unknown[], adaptationOptions: AdaptEventsOptions<TMachines, TTargetVersion>): Promise<EventFrom<MachineForVersion<TMachines, TTargetVersion>>[]>;
|
|
68
|
-
migrateSnapshot<TTargetVersion extends MachineVersion<TMachines>>(raw: unknown, migrationOptions: MigrateSnapshotOptions<TMachines, TTargetVersion>): Promise<PersistedSnapshotFrom<MachineForVersion<TMachines, TTargetVersion>>>;
|
|
95
|
+
/** Creates migration and adaptation utilities for versions of one machine. */
|
|
96
|
+
export declare function machineVersions<const TEntries extends readonly [VersionEntry, ...VersionEntry[]]>(entries: TEntries, options?: MachineVersionsOptions<TEntries>): {
|
|
97
|
+
parseSnapshot: (raw: unknown) => Promise<ParsedPersistedSnapshot<TEntries>>;
|
|
98
|
+
adaptEvents<TTargetVersion extends MachineVersion<TEntries>>(events: readonly unknown[], adaptationOptions: AdaptEventsOptions<TEntries, TTargetVersion>): Promise<EventFrom<MachineForVersion<TEntries, TTargetVersion>>[]>;
|
|
99
|
+
migrateSnapshot<TTargetVersion extends MachineVersion<TEntries>>(raw: unknown, migrationOptions: MigrateSnapshotOptions<TEntries, TTargetVersion>): Promise<PersistedSnapshotFrom<MachineForVersion<TEntries, TTargetVersion>>>;
|
|
69
100
|
};
|
|
70
|
-
export {};
|
|
@@ -349,6 +349,8 @@ export interface AnyStateMachine extends AnyActorLogic {
|
|
|
349
349
|
config: any;
|
|
350
350
|
version?: string;
|
|
351
351
|
schemas?: import("./types.v6.js").AnyMachineSchemas;
|
|
352
|
+
snapshotSchema: import("./machineVersion.types.js").MachineSnapshotSchema;
|
|
353
|
+
eventSchema: import("./machineVersion.types.js").MachineEventSchema;
|
|
352
354
|
provide(sources: any): AnyStateMachine;
|
|
353
355
|
resolveState(config: any): any;
|
|
354
356
|
getTransitionData(snapshot: any, event: any, actorScope: AnyActorScope, selectionResults?: Map<AnyTransitionDefinition, unknown>): AnyTransitionDefinition[];
|
|
@@ -532,15 +534,29 @@ export interface TimerEvent extends EventObject {
|
|
|
532
534
|
declare const persistedSnapshotLogic: unique symbol;
|
|
533
535
|
type PersistedSnapshotLogicIdentity<TLogic> = TLogic extends {
|
|
534
536
|
readonly id: infer TId extends string;
|
|
535
|
-
readonly version: infer TVersion extends string;
|
|
536
537
|
} ? {
|
|
537
538
|
readonly id: TId;
|
|
538
|
-
readonly version:
|
|
539
|
+
readonly version: TLogic extends {
|
|
540
|
+
readonly version: infer TVersion extends string;
|
|
541
|
+
} ? TVersion : string;
|
|
539
542
|
} : never;
|
|
540
543
|
/** A persisted snapshot tied to a versioned actor logic identity. */
|
|
541
544
|
export type PersistedSnapshotFor<TLogic> = {
|
|
542
545
|
readonly [persistedSnapshotLogic]: PersistedSnapshotLogicIdentity<TLogic>;
|
|
543
546
|
};
|
|
547
|
+
/**
|
|
548
|
+
* A persisted snapshot restorable into the given actor logic: any snapshot
|
|
549
|
+
* created by logic with the same machine `id` is accepted, regardless of
|
|
550
|
+
* version (version mismatches are handled at runtime, e.g. by `migrate`).
|
|
551
|
+
*/
|
|
552
|
+
export type RestorablePersistedSnapshotFor<TLogic> = {
|
|
553
|
+
readonly [persistedSnapshotLogic]: TLogic extends {
|
|
554
|
+
readonly id: infer TId extends string;
|
|
555
|
+
} ? {
|
|
556
|
+
readonly id: TId;
|
|
557
|
+
readonly version: string;
|
|
558
|
+
} : never;
|
|
559
|
+
};
|
|
544
560
|
export interface ActorOptions<TLogic extends AnyActorLogic> {
|
|
545
561
|
/**
|
|
546
562
|
* The clock that is responsible for setting and clearing timeouts, such as
|
|
@@ -589,7 +605,7 @@ export interface ActorOptions<TLogic extends AnyActorLogic> {
|
|
|
589
605
|
* Can be generated with {@link Actor.getPersistedSnapshot}.
|
|
590
606
|
* @see https://stately.ai/docs/persistence
|
|
591
607
|
*/
|
|
592
|
-
snapshot?: Snapshot<unknown> & Partial<
|
|
608
|
+
snapshot?: Snapshot<unknown> & Partial<RestorablePersistedSnapshotFor<DoNotInfer<TLogic>>>;
|
|
593
609
|
/** @deprecated Use `snapshot` instead. */
|
|
594
610
|
state?: Snapshot<unknown>;
|
|
595
611
|
/** The source actor logic. */
|