Skip to content

EdgeApp/edge-server-tools

Repository files navigation

edge-server-utils

The 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.