- js-fns foundation is natural response to the lack of CommonJS-compatible utility belts.
- js-fns is designed to be used in the browser via webpack or Browserify but with Node.js in mind.
- js-fns is a collection of "pick one function at once" libraries (like lodash-node) but also can be used via bundles (installed via Bower or another concat'n'uglify-compatible package manager).
- js-fns is supposed to be pure functional: immutable (unless user explicitly asks for mutation), no prototype extensions.
- js-fns is open to new contributors, repos and functions. Only limitations are short guidelines and common sense. Shoot an issue (or send PR) if you want to create a repo or become a contributor.
- js-fns is also designed to be used as the reference and the copy-paste source (i.e. feel free to "copy-paste" code from js-fns to StackOverflow).
- js-fns is not Underscore.js/Lo-Dash/Sugar.js/Moment.js killer and not aimed to be a fame-generator.
- js-fns is not replacement for native functions (available now or planned in the future versions), so we always prefer to use shims.
What's wrong with Sugar.js, it is proven to be safe, isn't it?
With concat'n'uglify approach it's the best fit, although it has minor problems with tests.
But with modular approach it becomes a plague:
- Lack of explicit dependencies makes code resistant to change, reuse and library-extraction.
- Even if you are using 10% of Sugar.js, 100% of code will be send to user.
Ok, but what about Underscore.js or Lo-Dash?
Like Sugar.js, both Underscore.js and Lo-Dash are designed to be used (and used widely in the community) as bundles. It means that any added function bloats size of final application code. js-fns is resistant to that, because unused functions will never be in the final application JS file.
We have guidelines in our minds, but at the moment there is no TODO list avaliable online. Contact us if you need more info.
In the roadmap. Shoot an issue if you need it ASAP.
Basically it's internal Toptal core team's project designed to solve our problems and needs.