Releases: brucou/kingly
Devtool official release
Google Chrome has finished reviewing the devtool, available for download here: https://chrome.google.com/webstore/search/courtesan
Preliminary stuff (not much in terms of screenshots, icons and so on) but the functionality is there.
Can be used with Kingly through the settings parameter of Kingly createStateMachine
machine factory. Details in the documentation
Update to prepare for compiler release
- separated empty outputs from absence of outputs in preparation: this allows to distinguish between subtle cases, and is useful when used with the devtool (still pending validation by google) and the compiler
- empty outputs: []
- absence of ouputs: null
Also removed deprecated tests, still lots of unused code to clean in the source code. That is not a priority though as it is now possible to write the graph with the yed graph editor, then trace it with the devtool, and compile it down to vanilla ES5 (maybe ES3, not sure) JS for use in production. Code quality of the library is thus not a key feature.
Deprecated:
- entry functions
- tracing functions (achieved with devtool)
Pending decision:
- web component factory (will probably stay in the library in the end from cross-framework usage)
Dev tool
This new release adds the tracing functionality that works in connection with a dev tool that is a Chrome extension (pending review by google, which may take two weeks).
The devtool allows to see inputs that enter the machine and outputs that gets out. Additionally, intermediate events allow to trace the machine as it realizeds it computation. The state of the machine can be browsed through with the tab panel on the right. The tab panel also allow to look up in detail miscellaneous details about the message that was sent to the dev tool.
Bug fixes
Change of name
The library is now named Kingly. Other changes:
COMMAND_RENDER
is now exported by Kingly. This was exported by react-state-driven and vue-state-driven previously and created a undesired dependency with React or Vue.- the API for
makeWebComponentFromFsm
has changed. TheeventHandler
must now have a Subject interface (similar toRx.Subject
) updateState
is now passed as a part of the machine definition rather than insettings
- changes in warning, info and error messages
Transducer, trace and contracts
- The state machine is a simple function
- contracts have been implemented and can be activated optionally through settings
- this is done by dependency injection and as such does not affect the size of the bundle
- decorating, trace, and transducer factory functions have been tested against contracts and defended against errors coming from user provided functions
- such functions will generate useful error messages when they throw
- if such functions do not return values of an expected type, the user will be warned
- updated readme
- moved testing API into separate package
- miscellaneous bug fixes
- tested against associated vue-state-driven integration
Getting closer to v1.0
Biggest changes:
- dropped the object interface for a functional one
yield
disappears. The machine is now just a stateful function
- machine now takes a configurable initial control state
- testing utilities are separated into their own package : state-transducer-testing
- helper function to make web component from a machine
- only use lightly custom elements v1, and not shadow DOM in order to limit polyfill for older browsers
Also miscellaneous bug fixes.
minimum viable version umd dist
- history states, deep and shallow
- compound states
- eventless transitions
- configurable state library (JSON patch, immutable, etc.)
- streaming machine with configurable streaming library
- traceable machines
- automatic test generation between the initial state and a vertex!