After one of the many several hour long discussions we've had lately in #jsan, it was sort of decided that we'd ask all modules to be scannable for file-level dependencies.
Which rocks, and I've wanted it since forever. The group dropped back to musings about whether it was needed or not later, but not before rob built a basic. JSAN::Parse::FileDeps .
Seeing this as a go to jump 4 steps ahead, I've taken the basic version and improved it to get the file deps out in detail.
And what THAT lets you do is to then to create a Librarian object for your library, tell it what packages you need, and it will hand you back the code to load it, like this!
base => URI->new('/jsan'),
library => JSAN::Library->new( '.openjsan.deps' ),
# Prints something like this
Of course, from here it's only a small step to implementing Collections, which would take those three files, and concatonate them together (safely) into a single file to create something like Prototype on-the-fly from the component parts.
And one more step beyond that to provide it all in the form of a use server, so you just require the packages you want and it hands them back as a single stripped, compressed file, with super-efficient caching logic I plan to recycle from elsewhere.
And all of this done in only 4 hours! What was that about depth-first programming being slower again?