This release has relatively few changes to the underlying functionality of bobtail. Instead, it amounts to a major restructuring of the code.
First and foremost, the functional reactive programming primitives--essentially everything not in the rx.rxt
namespace--have been split into their own package, bobtail-rx. This is so that developers not working in a browser environment can avoid having to import JQuery and the rxt templating library, as these are useless to them.
The export structure of Bobtail remains the same. Rather than exporting rxt
as a separate namespace, we import the rx
namespace from bobtail-rx
, add the templating functionality to rx.rxt
as before, and re-export. TLDR: continue referencing rx
for the programming primitives, and rx.rxt
for the template functionality, as before.
Secondly, both bobtail and bobtail-rx have been converted to ES6, using the decaffeinate
package. I've gone through to remove some of the more ugly conversions, but there is still plenty of stylistic cleanup to do.
There were a number of reasons for this. First, many if not most of CoffeeScript's best ideas have been adopted by ES2015. This allows us to use native ES2015 classes. Converting to Javascript also simplifies our build, and opens the possibility of one day converting the project to TypeScript (as TypeScript is a supserset of ES). There is also a richer tooling set available for working with vanilla ES files.
In addition:
- Files have been renamed. Rather than referring to the previous name, (reactive.coffee, reactive-coffee.js, etc), the main source file is now main.js, as are the distribution files, mutatis mutandis.
- We now use ES6 imports and exports. We use babel to transpile these into UMD.
- Grunt has been removed. We now use npm task runner for building and testing bobtail.
- The following deprecated functions have been removed:
**rx.rxt.cssify
**rx.rxt.cast
(userx.cast
instead, or.from
and.to
semantic casting)
**rxt.rxt.importTags