Mateusz Burzyński
Mateusz Burzyński
Oh, and I can bring back this string literal narrowing by introducing `TType extends string`, like here: [TS playground](https://www.typescriptlang.org/play?ts=5.4.0-dev.20231211#code/C4TwDgpgBAcg9gSQHYDMICcA8AVAfFAXigG1sBdUqCAD2AiQBMBnKAQyRCgH4oAGKAFxQkEAG4YyAbgBQoSFABqrADYBXCExz4i2YgGsIIOCijkZ0gJZI66FKwDG0AAqt0rALYQbFgF4QGAPIARgBWEPbAUADe0lBQchBCTMDoVgDmMnFgrh5MXEKqSHpIcADuSDIAvtKW1hh2jlAA4qquDE7o-hb2rHSYsaYAwnB1tAA0A9gubu5ME3HYLW1UtPTMUNMeXhi+-sFhERP4MXEAFBHUQtjDo8BjUNkzTFebswCUQkFwcMoQ7JlQAD6cFUwEBi1a6AY+VMSyhVRqCVMcFe21SfkCoXCwH6C1R3gxAFlWGAVnRGCwAErhOBQ3FxKDJVJINLzBn4nYY-bY4gAIkeuV5ZCgAB8oIUGBAUFZ-ANcEdCIoVOpNCcSABpKBWKAGIwmKY5TwE-zE0kAMgGcSZ6TIBUYUplDDJaxYBpmaN2DFNxHVZEt3Gi8XAiSg6skD0NeReho9RJJPuF1QZgkDCSEYYjT2j7uNXvjvqglSquHMSIQkusFlAWkVUQ1WqQOsMxlMttMCcL5gA9F2oAADGjk9bEa0ssh9xkACxByidnRUyk49kn4T0UF5FhMJUirCgKEKEQsI15UCCoKgpWgPSQAHJIsvV2w0qwrMk2HuD8Aj42GBZOhFF2kHtGTgC9oBEfx4lAh97DXFBaSocR0BAYBJ3SKhlCYaAV06NhGH7Uc0gnCwWBCVQ313Oh3DAWlXE4MBlAcCBp1nDA9wQ1DelkYMoEGFdYNeTRsHua4RjoWhtBIchnQpEhCL9OIeGwAYrlFKBTnOYBLiGMTBzeQh8GwN5Sx4pRlAsBheggDl0X8elsBk9Y6zTRkUnScMBVmGFCmKMpG0qNlRNuBUiDVH0GybPVW3TRyWF5BITyUjshD41dBJwBMRJucTgBLaQixqKwbAaaB4GAOF2k6X8ej6SZssHQLBMCirYo2GNc25Q5pHwQcXWaSFKq6GqIBwerxlMJrYQG45qm4+QbM9algFUdAkBwVrnODJI3JZDzI28ooSnKQtJLCzVtV1FtyBi3rZPi4NeX9JLfX9K4O1u9ZTgAOh+1w0meYQxAwfSCHwHyjqQJ6oCWlakGwYMMt9XBXvbX0qhM+Qyph1acAAQXQNJJOwfG0g2oNIG25lSaTAMFoxbG1uJgnkbiK4SdawiBh4TaKdMEm9qzcV7WlEQnRpoQRCQjHSpGakGFUewLCCX4AFVDr82tKjUpBVGUZQ1IlB1RfMSV7EY3D9yQQ8RmEOAcTq3TxkmQTWvgJA5YVpXVfV8pAvZj6mH9MVsHhyAg9TLbTFDiABdyGE3VyNSNPsR3gCuMbgBBwzBP0gLJmjjmdrSbrTgGNIBrZgmyZcwjCyhsyLKsum7KZ1kdNuFmGUr0mA9cqmodblGKo6IarNG1ORMmyWMHlaQPlgO3h6q7ox6CnLJ8je4sa8WHMHgZA0CwVvcBPk3wnN6BLetxssOWsBx+Cqa2hYXvqRTulCPucG-JP05ASENUCQAZqjiCnW46dU4AgKnEcuz8AH+nChdZs+oKpMDbEvUetVkwLAzmyZMEJn6ZX9AsFE7VOR7CxBEHAqDO5xDynEAqlR54EKhEwcwYC3ydBYEQW+qgwCnEAcGYB-owE5XgdgqAKdChpygAARl4LwPBhY2R5xgQNYRyYYJ6AAGLfCEH-e4dZ4KgUqAA9icBKboSYQZcxhACBEF5MY3kSjgJ2xwhLO2ydU5Z3iOgdQbwXG9hAF4XG253G22AAI-0wE4guRvFo3RcAbyBIZJ5AGpwfFROTDEhkxihA3hvNE3sDC3hFMLKU5MwTgChLcRgDxkSQEMhcryBJ3xnHEMzLkfRgwAgwGwAAUQABpGRsVkiR5ihC8gACwACZ2kSKYUoxZAw85MPMDQGi6BIhRAKkAA). I'm not yet sure how this technique will scale with `and`...
I'm appalled by this but this one seems to work: [TS playground](https://www.typescriptlang.org/play?ts=5.4.0-dev.20231211#code/C4TwDgpgBAcg9gSQHYDMICcA8AVAfFAXigG1sBdUqCAD2AiQBMBnKAQyRCgH4oAGKAFxQkEAG4YyAbgBQoSFABqrADYBXCExz4i2YgGsIIOCijkZ0gJZI66FKwDG0AAqt0rALYQbFgF4QGAPIARgBWEPbAUADe0lBQchBCTMDoVgDmMnFgrh5MXEKqSHpIcADuSDIAvtKW1hh2jlAA4qquDE7o-hb2rHSYsaYAwnB1tAA0A9gubu5ME3HYLW1UtPTMUNMeXhi+-sFhERP4MXEAFBHUQtjDo8BjUNkzTFebswCUQkFwcMoQ7JlQAD6cFUwEBi1a6AY+VMSyhVRqCVMcFe21SfkCoXCwH6C1R3gxAFlWGAVnRGCwAErhOBQ3FxKDJVJINLzBn4nYY-bY4gAIkeuV5ZCgAB8oIUGBAUFZ-ANcEdCIoVOpNCcSABpKBWKAGIwmKY5TwE-zE0kAMgGcSZ6TIBUYUplDDJaxYBpmaN2DFNxHVZEt3Gi8XAiSg6skD0NeReho9RJJPuF1QZgkDCSEYYjT2j7uNXvjvqglSquHMSIQkusFlAWkVUQ1WqQOsMxlMttMCcL5gA9F2oAADGjk9bEa0ssh9xkACxByidnRUyk49kn4T0UF5FhMJUirCgKEKEQsI15UCCoKgpWgPSQAHJIsvV2w0qwrMk2HuD8Aj42GBZOhFF2kHtGTgC9oBEfx4lAh97DXFBaSocR0BAYBJ3SKhlCYaAV06NhGH7Uc0gnCwWBCVQ313Oh3DAWlXE4MBlAcCBp1nDA9wQ1DelkYMoEGFdYNeTRsHua4RjoWhtBIchnQpEhCL9OIeGwAYrlFKBTnOYBLiGMTBzeQh8GwN5Sx4pRlAsBheggDl0X8elsBk9Y6zTRkUnScMBVmGFCmKMpG0qNlRNuBUiDVH0GybPVW3TRyWF5BITyUjshD41dBJwBMRJucTgBLaQixqKwbAaaB4GAOF2k6X8ej6SZssHQLBMCirYo2GNc25Q5pHwQcXWaSFKq6GqIBwerxlMJrYQG45qm4+QbM9algFUdAkBwVrnODJI3JZDzI28ooSnKQtJLCzVtV1FtyBi3rZPi4NeX9JLfX9K4O1u9ZTgAOh+1w0meYQxAwfSCHwHyjqQJ6oCWlakGwYMMt9XBXvbX0qhM+Qyph1acAAQXQNJJOwfG0g2oNIG25lSaTAMFoxbG1uJgnkbiK4SdawiBh4TaKdMEm9qzcV7WlEQnRpoQRCQjHSpGakGFUewLCCX4AFVDr82tKjUpBVGUZQ1IlB1RfMSV7EY3D9yQQ8RmEOAcTq3TxkmQTWvgJA5YVpXVfV8pAvZj6WHLegv2rJm0gAJnlSYSfDjmdtJsUeZDQiBdyGE3VyNSNPsR3gCuMbgBBwzBP06pcFOAY0gGtmCbJlzCMLKGg8rUOSZZhka9JgPXKpqGw5RiqOiGqzRtzkTJsljAo4+WA7cHqruhHoKcvHyN7ixrxYcweBkDQLAw9wQ+TfCc3oEt63Gyw5awFH4KpraFhu+pHO6UI+5wb8w-TkBIQ1QSAG1RxBzrcfOucAQFTiFXB+v9-ThQus2fUFUmBtnnsPWqyYFgFzZMmCED9Mr+gWCidqnI9hYgiDgJB7c4h5TiAVSoM9cFQiYOYYBb5OgsCIFfVQYBTh-2DAA-0wCcowIwVAHOhQ85QAAIy8F4NgwsbIAqVwGgI5MME9AADFvhCG-vcOs8FQKVF-uxOAlN0L0IMiYwgBAiC8gMbyeRwE7Y4QlnbbOuci7xHQOoN4jjewgC8LjbcLjbbAF4f6YCcQXI3nUVouAN4-EMk8gDU4njwnJkiQyAxQgbw3gib2Whbx8mFiKcmAJwAgnOIwK4sJgCGQuV5LE74DiCGZlyDowYAQYDYAAKIAA0jKWPSaIkxQheQABZw4tNEfQ+RsyBhKPoeYGgNF0CRCiAVGo0ggA)
This might become possible once we land: https://github.com/statelyai/xstate/pull/4262
I didn't take a thorough look through the implementation but here are my thoughts: 1. we'd like to support this 2. i will be refactoring how we handle actions soon,...
If you could share the text content of this code - that would be quite helpful.
We could rethink if the always conditions should be reevaluated when starting from a state. However, on principle, the use case that you mention here sounds dubious: > This scenario...
IMHO you should reach a "stable state" on the server side and "transfer" that to the client. It would be interesting to see how you are integrating this particular machine...
If you need to differentiate between the client and the server then perhaps splitting those 2 at the top level of the machine would be an option. It doesn't exactly...
@nstadigs do u need for all states to have the same type of metadata or would you like for it to be per-state information?
`@xstate/vue@beta` has a correct peer dependency, see [here](https://unpkg.com/browse/@xstate/[email protected]/package.json#L57). When it comes to `@xstate/inspect` - it isn't yet published in the beta channel.