Common CouchDb & Express utility functions
npm install edge-server-toolsThe Edge Wallet uses a variety of back-end micro-services, including encrypted key backup, exchange rates, mining fees, and so forth. Most of these services use an Express frontend talking touch a CouchDB database, so this library contains common utility functions for working with these technologies.
Cleaners:
- asCouchDoc - A cleaner for dealing with the _id and _rev fields CouchDB adds to documents.
- asHealingObject - A cleaner for repairing damaged objects using default values.
- [asMaybeConflictError] - Passes for a CouchDB conflict error.
- [asMaybeExistsError] - Passes for a CouchDB item exists error.
- [asMaybeNotFoundError] - Passes for a CouchDB item missing error.
CouchDB utilities:
- bulkGet - Nano forgot to implement this method for some reason.
- makeRollingDatabase - Treats a collection of databases as a single large database, organized by date range.
- viewToStream - Iterates over the documents in a database, partition, or view.
CouchDB setup tools:
- setupDatabase - Automatically creates a database, sets up replication and design documents, and subscribes to the changes feed.
- makeJsDesign - Creates a JavaScript design document.
- makeMangoIndex - Creates a Mango index design document.
- syncedDocument - Watches a settings document for changes.
AggregateError tools:
- [AggregateError] - A ponyfill for the new ES2021 AggregateError type.
- [promiseAny] - A ponyfill for the new ES2021 Promise.any method.
- [stringifyError] - Turns an error into a string, with special handling for AggregateError.
Other stuff:
- forkChildren - Used for Node.js clustering.
- errorCause - Adds an error.cause property.
- matchJson - Returns true if two JSON-style objects match.
- makePeriodicTask - Starts a periodic async task, with error handling and other features.
Deprecated stuff:
- autoReplication - Deprecated. Use the new setupDatabase stuff.
- createAdminUser
- createRegularUser
- forEachDocument - Iterates over the documents in a Couch database. Use viewToStream instead.