xstate 4.27.0-pr2674-2021926101023 → 4.29.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.
- package/CHANGELOG.md +210 -94
- package/README.md +5 -5
- package/dist/xstate.interpreter.js +1 -1
- package/dist/xstate.js +1 -1
- package/dist/xstate.web.js +2 -2
- package/es/Actor.js +5 -5
- package/es/Machine.d.ts +4 -4
- package/es/State.d.ts +9 -6
- package/es/State.js +10 -3
- package/es/StateNode.d.ts +12 -11
- package/es/StateNode.js +61 -71
- package/es/_virtual/_tslib.js +8 -4
- package/es/actions.d.ts +18 -2
- package/es/actions.js +22 -8
- package/es/devTools.d.ts +4 -6
- package/es/devTools.js +4 -0
- package/es/index.d.ts +9 -3
- package/es/index.js +3 -2
- package/es/interpreter.d.ts +6 -10
- package/es/interpreter.js +40 -27
- package/es/model.types.d.ts +3 -3
- package/es/registry.js +1 -1
- package/es/schema.d.ts +1 -0
- package/es/schema.js +2 -1
- package/es/scxml.d.ts +1 -1
- package/es/stateUtils.d.ts +4 -4
- package/es/stateUtils.js +1 -1
- package/es/typegenTypes.d.ts +66 -37
- package/es/types.d.ts +42 -41
- package/es/utils.d.ts +6 -1
- package/es/utils.js +17 -10
- package/lib/Actor.js +4 -4
- package/lib/Machine.d.ts +4 -4
- package/lib/SimulatedClock.js +9 -5
- package/lib/State.d.ts +9 -6
- package/lib/State.js +10 -3
- package/lib/StateNode.d.ts +12 -11
- package/lib/StateNode.js +59 -69
- package/lib/_virtual/_tslib.js +8 -4
- package/lib/actions.d.ts +18 -2
- package/lib/actions.js +22 -7
- package/lib/devTools.d.ts +4 -6
- package/lib/devTools.js +4 -0
- package/lib/index.d.ts +9 -3
- package/lib/index.js +2 -0
- package/lib/interpreter.d.ts +6 -10
- package/lib/interpreter.js +38 -25
- package/lib/json.js +7 -7
- package/lib/model.js +14 -10
- package/lib/model.types.d.ts +3 -3
- package/lib/patterns.js +2 -2
- package/lib/registry.js +1 -1
- package/lib/schema.d.ts +1 -0
- package/lib/schema.js +2 -0
- package/lib/scxml.d.ts +1 -1
- package/lib/scxml.js +29 -25
- package/lib/stateUtils.d.ts +4 -4
- package/lib/stateUtils.js +1 -1
- package/lib/typegenTypes.d.ts +66 -37
- package/lib/types.d.ts +42 -41
- package/lib/utils.d.ts +6 -1
- package/lib/utils.js +18 -9
- package/package.json +7 -11
- package/dist/xstate.cjs.d.ts +0 -11
- package/dist/xstate.cjs.js +0 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,29 +1,145 @@
|
|
|
1
1
|
# xstate
|
|
2
2
|
|
|
3
|
-
## 4.
|
|
3
|
+
## 4.29.0
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
|
-
- 1cd26811c
|
|
8
|
-
author: @mattpocock
|
|
7
|
+
- [#2674](https://github.com/statelyai/xstate/pull/2674) [`1cd26811c`](https://github.com/statelyai/xstate/commit/1cd26811cea441366a082b0f77c7a6ffb135dc38) Thanks [@Andarist](https://github.com/Andarist)! - Using `config.schema` becomes the preferred way of "declaring" TypeScript generics with this release:
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
```js
|
|
10
|
+
createMachine({
|
|
11
|
+
schema: {
|
|
12
|
+
context: {} as { count: number },
|
|
13
|
+
events: {} as { type: 'INC' } | { type: 'DEC' }
|
|
14
|
+
}
|
|
15
|
+
})
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
This allows us to leverage the inference algorithm better and unlocks some exciting possibilities for using XState in a more type-strict manner.
|
|
11
19
|
|
|
12
|
-
|
|
20
|
+
* [#2674](https://github.com/statelyai/xstate/pull/2674) [`1cd26811c`](https://github.com/statelyai/xstate/commit/1cd26811cea441366a082b0f77c7a6ffb135dc38) Thanks [@Andarist](https://github.com/Andarist), [@mattpocock](https://github.com/mattpocock)! - Added the ability to tighten TS declarations of machine with generated metadata. This opens several exciting doors to being able to use typegen seamlessly with XState to provide an amazing typing experience.
|
|
21
|
+
|
|
22
|
+
With the [VS Code extension](https://marketplace.visualstudio.com/items?itemName=statelyai.stately-vscode), you can specify a new attribute called `tsTypes: {}` in your machine definition:
|
|
13
23
|
|
|
14
24
|
```ts
|
|
15
25
|
const machine = createMachine({
|
|
16
|
-
tsTypes:
|
|
26
|
+
tsTypes: {}
|
|
17
27
|
});
|
|
18
28
|
```
|
|
19
29
|
|
|
20
|
-
The extension will automatically add
|
|
30
|
+
The extension will automatically add a type assertion to this property, which allows for type-safe access to a lot of XState's API's.
|
|
31
|
+
|
|
32
|
+
⚠️ This feature is in beta. Actions/services/guards/delays might currently get incorrectly annotated if they are called "in response" to always transitions or raised events. We are working on fixing this, both in XState and in the typegen.
|
|
33
|
+
|
|
34
|
+
### Patch Changes
|
|
35
|
+
|
|
36
|
+
* [#2962](https://github.com/statelyai/xstate/pull/2962) [`32520650b`](https://github.com/statelyai/xstate/commit/32520650b7d6b43e416b896054033432aaede5d5) Thanks [@mattpocock](https://github.com/mattpocock)! - Added `t()`, which can be used to provide types for `schema` attributes in machine configs:
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { t, createMachine } from 'xstate';
|
|
40
|
+
|
|
41
|
+
const machine = createMachine({
|
|
42
|
+
schema: {
|
|
43
|
+
context: t<{ value: number }>(),
|
|
44
|
+
events: t<{ type: 'EVENT_1' } | { type: 'EVENT_2' }>()
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
- [#2957](https://github.com/statelyai/xstate/pull/2957) [`8550ddda7`](https://github.com/statelyai/xstate/commit/8550ddda73e2ad291e19173d7fa8d13e3336fbb9) Thanks [@davidkpiano](https://github.com/davidkpiano)! - The repository links have been updated from `github.com/davidkpiano` to `github.com/statelyai`.
|
|
50
|
+
|
|
51
|
+
## 4.28.1
|
|
52
|
+
|
|
53
|
+
### Patch Changes
|
|
54
|
+
|
|
55
|
+
- [#2943](https://github.com/statelyai/xstate/pull/2943) [`e9f3f07a1`](https://github.com/statelyai/xstate/commit/e9f3f07a1ee9fe97af7e8f532c5b3dd3c4f73cec) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an infinite loop when initially spawned actor (in an initial context) responded synchronously to its parent.
|
|
56
|
+
|
|
57
|
+
* [#2953](https://github.com/statelyai/xstate/pull/2953) [`90fa97008`](https://github.com/statelyai/xstate/commit/90fa97008970283f17a3f2f6aa9b1b7071593e80) Thanks [@Andarist](https://github.com/Andarist)! - Bring back the global type declaration for the `Symbol.observable` to fix consuming projects that do not use `skipLibCheck`.
|
|
58
|
+
|
|
59
|
+
- [#2903](https://github.com/statelyai/xstate/pull/2903) [`b6dde9075`](https://github.com/statelyai/xstate/commit/b6dde9075adb3bb3522b4b8f8eeb804d3221a527) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with exit actions being called in random order when stopping a machine. They should always be called in the reversed document order (the ones defined on children should be called before the ones defined on ancestors and the ones defined on states appearing later in the code should be called before the ones defined on their sibling states).
|
|
60
|
+
|
|
61
|
+
## 4.28.0
|
|
62
|
+
|
|
63
|
+
### Minor Changes
|
|
64
|
+
|
|
65
|
+
- [#2835](https://github.com/statelyai/xstate/pull/2835) [`029f7b75a`](https://github.com/statelyai/xstate/commit/029f7b75a22a8186e5e3983dfd980c52369ef09f) Thanks [@woutermont](https://github.com/woutermont)! - Added interop observable symbols to `ActorRef` so that actor refs are compatible with libraries like RxJS.
|
|
66
|
+
|
|
67
|
+
### Patch Changes
|
|
68
|
+
|
|
69
|
+
- [#2864](https://github.com/statelyai/xstate/pull/2864) [`4252ee212`](https://github.com/statelyai/xstate/commit/4252ee212e59fd074707b933c101662d47938849) Thanks [@davidkpiano](https://github.com/statelyai)! - Generated IDs for invocations that do not provide an `id` are now based on the state ID to avoid collisions:
|
|
70
|
+
|
|
71
|
+
```js
|
|
72
|
+
createMachine({
|
|
73
|
+
id: 'test',
|
|
74
|
+
initial: 'p',
|
|
75
|
+
states: {
|
|
76
|
+
p: {
|
|
77
|
+
type: 'parallel',
|
|
78
|
+
states: {
|
|
79
|
+
// Before this change, both invoke IDs would be 'someSource',
|
|
80
|
+
// which is incorrect.
|
|
81
|
+
a: {
|
|
82
|
+
invoke: {
|
|
83
|
+
src: 'someSource'
|
|
84
|
+
// generated invoke ID: 'test.p.a:invocation[0]'
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
b: {
|
|
88
|
+
invoke: {
|
|
89
|
+
src: 'someSource'
|
|
90
|
+
// generated invoke ID: 'test.p.b:invocation[0]'
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
* [#2925](https://github.com/statelyai/xstate/pull/2925) [`239b4666a`](https://github.com/statelyai/xstate/commit/239b4666ac302d80c028fef47c6e8ab7e0ae2757) Thanks [@devanfarrell](https://github.com/devanfarrell)! - The `sendTo(actorRef, event)` action creator introduced in `4.27.0`, which was not accessible from the package exports, can now be used just like other actions:
|
|
100
|
+
|
|
101
|
+
```js
|
|
102
|
+
import { actions } from 'xstate';
|
|
103
|
+
|
|
104
|
+
const { sendTo } = actions;
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## 4.27.0
|
|
108
|
+
|
|
109
|
+
### Minor Changes
|
|
110
|
+
|
|
111
|
+
- [#2800](https://github.com/statelyai/xstate/pull/2800) [`759a90155`](https://github.com/statelyai/xstate/commit/759a9015512bbf532d7044afe6a889c04dc7edf6) Thanks [@davidkpiano](https://github.com/statelyai)! - The `sendTo(actorRef, event)` action creator has been introduced. It allows you to specify the recipient actor ref of an event first, so that the event can be strongly typed against the events allowed to be received by the actor ref:
|
|
112
|
+
|
|
113
|
+
```ts
|
|
114
|
+
// ...
|
|
115
|
+
entry: sendTo(
|
|
116
|
+
(ctx) => ctx.someActorRef,
|
|
117
|
+
{ type: 'EVENT_FOR_ACTOR' }
|
|
118
|
+
),
|
|
119
|
+
// ...
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Patch Changes
|
|
123
|
+
|
|
124
|
+
- [#2804](https://github.com/statelyai/xstate/pull/2804) [`f3caecf5a`](https://github.com/statelyai/xstate/commit/f3caecf5ad384cfe2a843c26333aaa46a77ece68) Thanks [@davidkpiano](https://github.com/statelyai)! - The `state.can(...)` method no longer unnecessarily executes `assign()` actions and instead determines if a given event will change the state by reading transition data before evaluating actions.
|
|
125
|
+
|
|
126
|
+
* [#2856](https://github.com/statelyai/xstate/pull/2856) [`49c2e9094`](https://github.com/statelyai/xstate/commit/49c2e90945d369e2dfb2e4fc376b3f46714dce09) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with stopped children sometimes starting their own child actors. This could happen when the child was stopped synchronously (for example by its parent) when transitioning to an invoking state.
|
|
127
|
+
|
|
128
|
+
- [#2895](https://github.com/statelyai/xstate/pull/2895) [`df5ffce14`](https://github.com/statelyai/xstate/commit/df5ffce14908d0aa8056a56001039dfd260be1a4) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with some exit handlers being executed more than once when stopping a machine.
|
|
129
|
+
|
|
130
|
+
## 4.26.1
|
|
131
|
+
|
|
132
|
+
### Patch Changes
|
|
133
|
+
|
|
134
|
+
- [#2819](https://github.com/statelyai/xstate/pull/2819) [`0d51d33cd`](https://github.com/statelyai/xstate/commit/0d51d33cd6dc6ab876a5554788300282d03fa5d1) Thanks [@simonihmig](https://github.com/simonihmig)! - Support `globalThis` in `getGlobal()` for better compatibility
|
|
135
|
+
|
|
136
|
+
* [#2828](https://github.com/statelyai/xstate/pull/2828) [`c0ef3e8`](https://github.com/statelyai/xstate/commit/c0ef3e882c688e6beefb196a3293ec71b65625e3) Thanks [@davidkpiano](https://github.com/statelyai)! - XState is now compatible with TypeScript version 4.5.
|
|
21
137
|
|
|
22
138
|
## 4.26.0
|
|
23
139
|
|
|
24
140
|
### Minor Changes
|
|
25
141
|
|
|
26
|
-
- [#
|
|
142
|
+
- [#2672](https://github.com/statelyai/xstate/pull/2672) [`8e1d05d`](https://github.com/statelyai/xstate/commit/8e1d05dcafab0d1c8a63b07694b3f208850b0b4b) Thanks [@davidkpiano](https://github.com/statelyai)! - The `description` property is a new top-level property for state nodes and transitions, that lets you provide text descriptions:
|
|
27
143
|
|
|
28
144
|
```ts
|
|
29
145
|
const machine = createMachine({
|
|
@@ -53,7 +169,7 @@
|
|
|
53
169
|
|
|
54
170
|
### Patch Changes
|
|
55
171
|
|
|
56
|
-
- [#2738](https://github.com/statelyai/xstate/pull/2738) [`942fd90e0`](https://github.com/statelyai/xstate/commit/942fd90e0c7a942564dd9c2ffebb93d6c86698df) Thanks [@michelsciortino](https://github.com/michelsciortino)! - The `tags` property was missing from state's definitions. This is used when converting a state to a JSON string. Since this is how we serialize states within [`@xstate/inspect`](https://github.com/
|
|
172
|
+
- [#2738](https://github.com/statelyai/xstate/pull/2738) [`942fd90e0`](https://github.com/statelyai/xstate/commit/942fd90e0c7a942564dd9c2ffebb93d6c86698df) Thanks [@michelsciortino](https://github.com/michelsciortino)! - The `tags` property was missing from state's definitions. This is used when converting a state to a JSON string. Since this is how we serialize states within [`@xstate/inspect`](https://github.com/statelyai/xstate/tree/main/packages/xstate-inspect) this has caused inspected machines to miss the `tags` information.
|
|
57
173
|
|
|
58
174
|
* [#2740](https://github.com/statelyai/xstate/pull/2740) [`707cb981f`](https://github.com/statelyai/xstate/commit/707cb981fdb8a5c75cacb7e9bfa5c7e5a1cc1c88) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with tags being missed on a service state after starting that service using a state value, like this:
|
|
59
175
|
|
|
@@ -62,7 +178,7 @@
|
|
|
62
178
|
service.state.hasTag('foo'); // this should now return a correct result
|
|
63
179
|
```
|
|
64
180
|
|
|
65
|
-
- [#2691](https://github.com/statelyai/xstate/pull/2691) [`a72806035`](https://github.com/statelyai/xstate/commit/a728060353c9cb9bdb0cd37aacf793498a8750c8) Thanks [@davidkpiano](https://github.com/
|
|
181
|
+
- [#2691](https://github.com/statelyai/xstate/pull/2691) [`a72806035`](https://github.com/statelyai/xstate/commit/a728060353c9cb9bdb0cd37aacf793498a8750c8) Thanks [@davidkpiano](https://github.com/statelyai)! - Meta data can now be specified for `invoke` configs in the `invoke.meta` property:
|
|
66
182
|
|
|
67
183
|
```js
|
|
68
184
|
const machine = createMachine({
|
|
@@ -135,7 +251,7 @@
|
|
|
135
251
|
|
|
136
252
|
### Minor Changes
|
|
137
253
|
|
|
138
|
-
- [#2546](https://github.com/statelyai/xstate/pull/2546) [`a4cfce18c`](https://github.com/statelyai/xstate/commit/a4cfce18c0c179faef15adf25a75b08903064e28) Thanks [@davidkpiano](https://github.com/
|
|
254
|
+
- [#2546](https://github.com/statelyai/xstate/pull/2546) [`a4cfce18c`](https://github.com/statelyai/xstate/commit/a4cfce18c0c179faef15adf25a75b08903064e28) Thanks [@davidkpiano](https://github.com/statelyai)! - You can now know if an event will cause a state change by using the new `state.can(event)` method, which will return `true` if an interpreted machine will "change" the state when sent the `event`, or `false` otherwise:
|
|
139
255
|
|
|
140
256
|
```js
|
|
141
257
|
const machine = createMachine({
|
|
@@ -176,7 +292,7 @@
|
|
|
176
292
|
|
|
177
293
|
### Patch Changes
|
|
178
294
|
|
|
179
|
-
- [#2632](https://github.com/statelyai/xstate/pull/2632) [`f8cf5dfe0`](https://github.com/statelyai/xstate/commit/f8cf5dfe0bf20c8545208ed7b1ade619933004f9) Thanks [@davidkpiano](https://github.com/
|
|
295
|
+
- [#2632](https://github.com/statelyai/xstate/pull/2632) [`f8cf5dfe0`](https://github.com/statelyai/xstate/commit/f8cf5dfe0bf20c8545208ed7b1ade619933004f9) Thanks [@davidkpiano](https://github.com/statelyai)! - A regression was fixed where actions were being typed as `never` if events were specified in `createModel(...)` but not actions:
|
|
180
296
|
|
|
181
297
|
```ts
|
|
182
298
|
const model = createModel(
|
|
@@ -197,7 +313,7 @@
|
|
|
197
313
|
|
|
198
314
|
### Patch Changes
|
|
199
315
|
|
|
200
|
-
- [#2606](https://github.com/statelyai/xstate/pull/2606) [`01e5d7984`](https://github.com/statelyai/xstate/commit/01e5d7984a5441a6980eacdb06d42c2a9398bdff) Thanks [@davidkpiano](https://github.com/
|
|
316
|
+
- [#2606](https://github.com/statelyai/xstate/pull/2606) [`01e5d7984`](https://github.com/statelyai/xstate/commit/01e5d7984a5441a6980eacdb06d42c2a9398bdff) Thanks [@davidkpiano](https://github.com/statelyai)! - The following utility types were previously returning `never` in some unexpected cases, and are now working as expected:
|
|
201
317
|
|
|
202
318
|
- `ContextFrom<T>`
|
|
203
319
|
- `EventFrom<T>`
|
|
@@ -236,9 +352,9 @@
|
|
|
236
352
|
type Interpreter = InterpreterFrom<ReturnType<typeof machine>>;
|
|
237
353
|
```
|
|
238
354
|
|
|
239
|
-
* [`413a4578`](https://github.com/statelyai/xstate/commit/413a4578cded21beffff822d1485a3725457b768) [#2491](https://github.com/statelyai/xstate/pull/2491) Thanks [@davidkpiano](https://github.com/
|
|
355
|
+
* [`413a4578`](https://github.com/statelyai/xstate/commit/413a4578cded21beffff822d1485a3725457b768) [#2491](https://github.com/statelyai/xstate/pull/2491) Thanks [@davidkpiano](https://github.com/statelyai)! - The custom `.toString()` method on action objects is now removed which improves performance in larger applications (see [#2488](https://github.com/statelyai/xstate/discussions/2488) for more context).
|
|
240
356
|
|
|
241
|
-
- [`5e1223cd`](https://github.com/statelyai/xstate/commit/5e1223cd58485045b192677753946df2c00eddf7) [#2422](https://github.com/statelyai/xstate/pull/2422) Thanks [@davidkpiano](https://github.com/
|
|
357
|
+
- [`5e1223cd`](https://github.com/statelyai/xstate/commit/5e1223cd58485045b192677753946df2c00eddf7) [#2422](https://github.com/statelyai/xstate/pull/2422) Thanks [@davidkpiano](https://github.com/statelyai)! - The `context` property has been removed from `StateNodeConfig`, as it has never been allowed, nor has it ever done anything. The previous typing was unsafe and allowed `context` to be specified on nested state nodes:
|
|
242
358
|
|
|
243
359
|
```ts
|
|
244
360
|
createMachine({
|
|
@@ -256,7 +372,7 @@
|
|
|
256
372
|
});
|
|
257
373
|
```
|
|
258
374
|
|
|
259
|
-
* [`5b70c2ff`](https://github.com/statelyai/xstate/commit/5b70c2ff21cc5d8c6cf1c13b6eb7bb12611a9835) [#2508](https://github.com/statelyai/xstate/pull/2508) Thanks [@davidkpiano](https://github.com/
|
|
375
|
+
* [`5b70c2ff`](https://github.com/statelyai/xstate/commit/5b70c2ff21cc5d8c6cf1c13b6eb7bb12611a9835) [#2508](https://github.com/statelyai/xstate/pull/2508) Thanks [@davidkpiano](https://github.com/statelyai)! - A race condition occurred when a child service is immediately stopped and the parent service tried to remove it from its undefined state (during its own initialization). This has been fixed, and the race condition no longer occurs. See [this issue](https://github.com/statelyai/xstate/issues/2507) for details.
|
|
260
376
|
|
|
261
377
|
- [`5a9500d1`](https://github.com/statelyai/xstate/commit/5a9500d1cde9bf2300a85bc81529da83f2d08361) [#2522](https://github.com/statelyai/xstate/pull/2522) Thanks [@farskid](https://github.com/farskid), [@Andarist](https://github.com/Andarist)! - Adjusted TS type definitions of the `withContext` and `withConfig` methods so that they accept "lazy context" now.
|
|
262
378
|
|
|
@@ -289,7 +405,7 @@
|
|
|
289
405
|
|
|
290
406
|
### Minor Changes
|
|
291
407
|
|
|
292
|
-
- [`7dc7ceb8`](https://github.com/statelyai/xstate/commit/7dc7ceb8707569b48ceb35069125763a701a0a58) [#2379](https://github.com/statelyai/xstate/pull/2379) Thanks [@davidkpiano](https://github.com/
|
|
408
|
+
- [`7dc7ceb8`](https://github.com/statelyai/xstate/commit/7dc7ceb8707569b48ceb35069125763a701a0a58) [#2379](https://github.com/statelyai/xstate/pull/2379) Thanks [@davidkpiano](https://github.com/statelyai)! - There is a new `.preserveActionOrder` (default: `false`) setting in the machine configuration that preserves the order of actions when set to `true`. Normally, actions are executed in order _except_ for `assign(...)` actions, which are prioritized and executed first. When `.preserveActionOrder` is set to `true`, `assign(...)` actions will _not_ be prioritized, and will instead run in order. As a result, actions will capture the **intermediate `context` values** instead of the resulting `context` value from all `assign(...)` actions.
|
|
293
409
|
|
|
294
410
|
```ts
|
|
295
411
|
// With `.preserveActionOrder: true`
|
|
@@ -323,7 +439,7 @@
|
|
|
323
439
|
|
|
324
440
|
- [`4e305372`](https://github.com/statelyai/xstate/commit/4e30537266eb082ccd85f050c9372358247b4167) [#2361](https://github.com/statelyai/xstate/pull/2361) Thanks [@woutermont](https://github.com/woutermont)! - Add type for `Symbol.observable` to the `Interpreter` to improve the compatibility with RxJS.
|
|
325
441
|
|
|
326
|
-
* [`1def6cf6`](https://github.com/statelyai/xstate/commit/1def6cf6109867a87b4323ee83d20a9ee0c49d7b) [#2374](https://github.com/statelyai/xstate/pull/2374) Thanks [@davidkpiano](https://github.com/
|
|
442
|
+
* [`1def6cf6`](https://github.com/statelyai/xstate/commit/1def6cf6109867a87b4323ee83d20a9ee0c49d7b) [#2374](https://github.com/statelyai/xstate/pull/2374) Thanks [@davidkpiano](https://github.com/statelyai)! - Existing actors can now be identified in `spawn(...)` calls by providing an `id`. This allows them to be referenced by string:
|
|
327
443
|
|
|
328
444
|
```ts
|
|
329
445
|
const machine = createMachine({
|
|
@@ -338,7 +454,7 @@
|
|
|
338
454
|
});
|
|
339
455
|
```
|
|
340
456
|
|
|
341
|
-
- [`da6861e3`](https://github.com/statelyai/xstate/commit/da6861e34a2b28bf6eeaa7c04a2d4cf9a90f93f1) [#2391](https://github.com/statelyai/xstate/pull/2391) Thanks [@davidkpiano](https://github.com/
|
|
457
|
+
- [`da6861e3`](https://github.com/statelyai/xstate/commit/da6861e34a2b28bf6eeaa7c04a2d4cf9a90f93f1) [#2391](https://github.com/statelyai/xstate/pull/2391) Thanks [@davidkpiano](https://github.com/statelyai)! - There are two new helper types for extracting `context` and `event` types:
|
|
342
458
|
|
|
343
459
|
- `ContextFrom<T>` which extracts the `context` from any type that uses context
|
|
344
460
|
- `EventFrom<T>` which extracts the `event` type (which extends `EventObject`) from any type which uses events
|
|
@@ -347,7 +463,7 @@
|
|
|
347
463
|
|
|
348
464
|
### Minor Changes
|
|
349
465
|
|
|
350
|
-
- [`1b32aa0d`](https://github.com/statelyai/xstate/commit/1b32aa0d3a0eca11ffcb7ec9d710eb8828107aa0) [#2356](https://github.com/statelyai/xstate/pull/2356) Thanks [@davidkpiano](https://github.com/
|
|
466
|
+
- [`1b32aa0d`](https://github.com/statelyai/xstate/commit/1b32aa0d3a0eca11ffcb7ec9d710eb8828107aa0) [#2356](https://github.com/statelyai/xstate/pull/2356) Thanks [@davidkpiano](https://github.com/statelyai)! - The model created from `createModel(...)` now provides a `.createMachine(...)` method that does not require passing any generic type parameters:
|
|
351
467
|
|
|
352
468
|
```diff
|
|
353
469
|
const model = createModel(/* ... */);
|
|
@@ -356,7 +472,7 @@
|
|
|
356
472
|
+const machine = model.createMachine(/* ... */);
|
|
357
473
|
```
|
|
358
474
|
|
|
359
|
-
* [`432b60f7`](https://github.com/statelyai/xstate/commit/432b60f7bcbcee9510e0d86311abbfd75b1a674e) [#2280](https://github.com/statelyai/xstate/pull/2280) Thanks [@davidkpiano](https://github.com/
|
|
475
|
+
* [`432b60f7`](https://github.com/statelyai/xstate/commit/432b60f7bcbcee9510e0d86311abbfd75b1a674e) [#2280](https://github.com/statelyai/xstate/pull/2280) Thanks [@davidkpiano](https://github.com/statelyai)! - Actors can now be invoked/spawned from reducers using the `fromReducer(...)` behavior creator:
|
|
360
476
|
|
|
361
477
|
```ts
|
|
362
478
|
import { fromReducer } from 'xstate/lib/behaviors';
|
|
@@ -389,7 +505,7 @@
|
|
|
389
505
|
});
|
|
390
506
|
```
|
|
391
507
|
|
|
392
|
-
- [`f9bcea2c`](https://github.com/
|
|
508
|
+
- [`f9bcea2c`](https://github.com/statelyai/xstate/commit/f9bcea2ce909ac59fcb165b352a7b51a8b29a56d) [#2366](https://github.com/statelyai/xstate/pull/2366) Thanks [@davidkpiano](https://github.com/statelyai)! - Actors can now be spawned directly in the initial `machine.context` using lazy initialization, avoiding the need for intermediate states and unsafe typings for immediately spawned actors:
|
|
393
509
|
|
|
394
510
|
```ts
|
|
395
511
|
const machine = createMachine<{ ref: ActorRef<SomeEvent> }>({
|
|
@@ -404,13 +520,13 @@
|
|
|
404
520
|
|
|
405
521
|
### Patch Changes
|
|
406
522
|
|
|
407
|
-
- [`1ef29e83`](https://github.com/
|
|
523
|
+
- [`1ef29e83`](https://github.com/statelyai/xstate/commit/1ef29e83e14331083279d50fd3a8907eb63793eb) [#2343](https://github.com/statelyai/xstate/pull/2343) Thanks [@davidkpiano](https://github.com/statelyai)! - Eventless ("always") transitions will no longer be ignored if an event is sent to a machine in a state that does not have any enabled transitions for that event.
|
|
408
524
|
|
|
409
525
|
## 4.20.1
|
|
410
526
|
|
|
411
527
|
### Patch Changes
|
|
412
528
|
|
|
413
|
-
- [`99bc5fb9`](https://github.com/
|
|
529
|
+
- [`99bc5fb9`](https://github.com/statelyai/xstate/commit/99bc5fb9d1d7be35f4c767dcbbf5287755b306d0) [#2275](https://github.com/statelyai/xstate/pull/2275) Thanks [@davidkpiano](https://github.com/statelyai)! - The `SpawnedActorRef` TypeScript interface has been deprecated in favor of a unified `ActorRef` interface, which contains the following:
|
|
414
530
|
|
|
415
531
|
```ts
|
|
416
532
|
interface ActorRef<TEvent extends EventObject, TEmitted = any>
|
|
@@ -435,7 +551,7 @@
|
|
|
435
551
|
}
|
|
436
552
|
```
|
|
437
553
|
|
|
438
|
-
* [`38e6a5e9`](https://github.com/
|
|
554
|
+
* [`38e6a5e9`](https://github.com/statelyai/xstate/commit/38e6a5e98a1dd54b4f2ef96942180ec0add88f2b) [#2334](https://github.com/statelyai/xstate/pull/2334) Thanks [@davidkpiano](https://github.com/statelyai)! - When using a model type in `createMachine<typeof someModel>(...)`, TypeScript will no longer compile machines that are missing the `context` property in the machine configuration:
|
|
439
555
|
|
|
440
556
|
```ts
|
|
441
557
|
const machine = createMachine<typeof someModel>({
|
|
@@ -448,7 +564,7 @@
|
|
|
448
564
|
});
|
|
449
565
|
```
|
|
450
566
|
|
|
451
|
-
- [`5f790ba5`](https://github.com/
|
|
567
|
+
- [`5f790ba5`](https://github.com/statelyai/xstate/commit/5f790ba5478cb733a59e3b0603e8976c11bcdd04) [#2320](https://github.com/statelyai/xstate/pull/2320) Thanks [@davidkpiano](https://github.com/statelyai)! - The typing for `InvokeCallback` have been improved for better event constraints when using the `sendBack` parameter of invoked callbacks:
|
|
452
568
|
|
|
453
569
|
```ts
|
|
454
570
|
invoke: () => (sendBack, receive) => {
|
|
@@ -457,7 +573,7 @@
|
|
|
457
573
|
};
|
|
458
574
|
```
|
|
459
575
|
|
|
460
|
-
* [`2de3ec3e`](https://github.com/
|
|
576
|
+
* [`2de3ec3e`](https://github.com/statelyai/xstate/commit/2de3ec3e994e0deb5a142aeac15e1eddeb18d1e1) [#2272](https://github.com/statelyai/xstate/pull/2272) Thanks [@davidkpiano](https://github.com/statelyai)! - The `state.meta` value is now calculated directly from `state.configuration`. This is most useful when starting a service from a persisted state:
|
|
461
577
|
|
|
462
578
|
```ts
|
|
463
579
|
const machine = createMachine({
|
|
@@ -494,7 +610,7 @@
|
|
|
494
610
|
|
|
495
611
|
### Minor Changes
|
|
496
612
|
|
|
497
|
-
- [`28059b9f`](https://github.com/
|
|
613
|
+
- [`28059b9f`](https://github.com/statelyai/xstate/commit/28059b9f09926d683d80b7d816f5b703c0667a9f) [#2197](https://github.com/statelyai/xstate/pull/2197) Thanks [@davidkpiano](https://github.com/statelyai)! - All spawned and invoked actors now have a `.getSnapshot()` method, which allows you to retrieve the latest value emitted from that actor. That value may be `undefined` if no value has been emitted yet.
|
|
498
614
|
|
|
499
615
|
```js
|
|
500
616
|
const machine = createMachine({
|
|
@@ -525,31 +641,31 @@
|
|
|
525
641
|
|
|
526
642
|
### Patch Changes
|
|
527
643
|
|
|
528
|
-
- [`4ef03465`](https://github.com/
|
|
644
|
+
- [`4ef03465`](https://github.com/statelyai/xstate/commit/4ef03465869e27dc878ec600661c9253d90f74f0) [#2240](https://github.com/statelyai/xstate/pull/2240) Thanks [@VanTanev](https://github.com/VanTanev)! - Preserve StateMachine type when .withConfig() and .withContext() modifiers are used on a machine.
|
|
529
645
|
|
|
530
646
|
## 4.19.2
|
|
531
647
|
|
|
532
648
|
### Patch Changes
|
|
533
649
|
|
|
534
|
-
- [`18789aa9`](https://github.com/
|
|
650
|
+
- [`18789aa9`](https://github.com/statelyai/xstate/commit/18789aa94669e48b71e2ae22e524d9bbe9dbfc63) [#2107](https://github.com/statelyai/xstate/pull/2107) Thanks [@woutermont](https://github.com/woutermont)! - This update restricts invoked `Subscribable`s to `EventObject`s,
|
|
535
651
|
so that type inference can be done on which `Subscribable`s are
|
|
536
652
|
allowed to be invoked. Existing `MachineConfig`s that invoke
|
|
537
653
|
`Subscribable<any>`s that are not `Subscribable<EventObject>`s
|
|
538
654
|
should be updated accordingly.
|
|
539
655
|
|
|
540
|
-
* [`38dcec1d`](https://github.com/
|
|
656
|
+
* [`38dcec1d`](https://github.com/statelyai/xstate/commit/38dcec1dad60c62cf8c47c88736651483276ff87) [#2149](https://github.com/statelyai/xstate/pull/2149) Thanks [@davidkpiano](https://github.com/statelyai)! - Invocations and entry actions for _combinatorial_ machines (machines with only a single root state) now behave predictably and will not re-execute upon targetless transitions.
|
|
541
657
|
|
|
542
658
|
## 4.19.1
|
|
543
659
|
|
|
544
660
|
### Patch Changes
|
|
545
661
|
|
|
546
|
-
- [`64ab1150`](https://github.com/
|
|
662
|
+
- [`64ab1150`](https://github.com/statelyai/xstate/commit/64ab1150e0a383202f4af1d586b28e081009c929) [#2173](https://github.com/statelyai/xstate/pull/2173) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with tags not being set correctly after sending an event to a machine that didn't result in selecting any transitions.
|
|
547
663
|
|
|
548
664
|
## 4.19.0
|
|
549
665
|
|
|
550
666
|
### Minor Changes
|
|
551
667
|
|
|
552
|
-
- [`4f2f626d`](https://github.com/
|
|
668
|
+
- [`4f2f626d`](https://github.com/statelyai/xstate/commit/4f2f626dc84f45bb18ded6dd9aad3b6f6a2190b1) [#2143](https://github.com/statelyai/xstate/pull/2143) Thanks [@davidkpiano](https://github.com/statelyai)! - Tags can now be added to state node configs under the `.tags` property:
|
|
553
669
|
|
|
554
670
|
```js
|
|
555
671
|
const machine = createMachine({
|
|
@@ -577,15 +693,15 @@
|
|
|
577
693
|
|
|
578
694
|
### Patch Changes
|
|
579
695
|
|
|
580
|
-
- [`a61d01ce`](https://github.com/
|
|
696
|
+
- [`a61d01ce`](https://github.com/statelyai/xstate/commit/a61d01cefab5734adf9bfb167291f5b0ba712684) [#2125](https://github.com/statelyai/xstate/pull/2125) Thanks [@VanTanev](https://github.com/VanTanev)! - In callback invokes, the types of `callback` and `onReceive` are properly scoped to the machine TEvent.
|
|
581
697
|
|
|
582
698
|
## 4.18.0
|
|
583
699
|
|
|
584
700
|
### Minor Changes
|
|
585
701
|
|
|
586
|
-
- [`d0939ec6`](https://github.com/
|
|
702
|
+
- [`d0939ec6`](https://github.com/statelyai/xstate/commit/d0939ec60161c34b053cecdaeb277606b5982375) [#2046](https://github.com/statelyai/xstate/pull/2046) Thanks [@SimeonC](https://github.com/SimeonC)! - Allow machines to communicate with the inspector even in production builds.
|
|
587
703
|
|
|
588
|
-
* [`e37fffef`](https://github.com/
|
|
704
|
+
* [`e37fffef`](https://github.com/statelyai/xstate/commit/e37fffefb742f45765945c02727edfbd5e2f9d47) [#2079](https://github.com/statelyai/xstate/pull/2079) Thanks [@davidkpiano](https://github.com/statelyai)! - There is now support for "combinatorial machines" (state machines that only have one state):
|
|
589
705
|
|
|
590
706
|
```js
|
|
591
707
|
const testMachine = createMachine({
|
|
@@ -602,19 +718,19 @@
|
|
|
602
718
|
|
|
603
719
|
### Patch Changes
|
|
604
720
|
|
|
605
|
-
- [`6a9247d4`](https://github.com/
|
|
721
|
+
- [`6a9247d4`](https://github.com/statelyai/xstate/commit/6a9247d4d3a39e6c8c4724d3368a13fcdef10907) [#2102](https://github.com/statelyai/xstate/pull/2102) Thanks [@VanTanev](https://github.com/VanTanev)! - Provide a convenience type for getting the `Interpreter` type based on the `StateMachine` type by transferring all generic parameters onto it. It can be used like this: `InterpreterFrom<typeof machine>`
|
|
606
722
|
|
|
607
723
|
## 4.17.1
|
|
608
724
|
|
|
609
725
|
### Patch Changes
|
|
610
726
|
|
|
611
|
-
- [`33302814`](https://github.com/
|
|
727
|
+
- [`33302814`](https://github.com/statelyai/xstate/commit/33302814c38587d0044afd2ae61a4ff4779416c6) [#2041](https://github.com/statelyai/xstate/pull/2041) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with creatorless models not being correctly matched by `createMachine`'s overload responsible for using model-induced types.
|
|
612
728
|
|
|
613
729
|
## 4.17.0
|
|
614
730
|
|
|
615
731
|
### Minor Changes
|
|
616
732
|
|
|
617
|
-
- [`7763db8d`](https://github.com/
|
|
733
|
+
- [`7763db8d`](https://github.com/statelyai/xstate/commit/7763db8d3615321d03839b2bd31c9b118ddee50c) [#1977](https://github.com/statelyai/xstate/pull/1977) Thanks [@davidkpiano](https://github.com/statelyai)! - The `schema` property has been introduced to the machine config passed into `createMachine(machineConfig)`, which allows you to provide metadata for the following:
|
|
618
734
|
|
|
619
735
|
- Context
|
|
620
736
|
- Events
|
|
@@ -666,7 +782,7 @@
|
|
|
666
782
|
});
|
|
667
783
|
```
|
|
668
784
|
|
|
669
|
-
* [`5febfe83`](https://github.com/
|
|
785
|
+
* [`5febfe83`](https://github.com/statelyai/xstate/commit/5febfe83a7e5e866c0a4523ea4f86a966af7c50f) [#1955](https://github.com/statelyai/xstate/pull/1955) Thanks [@davidkpiano](https://github.com/statelyai)! - Event creators can now be modeled inside of the 2nd argument of `createModel()`, and types for both `context` and `events` will be inferred properly in `createMachine()` when given the `typeof model` as the first generic parameter.
|
|
670
786
|
|
|
671
787
|
```ts
|
|
672
788
|
import { createModel } from 'xstate/lib/model';
|
|
@@ -714,25 +830,25 @@
|
|
|
714
830
|
|
|
715
831
|
### Patch Changes
|
|
716
832
|
|
|
717
|
-
- [`4194ffe8`](https://github.com/
|
|
833
|
+
- [`4194ffe8`](https://github.com/statelyai/xstate/commit/4194ffe84cfe7910e2c183701e36bc5cac5c9bcc) [#1710](https://github.com/statelyai/xstate/pull/1710) Thanks [@davidkpiano](https://github.com/statelyai)! - Stopping an already stopped interpreter will no longer crash. See [#1697](https://github.com/statelyai/xstate/issues/1697) for details.
|
|
718
834
|
|
|
719
835
|
## 4.16.1
|
|
720
836
|
|
|
721
837
|
### Patch Changes
|
|
722
838
|
|
|
723
|
-
- [`af6b7c70`](https://github.com/
|
|
839
|
+
- [`af6b7c70`](https://github.com/statelyai/xstate/commit/af6b7c70015db29d84f79dfd29ea0dc221b8f3e6) [#1865](https://github.com/statelyai/xstate/pull/1865) Thanks [@Andarist](https://github.com/Andarist)! - Improved `.matches(value)` inference for typestates containing union types as values.
|
|
724
840
|
|
|
725
841
|
## 4.16.0
|
|
726
842
|
|
|
727
843
|
### Minor Changes
|
|
728
844
|
|
|
729
|
-
- [`d2e328f8`](https://github.com/
|
|
845
|
+
- [`d2e328f8`](https://github.com/statelyai/xstate/commit/d2e328f8efad7e8d3500d39976d1153a26e835a3) [#1439](https://github.com/statelyai/xstate/pull/1439) Thanks [@davidkpiano](https://github.com/statelyai)! - An opt-in `createModel()` helper has been introduced to make it easier to work with typed `context` and events.
|
|
730
846
|
|
|
731
847
|
- `createModel(initialContext)` creates a `model` object
|
|
732
848
|
- `model.initialContext` returns the `initialContext`
|
|
733
849
|
- `model.assign(assigner, event?)` creates an `assign` action that is properly scoped to the `event` in TypeScript
|
|
734
850
|
|
|
735
|
-
See https://github.com/
|
|
851
|
+
See https://github.com/statelyai/xstate/pull/1439 for more details.
|
|
736
852
|
|
|
737
853
|
```js
|
|
738
854
|
import { createMachine } from 'xstate';
|
|
@@ -775,31 +891,31 @@
|
|
|
775
891
|
|
|
776
892
|
### Patch Changes
|
|
777
893
|
|
|
778
|
-
- [`0cb8df9b`](https://github.com/
|
|
894
|
+
- [`0cb8df9b`](https://github.com/statelyai/xstate/commit/0cb8df9b6c8cd01ada82afe967bf1015e24e75d9) [#1816](https://github.com/statelyai/xstate/pull/1816) Thanks [@Andarist](https://github.com/Andarist)! - `machine.resolveState(state)` calls should resolve to the correct value of `.done` property now.
|
|
779
895
|
|
|
780
896
|
## 4.15.3
|
|
781
897
|
|
|
782
898
|
### Patch Changes
|
|
783
899
|
|
|
784
|
-
- [`63ba888e`](https://github.com/
|
|
900
|
+
- [`63ba888e`](https://github.com/statelyai/xstate/commit/63ba888e19bd2b72f9aad2c9cd36cde297e0ffe5) [#1770](https://github.com/statelyai/xstate/pull/1770) Thanks [@davidkpiano](https://github.com/statelyai)! - Instead of referencing `window` directly, XState now internally calls a `getGlobal()` function that will resolve to the proper `globalThis` value in all environments. This affects the dev tools code only.
|
|
785
901
|
|
|
786
902
|
## 4.15.2
|
|
787
903
|
|
|
788
904
|
### Patch Changes
|
|
789
905
|
|
|
790
|
-
- [`497c543d`](https://github.com/
|
|
906
|
+
- [`497c543d`](https://github.com/statelyai/xstate/commit/497c543d2980ea1a277b30b340a7bcd3dd0b3cb6) [#1766](https://github.com/statelyai/xstate/pull/1766) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with events received from callback actors not having the appropriate `_event.origin` set.
|
|
791
907
|
|
|
792
908
|
## 4.15.1
|
|
793
909
|
|
|
794
910
|
### Patch Changes
|
|
795
911
|
|
|
796
|
-
- [`8a8cfa32`](https://github.com/
|
|
912
|
+
- [`8a8cfa32`](https://github.com/statelyai/xstate/commit/8a8cfa32d99aedf11f4af93ba56fa9ba68925c74) [#1704](https://github.com/statelyai/xstate/pull/1704) Thanks [@blimmer](https://github.com/blimmer)! - The default `clock` methods (`setTimeout` and `clearTimeout`) are now invoked properly with the global context preserved for those invocations which matter for some JS environments. More details can be found in the corresponding issue: [#1703](https://github.com/statelyai/xstate/issues/1703).
|
|
797
913
|
|
|
798
914
|
## 4.15.0
|
|
799
915
|
|
|
800
916
|
### Minor Changes
|
|
801
917
|
|
|
802
|
-
- [`6596d0ba`](https://github.com/
|
|
918
|
+
- [`6596d0ba`](https://github.com/statelyai/xstate/commit/6596d0ba163341fc43d214b48115536cb4815b68) [#1622](https://github.com/statelyai/xstate/pull/1622) Thanks [@davidkpiano](https://github.com/statelyai)! - Spawned/invoked actors and interpreters are now typed as extending `ActorRef` (e.g., `SpawnedActorRef`) rather than `Actor` or `Interpreter`. This unification of types should make it more straightforward to provide actor types:
|
|
803
919
|
|
|
804
920
|
```diff
|
|
805
921
|
import {
|
|
@@ -836,19 +952,19 @@
|
|
|
836
952
|
|
|
837
953
|
### Patch Changes
|
|
838
954
|
|
|
839
|
-
- [`75a91b07`](https://github.com/
|
|
955
|
+
- [`75a91b07`](https://github.com/statelyai/xstate/commit/75a91b078a10a86f13edc9eec3ac1d6246607002) [#1692](https://github.com/statelyai/xstate/pull/1692) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with history state entering a wrong state if the most recent visit in its parent has been caused by a transient transition.
|
|
840
956
|
|
|
841
957
|
## 4.14.1
|
|
842
958
|
|
|
843
959
|
### Patch Changes
|
|
844
960
|
|
|
845
|
-
- [`02c76350`](https://github.com/
|
|
961
|
+
- [`02c76350`](https://github.com/statelyai/xstate/commit/02c763504da0808eeb281587981a5baf8ba884a1) [#1656](https://github.com/statelyai/xstate/pull/1656) Thanks [@Andarist](https://github.com/Andarist)! - Exit actions will now be properly called when a service gets canceled by calling its `stop` method.
|
|
846
962
|
|
|
847
963
|
## 4.14.0
|
|
848
964
|
|
|
849
965
|
### Minor Changes
|
|
850
966
|
|
|
851
|
-
- [`119db8fb`](https://github.com/
|
|
967
|
+
- [`119db8fb`](https://github.com/statelyai/xstate/commit/119db8fbccd08f899e1275a502d8c4c51b5a130e) [#1577](https://github.com/statelyai/xstate/pull/1577) Thanks [@davidkpiano](https://github.com/statelyai)! - Expressions can now be used in the `stop()` action creator:
|
|
852
968
|
|
|
853
969
|
```js
|
|
854
970
|
// ...
|
|
@@ -857,27 +973,27 @@
|
|
|
857
973
|
|
|
858
974
|
### Patch Changes
|
|
859
975
|
|
|
860
|
-
- [`8c78e120`](https://github.com/
|
|
976
|
+
- [`8c78e120`](https://github.com/statelyai/xstate/commit/8c78e1205a729d933e30db01cd4260d82352a9be) [#1570](https://github.com/statelyai/xstate/pull/1570) Thanks [@davidkpiano](https://github.com/statelyai)! - The return type of `spawn(machine)` will now be `Actor<State<TContext, TEvent>, TEvent>`, which is a supertype of `Interpreter<...>`.
|
|
861
977
|
|
|
862
|
-
* [`602687c2`](https://github.com/
|
|
978
|
+
* [`602687c2`](https://github.com/statelyai/xstate/commit/602687c235c56cca552c2d5a9d78adf224f522d8) [#1566](https://github.com/statelyai/xstate/pull/1566) Thanks [@davidkpiano](https://github.com/statelyai)! - Exit actions will now be properly called when an invoked machine reaches its final state. See [#1109](https://github.com/statelyai/xstate/issues/1109) for more details.
|
|
863
979
|
|
|
864
|
-
- [`6e44d02a`](https://github.com/
|
|
980
|
+
- [`6e44d02a`](https://github.com/statelyai/xstate/commit/6e44d02ad03af4041046120dd6c975e3b5b3772a) [#1553](https://github.com/statelyai/xstate/pull/1553) Thanks [@davidkpiano](https://github.com/statelyai)! - The `state.children` property now properly shows all spawned and invoked actors. See [#795](https://github.com/statelyai/xstate/issues/795) for more details.
|
|
865
981
|
|
|
866
|
-
* [`72b0880e`](https://github.com/
|
|
982
|
+
* [`72b0880e`](https://github.com/statelyai/xstate/commit/72b0880e6444ae009adca72088872bb5c0760ce3) [#1504](https://github.com/statelyai/xstate/pull/1504) Thanks [@Andarist](https://github.com/Andarist)! - Added `status` property on the `Interpreter` - this can be used to differentiate not started, running and stopped interpreters. This property is best compared to values on the new `InterpreterStatus` export.
|
|
867
983
|
|
|
868
984
|
## 4.13.0
|
|
869
985
|
|
|
870
986
|
### Minor Changes
|
|
871
987
|
|
|
872
|
-
- [`f51614df`](https://github.com/
|
|
988
|
+
- [`f51614df`](https://github.com/statelyai/xstate/commit/f51614dff760cfe4511c0bc7cca3d022157c104c) [#1409](https://github.com/statelyai/xstate/pull/1409) Thanks [@jirutka](https://github.com/jirutka)! - Fix type `ExtractStateValue` so that it generates a type actually describing a `State.value`
|
|
873
989
|
|
|
874
990
|
### Patch Changes
|
|
875
991
|
|
|
876
|
-
- [`b1684ead`](https://github.com/
|
|
992
|
+
- [`b1684ead`](https://github.com/statelyai/xstate/commit/b1684eadb1f859db5c733b8d403afc825c294948) [#1402](https://github.com/statelyai/xstate/pull/1402) Thanks [@Andarist](https://github.com/Andarist)! - Improved TypeScript type-checking performance a little bit by using distributive conditional type within `TransitionsConfigArray` declarations instead of a mapped type. Kudos to [@amcasey](https://github.com/amcasey), some discussion around this can be found [here](https://github.com/microsoft/TypeScript/issues/39826#issuecomment-675790689)
|
|
877
993
|
|
|
878
|
-
* [`ad3026d4`](https://github.com/
|
|
994
|
+
* [`ad3026d4`](https://github.com/statelyai/xstate/commit/ad3026d4309e9a1c719e09fd8c15cdfefce22055) [#1407](https://github.com/statelyai/xstate/pull/1407) Thanks [@tomenden](https://github.com/tomenden)! - Fixed an issue with not being able to run XState in Web Workers due to assuming that `window` or `global` object is available in the executing environment, but none of those are actually available in the Web Workers context.
|
|
879
995
|
|
|
880
|
-
- [`4e949ec8`](https://github.com/
|
|
996
|
+
- [`4e949ec8`](https://github.com/statelyai/xstate/commit/4e949ec856349062352562c825beb0654e528f81) [#1401](https://github.com/statelyai/xstate/pull/1401) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with spawned actors being spawned multiple times when they got spawned in an initial state of a child machine that is invoked in the initial state of a parent machine.
|
|
881
997
|
|
|
882
998
|
<details>
|
|
883
999
|
<summary>
|
|
@@ -921,9 +1037,9 @@
|
|
|
921
1037
|
|
|
922
1038
|
### Minor Changes
|
|
923
1039
|
|
|
924
|
-
- [`b72e29dd`](https://github.com/
|
|
1040
|
+
- [`b72e29dd`](https://github.com/statelyai/xstate/commit/b72e29dd728b4c1be4bdeaec93909b4e307db5cf) [#1354](https://github.com/statelyai/xstate/pull/1354) Thanks [@davidkpiano](https://github.com/statelyai)! - The `Action` type was simplified, and as a result, you should see better TypeScript performance.
|
|
925
1041
|
|
|
926
|
-
* [`4dbabfe7`](https://github.com/
|
|
1042
|
+
* [`4dbabfe7`](https://github.com/statelyai/xstate/commit/4dbabfe7d5ba154e852b4d460a2434c6fc955726) [#1320](https://github.com/statelyai/xstate/pull/1320) Thanks [@davidkpiano](https://github.com/statelyai)! - The `invoke.src` property now accepts an object that describes the invoke source with its `type` and other related metadata. This can be read from the `services` option in the `meta.src` argument:
|
|
927
1043
|
|
|
928
1044
|
```js
|
|
929
1045
|
const machine = createMachine(
|
|
@@ -955,13 +1071,13 @@
|
|
|
955
1071
|
|
|
956
1072
|
Specifying a string for `invoke.src` will continue to work the same; e.g., if `src: 'search'` was specified, this would be the same as `src: { type: 'search' }`.
|
|
957
1073
|
|
|
958
|
-
- [`8662e543`](https://github.com/
|
|
1074
|
+
- [`8662e543`](https://github.com/statelyai/xstate/commit/8662e543393de7e2f8a6d92ff847043781d10f4d) [#1317](https://github.com/statelyai/xstate/pull/1317) Thanks [@Andarist](https://github.com/Andarist)! - All `TTypestate` type parameters default to `{ value: any; context: TContext }` now and the parametrized type is passed correctly between various types which results in more accurate types involving typestates.
|
|
959
1075
|
|
|
960
1076
|
### Patch Changes
|
|
961
1077
|
|
|
962
|
-
- [`3ab3f25e`](https://github.com/
|
|
1078
|
+
- [`3ab3f25e`](https://github.com/statelyai/xstate/commit/3ab3f25ea297e4d770eef512e9583475c943845d) [#1285](https://github.com/statelyai/xstate/pull/1285) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with initial state of invoked machines being read without custom data passed to them which could lead to a crash when evaluating transient transitions for the initial state.
|
|
963
1079
|
|
|
964
|
-
* [`a7da1451`](https://github.com/
|
|
1080
|
+
* [`a7da1451`](https://github.com/statelyai/xstate/commit/a7da14510fd1645ad041836b567771edb5b90827) [#1290](https://github.com/statelyai/xstate/pull/1290) Thanks [@davidkpiano](https://github.com/statelyai)! - The "Attempted to spawn an Actor [...] outside of a service. This will have no effect." warnings are now silenced for "lazily spawned" actors, which are actors that aren't immediately active until the function that creates them are called:
|
|
965
1081
|
|
|
966
1082
|
```js
|
|
967
1083
|
// ⚠️ "active" actor - will warn
|
|
@@ -976,19 +1092,19 @@
|
|
|
976
1092
|
|
|
977
1093
|
It is recommended that all `spawn(...)`-ed actors are lazy, to avoid accidentally initializing them e.g., when reading `machine.initialState` or calculating otherwise pure transitions. In V5, this will be enforced.
|
|
978
1094
|
|
|
979
|
-
- [`c1f3d260`](https://github.com/
|
|
1095
|
+
- [`c1f3d260`](https://github.com/statelyai/xstate/commit/c1f3d26069ee70343f8045a48411e02a68f98cbd) [#1317](https://github.com/statelyai/xstate/pull/1317) Thanks [@Andarist](https://github.com/Andarist)! - Fixed a type returned by a `raise` action - it's now `RaiseAction<TEvent> | SendAction<TContext, AnyEventObject, TEvent>` instead of `RaiseAction<TEvent> | SendAction<TContext, TEvent, TEvent>`. This makes it comaptible in a broader range of scenarios.
|
|
980
1096
|
|
|
981
|
-
* [`8270d5a7`](https://github.com/
|
|
1097
|
+
* [`8270d5a7`](https://github.com/statelyai/xstate/commit/8270d5a76c71add3a5109e069bd85716b230b5d4) [#1372](https://github.com/statelyai/xstate/pull/1372) Thanks [@christianchown](https://github.com/christianchown)! - Narrowed the `ServiceConfig` type definition to use a specific event type to prevent compilation errors on strictly-typed `MachineOptions`.
|
|
982
1098
|
|
|
983
|
-
- [`01e3e2dc`](https://github.com/
|
|
1099
|
+
- [`01e3e2dc`](https://github.com/statelyai/xstate/commit/01e3e2dcead63dce3eef5ab745395584efbf05fa) [#1320](https://github.com/statelyai/xstate/pull/1320) Thanks [@davidkpiano](https://github.com/statelyai)! - The JSON definition for `stateNode.invoke` objects will no longer include the `onDone` and `onError` transitions, since those transitions are already merged into the `transitions` array. This solves the issue of reviving a serialized machine from JSON, where before, the `onDone` and `onError` transitions for invocations were wrongly duplicated.
|
|
984
1100
|
|
|
985
1101
|
## 4.11.0
|
|
986
1102
|
|
|
987
1103
|
### Minor Changes
|
|
988
1104
|
|
|
989
|
-
- [`36ed8d0a`](https://github.com/
|
|
1105
|
+
- [`36ed8d0a`](https://github.com/statelyai/xstate/commit/36ed8d0a3adf5b7fd187b0abe198220398e8b056) [#1262](https://github.com/statelyai/xstate/pull/1262) Thanks [@Andarist](https://github.com/Andarist)! - Improved type inference for `InvokeConfig['data']`. This has required renaming `data` property on `StateNode` instances to `doneData`. This property was never meant to be a part of the public API, so we don't consider this to be a breaking change.
|
|
990
1106
|
|
|
991
|
-
* [`2c75ab82`](https://github.com/
|
|
1107
|
+
* [`2c75ab82`](https://github.com/statelyai/xstate/commit/2c75ab822e49cb1a23c1e14eb7bd04548ab143eb) [#1219](https://github.com/statelyai/xstate/pull/1219) Thanks [@davidkpiano](https://github.com/statelyai)! - The resolved value of the `invoke.data` property is now available in the "invoke meta" object, which is passed as the 3rd argument to the service creator in `options.services`. This will work for all types of invoked services now, including promises, observables, and callbacks.
|
|
992
1108
|
|
|
993
1109
|
```js
|
|
994
1110
|
const machine = createMachine({
|
|
@@ -1021,7 +1137,7 @@
|
|
|
1021
1137
|
}
|
|
1022
1138
|
```
|
|
1023
1139
|
|
|
1024
|
-
- [`a6c78ae9`](https://github.com/
|
|
1140
|
+
- [`a6c78ae9`](https://github.com/statelyai/xstate/commit/a6c78ae960acba36b61a41a5d154ea59908010b0) [#1249](https://github.com/statelyai/xstate/pull/1249) Thanks [@davidkpiano](https://github.com/statelyai)! - New property introduced for eventless (transient) transitions: **`always`**, which indicates a transition that is always taken when in that state. Empty string transition configs for [transient transitions](https://xstate.js.org/docs/guides/transitions.html#transient-transitions) are deprecated in favor of `always`:
|
|
1025
1141
|
|
|
1026
1142
|
```diff
|
|
1027
1143
|
// ...
|
|
@@ -1047,45 +1163,45 @@
|
|
|
1047
1163
|
|
|
1048
1164
|
### Patch Changes
|
|
1049
1165
|
|
|
1050
|
-
- [`36ed8d0a`](https://github.com/
|
|
1166
|
+
- [`36ed8d0a`](https://github.com/statelyai/xstate/commit/36ed8d0a3adf5b7fd187b0abe198220398e8b056) [#1262](https://github.com/statelyai/xstate/pull/1262) Thanks [@Andarist](https://github.com/Andarist)! - `StateMachine<any, any, any>` is no longer a part of the `InvokeConfig` type, but rather it creates a union with `InvokeConfig` in places where it is needed. This change shouldn't affect consumers' code.
|
|
1051
1167
|
|
|
1052
1168
|
## 4.10.0
|
|
1053
1169
|
|
|
1054
1170
|
### Minor Changes
|
|
1055
1171
|
|
|
1056
|
-
- [`0133954`](https://github.com/
|
|
1172
|
+
- [`0133954`](https://github.com/statelyai/xstate/commit/013395463b955e950ab24cb4be51faf524b0de6e) [#1178](https://github.com/statelyai/xstate/pull/1178) Thanks [@davidkpiano](https://github.com/statelyai)! - The types for the `send()` and `sendParent()` action creators have been changed to fix the issue of only being able to send events that the machine can receive. In reality, a machine can and should send events to other actors that it might not be able to receive itself. See [#711](https://github.com/statelyai/xstate/issues/711) for more information.
|
|
1057
1173
|
|
|
1058
|
-
* [`a1f1239`](https://github.com/
|
|
1174
|
+
* [`a1f1239`](https://github.com/statelyai/xstate/commit/a1f1239e20e05e338ed994d031e7ef6f2f09ad68) [#1189](https://github.com/statelyai/xstate/pull/1189) Thanks [@davidkpiano](https://github.com/statelyai)! - Previously, `state.matches(...)` was problematic because it was casting `state` to `never` if it didn't match the state value. This is now fixed by making the `Typestate` resolution more granular.
|
|
1059
1175
|
|
|
1060
|
-
- [`dbc6a16`](https://github.com/
|
|
1176
|
+
- [`dbc6a16`](https://github.com/statelyai/xstate/commit/dbc6a161c068a3e12dd12452b68a66fe3f4fb8eb) [#1183](https://github.com/statelyai/xstate/pull/1183) Thanks [@davidkpiano](https://github.com/statelyai)! - Actions from a restored state provided as a custom initial state to `interpret(machine).start(initialState)` are now executed properly. See #1174 for more information.
|
|
1061
1177
|
|
|
1062
1178
|
### Patch Changes
|
|
1063
1179
|
|
|
1064
|
-
- [`a10d604`](https://github.com/
|
|
1180
|
+
- [`a10d604`](https://github.com/statelyai/xstate/commit/a10d604a6afcf39048b02be5436acdd197f16c2b) [#1176](https://github.com/statelyai/xstate/pull/1176) Thanks [@itfarrier](https://github.com/itfarrier)! - Fix passing state schema into State generic
|
|
1065
1181
|
|
|
1066
|
-
* [`326db72`](https://github.com/
|
|
1182
|
+
* [`326db72`](https://github.com/statelyai/xstate/commit/326db725e50f7678af162626c6c7491e4364ec07) [#1185](https://github.com/statelyai/xstate/pull/1185) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with invoked service not being correctly started if other service got stopped in a subsequent microstep (in response to raised or null event).
|
|
1067
1183
|
|
|
1068
|
-
- [`c3a496e`](https://github.com/
|
|
1184
|
+
- [`c3a496e`](https://github.com/statelyai/xstate/commit/c3a496e1f92ec27db0643fd1ddc32d683db4e751) [#1160](https://github.com/statelyai/xstate/pull/1160) Thanks [@davidkpiano](https://github.com/statelyai)! - Delayed transitions defined using `after` were previously causing a circular dependency when the machine was converted using `.toJSON()`. This has now been fixed.
|
|
1069
1185
|
|
|
1070
|
-
* [`e16e48e`](https://github.com/
|
|
1186
|
+
* [`e16e48e`](https://github.com/statelyai/xstate/commit/e16e48e05e6243a3eacca58a13d3e663cd641f55) [#1153](https://github.com/statelyai/xstate/pull/1153) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with `choose` and `pure` not being able to use actions defined in options.
|
|
1071
1187
|
|
|
1072
|
-
- [`d496ecb`](https://github.com/
|
|
1188
|
+
- [`d496ecb`](https://github.com/statelyai/xstate/commit/d496ecb11b26011f2382d1ce6c4433284a7b3e9b) [#1165](https://github.com/statelyai/xstate/pull/1165) Thanks [@davidkpiano](https://github.com/statelyai)! - XState will now warn if you define an `.onDone` transition on the root node. Root nodes which are "done" represent the machine being in its final state, and can no longer accept any events. This has been reported as confusing in [#1111](https://github.com/statelyai/xstate/issues/1111).
|
|
1073
1189
|
|
|
1074
1190
|
## 4.9.1
|
|
1075
1191
|
|
|
1076
1192
|
### Patch Changes
|
|
1077
1193
|
|
|
1078
|
-
- [`8a97785`](https://github.com/
|
|
1194
|
+
- [`8a97785`](https://github.com/statelyai/xstate/commit/8a97785055faaeb1b36040dd4dc04e3b90fa9ec2) [#1137](https://github.com/statelyai/xstate/pull/1137) Thanks [@davidkpiano](https://github.com/statelyai)! - Added docs for the `choose()` and `pure()` action creators, as well as exporting the `pure()` action creator in the `actions` object.
|
|
1079
1195
|
|
|
1080
|
-
* [`e65dee9`](https://github.com/
|
|
1196
|
+
* [`e65dee9`](https://github.com/statelyai/xstate/commit/e65dee928fea60df1e9f83c82fed8102dfed0000) [#1131](https://github.com/statelyai/xstate/pull/1131) Thanks [@wKovacs64](https://github.com/wKovacs64)! - Include the new `choose` action in the `actions` export from the `xstate` core package. This was missed in v4.9.0.
|
|
1081
1197
|
|
|
1082
1198
|
## 4.9.0
|
|
1083
1199
|
|
|
1084
1200
|
### Minor Changes
|
|
1085
1201
|
|
|
1086
|
-
- [`f3ff150`](https://github.com/
|
|
1202
|
+
- [`f3ff150`](https://github.com/statelyai/xstate/commit/f3ff150f7c50f402704d25cdc053b76836e447e3) [#1103](https://github.com/statelyai/xstate/pull/1103) Thanks [@davidkpiano](https://github.com/statelyai)! - Simplify the `TransitionConfigArray` and `TransitionConfigMap` types in order to fix excessively deep type instantiation TypeScript reports. This addresses [#1015](https://github.com/statelyai/xstate/issues/1015).
|
|
1087
1203
|
|
|
1088
|
-
* [`6c47b66`](https://github.com/
|
|
1204
|
+
* [`6c47b66`](https://github.com/statelyai/xstate/commit/6c47b66c3289ff161dc96d9b246873f55c9e18f2) [#1076](https://github.com/statelyai/xstate/pull/1076) Thanks [@Andarist](https://github.com/Andarist)! - Added support for conditional actions. It's possible now to have actions executed based on conditions using following:
|
|
1089
1205
|
|
|
1090
1206
|
```js
|
|
1091
1207
|
entry: [
|
|
@@ -1104,45 +1220,45 @@
|
|
|
1104
1220
|
|
|
1105
1221
|
### Patch Changes
|
|
1106
1222
|
|
|
1107
|
-
- [`1a129f0`](https://github.com/
|
|
1223
|
+
- [`1a129f0`](https://github.com/statelyai/xstate/commit/1a129f0f35995981c160d756a570df76396bfdbd) [#1073](https://github.com/statelyai/xstate/pull/1073) Thanks [@Andarist](https://github.com/Andarist)! - Cleanup internal structures upon receiving termination events from spawned actors.
|
|
1108
1224
|
|
|
1109
|
-
* [`e88aa18`](https://github.com/
|
|
1225
|
+
* [`e88aa18`](https://github.com/statelyai/xstate/commit/e88aa18431629e1061b74dfd4a961b910e274e0b) [#1085](https://github.com/statelyai/xstate/pull/1085) Thanks [@Andarist](https://github.com/Andarist)! - Fixed an issue with data expressions of root's final nodes being called twice.
|
|
1110
1226
|
|
|
1111
|
-
- [`88b17b2`](https://github.com/
|
|
1227
|
+
- [`88b17b2`](https://github.com/statelyai/xstate/commit/88b17b2476ff9a0fbe810df9d00db32c2241cd6e) [#1090](https://github.com/statelyai/xstate/pull/1090) Thanks [@rjdestigter](https://github.com/rjdestigter)! - This change carries forward the typestate type information encoded in the arguments of the following functions and assures that the return type also has the same typestate type information:
|
|
1112
1228
|
|
|
1113
1229
|
- Cloned state machine returned by `.withConfig`.
|
|
1114
1230
|
- `.state` getter defined for services.
|
|
1115
1231
|
- `start` method of services.
|
|
1116
1232
|
|
|
1117
|
-
* [`d5f622f`](https://github.com/
|
|
1233
|
+
* [`d5f622f`](https://github.com/statelyai/xstate/commit/d5f622f68f4065a2615b5a4a1caae6b508b4840e) [#1069](https://github.com/statelyai/xstate/pull/1069) Thanks [@davidkpiano](https://github.com/statelyai)! - Loosened event type for `SendAction<TContext, AnyEventObject>`
|
|
1118
1234
|
|
|
1119
1235
|
## 4.8.0
|
|
1120
1236
|
|
|
1121
1237
|
### Minor Changes
|
|
1122
1238
|
|
|
1123
|
-
- [`55aa589`](https://github.com/
|
|
1239
|
+
- [`55aa589`](https://github.com/statelyai/xstate/commit/55aa589648a9afbd153e8b8e74cbf2e0ebf573fb) [#960](https://github.com/statelyai/xstate/pull/960) Thanks [@davidkpiano](https://github.com/statelyai)! - The machine can now be safely JSON-serialized, using `JSON.stringify(machine)`. The shape of this serialization is defined in `machine.schema.json` and reflected in `machine.definition`.
|
|
1124
1240
|
|
|
1125
1241
|
Note that `onEntry` and `onExit` have been deprecated in the definition in favor of `entry` and `exit`.
|
|
1126
1242
|
|
|
1127
1243
|
### Patch Changes
|
|
1128
1244
|
|
|
1129
|
-
- [`1ae31c1`](https://github.com/
|
|
1245
|
+
- [`1ae31c1`](https://github.com/statelyai/xstate/commit/1ae31c17dc81fb63e699b4b9bf1cf4ead023001d) [#1023](https://github.com/statelyai/xstate/pull/1023) Thanks [@Andarist](https://github.com/Andarist)! - Fixed memory leak - `State` objects had been retained in closures.
|
|
1130
1246
|
|
|
1131
1247
|
## 4.7.8
|
|
1132
1248
|
|
|
1133
1249
|
### Patch Changes
|
|
1134
1250
|
|
|
1135
|
-
- [`520580b`](https://github.com/
|
|
1251
|
+
- [`520580b`](https://github.com/statelyai/xstate/commit/520580b4af597f7c83c329757ae972278c2d4494) [#967](https://github.com/statelyai/xstate/pull/967) Thanks [@andrewgordstewart](https://github.com/andrewgordstewart)! - Add context & event types to InvokeConfig
|
|
1136
1252
|
|
|
1137
1253
|
## 4.7.7
|
|
1138
1254
|
|
|
1139
1255
|
### Patch Changes
|
|
1140
1256
|
|
|
1141
|
-
- [`c8db035`](https://github.com/
|
|
1257
|
+
- [`c8db035`](https://github.com/statelyai/xstate/commit/c8db035b90a7ab4a557359d493d3dd7973dacbdd) [#936](https://github.com/statelyai/xstate/pull/936) Thanks [@davidkpiano](https://github.com/statelyai)! - The `escalate()` action can now take in an expression, which will be evaluated against the `context`, `event`, and `meta` to return the error data.
|
|
1142
1258
|
|
|
1143
|
-
* [`2a3fea1`](https://github.com/
|
|
1259
|
+
* [`2a3fea1`](https://github.com/statelyai/xstate/commit/2a3fea18dcd5be18880ad64007d44947cc327d0d) [#952](https://github.com/statelyai/xstate/pull/952) Thanks [@davidkpiano](https://github.com/statelyai)! - The typings for the raise() action have been fixed to allow any event to be raised. This typed behavior will be refined in version 5, to limit raised events to those that the machine accepts.
|
|
1144
1260
|
|
|
1145
|
-
- [`f86d419`](https://github.com/
|
|
1261
|
+
- [`f86d419`](https://github.com/statelyai/xstate/commit/f86d41979ed108e2ac4df63299fc16f798da69f7) [#957](https://github.com/statelyai/xstate/pull/957) Thanks [@Andarist](https://github.com/Andarist)! - Fixed memory leak - each created service has been registered in internal map but it was never removed from it. Registration has been moved to a point where Interpreter is being started and it's deregistered when it is being stopped.
|
|
1146
1262
|
|
|
1147
1263
|
## 4.7.6
|
|
1148
1264
|
|