1
0
Fork 0
arangodb/js/GUIDELINES.md

97 lines
2.1 KiB
Markdown

Global Variables
================
There should be no global variables/functions except
* require
* module
The following functions are also defined, but should never be used globally in
any JavaScript module.
* print
* printf
* print_plain
* start_pretty_print
* stop_pretty_print
* start_color_print
* stop_color_print
* start_pager
* stop_pager
Bootstrapping
=============
When booting the arangod or arangosh process defines some global variables in
C++. These variables are named all in uppercase and are defined in the global
namespace.
The bootstrap defines the module management in `modules.js` and bootstraps
the following modules:
- "internal"
- "console"
- "fs"
These modules are defined in the files `module-xxx.js`. Common parts available
in the server and client are put into `common/bootstrap/module-xxx.js`,
server-only functions in `server/bootstrap/module-xxx.js`, and client-only parts
in `client/bootstrap/module-xxx.js`.
All global variables are moved into the module "internal" and are then deleted.
Modules
=======
Files
-----
Sometimes client and server share large parts of the code. If this is true for a
module "name", than there exists a companion module "name-common" which contains
these parts.
For large prototypes with a lot of methods, there exist separate files. I. e.
`ArangoCollection` is defined in `@arangodb/arango-collection.js`.
Module "internal"
-----------------
The module "internal" should not be used except during bootstrapping. All
required prototypes and variables are copied into the module "@arangodb",
which can be used everywhere.
Module "@arangodb"
---------------------
The module "@arangodb" exports the following prototypes
- ArangoCollection
- ArangoConnection (client-only)
- ArangoDatabase
- ArangoError
- ArangoQueryCursor (client-only)
- ArangoStatement
- ShapedJson (server-only)
It exports the global variables
- db
- arango (client-only)
It exports the following functions
- output
- print
- printf
- printObject
It exports the error codes, for example
- ERROR_NO_ERROR
- ERROR_HTTP_NO_FOUND
- ...
and as hash
- errors