JavaScript Modules

ArangoDB uses a Node.js compatible module system. You can use the function require() in order to load a module or library. It returns the exported variables and functions of the module.

The following global variables are available throughout ArangoDB and Foxx:

  • global
  • process
  • console
  • Buffer
  • __filename
  • __dirname

Node compatibility modules

ArangoDB supports a number of modules for compatibility with Node.js, including:

  • assert implements basic assertion and testing functions.

  • buffer implements a binary data type for JavaScript.

  • console is a well known logging facility to all the JavaScript developers. ArangoDB implements most of the Console API, with the exceptions of profile and count.

  • events implements an event emitter.

  • fs provides a file system API for the manipulation of paths, directories, files, links, and the construction of file streams. ArangoDB implements most Filesystem/A functions.

  • module provides direct access to the module system.

  • path implements functions dealing with filenames and paths.

  • punycode implements conversion functions for punycode encoding.

  • querystring provides utilities for dealing with query strings.

  • stream provides a streaming interface.

  • string_decoder implements logic for decoding buffers into strings.

  • url provides utilities for URL resolution and parsing.

  • util provides general utility functions like format and inspect.

Additionally ArangoDB provides partial implementations for the following modules:

  • net: only isIP, isIPv4 and isIPv6.

  • process: only env and cwd; stubs for argv, stdout.isTTY, stdout.write, nextTick.

  • timers: stubs for setImmediate, setTimeout, setInterval, clearImmediate, clearTimeout, clearInterval and ref.

  • tty: only isatty (always returns false).

  • vm: only runInThisContext.

The following Node.js modules are not available at all:

  • child_process
  • cluster
  • constants
  • crypto (but see @arangodb/crypto below)
  • dgram
  • dns
  • domain
  • http (but see @arangodb/request below)
  • https
  • os
  • sys
  • tls
  • v8
  • zlib

ArangoDB Specific Modules

There are a large number of ArangoDB-specific modules using the @arangodb namespace, mostly for internal use by ArangoDB itself. The following modules noteworthy however and intended to be used by the user: