@rotorsoft/act 0.35.1 → 0.35.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.
Files changed (82) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/@types/act.d.ts +672 -0
  3. package/dist/@types/act.d.ts.map +1 -0
  4. package/dist/@types/adapters/console-logger.d.ts +41 -0
  5. package/dist/@types/adapters/console-logger.d.ts.map +1 -0
  6. package/dist/@types/adapters/in-memory-cache.d.ts +34 -0
  7. package/dist/@types/adapters/in-memory-cache.d.ts.map +1 -0
  8. package/dist/@types/adapters/in-memory-store.d.ts +202 -0
  9. package/dist/@types/adapters/in-memory-store.d.ts.map +1 -0
  10. package/dist/@types/adapters/index.d.ts +4 -0
  11. package/dist/@types/adapters/index.d.ts.map +1 -0
  12. package/dist/@types/builders/act-builder.d.ts +160 -0
  13. package/dist/@types/builders/act-builder.d.ts.map +1 -0
  14. package/dist/@types/builders/index.d.ts +13 -0
  15. package/dist/@types/builders/index.d.ts.map +1 -0
  16. package/dist/@types/builders/projection-builder.d.ts +101 -0
  17. package/dist/@types/builders/projection-builder.d.ts.map +1 -0
  18. package/dist/@types/builders/slice-builder.d.ts +109 -0
  19. package/dist/@types/builders/slice-builder.d.ts.map +1 -0
  20. package/dist/@types/builders/state-builder.d.ts +424 -0
  21. package/dist/@types/builders/state-builder.d.ts.map +1 -0
  22. package/dist/@types/config.d.ts +119 -0
  23. package/dist/@types/config.d.ts.map +1 -0
  24. package/dist/@types/index.d.ts +14 -0
  25. package/dist/@types/index.d.ts.map +1 -0
  26. package/dist/@types/internal/build-classify.d.ts +44 -0
  27. package/dist/@types/internal/build-classify.d.ts.map +1 -0
  28. package/dist/@types/internal/close-cycle.d.ts +38 -0
  29. package/dist/@types/internal/close-cycle.d.ts.map +1 -0
  30. package/dist/@types/internal/correlate-cycle.d.ts +78 -0
  31. package/dist/@types/internal/correlate-cycle.d.ts.map +1 -0
  32. package/dist/@types/internal/drain-cycle.d.ts +113 -0
  33. package/dist/@types/internal/drain-cycle.d.ts.map +1 -0
  34. package/dist/@types/internal/drain-ratio.d.ts +26 -0
  35. package/dist/@types/internal/drain-ratio.d.ts.map +1 -0
  36. package/dist/@types/internal/drain.d.ts +41 -0
  37. package/dist/@types/internal/drain.d.ts.map +1 -0
  38. package/dist/@types/internal/event-sourcing.d.ts +96 -0
  39. package/dist/@types/internal/event-sourcing.d.ts.map +1 -0
  40. package/dist/@types/internal/index.d.ts +29 -0
  41. package/dist/@types/internal/index.d.ts.map +1 -0
  42. package/dist/@types/internal/merge.d.ts +31 -0
  43. package/dist/@types/internal/merge.d.ts.map +1 -0
  44. package/dist/@types/internal/reactions.d.ts +54 -0
  45. package/dist/@types/internal/reactions.d.ts.map +1 -0
  46. package/dist/@types/internal/settle.d.ts +60 -0
  47. package/dist/@types/internal/settle.d.ts.map +1 -0
  48. package/dist/@types/internal/tracing.d.ts +45 -0
  49. package/dist/@types/internal/tracing.d.ts.map +1 -0
  50. package/dist/@types/lru-map.d.ts +50 -0
  51. package/dist/@types/lru-map.d.ts.map +1 -0
  52. package/dist/@types/ports.d.ts +196 -0
  53. package/dist/@types/ports.d.ts.map +1 -0
  54. package/dist/@types/signals.d.ts +2 -0
  55. package/dist/@types/signals.d.ts.map +1 -0
  56. package/dist/@types/types/action.d.ts +444 -0
  57. package/dist/@types/types/action.d.ts.map +1 -0
  58. package/dist/@types/types/errors.d.ts +284 -0
  59. package/dist/@types/types/errors.d.ts.map +1 -0
  60. package/dist/@types/types/index.d.ts +39 -0
  61. package/dist/@types/types/index.d.ts.map +1 -0
  62. package/dist/@types/types/ports.d.ts +617 -0
  63. package/dist/@types/types/ports.d.ts.map +1 -0
  64. package/dist/@types/types/reaction.d.ts +314 -0
  65. package/dist/@types/types/reaction.d.ts.map +1 -0
  66. package/dist/@types/types/registry.d.ts +74 -0
  67. package/dist/@types/types/registry.d.ts.map +1 -0
  68. package/dist/@types/types/schemas.d.ts +117 -0
  69. package/dist/@types/types/schemas.d.ts.map +1 -0
  70. package/dist/@types/utils.d.ts +54 -0
  71. package/dist/@types/utils.d.ts.map +1 -0
  72. package/dist/chunk-AGWZY6YT.js +127 -0
  73. package/dist/chunk-AGWZY6YT.js.map +1 -0
  74. package/dist/index.cjs +3144 -0
  75. package/dist/index.cjs.map +1 -0
  76. package/dist/index.js +2975 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/types/index.cjs +166 -0
  79. package/dist/types/index.cjs.map +1 -0
  80. package/dist/types/index.js +33 -0
  81. package/dist/types/index.js.map +1 -0
  82. package/package.json +6 -2
@@ -0,0 +1,127 @@
1
+ // src/types/errors.ts
2
+ var Errors = {
3
+ ValidationError: "ERR_VALIDATION",
4
+ InvariantError: "ERR_INVARIANT",
5
+ ConcurrencyError: "ERR_CONCURRENCY",
6
+ StreamClosedError: "ERR_STREAM_CLOSED"
7
+ };
8
+ var ValidationError = class extends Error {
9
+ constructor(target, payload, details) {
10
+ super(`Invalid ${target} payload`);
11
+ this.target = target;
12
+ this.payload = payload;
13
+ this.details = details;
14
+ this.name = Errors.ValidationError;
15
+ }
16
+ };
17
+ var InvariantError = class extends Error {
18
+ constructor(action, payload, target, snapshot, description) {
19
+ super(`${action} failed invariant: ${description}`);
20
+ this.action = action;
21
+ this.payload = payload;
22
+ this.target = target;
23
+ this.snapshot = snapshot;
24
+ this.description = description;
25
+ this.name = Errors.InvariantError;
26
+ }
27
+ };
28
+ var ConcurrencyError = class extends Error {
29
+ constructor(stream, lastVersion, events, expectedVersion) {
30
+ super(
31
+ `Concurrency error committing "${events.map((e) => `${stream}.${e.name}`).join(
32
+ ", "
33
+ )}". Expected version ${expectedVersion} but found version ${lastVersion}.`
34
+ );
35
+ this.stream = stream;
36
+ this.lastVersion = lastVersion;
37
+ this.events = events;
38
+ this.expectedVersion = expectedVersion;
39
+ this.name = Errors.ConcurrencyError;
40
+ }
41
+ };
42
+ var StreamClosedError = class extends Error {
43
+ constructor(stream) {
44
+ super(`Stream "${stream}" is closed (tombstoned)`);
45
+ this.stream = stream;
46
+ this.name = Errors.StreamClosedError;
47
+ }
48
+ };
49
+
50
+ // src/types/schemas.ts
51
+ import { z } from "zod";
52
+ var ZodEmpty = z.record(z.string(), z.never());
53
+ var ActorSchema = z.object({
54
+ id: z.string(),
55
+ name: z.string()
56
+ }).loose().readonly();
57
+ var TargetSchema = z.object({
58
+ stream: z.string(),
59
+ actor: ActorSchema,
60
+ expectedVersion: z.number().optional()
61
+ }).loose().readonly();
62
+ var CausationEventSchema = z.object({
63
+ id: z.number(),
64
+ name: z.string(),
65
+ stream: z.string()
66
+ });
67
+ var EventMetaSchema = z.object({
68
+ correlation: z.string(),
69
+ causation: z.object({
70
+ action: TargetSchema.and(z.object({ name: z.string() })).optional(),
71
+ event: CausationEventSchema.optional()
72
+ })
73
+ }).readonly();
74
+ var CommittedMetaSchema = z.object({
75
+ id: z.number(),
76
+ stream: z.string(),
77
+ version: z.number(),
78
+ created: z.date(),
79
+ meta: EventMetaSchema
80
+ }).readonly();
81
+ var QuerySchema = z.object({
82
+ stream: z.string().optional(),
83
+ names: z.string().array().optional(),
84
+ before: z.number().optional(),
85
+ after: z.number().optional(),
86
+ limit: z.number().optional(),
87
+ created_before: z.date().optional(),
88
+ created_after: z.date().optional(),
89
+ backward: z.boolean().optional(),
90
+ correlation: z.string().optional(),
91
+ with_snaps: z.boolean().optional(),
92
+ stream_exact: z.boolean().optional()
93
+ }).readonly();
94
+
95
+ // src/types/index.ts
96
+ var Environments = [
97
+ "development",
98
+ "test",
99
+ "staging",
100
+ "production"
101
+ ];
102
+ var LogLevels = [
103
+ "fatal",
104
+ "error",
105
+ "warn",
106
+ "info",
107
+ "debug",
108
+ "trace"
109
+ ];
110
+
111
+ export {
112
+ Errors,
113
+ ValidationError,
114
+ InvariantError,
115
+ ConcurrencyError,
116
+ StreamClosedError,
117
+ ZodEmpty,
118
+ ActorSchema,
119
+ TargetSchema,
120
+ CausationEventSchema,
121
+ EventMetaSchema,
122
+ CommittedMetaSchema,
123
+ QuerySchema,
124
+ Environments,
125
+ LogLevels
126
+ };
127
+ //# sourceMappingURL=chunk-AGWZY6YT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/errors.ts","../src/types/schemas.ts","../src/types/index.ts"],"sourcesContent":["import type {\n Actor,\n Message,\n Schema,\n Schemas,\n Snapshot,\n Target,\n} from \"./action.js\";\n\n/**\n * @packageDocumentation\n * @module act/types\n * @category Types\n * Application error type constants and error classes for the Act Framework.\n *\n * - `ERR_VALIDATION`: Schema validation error\n * - `ERR_INVARIANT`: Invariant validation error\n * - `ERR_CONCURRENCY`: Optimistic concurrency validation error on commits\n */\nexport const Errors = {\n ValidationError: \"ERR_VALIDATION\",\n InvariantError: \"ERR_INVARIANT\",\n ConcurrencyError: \"ERR_CONCURRENCY\",\n StreamClosedError: \"ERR_STREAM_CLOSED\",\n} as const;\n\n/**\n * Thrown when an action or event payload fails Zod schema validation.\n *\n * This error indicates that data doesn't match the expected schema defined\n * for an action or event. The `details` property contains the Zod validation\n * error with specific information about what failed.\n *\n * @example Catching validation errors\n * ```typescript\n * import { ValidationError } from \"@rotorsoft/act\";\n *\n * try {\n * await app.do(\"createUser\", target, {\n * email: \"invalid-email\", // Missing @ symbol\n * age: -5 // Negative age\n * });\n * } catch (error) {\n * if (error instanceof ValidationError) {\n * console.error(\"Validation failed for:\", error.target);\n * console.error(\"Invalid payload:\", error.payload);\n * console.error(\"Validation details:\", error.details);\n * // details contains Zod error with field-level info\n * }\n * }\n * ```\n *\n * @example Logging validation details\n * ```typescript\n * try {\n * await app.do(\"updateProfile\", target, payload);\n * } catch (error) {\n * if (error instanceof ValidationError) {\n * error.details.errors.forEach((err) => {\n * console.error(`Field ${err.path.join(\".\")}: ${err.message}`);\n * });\n * }\n * }\n * ```\n *\n * @see {@link https://zod.dev | Zod documentation} for validation details\n */\nexport class ValidationError extends Error {\n constructor(\n /** The type of target being validated (e.g., \"action\", \"event\") */\n public readonly target: string,\n /** The invalid payload that failed validation */\n public readonly payload: any,\n /** Zod validation error details */\n public readonly details: any\n ) {\n super(`Invalid ${target} payload`);\n this.name = Errors.ValidationError;\n }\n}\n\n/**\n * Thrown when a business rule (invariant) is violated during action execution.\n *\n * Invariants are conditions that must hold true for an action to succeed.\n * They're checked after loading the current state but before emitting events.\n * This error provides complete context about what action was attempted and\n * why it was rejected.\n *\n * @template TState - State schema type\n * @template TEvents - Event schemas type\n * @template TActions - Action schemas type\n * @template TKey - Action name\n * @template TActor - Actor type extending base Actor\n *\n * @example Catching invariant violations\n * ```typescript\n * import { InvariantError } from \"@rotorsoft/act\";\n *\n * try {\n * await app.do(\"withdraw\",\n * { stream: \"account-123\", actor: { id: \"user1\", name: \"Alice\" } },\n * { amount: 1000 }\n * );\n * } catch (error) {\n * if (error instanceof InvariantError) {\n * console.error(\"Action:\", error.action);\n * console.error(\"Reason:\", error.description);\n * console.error(\"Current state:\", error.snapshot.state);\n * console.error(\"Attempted payload:\", error.payload);\n * }\n * }\n * ```\n *\n * @example User-friendly error messages\n * ```typescript\n * try {\n * await app.do(\"closeTicket\", target, payload);\n * } catch (error) {\n * if (error instanceof InvariantError) {\n * // Present friendly message to user\n * if (error.description === \"Ticket must be open\") {\n * return { error: \"This ticket is already closed\" };\n * } else if (error.description === \"Not authorized\") {\n * return { error: \"You don't have permission to close this ticket\" };\n * }\n * }\n * }\n * ```\n *\n * @example Logging with context\n * ```typescript\n * try {\n * await app.do(\"transfer\", target, { to: \"account2\", amount: 500 });\n * } catch (error) {\n * if (error instanceof InvariantError) {\n * logger.error({\n * action: error.action,\n * stream: error.target.stream,\n * actor: error.target.actor,\n * reason: error.description,\n * balance: error.snapshot.state.balance,\n * attempted: error.payload.amount\n * }, \"Invariant violation\");\n * }\n * }\n * ```\n *\n * @see {@link Invariant} for defining business rules\n */\nexport class InvariantError<\n TState extends Schema,\n TEvents extends Schemas,\n TActions extends Schemas,\n TKey extends keyof TActions,\n TActor extends Actor = Actor,\n> extends Error {\n constructor(\n /** The action that was attempted */\n readonly action: TKey,\n /** The action payload that was provided */\n readonly payload: Readonly<TActions[TKey]>,\n /** The target stream and actor context */\n readonly target: Target<TActor>,\n /** The current state snapshot when invariant was checked */\n readonly snapshot: Snapshot<TState, TEvents>,\n /** Human-readable description of why the invariant failed */\n readonly description: string\n ) {\n super(`${action as string} failed invariant: ${description}`);\n this.name = Errors.InvariantError;\n }\n}\n\n/**\n * Thrown when optimistic concurrency control detects a conflict.\n *\n * This error occurs when trying to commit events to a stream that has been\n * modified by another process since it was last loaded. The version number\n * doesn't match expectations, indicating a concurrent modification.\n *\n * This is a normal occurrence in distributed systems and should be handled\n * by reloading the current state and retrying the action.\n *\n * @example Handling concurrency conflicts with retry\n * ```typescript\n * import { ConcurrencyError } from \"@rotorsoft/act\";\n *\n * async function transferWithRetry(from, to, amount, maxRetries = 3) {\n * for (let attempt = 0; attempt < maxRetries; attempt++) {\n * try {\n * await app.do(\"transfer\",\n * { stream: from, actor: currentUser },\n * { to, amount }\n * );\n * return { success: true };\n * } catch (error) {\n * if (error instanceof ConcurrencyError) {\n * if (attempt < maxRetries - 1) {\n * console.log(`Concurrent modification detected, retrying... (${attempt + 1}/${maxRetries})`);\n * await sleep(100 * Math.pow(2, attempt)); // Exponential backoff\n * continue;\n * }\n * }\n * throw error;\n * }\n * }\n * return { success: false, reason: \"Too many concurrent modifications\" };\n * }\n * ```\n *\n * @example Logging concurrency conflicts\n * ```typescript\n * try {\n * await app.do(\"updateInventory\", target, payload);\n * } catch (error) {\n * if (error instanceof ConcurrencyError) {\n * logger.warn({\n * stream: error.stream,\n * expectedVersion: error.expectedVersion,\n * actualVersion: error.lastVersion,\n * events: error.events.map(e => e.name)\n * }, \"Concurrent modification detected\");\n * }\n * }\n * ```\n *\n * @example User feedback for conflicts\n * ```typescript\n * try {\n * await app.do(\"editDocument\", target, { content: newContent });\n * } catch (error) {\n * if (error instanceof ConcurrencyError) {\n * return {\n * error: \"This document was modified by another user. Please refresh and try again.\",\n * code: \"CONCURRENT_MODIFICATION\"\n * };\n * }\n * }\n * ```\n *\n * @see {@link Store.commit} for version checking details\n */\nexport class ConcurrencyError extends Error {\n constructor(\n /** The stream that had the concurrent modification */\n public readonly stream: string,\n /** The actual current version in the store */\n public readonly lastVersion: number,\n /** The events that were being committed */\n public readonly events: Message<Schemas, keyof Schemas>[],\n /** The version number that was expected */\n public readonly expectedVersion: number\n ) {\n // Message lists stream + event names only. Payloads remain accessible\n // via `error.events` for callers who need them — keeping them out of\n // the message avoids MB-scale strings on contended writes and keeps\n // potentially-sensitive data out of log streams.\n super(\n `Concurrency error committing \"${events\n .map((e) => `${stream}.${e.name}`)\n .join(\n \", \"\n )}\". Expected version ${expectedVersion} but found version ${lastVersion}.`\n );\n this.name = Errors.ConcurrencyError;\n }\n}\n\n/**\n * Thrown when attempting to write to a stream that has been closed\n * with a tombstone event.\n *\n * A tombstoned stream is permanently closed — no further actions can\n * be executed against it. The only way to reopen a tombstoned stream\n * is through `Act.close()` with a `restart` callback.\n *\n * @example\n * ```typescript\n * import { StreamClosedError } from \"@rotorsoft/act\";\n *\n * try {\n * await app.do(\"updateTicket\", target, payload);\n * } catch (error) {\n * if (error instanceof StreamClosedError) {\n * console.error(`Stream ${error.stream} is closed`);\n * }\n * }\n * ```\n *\n * @see {@link Act.close} for closing streams\n */\nexport class StreamClosedError extends Error {\n constructor(\n /** The stream that is closed */\n public readonly stream: string\n ) {\n super(`Stream \"${stream}\" is closed (tombstoned)`);\n this.name = Errors.StreamClosedError;\n }\n}\n","import { type ZodObject, type ZodRawShape, z } from \"zod\";\n\n/**\n * @packageDocumentation\n * @module act/types\n * @category Types\n * Zod schemas and helpers for the Act Framework.\n */\n\n/**\n * An empty Zod schema (no properties).\n */\nexport const ZodEmpty = z.record(z.string(), z.never());\n\n/**\n * Zod schema for an actor (user, system, etc.).\n */\nexport const ActorSchema = z\n .object({\n id: z.string(),\n name: z.string(),\n })\n .loose()\n .readonly();\n\n/**\n * Zod schema for a target (stream and actor info).\n */\nexport const TargetSchema = z\n .object({\n stream: z.string(),\n actor: ActorSchema,\n expectedVersion: z.number().optional(),\n })\n .loose()\n .readonly();\n\n/**\n * Zod schema for causation event metadata.\n */\nexport const CausationEventSchema = z.object({\n id: z.number(),\n name: z.string(),\n stream: z.string(),\n});\n\n/**\n * Zod schema for event metadata (correlation and causation).\n */\nexport const EventMetaSchema = z\n .object({\n correlation: z.string(),\n causation: z.object({\n action: TargetSchema.and(z.object({ name: z.string() })).optional(),\n event: CausationEventSchema.optional(),\n }),\n })\n .readonly();\n\n/**\n * Zod schema for committed event metadata (id, stream, version, created, meta).\n */\nexport const CommittedMetaSchema = z\n .object({\n id: z.number(),\n stream: z.string(),\n version: z.number(),\n created: z.date(),\n meta: EventMetaSchema,\n })\n .readonly();\n\n/**\n * Type representing the full state schema for a domain.\n * @property events - Map of event names to Zod schemas.\n * @property actions - Map of action names to Zod schemas.\n * @property state - Zod schema for the state object.\n */\nexport type StateSchema = Readonly<{\n events: Record<string, ZodObject<ZodRawShape> | typeof ZodEmpty>;\n actions: Record<string, ZodObject<ZodRawShape> | typeof ZodEmpty>;\n state: ZodObject<ZodRawShape>;\n}>;\n\n/**\n * Query options for event store queries.\n */\nexport const QuerySchema = z\n .object({\n stream: z.string().optional(),\n names: z.string().array().optional(),\n before: z.number().optional(),\n after: z.number().optional(),\n limit: z.number().optional(),\n created_before: z.date().optional(),\n created_after: z.date().optional(),\n backward: z.boolean().optional(),\n correlation: z.string().optional(),\n with_snaps: z.boolean().optional(),\n stream_exact: z.boolean().optional(),\n })\n .readonly();\n","/**\n * @packageDocumentation\n * @module act/types\n * Barrel file for Act Framework core types.\n *\n * Re-exports all major type definitions for actions, errors, ports, reactions, registries, and schemas.\n * Also defines common environment and log level types/constants for configuration and logging.\n *\n * @remarks\n * Import from this module to access all core framework types in one place.\n */\nexport type * from \"./action.js\";\nexport * from \"./errors.js\";\nexport type * from \"./ports.js\";\nexport type * from \"./reaction.js\";\nexport type * from \"./registry.js\";\nexport * from \"./schemas.js\";\n\n/**\n * Supported runtime environments for the framework.\n * - `development`: Local development\n * - `test`: Automated testing\n * - `staging`: Pre-production\n * - `production`: Live/production\n */\nexport const Environments = [\n \"development\",\n \"test\",\n \"staging\",\n \"production\",\n] as const;\n\n/**\n * Type representing a valid environment string.\n */\nexport type Environment = (typeof Environments)[number];\n\n/**\n * Supported log levels for framework logging.\n * - `fatal`, `error`, `warn`, `info`, `debug`, `trace`\n */\nexport const LogLevels = [\n \"fatal\",\n \"error\",\n \"warn\",\n \"info\",\n \"debug\",\n \"trace\",\n] as const;\n\n/**\n * Type representing a valid log level string.\n */\nexport type LogLevel = (typeof LogLevels)[number];\n"],"mappings":"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","names":[]}