@rotorsoft/act 0.5.1 → 0.5.2
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/.tsbuildinfo +1 -1
- package/dist/@types/act-builder.d.ts +66 -2
- package/dist/@types/act-builder.d.ts.map +1 -1
- package/dist/@types/act.d.ts +77 -21
- package/dist/@types/act.d.ts.map +1 -1
- package/dist/@types/adapters/InMemoryStore.d.ts +49 -2
- package/dist/@types/adapters/InMemoryStore.d.ts.map +1 -1
- package/dist/@types/config.d.ts +34 -11
- package/dist/@types/config.d.ts.map +1 -1
- package/dist/@types/event-sourcing.d.ts +30 -9
- package/dist/@types/event-sourcing.d.ts.map +1 -1
- package/dist/@types/index.d.ts +3 -2
- package/dist/@types/index.d.ts.map +1 -1
- package/dist/@types/ports.d.ts +51 -4
- package/dist/@types/ports.d.ts.map +1 -1
- package/dist/@types/signals.d.ts +2 -0
- package/dist/@types/signals.d.ts.map +1 -0
- package/dist/@types/state-builder.d.ts +54 -3
- package/dist/@types/state-builder.d.ts.map +1 -1
- package/dist/@types/types/action.d.ts +105 -0
- package/dist/@types/types/action.d.ts.map +1 -1
- package/dist/@types/types/errors.d.ts +33 -4
- package/dist/@types/types/errors.d.ts.map +1 -1
- package/dist/@types/types/index.d.ts +28 -0
- package/dist/@types/types/index.d.ts.map +1 -1
- package/dist/@types/types/ports.d.ts +53 -0
- package/dist/@types/types/ports.d.ts.map +1 -1
- package/dist/@types/types/reaction.d.ts +51 -0
- package/dist/@types/types/reaction.d.ts.map +1 -1
- package/dist/@types/types/registry.d.ts +27 -0
- package/dist/@types/types/registry.d.ts.map +1 -1
- package/dist/@types/types/schemas.d.ts +48 -12
- package/dist/@types/types/schemas.d.ts.map +1 -1
- package/dist/@types/utils.d.ts +46 -5
- package/dist/@types/utils.d.ts.map +1 -1
- package/dist/index.cjs +146 -76
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +144 -75
- package/dist/index.js.map +1 -1
- package/package.json +1 -2
package/dist/@types/act.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,KAAK,EAEL,QAAQ,EACR,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACP,MAAM,kBAAkB,CAAC;AAE1B,KAAK,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"act.d.ts","sourceRoot":"","sources":["../../src/act.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,KAAK,EAEL,QAAQ,EACR,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACP,MAAM,kBAAkB,CAAC;AAE1B,KAAK,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,GAAG,CACd,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,EAC3B,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO;aAoDC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aAC3B,UAAU,EAAE,MAAM;IAnDpC,OAAO,CAAC,QAAQ,CAAsB;IAEtC;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO;IACrD,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO;IAK9C;;;;;;OAMG;IACH,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IACpE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,IAAI;IAM7D;;;;;;OAMG;IACH,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IACrE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,IAAI;IAM9D;;;;;OAKG;gBAEe,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC3B,UAAU,EAAE,MAAM;IAGpC;;;;;;;;;;;;;OAaG;IACG,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EACxB,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAClC,cAAc,UAAQ;IAcxB;;;;;;;;;;;;;OAaG;IACG,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,OAAO,EAAE,EAAE,SAAS,OAAO,EAClE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,GAC9C,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAI5B;;;;;;;;;OASG;IACG,KAAK,CACT,KAAK,EAAE,KAAK,EACZ,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,GAChD,OAAO,CAAC;QACT,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAWF;;;;;;;OAOG;YACW,MAAM;IA+BpB,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;;;;;;OASG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAyG/B"}
|
|
@@ -1,24 +1,71 @@
|
|
|
1
1
|
import type { Committed, EventMeta, Lease, Message, Query, Schemas, Store } from "../types/index.js";
|
|
2
2
|
/**
|
|
3
3
|
* @category Adapters
|
|
4
|
-
* @
|
|
4
|
+
* @see Store
|
|
5
|
+
*
|
|
6
|
+
* In-memory implementation of the Store interface.
|
|
7
|
+
*
|
|
8
|
+
* Suitable for development, testing, and demonstration. Not for production use.
|
|
9
|
+
* All events and streams are stored in memory and lost on process exit.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const store = new InMemoryStore();
|
|
13
|
+
* await store.commit('streamA', [{ name: 'event', data: {} }], meta);
|
|
5
14
|
*/
|
|
6
15
|
export declare class InMemoryStore implements Store {
|
|
7
16
|
private _events;
|
|
8
17
|
private _streams;
|
|
18
|
+
/**
|
|
19
|
+
* Dispose of the store and clear all events.
|
|
20
|
+
* @returns Promise that resolves when disposal is complete.
|
|
21
|
+
*/
|
|
9
22
|
dispose(): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Seed the store with initial data (no-op for in-memory).
|
|
25
|
+
* @returns Promise that resolves when seeding is complete.
|
|
26
|
+
*/
|
|
10
27
|
seed(): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Drop all data from the store.
|
|
30
|
+
* @returns Promise that resolves when the store is cleared.
|
|
31
|
+
*/
|
|
11
32
|
drop(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Query events in the store, optionally filtered by query options.
|
|
35
|
+
* @param callback - Function to call for each event.
|
|
36
|
+
* @param query - Optional query options.
|
|
37
|
+
* @returns The number of events processed.
|
|
38
|
+
*/
|
|
12
39
|
query<E extends Schemas>(callback: (event: Committed<E, keyof E>) => void, query?: Query): Promise<number>;
|
|
40
|
+
/**
|
|
41
|
+
* Commit one or more events to a stream.
|
|
42
|
+
* @param stream - The stream name.
|
|
43
|
+
* @param msgs - The events/messages to commit.
|
|
44
|
+
* @param meta - Event metadata.
|
|
45
|
+
* @param expectedVersion - Optional optimistic concurrency check.
|
|
46
|
+
* @returns The committed events with metadata.
|
|
47
|
+
* @throws ConcurrencyError if expectedVersion does not match.
|
|
48
|
+
*/
|
|
13
49
|
commit<E extends Schemas>(stream: string, msgs: Message<E, keyof E>[], meta: EventMeta, expectedVersion?: number): Promise<Committed<E, keyof E>[]>;
|
|
14
50
|
/**
|
|
15
|
-
* Fetches new events from stream watermarks
|
|
51
|
+
* Fetches new events from stream watermarks for processing.
|
|
52
|
+
* @param limit - Maximum number of streams to fetch.
|
|
53
|
+
* @returns Fetched streams and events.
|
|
16
54
|
*/
|
|
17
55
|
fetch<E extends Schemas>(limit: number): Promise<{
|
|
18
56
|
streams: string[];
|
|
19
57
|
events: Committed<E, keyof E>[];
|
|
20
58
|
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Lease streams for processing (e.g., for distributed consumers).
|
|
61
|
+
* @param leases - Lease requests.
|
|
62
|
+
* @returns Granted leases.
|
|
63
|
+
*/
|
|
21
64
|
lease(leases: Lease[]): Promise<Lease[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Acknowledge completion of processing for leased streams.
|
|
67
|
+
* @param leases - Leases to acknowledge.
|
|
68
|
+
*/
|
|
22
69
|
ack(leases: Lease[]): Promise<void>;
|
|
23
70
|
}
|
|
24
71
|
//# sourceMappingURL=InMemoryStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryStore.d.ts","sourceRoot":"","sources":["../../../src/adapters/InMemoryStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InMemoryStore.d.ts","sourceRoot":"","sources":["../../../src/adapters/InMemoryStore.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,KAAK,EACN,MAAM,mBAAmB,CAAC;AA4C3B;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAc,YAAW,KAAK;IAEzC,OAAO,CAAC,OAAO,CAA2C;IAE1D,OAAO,CAAC,QAAQ,CAA0C;IAE1D;;;OAGG;IACG,OAAO;IAKb;;;OAGG;IACG,IAAI;IAIV;;;OAGG;IACG,IAAI;IAKV;;;;;OAKG;IACG,KAAK,CAAC,CAAC,SAAS,OAAO,EAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,EAChD,KAAK,CAAC,EAAE,KAAK;IA8Bf;;;;;;;;OAQG;IACG,MAAM,CAAC,CAAC,SAAS,OAAO,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAC3B,IAAI,EAAE,SAAS,EACf,eAAe,CAAC,EAAE,MAAM;IA+B1B;;;;OAIG;IACG,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,KAAK,EAAE,MAAM;;;;IAqB5C;;;;OAIG;IACG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;IAe3B;;;OAGG;IACG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE;CAI1B"}
|
package/dist/@types/config.d.ts
CHANGED
|
@@ -1,29 +1,38 @@
|
|
|
1
1
|
import { z } from "zod/v4";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Zod schema for validating package.json metadata.
|
|
4
|
+
* @internal
|
|
4
5
|
*/
|
|
5
6
|
export declare const PackageSchema: z.ZodObject<{
|
|
6
7
|
name: z.ZodString;
|
|
7
8
|
version: z.ZodString;
|
|
8
|
-
description: z.ZodString
|
|
9
|
-
author: z.ZodUnion<[z.ZodObject<{
|
|
9
|
+
description: z.ZodOptional<z.ZodString>;
|
|
10
|
+
author: z.ZodOptional<z.ZodUnion<[z.ZodOptional<z.ZodObject<{
|
|
10
11
|
name: z.ZodString;
|
|
11
12
|
email: z.ZodOptional<z.ZodString>;
|
|
12
|
-
}, z.core.$strip
|
|
13
|
-
license: z.ZodString
|
|
14
|
-
dependencies: z.ZodRecord<z.ZodString, z.ZodString
|
|
13
|
+
}, z.core.$strip>>, z.ZodString]>>;
|
|
14
|
+
license: z.ZodOptional<z.ZodString>;
|
|
15
|
+
dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
15
16
|
}, z.core.$strip>;
|
|
17
|
+
/**
|
|
18
|
+
* Type representing the validated package.json metadata.
|
|
19
|
+
*/
|
|
16
20
|
export type Package = z.infer<typeof PackageSchema>;
|
|
21
|
+
/**
|
|
22
|
+
* Zod schema for the full Act Framework configuration object.
|
|
23
|
+
* Includes package metadata, environment, logging, and timing options.
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
17
26
|
declare const BaseSchema: z.ZodObject<{
|
|
18
27
|
name: z.ZodString;
|
|
19
28
|
version: z.ZodString;
|
|
20
|
-
description: z.ZodString
|
|
21
|
-
author: z.ZodUnion<[z.ZodObject<{
|
|
29
|
+
description: z.ZodOptional<z.ZodString>;
|
|
30
|
+
author: z.ZodOptional<z.ZodUnion<[z.ZodOptional<z.ZodObject<{
|
|
22
31
|
name: z.ZodString;
|
|
23
32
|
email: z.ZodOptional<z.ZodString>;
|
|
24
|
-
}, z.core.$strip
|
|
25
|
-
license: z.ZodString
|
|
26
|
-
dependencies: z.ZodRecord<z.ZodString, z.ZodString
|
|
33
|
+
}, z.core.$strip>>, z.ZodString]>>;
|
|
34
|
+
license: z.ZodOptional<z.ZodString>;
|
|
35
|
+
dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
27
36
|
env: z.ZodEnum<{
|
|
28
37
|
development: "development";
|
|
29
38
|
test: "test";
|
|
@@ -41,7 +50,21 @@ declare const BaseSchema: z.ZodObject<{
|
|
|
41
50
|
logSingleLine: z.ZodBoolean;
|
|
42
51
|
sleepMs: z.ZodNumber;
|
|
43
52
|
}, z.core.$strip>;
|
|
53
|
+
/**
|
|
54
|
+
* Type representing the validated Act Framework configuration object.
|
|
55
|
+
*/
|
|
44
56
|
export type Config = z.infer<typeof BaseSchema>;
|
|
57
|
+
/**
|
|
58
|
+
* Returns the current Act Framework configuration, validated and type-safe.
|
|
59
|
+
*
|
|
60
|
+
* Merges package.json metadata with environment, logging, and timing options.
|
|
61
|
+
* @returns The validated configuration object.
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* const cfg = config();
|
|
65
|
+
* console.log(cfg.env, cfg.logLevel);
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
45
68
|
export declare const config: () => Config;
|
|
46
69
|
export {};
|
|
47
70
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAS3B;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;iBAWxB,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAYpD;;;;GAIG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKd,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAgBhD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,QAAO,MAEzB,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module event-sourcing
|
|
3
|
+
* @category Event Sourcing
|
|
4
|
+
*
|
|
5
|
+
* Utilities for event sourcing, snapshotting, and event store interaction.
|
|
6
|
+
*/
|
|
1
7
|
import type { Committed, Schema, Schemas, Snapshot, State, Target } from "./types/index.js";
|
|
2
8
|
/**
|
|
3
9
|
* Event sourcing utilities for snapshotting, loading, and committing actions/events.
|
|
@@ -6,36 +12,51 @@ import type { Committed, Schema, Schemas, Snapshot, State, Target } from "./type
|
|
|
6
12
|
/**
|
|
7
13
|
* Saves a snapshot of the state to the store.
|
|
8
14
|
*
|
|
15
|
+
* Snapshots are used to optimize state reconstruction for aggregates with long event streams.
|
|
16
|
+
*
|
|
9
17
|
* @template S The type of state
|
|
10
18
|
* @template E The type of events
|
|
11
19
|
* @param snapshot The snapshot to save
|
|
20
|
+
* @returns Promise that resolves when the snapshot is saved
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* await snap(snapshot);
|
|
12
24
|
*/
|
|
13
25
|
export declare function snap<S extends Schema, E extends Schemas>(snapshot: Snapshot<S, E>): Promise<void>;
|
|
14
26
|
/**
|
|
15
|
-
* Loads a snapshot of the state from the store.
|
|
27
|
+
* Loads a snapshot of the state from the store by replaying events and applying patches.
|
|
16
28
|
*
|
|
17
29
|
* @template S The type of state
|
|
18
30
|
* @template E The type of events
|
|
19
|
-
* @
|
|
20
|
-
* @param
|
|
21
|
-
* @param
|
|
31
|
+
* @template A The type of actions
|
|
32
|
+
* @param me The state machine definition
|
|
33
|
+
* @param stream The stream (instance) to load
|
|
34
|
+
* @param callback (Optional) Callback to receive the loaded snapshot as it is built
|
|
22
35
|
* @returns The snapshot of the loaded state
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* const snapshot = await load(Counter, "counter1");
|
|
23
39
|
*/
|
|
24
40
|
export declare function load<S extends Schema, E extends Schemas, A extends Schemas>(me: State<S, E, A>, stream: string, callback?: (snapshot: Snapshot<S, E>) => void): Promise<Snapshot<S, E>>;
|
|
25
41
|
/**
|
|
26
42
|
* Executes an action and emits an event to be committed by the store.
|
|
27
43
|
*
|
|
44
|
+
* This function validates the action, applies business invariants, emits events, and commits them to the event store.
|
|
45
|
+
*
|
|
28
46
|
* @template S The type of state
|
|
29
47
|
* @template E The type of events
|
|
30
48
|
* @template A The type of actionSchemas
|
|
31
49
|
* @template K The type of action to execute
|
|
32
|
-
* @param me The state machine
|
|
50
|
+
* @param me The state machine definition
|
|
33
51
|
* @param action The action to execute
|
|
34
|
-
* @param target The target
|
|
52
|
+
* @param target The target (stream, actor, etc.)
|
|
35
53
|
* @param payload The payload of the action
|
|
36
|
-
* @param reactingTo The event that the action is reacting to
|
|
37
|
-
* @param skipValidation Whether to skip validation
|
|
38
|
-
* @returns The snapshot of the committed
|
|
54
|
+
* @param reactingTo (Optional) The event that the action is reacting to
|
|
55
|
+
* @param skipValidation (Optional) Whether to skip validation (not recommended)
|
|
56
|
+
* @returns The snapshot of the committed event
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* const snapshot = await action(Counter, "increment", { stream: "counter1", actor }, { by: 1 });
|
|
39
60
|
*/
|
|
40
61
|
export declare function action<S extends Schema, E extends Schemas, A extends Schemas, K extends keyof A>(me: State<S, E, A>, action: K, target: Target, payload: Readonly<A[K]>, reactingTo?: Committed<Schemas, keyof Schemas>, skipValidation?: boolean): Promise<Snapshot<S, E>>;
|
|
41
62
|
//# sourceMappingURL=event-sourcing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-sourcing.d.ts","sourceRoot":"","sources":["../../src/event-sourcing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-sourcing.d.ts","sourceRoot":"","sources":["../../src/event-sourcing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,SAAS,EAGT,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACP,MAAM,kBAAkB,CAAC;AAG1B;;;GAGG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAsB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,EAC5D,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,IAAI,CACxB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EAEjB,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAC5C,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAuBzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,MAAM,CAC1B,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,MAAM,CAAC,EAEjB,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAClB,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,UAAU,CAAC,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,EAC9C,cAAc,UAAQ,GACrB,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAoFzB"}
|
package/dist/@types/index.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "./signals.js";
|
|
2
2
|
/**
|
|
3
|
+
* @packageDocumentation
|
|
3
4
|
* @module act
|
|
4
5
|
* Main entry point for the Act framework. Re-exports all core APIs.
|
|
5
6
|
*/
|
|
6
7
|
export * from "./act-builder.js";
|
|
7
8
|
export * from "./act.js";
|
|
9
|
+
export * from "./config.js";
|
|
8
10
|
export * from "./ports.js";
|
|
9
11
|
export * from "./state-builder.js";
|
|
10
12
|
export * from "./types/index.js";
|
|
11
13
|
export * from "./utils.js";
|
|
12
|
-
export { config };
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AAEtB;;;;GAIG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|
package/dist/@types/ports.d.ts
CHANGED
|
@@ -1,21 +1,68 @@
|
|
|
1
1
|
import type { Disposable, Disposer, Store } from "./types/index.js";
|
|
2
2
|
/**
|
|
3
3
|
* Port and adapter utilities for logging, store management, and resource disposal.
|
|
4
|
-
*
|
|
4
|
+
*
|
|
5
|
+
* Provides singleton store and logger instances, and helpers for resource lifecycle management.
|
|
6
|
+
*
|
|
7
|
+
* - Use `store()` to get or inject the event store (in-memory or persistent).
|
|
8
|
+
* - Use `logger` for structured logging.
|
|
9
|
+
* - Use `dispose()` to register resource disposers for graceful shutdown.
|
|
10
|
+
*
|
|
11
|
+
* @module ports
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* List of exit codes for process termination.
|
|
5
15
|
*/
|
|
6
16
|
export declare const ExitCodes: readonly ["ERROR", "EXIT"];
|
|
17
|
+
/**
|
|
18
|
+
* Type for allowed exit codes.
|
|
19
|
+
*/
|
|
7
20
|
export type ExitCode = (typeof ExitCodes)[number];
|
|
21
|
+
/**
|
|
22
|
+
* Singleton logger instance (Pino).
|
|
23
|
+
*
|
|
24
|
+
* Use for structured logging throughout your application.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* logger.info("Application started");
|
|
28
|
+
*/
|
|
8
29
|
export declare const logger: import("pino").Logger<never, boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Helper to create a singleton port (adapter) with optional injection.
|
|
32
|
+
*
|
|
33
|
+
* @param injector The function that creates the port/adapter
|
|
34
|
+
* @returns A function to get or inject the singleton instance
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* const store = port((adapter) => adapter || new InMemoryStore());
|
|
38
|
+
* const myStore = store();
|
|
39
|
+
*/
|
|
9
40
|
type Injector<Port extends Disposable> = (adapter?: Port) => Port;
|
|
10
41
|
export declare function port<Port extends Disposable>(injector: Injector<Port>): (adapter?: Port) => Port;
|
|
11
42
|
export declare function disposeAndExit(code?: ExitCode): Promise<void>;
|
|
12
43
|
/**
|
|
13
|
-
* Registers resource disposers that are triggered on process exit
|
|
14
|
-
*
|
|
15
|
-
* @
|
|
44
|
+
* Registers resource disposers that are triggered on process exit.
|
|
45
|
+
*
|
|
46
|
+
* @param disposer The disposer function to register
|
|
47
|
+
* @returns A function that triggers all registered disposers and terminates the process
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* dispose(async () => { await myResource.close(); });
|
|
16
51
|
*/
|
|
17
52
|
export declare function dispose(disposer?: Disposer): (code?: ExitCode) => Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Special event name for snapshot events in the event store.
|
|
55
|
+
*/
|
|
18
56
|
export declare const SNAP_EVENT = "__snapshot__";
|
|
57
|
+
/**
|
|
58
|
+
* Singleton event store port. By default, uses the in-memory store.
|
|
59
|
+
*
|
|
60
|
+
* You can inject a persistent store (e.g., Postgres) by calling `store(myAdapter)`.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* const myStore = store();
|
|
64
|
+
* const customStore = store(new MyCustomStore());
|
|
65
|
+
*/
|
|
19
66
|
export declare const store: (adapter?: Store | undefined) => Store;
|
|
20
67
|
export {};
|
|
21
68
|
//# sourceMappingURL=ports.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/ports.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpE
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/ports.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEpE;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS,4BAA6B,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,uCAajB,CAAC;AAEH;;;;;;;;;GASG;AACH,KAAK,QAAQ,CAAC,IAAI,SAAS,UAAU,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;AAElE,wBAAgB,IAAI,CAAC,IAAI,SAAS,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IACnD,UAAU,IAAI,KAAG,IAAI,CAQvC;AAGD,wBAAsB,cAAc,CAAC,IAAI,GAAE,QAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAa3E;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CACrB,QAAQ,CAAC,EAAE,QAAQ,GAClB,CAAC,IAAI,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAGpC;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,iBAAiB,CAAC;AAEzC;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,wCAEhB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/signals.ts"],"names":[],"mappings":""}
|
|
@@ -1,28 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module state-builder
|
|
3
|
+
* @category Builders
|
|
4
|
+
*
|
|
5
|
+
* Fluent interface for defining a strongly-typed state machine using Zod schemas.
|
|
6
|
+
*/
|
|
1
7
|
import { ZodType } from "zod/v4";
|
|
2
8
|
import { ActionHandler, Invariant, PatchHandlers, Schema, Schemas, Snapshot, State, ZodTypes } from "./types/index.js";
|
|
3
9
|
export type StateBuilder<S extends Schema> = {
|
|
10
|
+
/**
|
|
11
|
+
* Define the initial state for the state machine.
|
|
12
|
+
* @param init Function returning the initial state
|
|
13
|
+
* @returns An object with .emits() to declare event types
|
|
14
|
+
*/
|
|
4
15
|
init: (init: () => Readonly<S>) => {
|
|
16
|
+
/**
|
|
17
|
+
* Declare the event types the state machine can emit.
|
|
18
|
+
* @param events Zod schemas for each event
|
|
19
|
+
* @returns An object with .patch() to define event handlers
|
|
20
|
+
*/
|
|
5
21
|
emits: <E extends Schemas>(events: ZodTypes<E>) => {
|
|
22
|
+
/**
|
|
23
|
+
* Define how each event updates state.
|
|
24
|
+
* @param patch Event handler functions
|
|
25
|
+
* @returns An ActionBuilder for defining actions
|
|
26
|
+
*/
|
|
6
27
|
patch: (patch: PatchHandlers<S, E>) => ActionBuilder<S, E, {}>;
|
|
7
28
|
};
|
|
8
29
|
};
|
|
9
30
|
};
|
|
10
31
|
export type ActionBuilder<S extends Schema, E extends Schemas, A extends Schemas> = {
|
|
32
|
+
/**
|
|
33
|
+
* Define an action for the state machine.
|
|
34
|
+
* @param action The action name
|
|
35
|
+
* @param schema The Zod schema for the action payload
|
|
36
|
+
* @returns An object with .given() and .emit() for further configuration
|
|
37
|
+
*/
|
|
11
38
|
on: <K extends string, AX extends Schema>(action: K, schema: ZodType<AX>) => {
|
|
39
|
+
/**
|
|
40
|
+
* Constrain the action with invariants (business rules).
|
|
41
|
+
* @param rules Array of invariants
|
|
42
|
+
* @returns An object with .emit() to finalize the action
|
|
43
|
+
*/
|
|
12
44
|
given: (rules: Invariant<S>[]) => {
|
|
45
|
+
/**
|
|
46
|
+
* Finalize the action by providing the event emission handler.
|
|
47
|
+
* @param handler The action handler function
|
|
48
|
+
* @returns The ActionBuilder for chaining
|
|
49
|
+
*/
|
|
13
50
|
emit: (handler: ActionHandler<S, E, {
|
|
14
51
|
[P in K]: AX;
|
|
15
52
|
}, K>) => ActionBuilder<S, E, A & {
|
|
16
53
|
[P in K]: AX;
|
|
17
54
|
}>;
|
|
18
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* Finalize the action by providing the event emission handler.
|
|
58
|
+
* @param handler The action handler function
|
|
59
|
+
* @returns The ActionBuilder for chaining
|
|
60
|
+
*/
|
|
19
61
|
emit: (handler: ActionHandler<S, E, {
|
|
20
62
|
[P in K]: AX;
|
|
21
63
|
}, K>) => ActionBuilder<S, E, A & {
|
|
22
64
|
[P in K]: AX;
|
|
23
65
|
}>;
|
|
24
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* Define a snapshotting strategy to reduce recomputations.
|
|
69
|
+
* @param snap Function that determines when to snapshot
|
|
70
|
+
* @returns The ActionBuilder for chaining
|
|
71
|
+
*/
|
|
25
72
|
snap: (snap: (snapshot: Snapshot<S, E>) => boolean) => ActionBuilder<S, E, A>;
|
|
73
|
+
/**
|
|
74
|
+
* Finalize and build the state machine definition.
|
|
75
|
+
* @returns The strongly-typed State definition
|
|
76
|
+
*/
|
|
26
77
|
build: () => State<S, E, A>;
|
|
27
78
|
};
|
|
28
79
|
/**
|
|
@@ -39,8 +90,9 @@ export type ActionBuilder<S extends Schema, E extends Schemas, A extends Schemas
|
|
|
39
90
|
* - (Optional) Define a `.snap(snapshot => boolean)` function to reduce recomputations
|
|
40
91
|
* - Finalize the state machine definition using `.build()`
|
|
41
92
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
93
|
+
* @template S The type of state
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
44
96
|
* const machine = state("machine", myStateSchema)
|
|
45
97
|
* .init(() => ({ count: 0 }))
|
|
46
98
|
* .emits({ Incremented: z.object({ amount: z.number() }) })
|
|
@@ -51,7 +103,6 @@ export type ActionBuilder<S extends Schema, E extends Schemas, A extends Schemas
|
|
|
51
103
|
* .given([{ description: "must be positive", valid: (s, a) => a?.by > 0 }])
|
|
52
104
|
* .emit((action, state) => ({ type: "Incremented", amount: action.by }))
|
|
53
105
|
* .build();
|
|
54
|
-
* ```
|
|
55
106
|
*/
|
|
56
107
|
export declare function state<S extends Schema>(name: string, state: ZodType<S>): StateBuilder<S>;
|
|
57
108
|
//# sourceMappingURL=state-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-builder.d.ts","sourceRoot":"","sources":["../../src/state-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EACL,aAAa,EAGb,SAAS,EACT,aAAa,EACb,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,QAAQ,EACT,MAAM,kBAAkB,CAAC;AAG1B,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI;IAC3C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK;QACjC,KAAK,EAAE,CAAC,CAAC,SAAS,OAAO,EACvB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,KAChB;YACH,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;SAChE,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,aAAa,CACvB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,IACf;IACF,EAAE,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EACtC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,KAChB;QACH,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK;YAChC,IAAI,EAAE,CACJ,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;iBAAG,CAAC,IAAI,CAAC,GAAG,EAAE;aAAE,EAAE,CAAC,CAAC,KAC9C,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;iBAAG,CAAC,IAAI,CAAC,GAAG,EAAE;aAAE,CAAC,CAAC;SAChD,CAAC;QACF,IAAI,EAAE,CACJ,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;aAAG,CAAC,IAAI,CAAC,GAAG,EAAE;SAAE,EAAE,CAAC,CAAC,KAC9C,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;aAAG,CAAC,IAAI,CAAC,GAAG,EAAE;SAAE,CAAC,CAAC;KAChD,CAAC;IACF,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAChB,YAAY,CAAC,CAAC,CAAC,CAsBjB"}
|
|
1
|
+
{"version":3,"file":"state-builder.d.ts","sourceRoot":"","sources":["../../src/state-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EACL,aAAa,EAGb,SAAS,EACT,aAAa,EACb,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,QAAQ,EACT,MAAM,kBAAkB,CAAC;AAG1B,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI;IAC3C;;;;OAIG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK;QACjC;;;;WAIG;QACH,KAAK,EAAE,CAAC,CAAC,SAAS,OAAO,EACvB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,KAChB;YACH;;;;eAIG;YACH,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;SAChE,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,aAAa,CACvB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,IACf;IACF;;;;;OAKG;IACH,EAAE,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,SAAS,MAAM,EACtC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,KAChB;QACH;;;;WAIG;QACH,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK;YAChC;;;;eAIG;YACH,IAAI,EAAE,CACJ,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;iBAAG,CAAC,IAAI,CAAC,GAAG,EAAE;aAAE,EAAE,CAAC,CAAC,KAC9C,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;iBAAG,CAAC,IAAI,CAAC,GAAG,EAAE;aAAE,CAAC,CAAC;SAChD,CAAC;QACF;;;;WAIG;QACH,IAAI,EAAE,CACJ,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;aAAG,CAAC,IAAI,CAAC,GAAG,EAAE;SAAE,EAAE,CAAC,CAAC,KAC9C,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;aAAG,CAAC,IAAI,CAAC,GAAG,EAAE;SAAE,CAAC,CAAC;KAChD,CAAC;IACF;;;;OAIG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E;;;OAGG;IACH,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAChB,YAAY,CAAC,CAAC,CAAC,CAsBjB"}
|
|
@@ -1,54 +1,159 @@
|
|
|
1
1
|
import { z, ZodType } from "zod/v4";
|
|
2
2
|
import { ActorSchema, CausationEventSchema, CommittedMetaSchema, EventMetaSchema, QuerySchema, TargetSchema } from "./schemas.js";
|
|
3
|
+
/**
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module act/types
|
|
6
|
+
* @category Types
|
|
7
|
+
* Types for actions, events, schemas, and state in the Act Framework.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Represents an actor (user, system, etc.) that initiates actions or events.
|
|
11
|
+
*/
|
|
3
12
|
export type Actor = z.infer<typeof ActorSchema>;
|
|
13
|
+
/**
|
|
14
|
+
* Represents the target of an action or event, including stream and actor info.
|
|
15
|
+
*/
|
|
4
16
|
export type Target = z.infer<typeof TargetSchema>;
|
|
17
|
+
/**
|
|
18
|
+
* Metadata describing the causation of an event.
|
|
19
|
+
*/
|
|
5
20
|
export type CausationEvent = z.infer<typeof CausationEventSchema>;
|
|
21
|
+
/**
|
|
22
|
+
* Metadata attached to an event, including correlation and causation.
|
|
23
|
+
*/
|
|
6
24
|
export type EventMeta = z.infer<typeof EventMetaSchema>;
|
|
25
|
+
/**
|
|
26
|
+
* Metadata attached to a committed event, including id, stream, version, and creation time.
|
|
27
|
+
*/
|
|
7
28
|
export type CommittedMeta = z.infer<typeof CommittedMetaSchema>;
|
|
29
|
+
/**
|
|
30
|
+
* Query options for event store queries.
|
|
31
|
+
*/
|
|
8
32
|
export type Query = z.infer<typeof QuerySchema>;
|
|
33
|
+
/**
|
|
34
|
+
* A generic schema definition (plain object shape).
|
|
35
|
+
*/
|
|
9
36
|
export type Schema = Record<string, any>;
|
|
37
|
+
/**
|
|
38
|
+
* A map of named schemas.
|
|
39
|
+
*/
|
|
10
40
|
export type Schemas = Record<string, Schema>;
|
|
41
|
+
/**
|
|
42
|
+
* An empty schema (no properties).
|
|
43
|
+
*/
|
|
11
44
|
export type EmptySchema = Record<string, never>;
|
|
45
|
+
/**
|
|
46
|
+
* A recursive partial type for patching state objects.
|
|
47
|
+
* @template T - The base type to patch.
|
|
48
|
+
*/
|
|
12
49
|
export type Patch<T> = {
|
|
13
50
|
[K in keyof T]?: T[K] extends Schema ? Patch<T[K]> : T[K];
|
|
14
51
|
};
|
|
52
|
+
/**
|
|
53
|
+
* Maps schema names to their Zod type representations.
|
|
54
|
+
* @template T - The schemas map.
|
|
55
|
+
*/
|
|
15
56
|
export type ZodTypes<T extends Schemas> = {
|
|
16
57
|
[K in keyof T]: ZodType<T[K]>;
|
|
17
58
|
};
|
|
59
|
+
/**
|
|
60
|
+
* Represents a message (event or action) with a name and data payload.
|
|
61
|
+
* @template E - Schemas map.
|
|
62
|
+
* @template K - Event/action name.
|
|
63
|
+
*/
|
|
18
64
|
export type Message<E extends Schemas, K extends keyof E> = {
|
|
19
65
|
readonly name: K;
|
|
20
66
|
readonly data: Readonly<E[K]>;
|
|
21
67
|
};
|
|
68
|
+
/**
|
|
69
|
+
* A committed event, including metadata.
|
|
70
|
+
* @template E - Schemas map.
|
|
71
|
+
* @template K - Event name.
|
|
72
|
+
*/
|
|
22
73
|
export type Committed<E extends Schemas, K extends keyof E> = Message<E, K> & CommittedMeta;
|
|
74
|
+
/**
|
|
75
|
+
* Represents a snapshot of state at a point in the event stream.
|
|
76
|
+
* @template S - State schema.
|
|
77
|
+
* @template E - Event schemas.
|
|
78
|
+
*/
|
|
23
79
|
export type Snapshot<S extends Schema, E extends Schemas> = {
|
|
24
80
|
readonly state: S;
|
|
25
81
|
readonly event?: Committed<E, keyof E>;
|
|
26
82
|
readonly patches: number;
|
|
27
83
|
readonly snaps: number;
|
|
28
84
|
};
|
|
85
|
+
/**
|
|
86
|
+
* An invariant is a condition that must always hold true for a state.
|
|
87
|
+
* @template S - State schema.
|
|
88
|
+
*/
|
|
29
89
|
export type Invariant<S extends Schema> = {
|
|
30
90
|
description: string;
|
|
31
91
|
valid: (state: Readonly<S>, actor?: Actor) => boolean;
|
|
32
92
|
};
|
|
93
|
+
/**
|
|
94
|
+
* Represents an emitted event tuple from an action handler.
|
|
95
|
+
* @template E - Event schemas.
|
|
96
|
+
*/
|
|
33
97
|
export type Emitted<E extends Schemas> = {
|
|
34
98
|
[K in keyof E]: readonly [K, Readonly<E[K]>];
|
|
35
99
|
}[keyof E];
|
|
100
|
+
/**
|
|
101
|
+
* Bundles the Zod types for state, events, and actions.
|
|
102
|
+
* @template S - State schema.
|
|
103
|
+
* @template E - Event schemas.
|
|
104
|
+
* @template A - Action schemas.
|
|
105
|
+
*/
|
|
36
106
|
export type StateSchemas<S extends Schema, E extends Schemas, A extends Schemas> = {
|
|
37
107
|
readonly events: ZodTypes<E>;
|
|
38
108
|
readonly actions: ZodTypes<A>;
|
|
39
109
|
readonly state: ZodType<S>;
|
|
40
110
|
};
|
|
111
|
+
/**
|
|
112
|
+
* Handles patching state in response to a committed event.
|
|
113
|
+
* @template S - State schema.
|
|
114
|
+
* @template E - Event schemas.
|
|
115
|
+
* @template K - Event name.
|
|
116
|
+
*/
|
|
41
117
|
export type PatchHandler<S extends Schema, E extends Schemas, K extends keyof E> = (event: Committed<E, K>, state: Readonly<S>) => Readonly<Patch<S>>;
|
|
118
|
+
/**
|
|
119
|
+
* Maps event names to their patch handlers.
|
|
120
|
+
* @template S - State schema.
|
|
121
|
+
* @template E - Event schemas.
|
|
122
|
+
*/
|
|
42
123
|
export type PatchHandlers<S extends Schema, E extends Schemas> = {
|
|
43
124
|
[K in keyof E]: PatchHandler<S, E, K>;
|
|
44
125
|
};
|
|
126
|
+
/**
|
|
127
|
+
* Handles an action, producing one or more emitted events.
|
|
128
|
+
* @template S - State schema.
|
|
129
|
+
* @template E - Event schemas.
|
|
130
|
+
* @template A - Action schemas.
|
|
131
|
+
* @template K - Action name.
|
|
132
|
+
*/
|
|
45
133
|
export type ActionHandler<S extends Schema, E extends Schemas, A extends Schemas, K extends keyof A> = (action: Readonly<A[K]>, state: Readonly<S>, target: Target) => Emitted<E> | Emitted<E>[] | undefined;
|
|
134
|
+
/**
|
|
135
|
+
* Maps action names to their handlers.
|
|
136
|
+
* @template S - State schema.
|
|
137
|
+
* @template E - Event schemas.
|
|
138
|
+
* @template A - Action schemas.
|
|
139
|
+
*/
|
|
46
140
|
export type ActionHandlers<S extends Schema, E extends Schemas, A extends Schemas> = {
|
|
47
141
|
[K in keyof A]: ActionHandler<S, E, A, K>;
|
|
48
142
|
};
|
|
143
|
+
/**
|
|
144
|
+
* Maps action names to invariants that must hold after the action.
|
|
145
|
+
* @template S - State schema.
|
|
146
|
+
* @template A - Action schemas.
|
|
147
|
+
*/
|
|
49
148
|
export type GivenHandlers<S extends Schema, A extends Schemas> = {
|
|
50
149
|
[K in keyof A]?: Invariant<S>[];
|
|
51
150
|
};
|
|
151
|
+
/**
|
|
152
|
+
* The full state definition, including schemas, handlers, and optional invariants and snapshot logic.
|
|
153
|
+
* @template S - State schema.
|
|
154
|
+
* @template E - Event schemas.
|
|
155
|
+
* @template A - Action schemas.
|
|
156
|
+
*/
|
|
52
157
|
export type State<S extends Schema, E extends Schemas, A extends Schemas> = StateSchemas<S, E, A> & {
|
|
53
158
|
name: string;
|
|
54
159
|
init: () => Readonly<S>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/types/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,YAAY,EACb,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/types/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,YAAY,EACb,MAAM,cAAc,CAAC;AAEtB;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;KACpB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,OAAO,IAAI;KACvC,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI;IAC1D,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GACzE,aAAa,CAAC;AAEhB;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,IAAI;IAC1D,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC;CACvD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,OAAO,IAAI;KACtC,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CACtB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,IACf;IACF,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CACtB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,MAAM,CAAC,IACf,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,IAAI;KAC9D,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CACtC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,CACvB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,MAAM,CAAC,IACf,CACF,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAClB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CACxB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,IACf;KACD,CAAC,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAC1C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,IAAI;KAC9D,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;CAChC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,KAAK,CACf,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,IACf,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,EAAE,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC;CAC9C,CAAC"}
|