ArangoDB v3.4 reached End of Life (EOL) and is no longer supported.
This documentation is outdated. Please see the most recent version here: Latest Docs
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 global variables global, process, console, Buffer, __filename and __dirname are available throughout ArangoDB and Foxx.
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
formatandinspect.
Additionally ArangoDB provides partial implementations for the following modules:
-
net: onlyisIP,isIPv4andisIPv6. -
process: onlyenvandcwd; stubs forargv,stdout.isTTY,stdout.write,nextTick. -
timers: stubs forsetImmediate,setTimeout,setInterval,clearImmediate,clearTimeout,clearIntervalandref. -
tty: onlyisatty(always returnsfalse). -
vm: onlyrunInThisContext.
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 however are noteworthy:
-
@arangodb provides direct access to the database and its collections.
-
@arangodb/crypto provides various cryptography functions including hashing algorithms.
-
@arangodb/request provides the functionality for making synchronous HTTP/HTTPS requests.
-
@arangodb/foxx is the namespace providing the various building blocks of the Foxx microservice framework.
Bundled NPM Modules
The following NPM modules are preinstalled:
-
aqb is the ArangoDB Query Builder and can be used to construct AQL queries with a chaining JavaScript API.
-
chai is a full-featured assertion library for writing JavaScript tests.
-
dedent is a simple utility function for formatting multi-line strings.
-
error-stack-parser parses stacktraces into a more useful format.
-
graphql-sync is an ArangoDB-compatible GraphQL server/schema implementation.
-
highlight.js is an HTML syntax highlighter.
-
i (inflect) is a utility library for inflecting (e.g. pluralizing) words.
-
iconv-lite is a utility library for converting between character encodings
-
joi is a validation library that is supported throughout the Foxx framework.
-
js-yaml is a JavaScript implementation of the YAML data format (a partial superset of JSON).
-
lodash is a utility belt for JavaScript providing various useful helper functions.
-
minimatch is a glob matcher for matching wildcards in file paths.
-
qs provides utilities for dealing with query strings using a different format than the querystring module.
-
semver is a utility library for handling semver version numbers.
-
sinon is a mocking library for writing test stubs, mocks and spies.
-
timezone is a library for converting date time values between formats and timezones.