We would like to make the LocusZoom internals more accessible to other developers, as well as clean up a variety of undefined and legacy usages.
Plan of work
Convert existing namespace files (layouts, data, etc) into Es6 modules. Provide a compatibility shim for old usages (and continue building to UMD), but encourage people to use "true" classes rather than a series of slightly incompatible ways LZ currently does things.
This is intended to unlock better code readability, better extension support and a potentially smaller build size.
Convert opaque classes with dynamically assigned members into Es6 classes, where members and defaults are set in constructor
This should help with "undefined" errors in less common usages
Moving definitions outside the registry should also help us to support JSDoc directly.
Move build system to webpack with unit tests directly run via mocha (with --esm flag until native esm lands with Node 14 LTS)
This will simplify debugging by shortening slow rebuild cycles and enabling easier code coverage integration. Having gulp as an intermediary complicates a variety of tasks.
Switch to automatically generated (eg JSDoc) documentation for LZ internals
Purpose
We would like to make the LocusZoom internals more accessible to other developers, as well as clean up a variety of undefined and legacy usages.
Plan of work
--esm
flag until native esm lands with Node 14 LTS)