Wish this was elaborated: "Ideally I wanted this to have all the capabilities of a full wallet, but that would require, for example, linking to to berkeley db to parse the wallet.dat. I wanted to write this entirely in node."
So it still makes a wallet.dat file but different wallet encryption? I'm a little confused.
termcoin uses the bitcoind json-rpc api[1] for (nearly) everything (which means the same wallet.dat file, the same encryption (aes256-cbc), etc.). What I mean to say is, the bitcoind api is a bit limited with regards to how it can manage a wallet.
For example, there is no way to retrieve the "send" addresses from the wallet via the api. The only way to do this is by using bdb to open the file and reading it as a berkeley database. Send address retrieval is the only thing termcoin does not use bitcoind for: termcoin has a "dumb" parser built-in which reads the wallet.dat and searches it for bitcoin addresses, when it finds them, it checks to see that they're valid and also checks them against "receive" addresses.
The bitcoind api is also incapable of re-labeling or deleting addresses (bitcoin-qt itself cannot delete "receive" addresses). A lot of people end up using a tool like pywallet (which links to bdb) to get around this. These are the only two limitations in termcoin's functionality that keep it from being a fully-fledged wallet.
So it still makes a wallet.dat file but different wallet encryption? I'm a little confused.