Black-Box
Preserve your precious JavaScript functions from the future, using Black-Box.
Black-Box is a set of abstractions for Javascript software development concerns including: types, pure functions, reactive systems, databases, files, queues, network services, and deployments.
In Black-Box all of your lovingly-hand-written ESM modules are modeled as a tree of "codepoints." Black-Box indexes the ESM contents by name and type. Black-Box also provides a way to re-cast your handwritten functions into new trees that are tailored for better utility in specific domains. These domains include web services, reactive data stores, command line interfaces, web-based user interfaces, and mobile native apps.
Black-Box tree transformations are similar to compilation. Black-Box takes input files and produces output files. One key difference from traditional compilation is that Black-Box output files always make direct reference to the file containing the hand-written code. The handwritten code is the code that runs, not a copy of the handwritten code. This simplification improves the IDE experience without the need for sourcemaps or other ephemera. That said, Black-Box can also help orchestrate the application of more traditional compilation tools to your codepoints as well. Blacklight includes a full file-dependency tracking system which works well with both forms of compilation described here.
Although extremely type-centric, for the time being Black-Box is doggedly not written in Typescript. Black-Box does however make extensive use of Typescript inside of JSDoc type annotations, in every JS file that makes it up.
Launch ETA: Likely sometime post-2022.