Our npm packages

IndieWeb Rule #3: make what you need.
IndieWeb Rule #4: use what you make.

Since 2015, we've been making npm packages for our projects and sharing them with the world.

Have a look, maybe you'll find something useful for your next project!


Flagship Libraries

These are the largest and the most complex programs here. Many smaller programs were created just to drive a certain feature of these programs. For example, whole Ranges program family was created because Detergent needed to compose string operations.

Range Libraries Ξ£=13

HTML Processing Libraries Ξ£=21

They all process HTML and CSS. Our speciality is so-called scanerless parsing algorithm β€” we don't parse and then work on AST and then render. We aim to work on the source code directly while traversing it as a string.

The idea is, if you don't parse the HTML, you can support broken or mixed code. Unless you write your parser, it becomes a bottleneck β€” parser throws here and there, and you can do nothing about it.

It is vital to support broken code because this allows us to make broken code fixing programs.

Also, we often aim to support the processing of HTML mixed with other, known or unknown, source code (typically, programming or templating languages).

String Processing Libraries Ξ£=31

They process string inputs, which might be text, code or something else as long as it is of a string-type.

Plain Object or Array Libraries Ξ£=17

Usually, plain objects come from JSON files, and often they are deeply nested. The following libraries help us to traverse them, set and delete keys and compare objects.

Array-processing libraries deal with tasks like sorting, deletion or conversion to other structures.

AST Libraries Ξ£=12

Lerna Libraries Ξ£=4

CLI Apps Ξ£=6

All the following libraries are command-line applications. You install them using -g flag via npm, for example, npm i -g json-sort-cli. Often a package/library/program would have its CLI counterpart: you can use a package programmatically, inside your programs, or you can use its CLI in the terminal, as a standalone program.

For example, csv-sort package is string-in, string-out function. It's meant to be used by websites, CLI's and Node programs.csv-sort-cli "taps it" and adds file I/O layer and lets you read/write/sort files directly, via a command line.

Miscellaneous Libraries Ξ£=15

That's all programs which don't belong to any of the categories above. Here we have programs doing everything, from CSV sorting to Tap output parsing; from regexes to converting colour hex codes.