@rxova/journey-core 1.0.0-rc.2 → 1.0.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.
Files changed (158) hide show
  1. package/README.md +182 -186
  2. package/dist/connectors/immer/immer.cjs +2 -0
  3. package/dist/connectors/immer/immer.cjs.map +7 -0
  4. package/dist/connectors/immer/immer.d.cts +11 -0
  5. package/dist/connectors/immer/immer.d.ts +11 -0
  6. package/dist/connectors/immer/immer.js +2 -0
  7. package/dist/connectors/immer/immer.js.map +7 -0
  8. package/dist/connectors/immer/immer.types.d.cts +9 -0
  9. package/dist/connectors/immer/immer.types.d.ts +9 -0
  10. package/dist/core/errors.d.cts +57 -0
  11. package/dist/core/errors.d.ts +57 -0
  12. package/dist/core/helpers.d.cts +46 -0
  13. package/dist/core/helpers.d.ts +46 -0
  14. package/dist/core/machine.d.cts +9 -0
  15. package/dist/core/machine.d.ts +9 -0
  16. package/dist/core/runtime.d.cts +115 -0
  17. package/dist/core/runtime.d.ts +115 -0
  18. package/dist/core/runtime.types.d.cts +112 -0
  19. package/dist/core/runtime.types.d.ts +112 -0
  20. package/dist/core/store.d.cts +31 -0
  21. package/dist/core/store.d.ts +31 -0
  22. package/dist/core/types.d.cts +481 -0
  23. package/dist/core/types.d.ts +481 -0
  24. package/dist/diagnostics/diagnostics.helpers.d.cts +17 -0
  25. package/dist/diagnostics/diagnostics.helpers.d.ts +17 -0
  26. package/dist/diagnostics/diagnostics.types.d.cts +22 -0
  27. package/dist/diagnostics/diagnostics.types.d.ts +22 -0
  28. package/dist/graph/bag.types.d.cts +91 -0
  29. package/dist/graph/bag.types.d.ts +91 -0
  30. package/dist/graph/graph.d.cts +63 -0
  31. package/dist/graph/graph.d.ts +63 -0
  32. package/dist/graph/graph.types.d.cts +212 -0
  33. package/dist/graph/graph.types.d.ts +212 -0
  34. package/dist/graph/work.d.cts +81 -0
  35. package/dist/graph/work.d.ts +81 -0
  36. package/dist/index.cjs +1 -1
  37. package/dist/index.cjs.map +4 -4
  38. package/dist/index.d.cts +13 -5
  39. package/dist/index.d.ts +13 -5
  40. package/dist/index.js +1 -1
  41. package/dist/index.js.map +4 -4
  42. package/dist/linear/linear.d.cts +33 -0
  43. package/dist/linear/linear.d.ts +33 -0
  44. package/dist/linear/linear.types.d.cts +28 -0
  45. package/dist/linear/linear.types.d.ts +28 -0
  46. package/dist/plugins/analytics/analytics.d.cts +8 -0
  47. package/dist/plugins/analytics/analytics.d.ts +8 -0
  48. package/dist/plugins/analytics/analytics.helpers.d.cts +2 -0
  49. package/dist/plugins/analytics/analytics.helpers.d.ts +2 -0
  50. package/dist/plugins/analytics/analytics.types.d.cts +27 -0
  51. package/dist/plugins/analytics/analytics.types.d.ts +27 -0
  52. package/dist/plugins/execution-paths/execution-paths.d.cts +7 -4
  53. package/dist/plugins/execution-paths/execution-paths.d.ts +7 -4
  54. package/dist/plugins/execution-paths/execution-paths.types.d.cts +21 -0
  55. package/dist/plugins/execution-paths/execution-paths.types.d.ts +21 -0
  56. package/dist/plugins/index.cjs +2 -0
  57. package/dist/plugins/index.cjs.map +7 -0
  58. package/dist/plugins/index.d.cts +19 -0
  59. package/dist/plugins/index.d.ts +19 -0
  60. package/dist/plugins/index.js +2 -0
  61. package/dist/plugins/index.js.map +7 -0
  62. package/dist/plugins/persistence/persistence.d.cts +16 -0
  63. package/dist/plugins/persistence/persistence.d.ts +16 -0
  64. package/dist/plugins/persistence/persistence.helpers.d.cts +34 -0
  65. package/dist/plugins/persistence/persistence.helpers.d.ts +34 -0
  66. package/dist/plugins/persistence/persistence.types.d.cts +63 -0
  67. package/dist/plugins/persistence/persistence.types.d.ts +63 -0
  68. package/dist/plugins/replay/replay.d.cts +7 -0
  69. package/dist/plugins/replay/replay.d.ts +7 -0
  70. package/dist/plugins/replay/replay.helpers.d.cts +22 -0
  71. package/dist/plugins/replay/replay.helpers.d.ts +22 -0
  72. package/dist/plugins/replay/replay.types.d.cts +28 -0
  73. package/dist/plugins/replay/replay.types.d.ts +28 -0
  74. package/package.json +78 -79
  75. package/dist/journey-builder/index.d.cts +0 -5
  76. package/dist/journey-builder/index.d.ts +0 -5
  77. package/dist/journey-builder/types.d.cts +0 -126
  78. package/dist/journey-builder/types.d.ts +0 -126
  79. package/dist/journey-machine/async-state.d.cts +0 -12
  80. package/dist/journey-machine/async-state.d.ts +0 -12
  81. package/dist/journey-machine/computed.d.cts +0 -2
  82. package/dist/journey-machine/computed.d.ts +0 -2
  83. package/dist/journey-machine/controls.d.cts +0 -17
  84. package/dist/journey-machine/controls.d.ts +0 -17
  85. package/dist/journey-machine/helpers.d.cts +0 -52
  86. package/dist/journey-machine/helpers.d.ts +0 -52
  87. package/dist/journey-machine/index.d.cts +0 -3
  88. package/dist/journey-machine/index.d.ts +0 -3
  89. package/dist/journey-machine/navigation.d.cts +0 -32
  90. package/dist/journey-machine/navigation.d.ts +0 -32
  91. package/dist/journey-machine/plugin-controller.d.cts +0 -15
  92. package/dist/journey-machine/plugin-controller.d.ts +0 -15
  93. package/dist/journey-machine/resolve-journey-definition.d.cts +0 -2
  94. package/dist/journey-machine/resolve-journey-definition.d.ts +0 -2
  95. package/dist/journey-machine/runtime.d.cts +0 -33
  96. package/dist/journey-machine/runtime.d.ts +0 -33
  97. package/dist/journey-machine/send.d.cts +0 -9
  98. package/dist/journey-machine/send.d.ts +0 -9
  99. package/dist/plugins/analytics/index.cjs +0 -2
  100. package/dist/plugins/analytics/index.cjs.map +0 -7
  101. package/dist/plugins/analytics/index.d.cts +0 -25
  102. package/dist/plugins/analytics/index.d.ts +0 -25
  103. package/dist/plugins/analytics/index.js +0 -2
  104. package/dist/plugins/analytics/index.js.map +0 -7
  105. package/dist/plugins/autosave/index.cjs +0 -2
  106. package/dist/plugins/autosave/index.cjs.map +0 -7
  107. package/dist/plugins/autosave/index.d.cts +0 -17
  108. package/dist/plugins/autosave/index.d.ts +0 -17
  109. package/dist/plugins/autosave/index.js +0 -2
  110. package/dist/plugins/autosave/index.js.map +0 -7
  111. package/dist/plugins/diagnostics/diagnostics.d.cts +0 -3
  112. package/dist/plugins/diagnostics/diagnostics.d.ts +0 -3
  113. package/dist/plugins/diagnostics/index.cjs +0 -2
  114. package/dist/plugins/diagnostics/index.cjs.map +0 -7
  115. package/dist/plugins/diagnostics/index.d.cts +0 -15
  116. package/dist/plugins/diagnostics/index.d.ts +0 -15
  117. package/dist/plugins/diagnostics/index.js +0 -2
  118. package/dist/plugins/diagnostics/index.js.map +0 -7
  119. package/dist/plugins/execution-paths/index.cjs +0 -2
  120. package/dist/plugins/execution-paths/index.cjs.map +0 -7
  121. package/dist/plugins/execution-paths/index.d.cts +0 -18
  122. package/dist/plugins/execution-paths/index.d.ts +0 -18
  123. package/dist/plugins/execution-paths/index.js +0 -2
  124. package/dist/plugins/execution-paths/index.js.map +0 -7
  125. package/dist/plugins/persistence/controller.d.cts +0 -17
  126. package/dist/plugins/persistence/controller.d.ts +0 -17
  127. package/dist/plugins/persistence/index.cjs +0 -2
  128. package/dist/plugins/persistence/index.cjs.map +0 -7
  129. package/dist/plugins/persistence/index.d.cts +0 -12
  130. package/dist/plugins/persistence/index.d.ts +0 -12
  131. package/dist/plugins/persistence/index.js +0 -2
  132. package/dist/plugins/persistence/index.js.map +0 -7
  133. package/dist/plugins/replay/index.cjs +0 -2
  134. package/dist/plugins/replay/index.cjs.map +0 -7
  135. package/dist/plugins/replay/index.d.cts +0 -27
  136. package/dist/plugins/replay/index.d.ts +0 -27
  137. package/dist/plugins/replay/index.js +0 -2
  138. package/dist/plugins/replay/index.js.map +0 -7
  139. package/dist/types/analytics.types.d.cts +0 -33
  140. package/dist/types/analytics.types.d.ts +0 -33
  141. package/dist/types/autosave.types.d.cts +0 -23
  142. package/dist/types/autosave.types.d.ts +0 -23
  143. package/dist/types/diagnostics.types.d.cts +0 -38
  144. package/dist/types/diagnostics.types.d.ts +0 -38
  145. package/dist/types/index.d.cts +0 -9
  146. package/dist/types/index.d.ts +0 -9
  147. package/dist/types/journey.types.d.cts +0 -191
  148. package/dist/types/journey.types.d.ts +0 -191
  149. package/dist/types/machine.types.d.cts +0 -104
  150. package/dist/types/machine.types.d.ts +0 -104
  151. package/dist/types/observation.types.d.cts +0 -83
  152. package/dist/types/observation.types.d.ts +0 -83
  153. package/dist/types/persistence.types.d.cts +0 -34
  154. package/dist/types/persistence.types.d.ts +0 -34
  155. package/dist/types/replay.types.d.cts +0 -35
  156. package/dist/types/replay.types.d.ts +0 -35
  157. package/dist/types/transitions.types.d.cts +0 -122
  158. package/dist/types/transitions.types.d.ts +0 -122
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rxova/journey-core",
3
- "version": "1.0.0-rc.2",
3
+ "version": "1.0.0",
4
4
  "description": "Journey core state machine.",
5
5
  "keywords": [
6
6
  "journey",
@@ -11,7 +11,21 @@
11
11
  "typescript",
12
12
  "graph",
13
13
  "finite-state",
14
- "workflow"
14
+ "workflow",
15
+ "journey-machine",
16
+ "multi-step-form",
17
+ "multi-step",
18
+ "onboarding",
19
+ "checkout-flow",
20
+ "branching",
21
+ "guards",
22
+ "transitions",
23
+ "history",
24
+ "time-travel",
25
+ "zero-dependency",
26
+ "vanilla-js",
27
+ "framework-agnostic",
28
+ "state-management"
15
29
  ],
16
30
  "homepage": "https://github.com/rxova/journey",
17
31
  "bugs": {
@@ -27,6 +41,9 @@
27
41
  },
28
42
  "license": "MIT",
29
43
  "author": "Jonatan Kruszewski",
44
+ "engines": {
45
+ "node": ">=20.11.0"
46
+ },
30
47
  "type": "module",
31
48
  "main": "./dist/index.cjs",
32
49
  "module": "./dist/index.js",
@@ -40,53 +57,21 @@
40
57
  "import": "./dist/index.js",
41
58
  "require": "./dist/index.cjs"
42
59
  },
43
- "./analytics": {
44
- "types": {
45
- "import": "./dist/plugins/analytics/index.d.ts",
46
- "require": "./dist/plugins/analytics/index.d.cts"
47
- },
48
- "import": "./dist/plugins/analytics/index.js",
49
- "require": "./dist/plugins/analytics/index.cjs"
50
- },
51
- "./autosave": {
60
+ "./plugins": {
52
61
  "types": {
53
- "import": "./dist/plugins/autosave/index.d.ts",
54
- "require": "./dist/plugins/autosave/index.d.cts"
62
+ "import": "./dist/plugins/index.d.ts",
63
+ "require": "./dist/plugins/index.d.cts"
55
64
  },
56
- "import": "./dist/plugins/autosave/index.js",
57
- "require": "./dist/plugins/autosave/index.cjs"
65
+ "import": "./dist/plugins/index.js",
66
+ "require": "./dist/plugins/index.cjs"
58
67
  },
59
- "./diagnostics": {
68
+ "./connectors/immer": {
60
69
  "types": {
61
- "import": "./dist/plugins/diagnostics/index.d.ts",
62
- "require": "./dist/plugins/diagnostics/index.d.cts"
70
+ "import": "./dist/connectors/immer/immer.d.ts",
71
+ "require": "./dist/connectors/immer/immer.d.cts"
63
72
  },
64
- "import": "./dist/plugins/diagnostics/index.js",
65
- "require": "./dist/plugins/diagnostics/index.cjs"
66
- },
67
- "./persistence": {
68
- "types": {
69
- "import": "./dist/plugins/persistence/index.d.ts",
70
- "require": "./dist/plugins/persistence/index.d.cts"
71
- },
72
- "import": "./dist/plugins/persistence/index.js",
73
- "require": "./dist/plugins/persistence/index.cjs"
74
- },
75
- "./replay": {
76
- "types": {
77
- "import": "./dist/plugins/replay/index.d.ts",
78
- "require": "./dist/plugins/replay/index.d.cts"
79
- },
80
- "import": "./dist/plugins/replay/index.js",
81
- "require": "./dist/plugins/replay/index.cjs"
82
- },
83
- "./execution-paths": {
84
- "types": {
85
- "import": "./dist/plugins/execution-paths/index.d.ts",
86
- "require": "./dist/plugins/execution-paths/index.d.cts"
87
- },
88
- "import": "./dist/plugins/execution-paths/index.js",
89
- "require": "./dist/plugins/execution-paths/index.cjs"
73
+ "import": "./dist/connectors/immer/immer.js",
74
+ "require": "./dist/connectors/immer/immer.cjs"
90
75
  }
91
76
  },
92
77
  "files": [
@@ -95,64 +80,78 @@
95
80
  "LICENSE"
96
81
  ],
97
82
  "sideEffects": false,
83
+ "devDependencies": {
84
+ "@arethetypeswrong/cli": "^0.18.5",
85
+ "@rxova/journey-common": "0.0.0",
86
+ "immer": "^11.1.15",
87
+ "publint": "^0.3.24"
88
+ },
89
+ "peerDependencies": {
90
+ "immer": "^11.1.15"
91
+ },
92
+ "peerDependenciesMeta": {
93
+ "immer": {
94
+ "optional": true
95
+ }
96
+ },
98
97
  "size-limit": [
99
98
  {
100
- "name": "core/createJourneyMachine",
99
+ "name": "core/createLinearJourney",
101
100
  "path": "dist/index.js",
102
- "import": "{ createJourneyMachine }",
103
- "limit": "7.9 kB"
101
+ "import": "{ createLinearJourney }",
102
+ "limit": "6.2 kB"
104
103
  },
105
104
  {
106
- "name": "core/createJourneyBuilder",
105
+ "name": "core/createGraphJourney",
107
106
  "path": "dist/index.js",
108
- "import": "{ createJourneyBuilder }",
109
- "limit": "1 kB"
107
+ "import": "{ createGraphJourney }",
108
+ "limit": "6.5 kB"
110
109
  },
111
110
  {
112
- "name": "core/createPersistencePlugin",
113
- "path": "dist/plugins/persistence/index.js",
114
- "import": "{ createPersistencePlugin }",
115
- "limit": "3 kB"
111
+ "name": "core/immerConnector",
112
+ "path": "dist/connectors/immer/immer.js",
113
+ "import": "{ immerConnector }",
114
+ "limit": "100 B"
116
115
  },
117
116
  {
118
- "name": "core/createAnalyticsPlugin",
119
- "path": "dist/plugins/analytics/index.js",
120
- "import": "{ createAnalyticsPlugin }",
121
- "limit": "2 kB"
117
+ "name": "core/createExecutionPathsPlugin",
118
+ "path": "dist/plugins/index.js",
119
+ "import": "{ createExecutionPathsPlugin }",
120
+ "limit": "300 B"
122
121
  },
123
122
  {
124
- "name": "core/createAutosavePlugin",
125
- "path": "dist/plugins/autosave/index.js",
126
- "import": "{ createAutosavePlugin }",
127
- "limit": "3.5 kB"
123
+ "name": "core/createAnalyticsPlugin",
124
+ "path": "dist/plugins/index.js",
125
+ "import": "{ createAnalyticsPlugin }",
126
+ "limit": "500 B"
128
127
  },
129
128
  {
130
- "name": "core/createDiagnosticsPlugin",
131
- "path": "dist/plugins/diagnostics/index.js",
132
- "import": "{ createDiagnosticsPlugin }",
133
- "limit": "2.6 kB"
129
+ "name": "core/analyzeStructure",
130
+ "path": "dist/index.js",
131
+ "import": "{ analyzeStructure }",
132
+ "limit": "1.5 kB"
134
133
  },
135
134
  {
136
- "name": "core/createExecutionPathsPlugin",
137
- "path": "dist/plugins/execution-paths/index.js",
138
- "import": "{ createExecutionPathsPlugin }",
139
- "limit": "2 kB"
135
+ "name": "core/createPersistencePlugin",
136
+ "path": "dist/plugins/index.js",
137
+ "import": "{ createPersistencePlugin }",
138
+ "limit": "1.15 kB"
140
139
  },
141
140
  {
142
141
  "name": "core/createReplayPlugin",
143
- "path": "dist/plugins/replay/index.js",
142
+ "path": "dist/plugins/index.js",
144
143
  "import": "{ createReplayPlugin }",
145
- "limit": "2 kB"
144
+ "limit": "850 B"
146
145
  }
147
146
  ],
148
147
  "scripts": {
149
- "build": "pnpm run clean && node --import tsx ./scripts/build.ts && tsc -p tsconfig.build.json && node --import tsx ../../scripts/copy-types.ts dist",
150
- "clean": "node --import tsx ../../scripts/clean-paths.ts dist tsconfig.build.tsbuildinfo",
151
- "coverage": "pnpm --workspace-root vitest run --coverage --coverage.include=packages/core/src/** --coverage.reporter=text-summary",
148
+ "build": "pnpm run clean && node --import tsx ./scripts/build.ts && tsc -p tsconfig.build.json && node --import tsx ../common/tooling/copy-types.ts dist",
149
+ "clean": "node --import tsx ../common/tooling/clean-paths.ts dist tsconfig.build.tsbuildinfo",
150
+ "coverage": "JOURNEY_COVERAGE_INCLUDE=packages/core/src/** JOURNEY_COVERAGE_DIR=coverage/core pnpm --workspace-root vitest run packages/core/src --coverage --coverage.reporter=text-summary",
151
+ "test": "pnpm --workspace-root vitest run packages/core/src --coverage.enabled=false",
152
152
  "typecheck": "tsc --noEmit -p tsconfig.json",
153
- "publint": "publint",
154
- "attw": "attw --pack .",
155
- "size": "pnpm run size:check",
156
- "size:check": "pnpm run build && size-limit"
153
+ "check:exports": "publint --strict",
154
+ "attw": "attw --pack . --profile node16",
155
+ "size": "size-limit"
157
156
  }
158
157
  }
@@ -1,5 +0,0 @@
1
- import type { JourneyJsonObject } from "../types";
2
- import type { JourneyBuilder } from "./types";
3
- export type { JourneyBuilder, JourneyBuilderCustomEventKey, JourneyBuilderDefinition, JourneyBuilderDefinitionMetadata, JourneyBuilderGuard, JourneyBuilderLifecycle, JourneyBuilderOnEntry, JourneyBuilderTerminalCandidate, JourneyBuilderTerminalEntry, JourneyBuilderUpdateContext, JourneyStepBuilder, JourneyToBuilder } from "./types";
4
- /** Creates a typed builder for authoring journey definitions with `createStep`, `to`, and `build` helpers. */
5
- export declare function createJourneyBuilder<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown> = Record<never, never>, TStepMeta = unknown, THandlers extends Record<string, unknown> = Record<never, never>>(): JourneyBuilder<TContext, TStepId, TEventMap, TStepMeta, THandlers>;
@@ -1,5 +0,0 @@
1
- import type { JourneyJsonObject } from "../types";
2
- import type { JourneyBuilder } from "./types";
3
- export type { JourneyBuilder, JourneyBuilderCustomEventKey, JourneyBuilderDefinition, JourneyBuilderDefinitionMetadata, JourneyBuilderGuard, JourneyBuilderLifecycle, JourneyBuilderOnEntry, JourneyBuilderTerminalCandidate, JourneyBuilderTerminalEntry, JourneyBuilderUpdateContext, JourneyStepBuilder, JourneyToBuilder } from "./types";
4
- /** Creates a typed builder for authoring journey definitions with `createStep`, `to`, and `build` helpers. */
5
- export declare function createJourneyBuilder<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown> = Record<never, never>, TStepMeta = unknown, THandlers extends Record<string, unknown> = Record<never, never>>(): JourneyBuilder<TContext, TStepId, TEventMap, TStepMeta, THandlers>;
@@ -1,126 +0,0 @@
1
- import type { JourneyDefaultEventType, JourneyDefinition, JourneyFullEventType, JourneyJsonObject } from "../types";
2
- import type { JourneyStepLifecycleCallback, JourneyTransitionArgsForEvent, JourneyTransitionUpdateContextArgsForEvent } from "../types";
3
- export type JourneyBuilderStepEventKey<TEventMap extends Record<string, unknown>> = Exclude<JourneyFullEventType<TEventMap>, "completeJourney" | "terminateJourney">;
4
- export type JourneyBuilderTerminalEventKey<TEventMap extends Record<string, unknown>> = Extract<JourneyFullEventType<TEventMap>, "completeJourney" | "terminateJourney">;
5
- export type JourneyBuilderCustomEventKey<TEventMap extends Record<string, unknown>> = Exclude<keyof TEventMap & string, JourneyDefaultEventType>;
6
- export type JourneyBuilderGuard<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap> = JourneyFullEventType<TEventMap>> = (args: JourneyTransitionArgsForEvent<TContext, TStepId, TEventMap, THandlers, TEventType>) => boolean | Promise<boolean>;
7
- export type JourneyBuilderUpdateContext<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap> = JourneyFullEventType<TEventMap>> = (args: JourneyTransitionUpdateContextArgsForEvent<TContext, TStepId, TEventMap, TEventType>) => TContext;
8
- export type JourneyBuilderLifecycle<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>> = JourneyStepLifecycleCallback<TContext, TStepId, TEventMap, THandlers>;
9
- export type JourneyBuilderCandidate<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap> = JourneyFullEventType<TEventMap>> = {
10
- readonly _to: TStepId;
11
- readonly _when: JourneyBuilderGuard<TContext, TStepId, TEventMap, THandlers, TEventType> | undefined;
12
- readonly _updateContext: JourneyBuilderUpdateContext<TContext, TStepId, TEventMap, TEventType> | undefined;
13
- readonly _onEnter: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers> | undefined;
14
- readonly _onLeave: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers> | undefined;
15
- readonly _label: string | undefined;
16
- readonly _timeoutMs: number | undefined;
17
- };
18
- export type JourneyToBuilderUsage = {
19
- readonly when: boolean;
20
- readonly updateContext: boolean;
21
- readonly onEnter: boolean;
22
- readonly onLeave: boolean;
23
- readonly label: boolean;
24
- readonly timeoutMs: boolean;
25
- };
26
- export type JourneyToBuilderUnused = {
27
- readonly when: false;
28
- readonly updateContext: false;
29
- readonly onEnter: false;
30
- readonly onLeave: false;
31
- readonly label: false;
32
- readonly timeoutMs: false;
33
- };
34
- type JourneyDuplicateModifierCall<TName extends string> = (...args: [
35
- `Duplicate transition modifier ${TName}() is invalid. If several are present, the last one wins at runtime.`
36
- ]) => never;
37
- export type JourneyToBuilder<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap> = JourneyFullEventType<TEventMap>, TUsed extends JourneyToBuilderUsage = JourneyToBuilderUnused> = {
38
- readonly _candidate: JourneyBuilderCandidate<TContext, TStepId, TEventMap, THandlers, TEventType>;
39
- when: TUsed["when"] extends true ? JourneyDuplicateModifierCall<"when"> : (guard: JourneyBuilderGuard<TContext, TStepId, TEventMap, THandlers, TEventType>) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "when"> & {
40
- readonly when: true;
41
- }>;
42
- updateContext: TUsed["updateContext"] extends true ? JourneyDuplicateModifierCall<"updateContext"> : (fn: JourneyBuilderUpdateContext<TContext, TStepId, TEventMap, TEventType>) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "updateContext"> & {
43
- readonly updateContext: true;
44
- }>;
45
- onEnter: TUsed["onEnter"] extends true ? JourneyDuplicateModifierCall<"onEnter"> : (fn: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers>) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "onEnter"> & {
46
- readonly onEnter: true;
47
- }>;
48
- onLeave: TUsed["onLeave"] extends true ? JourneyDuplicateModifierCall<"onLeave"> : (fn: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers>) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "onLeave"> & {
49
- readonly onLeave: true;
50
- }>;
51
- label: TUsed["label"] extends true ? JourneyDuplicateModifierCall<"label"> : (label: string) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "label"> & {
52
- readonly label: true;
53
- }>;
54
- timeoutMs: TUsed["timeoutMs"] extends true ? JourneyDuplicateModifierCall<"timeoutMs"> : (ms: number) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "timeoutMs"> & {
55
- readonly timeoutMs: true;
56
- }>;
57
- };
58
- type JourneyBuiltTransitionCandidate<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap> = JourneyFullEventType<TEventMap>> = {
59
- readonly _candidate: JourneyBuilderCandidate<TContext, TStepId, TEventMap, THandlers, TEventType>;
60
- };
61
- export type JourneyBuilderOnEntry<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyBuilderStepEventKey<TEventMap>> = readonly JourneyBuiltTransitionCandidate<TContext, TStepId, TEventMap, THandlers>[] | ((helpers: {
62
- to: (stepId: TStepId) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType>;
63
- }) => readonly JourneyBuiltTransitionCandidate<TContext, TStepId, TEventMap, THandlers, TEventType>[]);
64
- export type JourneyBuilderTerminalCandidate<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyBuilderTerminalEventKey<TEventMap>> = {
65
- when?: JourneyBuilderGuard<TContext, TStepId, TEventMap, THandlers, TEventType>;
66
- updateContext?: JourneyBuilderUpdateContext<TContext, TStepId, TEventMap, TEventType>;
67
- onEnter?: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers>;
68
- onLeave?: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers>;
69
- label?: string;
70
- timeoutMs?: number;
71
- };
72
- export type JourneyBuilderTerminalEntry<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyBuilderTerminalEventKey<TEventMap>> = true | readonly [] | readonly JourneyBuilderTerminalCandidate<TContext, TStepId, TEventMap, THandlers, TEventType>[];
73
- type JourneyBuilderEventEntry<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap>> = TEventType extends JourneyBuilderTerminalEventKey<TEventMap> ? JourneyBuilderTerminalEntry<TContext, TStepId, TEventMap, THandlers, TEventType> : JourneyBuilderOnEntry<TContext, TStepId, TEventMap, THandlers, Extract<TEventType, JourneyBuilderStepEventKey<TEventMap>>>;
74
- type JourneyStepBuilderOnConfig<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>> = Partial<{
75
- [TEventType in JourneyFullEventType<TEventMap>]: JourneyBuilderEventEntry<TContext, TStepId, TEventMap, THandlers, TEventType>;
76
- }>;
77
- type JourneyStepBuilderHandledCustomEventKey<TEventMap extends Record<string, unknown>, TOn> = Extract<keyof NonNullable<TOn>, JourneyBuilderCustomEventKey<TEventMap>>;
78
- type JourneyStepBuilderConfig<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, TStepMeta, THandlers extends Record<string, unknown>, TOn extends JourneyStepBuilderOnConfig<TContext, TStepId, TEventMap, THandlers> | undefined = JourneyStepBuilderOnConfig<TContext, TStepId, TEventMap, THandlers> | undefined> = {
79
- meta?: TStepMeta;
80
- onEnter?: JourneyStepLifecycleCallback<TContext, TStepId, TEventMap, THandlers>;
81
- onLeave?: JourneyStepLifecycleCallback<TContext, TStepId, TEventMap, THandlers>;
82
- on?: TOn;
83
- };
84
- export type JourneyStepBuilder<TContext extends JourneyJsonObject, TStepId extends string, TStepKey extends TStepId, TEventMap extends Record<string, unknown>, TStepMeta, THandlers extends Record<string, unknown>, THandledCustomEventType extends JourneyBuilderCustomEventKey<TEventMap> = never> = {
85
- readonly id: TStepKey;
86
- readonly _meta: TStepMeta | undefined;
87
- readonly _onEnter: JourneyStepLifecycleCallback<TContext, TStepId, TEventMap, THandlers> | undefined;
88
- readonly _onLeave: JourneyStepLifecycleCallback<TContext, TStepId, TEventMap, THandlers> | undefined;
89
- readonly _on: Record<string, JourneyBuilderEventEntry<TContext, TStepId, TEventMap, THandlers, JourneyFullEventType<TEventMap>>> | undefined;
90
- readonly _handledCustomEventType?: THandledCustomEventType;
91
- };
92
- type JourneyStepBuilderHandledCustomEventMap<TStepId extends string, TEventMap extends Record<string, unknown>, TSteps extends readonly {
93
- readonly id: TStepId;
94
- readonly _handledCustomEventType?: JourneyBuilderCustomEventKey<TEventMap>;
95
- }[]> = {
96
- [TCurrentStepId in TStepId]: Extract<Extract<TSteps[number], {
97
- readonly id: TCurrentStepId;
98
- }> extends {
99
- readonly _handledCustomEventType?: infer THandledCustomEventType;
100
- } ? THandledCustomEventType : never, JourneyBuilderCustomEventKey<TEventMap>>;
101
- };
102
- type JourneyBuilderGlobalHandledCustomEventKey<TEventMap extends Record<string, unknown>, TGlobal> = Extract<keyof NonNullable<TGlobal>, JourneyBuilderCustomEventKey<TEventMap>>;
103
- declare const journeyBuilderDefinitionBrand: unique symbol;
104
- export type JourneyBuilderDefinitionMetadata<TStepId extends string, TEventMap extends Record<string, unknown>, TStepHandledCustomEventMap extends Record<TStepId, JourneyBuilderCustomEventKey<TEventMap>> = Record<TStepId, never>, TGlobalHandledCustomEventType extends JourneyBuilderCustomEventKey<TEventMap> = never> = {
105
- readonly [journeyBuilderDefinitionBrand]?: {
106
- readonly stepHandledCustomEvents: TStepHandledCustomEventMap;
107
- readonly globalHandledCustomEvents: TGlobalHandledCustomEventType;
108
- };
109
- };
110
- export type JourneyBuilderDefinition<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, TStepMeta = unknown, THandlers extends Record<string, unknown> = Record<never, never>, TStepHandledCustomEventMap extends Record<TStepId, JourneyBuilderCustomEventKey<TEventMap>> = Record<TStepId, never>, TGlobalHandledCustomEventType extends JourneyBuilderCustomEventKey<TEventMap> = never> = JourneyDefinition<TContext, TStepId, TEventMap, TStepMeta, THandlers> & JourneyBuilderDefinitionMetadata<TStepId, TEventMap, TStepHandledCustomEventMap, TGlobalHandledCustomEventType>;
111
- type JourneyBuilderGlobalConfig<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>> = Partial<{
112
- [TEventType in JourneyFullEventType<TEventMap>]: TEventType extends JourneyBuilderTerminalEventKey<TEventMap> ? JourneyBuilderTerminalEntry<TContext, TStepId, TEventMap, THandlers, TEventType> : readonly JourneyBuiltTransitionCandidate<TContext, TStepId, TEventMap, THandlers>[];
113
- }>;
114
- type JourneyBuilderBuildInput<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, TStepMeta, THandlers extends Record<string, unknown>, TSteps extends readonly JourneyStepBuilder<TContext, TStepId, TStepId, TEventMap, TStepMeta, THandlers, JourneyBuilderCustomEventKey<TEventMap>>[], TGlobal extends JourneyBuilderGlobalConfig<TContext, TStepId, TEventMap, THandlers> | undefined = JourneyBuilderGlobalConfig<TContext, TStepId, TEventMap, THandlers> | undefined> = {
115
- initial: TStepId;
116
- context: TContext;
117
- handlers?: THandlers;
118
- steps: TSteps;
119
- global?: TGlobal;
120
- };
121
- export type JourneyBuilder<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown> = Record<never, never>, TStepMeta = unknown, THandlers extends Record<string, unknown> = Record<never, never>> = {
122
- createStep: <TStepKey extends TStepId, TOn extends JourneyStepBuilderOnConfig<TContext, TStepId, TEventMap, THandlers> | undefined = JourneyStepBuilderOnConfig<TContext, TStepId, TEventMap, THandlers> | undefined>(id: TStepKey, config?: JourneyStepBuilderConfig<TContext, TStepId, TEventMap, TStepMeta, THandlers, TOn>) => JourneyStepBuilder<TContext, TStepId, TStepKey, TEventMap, TStepMeta, THandlers, JourneyStepBuilderHandledCustomEventKey<TEventMap, TOn>>;
123
- to: (stepId: TStepId) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers>;
124
- build: <TSteps extends readonly JourneyStepBuilder<TContext, TStepId, TStepId, TEventMap, TStepMeta, THandlers, JourneyBuilderCustomEventKey<TEventMap>>[], TGlobal extends JourneyBuilderGlobalConfig<TContext, TStepId, TEventMap, THandlers> | undefined = JourneyBuilderGlobalConfig<TContext, TStepId, TEventMap, THandlers> | undefined>(input: JourneyBuilderBuildInput<TContext, TStepId, TEventMap, TStepMeta, THandlers, TSteps, TGlobal>) => JourneyBuilderDefinition<TContext, TStepId, TEventMap, TStepMeta, THandlers, JourneyStepBuilderHandledCustomEventMap<TStepId, TEventMap, TSteps>, JourneyBuilderGlobalHandledCustomEventKey<TEventMap, TGlobal>>;
125
- };
126
- export type { JourneyStepBuilderConfig as _JourneyStepBuilderConfig, JourneyBuilderBuildInput as _JourneyBuilderBuildInput, JourneyBuilderEventEntry as _JourneyBuilderEventEntry };
@@ -1,126 +0,0 @@
1
- import type { JourneyDefaultEventType, JourneyDefinition, JourneyFullEventType, JourneyJsonObject } from "../types";
2
- import type { JourneyStepLifecycleCallback, JourneyTransitionArgsForEvent, JourneyTransitionUpdateContextArgsForEvent } from "../types";
3
- export type JourneyBuilderStepEventKey<TEventMap extends Record<string, unknown>> = Exclude<JourneyFullEventType<TEventMap>, "completeJourney" | "terminateJourney">;
4
- export type JourneyBuilderTerminalEventKey<TEventMap extends Record<string, unknown>> = Extract<JourneyFullEventType<TEventMap>, "completeJourney" | "terminateJourney">;
5
- export type JourneyBuilderCustomEventKey<TEventMap extends Record<string, unknown>> = Exclude<keyof TEventMap & string, JourneyDefaultEventType>;
6
- export type JourneyBuilderGuard<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap> = JourneyFullEventType<TEventMap>> = (args: JourneyTransitionArgsForEvent<TContext, TStepId, TEventMap, THandlers, TEventType>) => boolean | Promise<boolean>;
7
- export type JourneyBuilderUpdateContext<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap> = JourneyFullEventType<TEventMap>> = (args: JourneyTransitionUpdateContextArgsForEvent<TContext, TStepId, TEventMap, TEventType>) => TContext;
8
- export type JourneyBuilderLifecycle<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>> = JourneyStepLifecycleCallback<TContext, TStepId, TEventMap, THandlers>;
9
- export type JourneyBuilderCandidate<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap> = JourneyFullEventType<TEventMap>> = {
10
- readonly _to: TStepId;
11
- readonly _when: JourneyBuilderGuard<TContext, TStepId, TEventMap, THandlers, TEventType> | undefined;
12
- readonly _updateContext: JourneyBuilderUpdateContext<TContext, TStepId, TEventMap, TEventType> | undefined;
13
- readonly _onEnter: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers> | undefined;
14
- readonly _onLeave: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers> | undefined;
15
- readonly _label: string | undefined;
16
- readonly _timeoutMs: number | undefined;
17
- };
18
- export type JourneyToBuilderUsage = {
19
- readonly when: boolean;
20
- readonly updateContext: boolean;
21
- readonly onEnter: boolean;
22
- readonly onLeave: boolean;
23
- readonly label: boolean;
24
- readonly timeoutMs: boolean;
25
- };
26
- export type JourneyToBuilderUnused = {
27
- readonly when: false;
28
- readonly updateContext: false;
29
- readonly onEnter: false;
30
- readonly onLeave: false;
31
- readonly label: false;
32
- readonly timeoutMs: false;
33
- };
34
- type JourneyDuplicateModifierCall<TName extends string> = (...args: [
35
- `Duplicate transition modifier ${TName}() is invalid. If several are present, the last one wins at runtime.`
36
- ]) => never;
37
- export type JourneyToBuilder<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap> = JourneyFullEventType<TEventMap>, TUsed extends JourneyToBuilderUsage = JourneyToBuilderUnused> = {
38
- readonly _candidate: JourneyBuilderCandidate<TContext, TStepId, TEventMap, THandlers, TEventType>;
39
- when: TUsed["when"] extends true ? JourneyDuplicateModifierCall<"when"> : (guard: JourneyBuilderGuard<TContext, TStepId, TEventMap, THandlers, TEventType>) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "when"> & {
40
- readonly when: true;
41
- }>;
42
- updateContext: TUsed["updateContext"] extends true ? JourneyDuplicateModifierCall<"updateContext"> : (fn: JourneyBuilderUpdateContext<TContext, TStepId, TEventMap, TEventType>) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "updateContext"> & {
43
- readonly updateContext: true;
44
- }>;
45
- onEnter: TUsed["onEnter"] extends true ? JourneyDuplicateModifierCall<"onEnter"> : (fn: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers>) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "onEnter"> & {
46
- readonly onEnter: true;
47
- }>;
48
- onLeave: TUsed["onLeave"] extends true ? JourneyDuplicateModifierCall<"onLeave"> : (fn: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers>) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "onLeave"> & {
49
- readonly onLeave: true;
50
- }>;
51
- label: TUsed["label"] extends true ? JourneyDuplicateModifierCall<"label"> : (label: string) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "label"> & {
52
- readonly label: true;
53
- }>;
54
- timeoutMs: TUsed["timeoutMs"] extends true ? JourneyDuplicateModifierCall<"timeoutMs"> : (ms: number) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType, Omit<TUsed, "timeoutMs"> & {
55
- readonly timeoutMs: true;
56
- }>;
57
- };
58
- type JourneyBuiltTransitionCandidate<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap> = JourneyFullEventType<TEventMap>> = {
59
- readonly _candidate: JourneyBuilderCandidate<TContext, TStepId, TEventMap, THandlers, TEventType>;
60
- };
61
- export type JourneyBuilderOnEntry<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyBuilderStepEventKey<TEventMap>> = readonly JourneyBuiltTransitionCandidate<TContext, TStepId, TEventMap, THandlers>[] | ((helpers: {
62
- to: (stepId: TStepId) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers, TEventType>;
63
- }) => readonly JourneyBuiltTransitionCandidate<TContext, TStepId, TEventMap, THandlers, TEventType>[]);
64
- export type JourneyBuilderTerminalCandidate<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyBuilderTerminalEventKey<TEventMap>> = {
65
- when?: JourneyBuilderGuard<TContext, TStepId, TEventMap, THandlers, TEventType>;
66
- updateContext?: JourneyBuilderUpdateContext<TContext, TStepId, TEventMap, TEventType>;
67
- onEnter?: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers>;
68
- onLeave?: JourneyBuilderLifecycle<TContext, TStepId, TEventMap, THandlers>;
69
- label?: string;
70
- timeoutMs?: number;
71
- };
72
- export type JourneyBuilderTerminalEntry<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyBuilderTerminalEventKey<TEventMap>> = true | readonly [] | readonly JourneyBuilderTerminalCandidate<TContext, TStepId, TEventMap, THandlers, TEventType>[];
73
- type JourneyBuilderEventEntry<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>, TEventType extends JourneyFullEventType<TEventMap>> = TEventType extends JourneyBuilderTerminalEventKey<TEventMap> ? JourneyBuilderTerminalEntry<TContext, TStepId, TEventMap, THandlers, TEventType> : JourneyBuilderOnEntry<TContext, TStepId, TEventMap, THandlers, Extract<TEventType, JourneyBuilderStepEventKey<TEventMap>>>;
74
- type JourneyStepBuilderOnConfig<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>> = Partial<{
75
- [TEventType in JourneyFullEventType<TEventMap>]: JourneyBuilderEventEntry<TContext, TStepId, TEventMap, THandlers, TEventType>;
76
- }>;
77
- type JourneyStepBuilderHandledCustomEventKey<TEventMap extends Record<string, unknown>, TOn> = Extract<keyof NonNullable<TOn>, JourneyBuilderCustomEventKey<TEventMap>>;
78
- type JourneyStepBuilderConfig<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, TStepMeta, THandlers extends Record<string, unknown>, TOn extends JourneyStepBuilderOnConfig<TContext, TStepId, TEventMap, THandlers> | undefined = JourneyStepBuilderOnConfig<TContext, TStepId, TEventMap, THandlers> | undefined> = {
79
- meta?: TStepMeta;
80
- onEnter?: JourneyStepLifecycleCallback<TContext, TStepId, TEventMap, THandlers>;
81
- onLeave?: JourneyStepLifecycleCallback<TContext, TStepId, TEventMap, THandlers>;
82
- on?: TOn;
83
- };
84
- export type JourneyStepBuilder<TContext extends JourneyJsonObject, TStepId extends string, TStepKey extends TStepId, TEventMap extends Record<string, unknown>, TStepMeta, THandlers extends Record<string, unknown>, THandledCustomEventType extends JourneyBuilderCustomEventKey<TEventMap> = never> = {
85
- readonly id: TStepKey;
86
- readonly _meta: TStepMeta | undefined;
87
- readonly _onEnter: JourneyStepLifecycleCallback<TContext, TStepId, TEventMap, THandlers> | undefined;
88
- readonly _onLeave: JourneyStepLifecycleCallback<TContext, TStepId, TEventMap, THandlers> | undefined;
89
- readonly _on: Record<string, JourneyBuilderEventEntry<TContext, TStepId, TEventMap, THandlers, JourneyFullEventType<TEventMap>>> | undefined;
90
- readonly _handledCustomEventType?: THandledCustomEventType;
91
- };
92
- type JourneyStepBuilderHandledCustomEventMap<TStepId extends string, TEventMap extends Record<string, unknown>, TSteps extends readonly {
93
- readonly id: TStepId;
94
- readonly _handledCustomEventType?: JourneyBuilderCustomEventKey<TEventMap>;
95
- }[]> = {
96
- [TCurrentStepId in TStepId]: Extract<Extract<TSteps[number], {
97
- readonly id: TCurrentStepId;
98
- }> extends {
99
- readonly _handledCustomEventType?: infer THandledCustomEventType;
100
- } ? THandledCustomEventType : never, JourneyBuilderCustomEventKey<TEventMap>>;
101
- };
102
- type JourneyBuilderGlobalHandledCustomEventKey<TEventMap extends Record<string, unknown>, TGlobal> = Extract<keyof NonNullable<TGlobal>, JourneyBuilderCustomEventKey<TEventMap>>;
103
- declare const journeyBuilderDefinitionBrand: unique symbol;
104
- export type JourneyBuilderDefinitionMetadata<TStepId extends string, TEventMap extends Record<string, unknown>, TStepHandledCustomEventMap extends Record<TStepId, JourneyBuilderCustomEventKey<TEventMap>> = Record<TStepId, never>, TGlobalHandledCustomEventType extends JourneyBuilderCustomEventKey<TEventMap> = never> = {
105
- readonly [journeyBuilderDefinitionBrand]?: {
106
- readonly stepHandledCustomEvents: TStepHandledCustomEventMap;
107
- readonly globalHandledCustomEvents: TGlobalHandledCustomEventType;
108
- };
109
- };
110
- export type JourneyBuilderDefinition<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, TStepMeta = unknown, THandlers extends Record<string, unknown> = Record<never, never>, TStepHandledCustomEventMap extends Record<TStepId, JourneyBuilderCustomEventKey<TEventMap>> = Record<TStepId, never>, TGlobalHandledCustomEventType extends JourneyBuilderCustomEventKey<TEventMap> = never> = JourneyDefinition<TContext, TStepId, TEventMap, TStepMeta, THandlers> & JourneyBuilderDefinitionMetadata<TStepId, TEventMap, TStepHandledCustomEventMap, TGlobalHandledCustomEventType>;
111
- type JourneyBuilderGlobalConfig<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, THandlers extends Record<string, unknown>> = Partial<{
112
- [TEventType in JourneyFullEventType<TEventMap>]: TEventType extends JourneyBuilderTerminalEventKey<TEventMap> ? JourneyBuilderTerminalEntry<TContext, TStepId, TEventMap, THandlers, TEventType> : readonly JourneyBuiltTransitionCandidate<TContext, TStepId, TEventMap, THandlers>[];
113
- }>;
114
- type JourneyBuilderBuildInput<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, TStepMeta, THandlers extends Record<string, unknown>, TSteps extends readonly JourneyStepBuilder<TContext, TStepId, TStepId, TEventMap, TStepMeta, THandlers, JourneyBuilderCustomEventKey<TEventMap>>[], TGlobal extends JourneyBuilderGlobalConfig<TContext, TStepId, TEventMap, THandlers> | undefined = JourneyBuilderGlobalConfig<TContext, TStepId, TEventMap, THandlers> | undefined> = {
115
- initial: TStepId;
116
- context: TContext;
117
- handlers?: THandlers;
118
- steps: TSteps;
119
- global?: TGlobal;
120
- };
121
- export type JourneyBuilder<TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown> = Record<never, never>, TStepMeta = unknown, THandlers extends Record<string, unknown> = Record<never, never>> = {
122
- createStep: <TStepKey extends TStepId, TOn extends JourneyStepBuilderOnConfig<TContext, TStepId, TEventMap, THandlers> | undefined = JourneyStepBuilderOnConfig<TContext, TStepId, TEventMap, THandlers> | undefined>(id: TStepKey, config?: JourneyStepBuilderConfig<TContext, TStepId, TEventMap, TStepMeta, THandlers, TOn>) => JourneyStepBuilder<TContext, TStepId, TStepKey, TEventMap, TStepMeta, THandlers, JourneyStepBuilderHandledCustomEventKey<TEventMap, TOn>>;
123
- to: (stepId: TStepId) => JourneyToBuilder<TContext, TStepId, TEventMap, THandlers>;
124
- build: <TSteps extends readonly JourneyStepBuilder<TContext, TStepId, TStepId, TEventMap, TStepMeta, THandlers, JourneyBuilderCustomEventKey<TEventMap>>[], TGlobal extends JourneyBuilderGlobalConfig<TContext, TStepId, TEventMap, THandlers> | undefined = JourneyBuilderGlobalConfig<TContext, TStepId, TEventMap, THandlers> | undefined>(input: JourneyBuilderBuildInput<TContext, TStepId, TEventMap, TStepMeta, THandlers, TSteps, TGlobal>) => JourneyBuilderDefinition<TContext, TStepId, TEventMap, TStepMeta, THandlers, JourneyStepBuilderHandledCustomEventMap<TStepId, TEventMap, TSteps>, JourneyBuilderGlobalHandledCustomEventKey<TEventMap, TGlobal>>;
125
- };
126
- export type { JourneyStepBuilderConfig as _JourneyStepBuilderConfig, JourneyBuilderBuildInput as _JourneyBuilderBuildInput, JourneyBuilderEventEntry as _JourneyBuilderEventEntry };
@@ -1,12 +0,0 @@
1
- import type { JourneyAsyncPhase, JourneyAsyncState, JourneyJsonObject } from "../types";
2
- import type { JourneyMachineRuntime } from "./runtime";
3
- export type JourneyMachineAsyncStateController<TStepId extends string> = {
4
- syncState: (asyncState: JourneyAsyncState<TStepId>) => void;
5
- updateStepAsync: (stepId: TStepId, updater: (current: JourneyAsyncState<TStepId>["byStep"][TStepId]) => JourneyAsyncState<TStepId>["byStep"][TStepId], runVersion?: number) => void;
6
- setStepLoading: (stepId: TStepId, phase: JourneyAsyncPhase, eventType: string, transitionId?: string, runVersion?: number) => void;
7
- setStepIdle: (stepId: TStepId, runVersion?: number) => void;
8
- setStepError: (stepId: TStepId, eventType: string, error: unknown, transitionId?: string, runVersion?: number) => void;
9
- };
10
- export declare const createJourneyMachineAsyncStateController: <TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>>({ runtime }: {
11
- runtime: JourneyMachineRuntime<TContext, TStepId, TEventMap>;
12
- }) => JourneyMachineAsyncStateController<TStepId>;
@@ -1,12 +0,0 @@
1
- import type { JourneyAsyncPhase, JourneyAsyncState, JourneyJsonObject } from "../types";
2
- import type { JourneyMachineRuntime } from "./runtime";
3
- export type JourneyMachineAsyncStateController<TStepId extends string> = {
4
- syncState: (asyncState: JourneyAsyncState<TStepId>) => void;
5
- updateStepAsync: (stepId: TStepId, updater: (current: JourneyAsyncState<TStepId>["byStep"][TStepId]) => JourneyAsyncState<TStepId>["byStep"][TStepId], runVersion?: number) => void;
6
- setStepLoading: (stepId: TStepId, phase: JourneyAsyncPhase, eventType: string, transitionId?: string, runVersion?: number) => void;
7
- setStepIdle: (stepId: TStepId, runVersion?: number) => void;
8
- setStepError: (stepId: TStepId, eventType: string, error: unknown, transitionId?: string, runVersion?: number) => void;
9
- };
10
- export declare const createJourneyMachineAsyncStateController: <TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>>({ runtime }: {
11
- runtime: JourneyMachineRuntime<TContext, TStepId, TEventMap>;
12
- }) => JourneyMachineAsyncStateController<TStepId>;
@@ -1,2 +0,0 @@
1
- import type { JourneyComputed, JourneyDefinition, JourneyJsonObject, JourneyResolvedDefinition, JourneySnapshot } from "../types";
2
- export declare const createJourneyMachineComputedGetter: <TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, TStepMeta, THandlers extends Record<string, unknown>>(journey: JourneyDefinition<TContext, TStepId, TEventMap, TStepMeta, THandlers>, resolvedJourney: JourneyResolvedDefinition<TContext, TStepId, TEventMap, TStepMeta, THandlers>, getSnapshot: () => JourneySnapshot<TContext, TStepId>) => (() => JourneyComputed<TStepId>);
@@ -1,2 +0,0 @@
1
- import type { JourneyComputed, JourneyDefinition, JourneyJsonObject, JourneyResolvedDefinition, JourneySnapshot } from "../types";
2
- export declare const createJourneyMachineComputedGetter: <TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>, TStepMeta, THandlers extends Record<string, unknown>>(journey: JourneyDefinition<TContext, TStepId, TEventMap, TStepMeta, THandlers>, resolvedJourney: JourneyResolvedDefinition<TContext, TStepId, TEventMap, TStepMeta, THandlers>, getSnapshot: () => JourneySnapshot<TContext, TStepId>) => (() => JourneyComputed<TStepId>);
@@ -1,17 +0,0 @@
1
- import type { JourneyJsonObject, JourneySnapshot } from "../types";
2
- import type { JourneyMachineAsyncStateController } from "./async-state";
3
- import type { JourneyMachineRuntime } from "./runtime";
4
- export type JourneyMachineControls<TContext extends JourneyJsonObject, TStepId extends string> = {
5
- startJourney: () => Promise<JourneySnapshot<TContext, TStepId>>;
6
- resetJourney: () => Promise<JourneySnapshot<TContext, TStepId>>;
7
- updateContext: (updater: (context: TContext) => TContext) => Promise<JourneySnapshot<TContext, TStepId>>;
8
- clearStepError: (stepId?: TStepId) => Promise<JourneySnapshot<TContext, TStepId>>;
9
- dispose: () => void;
10
- };
11
- export declare const createJourneyMachineControls: <TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>>({ runtime, asyncState, initial, initialContext, steps }: {
12
- runtime: JourneyMachineRuntime<TContext, TStepId, TEventMap>;
13
- asyncState: JourneyMachineAsyncStateController<TStepId>;
14
- initial: TStepId;
15
- initialContext: TContext;
16
- steps: Record<TStepId, unknown>;
17
- }) => JourneyMachineControls<TContext, TStepId>;
@@ -1,17 +0,0 @@
1
- import type { JourneyJsonObject, JourneySnapshot } from "../types";
2
- import type { JourneyMachineAsyncStateController } from "./async-state";
3
- import type { JourneyMachineRuntime } from "./runtime";
4
- export type JourneyMachineControls<TContext extends JourneyJsonObject, TStepId extends string> = {
5
- startJourney: () => Promise<JourneySnapshot<TContext, TStepId>>;
6
- resetJourney: () => Promise<JourneySnapshot<TContext, TStepId>>;
7
- updateContext: (updater: (context: TContext) => TContext) => Promise<JourneySnapshot<TContext, TStepId>>;
8
- clearStepError: (stepId?: TStepId) => Promise<JourneySnapshot<TContext, TStepId>>;
9
- dispose: () => void;
10
- };
11
- export declare const createJourneyMachineControls: <TContext extends JourneyJsonObject, TStepId extends string, TEventMap extends Record<string, unknown>>({ runtime, asyncState, initial, initialContext, steps }: {
12
- runtime: JourneyMachineRuntime<TContext, TStepId, TEventMap>;
13
- asyncState: JourneyMachineAsyncStateController<TStepId>;
14
- initial: TStepId;
15
- initialContext: TContext;
16
- steps: Record<TStepId, unknown>;
17
- }) => JourneyMachineControls<TContext, TStepId>;