All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
This driver uses semantic versioning:
- A change in the bugfix version (e.g. X.Y.0 -> X.Y.1) indicates internal changes and should always be safe to upgrade.
- A change in the minor version (e.g. X.1.Z -> X.2.0) indicates additions and backwards-compatible changes that should not affect your code.
- A change in the major version (e.g. 1.Y.Z -> 2.0.0) indicates breaking changes that require changes in your code to upgrade.
7.0.1 - 2020-08-21
This is a maintenance release because the initial v7 release did not include a README file.
7.0.0 - 2020-08-21
This is a major release and breaks backwards compatibility.
See the migration guide for detailed instructions for upgrading your code to arangojs v7.
For a detailed list of changes between pre-release versions of v7 see the Changelog of the final v7 release candidate.
-
Removed ArangoDB 2.8 support
ArangoDB 2.8 has reached End of Life since mid 2018. Version 7 and above of arangojs will no longer support ArangoDB 2.8 and earlier.
-
Removed Node.js 6/8 support
As of version 7 arangojs now requires language support for async/await. This means arangojs requires Node.js 10 (LTS) or newer to function correctly.
-
Removed support for absolute endpoint URLs
This removes the
isAbsoluteoption from the arangojs configuration. -
Removed
ArangoErrorre-exportThe type can still be imported directly from the
errormodule. -
Removed
statusCodeproperties ofArangoErrorandHttpErrorBoth of these error types still expose the HTTP status code as the
codeproperty. ForArangoErrorthe true HTTP status code may be different and can still be accessed using theresponse.statusCodeproperty.
-
Removed
db.edgeCollectionmethodAs arangojs 7 uses the same implementation for document and edge collections, this method is no longer necessary. Generic collection objects can still be cast to
DocumentCollectionorEdgeCollectiontypes in TypeScript. -
Removed
db.truncateconvenience methodThis was a wrapper around
db.listCollectionsandcollection.truncate. The behavior ofdb.truncatecan still be emulated by calling these methods directly.
-
Removed collection
createCapConstraint,createHashIndex,createSkipList,createPersistentIndex,createGeoIndexandcreateFulltextIndexmethodsThese methods are no longer part of the official ArangoDB API and can be replaced by using the
collection.ensureIndexmethod. -
Removed
save(fromId, toId, edgeData)method variantsMethods for creating edges now require the
_toand_fromattributes to be specified in the edge (document) data and no longer accept these values as positional arguments. -
Removed
collection.bulkUpdatemethodThe new method
collection.updateAllnow provides this functionality. -
Removed
collection.edgemethodThis method was previously an alias for
collection.document.The method
graphEdgeCollection.edgeis unaffected by this change. -
Removed
graphNameoption foredgeCollection.traversalGraph traversals can still be performed via
graph.traversal.
-
Removed generic collection methods from
GraphVertexCollectionAll methods that are not part of the graph API have been removed. The underlying collection can still be accessed from the
collectionproperty. -
Removed generic collection methods from
GraphEdgeCollectionAll methods that are not part of the graph API have been removed. The underlying collection can still be accessed from the
collectionproperty.
-
Removed
cursor.someandcursor.everymethodsThese methods encouraged overfetching and should be replaced with more efficient AQL queries.
The behavior can still be implemented by using the
nextmethod directly or iterating over the cursor using theforEachmethod or thefor awaitsyntax.
-
Removed
ViewResponsetypeThe type
ViewDescriptionrepresents the same structure. -
Removed
ArangoSearchViewPropertiesResponsetypeThe type
ArangoSearchViewProperties & ViewDescriptioncan be used to represent the same structure.
-
Deprecated
db.useDatabasemethodUsing this method will affect
Collection,Graphand other objects already created for the given database and change which database these refer to, which may cause unexpected behavior.As of arangojs 7 the
db.databasemethod can be used instead to create a new, separateDatabaseobject using the same connection pool.
-
Deprecated
Collectionmethods for simple queries:list,all,any,byExample,firstExample,removeByExample,replaceByExample,updateByExample,lookupByKeys,removeByKeys,fulltextThese methods were deprecated in ArangoDB 3.4 and should no longer be used. They will still behave correctly with versions of ArangoDB supporting these methods but may be removed in a future ArangoDB release.
Their behavior can be emulated using AQL queries.
-
Deprecated
graph.traversalandcollection.traversalThese methods were deprecated in ArangoDB 3.4 and should no longer be used. They will still behave correctly with versions of ArangoDB supporting these methods but may be removed in a future ArangoDB release.
Their behavior can be emulated using AQL graph traversal.
-
Multiple
Databaseobjects can now share a singleConnectionAll arangojs objects now reference a
Databaseobject rather than accessing the underlyingConnectiondirectly. This allows multipleDatabaseobjects to be created by using thedb.databasemethod while still allowing the creation of separate database objects with separate connection pools if desired. -
Memoized
Database,Collection,Graph,ViewandAnalyzerDatabase objects are now memoized per-connection and the other object types are memoized per-database. Using
useDatabasede-memoizes the database object to prevent unexpected behavior. -
Added support for
Viewinaqltemplates (#667)View(orArangoSearchView) objects can now be passed intoaqltemplates likeArangoCollectionobjects. -
Moved
collectionToStringhelper intocollectionmodule -
Moved
Dicttype intoconnectionmodule -
Moved
Patchtype intodocumentsmodule -
Removed
Errbacktype from public API -
Renamed
util/foxx-manifestmodule tofoxx-manifest
-
Renamed method
db.arangoSearchViewtodb.view -
Renamed method
db.createArangoSearchViewtodb.createView -
Replaced methods
db.enableServiceDevelopmentModeanddb.disableServiceDevelopmentModewithdb.setServiceDevelopmentMode -
Flattened database
querymethodoptionsargumentThe optional
optionsargument previously contained an additionaloptionsobject with additional query options. These options are now specified on theoptionsargument itself directly.Before:
db.query(aql`FOR doc IN ${collection} RETURN doc`, { cache: false, options: { fullCount: true }, });
After:
db.query(aql`FOR doc IN ${collection} RETURN doc`, { cache: false, fullCount: true, });
-
Changed
db.listServicesoptionexcludeSystemdefault totrueTo be more consistent with the equivalent options in other methods, the default value has been changed from
falsetotrue. -
Changed
db.createDatabasereturn type toDatabase -
Renamed
database.setQueryTrackingtodatabase.queryTrackingThe method will now return the existing query tracking properties or set the new query tracking properties depending on whether an argument is provided.
-
Method
db.transactionno longer acts as an alias forexecuteTransactionThe method now only allows looking up transactions by ID. Previously it would wrap
executeTransactionif passed the arguments expected by that method.
-
Merged
DocumentCollectionandEdgeCollectionAPIsAll collections are now implemented as generic
Collectionobjects. In TypeScript the generic collection object can still be explicitly cast toDocumentCollectionorEdgeCollectionfor stricter type safety. -
Renamed
collection.setPropertiestocollection.propertiesThe method will now return the existing properties or set the properties depending on whether an argument is provided.
-
Removed
CollectionMetadatafields fromCollectionPropertiestypeMethods that previously returned
CollectionPropertiesnow returnCollectionMetadata & CollectionProperties. -
Collection methods
save,update,replaceandremoveno longer take arrays as inputThe array versions have been renamed to
saveAll,updateAll,replaceAllandremoveAllto reduce the likelihood of mistakes and provide more helpful type signatures. -
Collection methods will now throw errors when passed documents or document IDs from different collections where a document key or ID for a document in the same collection is expected
For example the following code will now result in an error rather than the document from a different collection being returned:
const aliceId = "alice/123"; // Document from collection "alice" const bobCol = db.collection("bob"); // Collection "bob" const doc = await bobCol.document(aliceId); // THROWS
-
Changed
collection.importoptiontypebehaviorPreviously this option would always default to
"auto".When passing a
string,BufferorBlobas data, the option now defaults toundefined. This matches the behavior in previous versions of setting the option explicitly tonull.Additionally, the value
"array"has been replaced with"list".When passing an array as data, the option is now no longer supported as the corresponding value will be inferred from the array's contents:
If the array's first item is also an array, it will match the behavior in previous versions of setting the option explicitly to
null.Otherwise it will match the behavior in previous versions of setting the option explicitly to
"documents"or"auto", or omitting it entirely. -
Changed
collection.listreturn type toArrayCursor
-
Graph methods now also accept
ArangoCollectioninstances instead of namesThis brings these methods behavior in line with that of the
beginTransactionandexecuteTransactionmethods ofDatabaseobjects. -
Graph
createmethod (anddb.createGraph) signature changedThe
graph.createmethod now takes an array of edge definitions as the first argument and any additional options (not just thewaitForSyncoption) as the second argument.Before:
await graph.create( { edgeDefinitions: [{ collection: "edges", from: ["a"], to: ["b"] }], isSmart: true, }, { waitForSync: true } );
After:
await graph.create([{ collection: "edges", from: ["a"], to: ["b"] }], { isSmart: true, waitForSync: true, });
-
First argument to
graph.replaceEdgeDefinitionis now optionalSince the new edge definition already includes the edge collection name that identifies the edge definition, it is now possible to specify only the new edge definition object without additionally specifying the collection name as the first argument.
Before:
await graph.replaceEdgeDefinition("edges", { collection: "edges", // This is a bit redundant from: ["a"], to: ["b"], });
After:
await graph.replaceEdgeDefinition({ collection: "edges", from: ["a"], to: ["b"], });
-
Graph collection return values now contain
oldandnewproperties whenreturnOldorreturnNewoptions are usedThis behavior represents a compromise between remaining consistent with the behavior of the regular collection method equivalents and remaining compatible with the ArangoDB HTTP API response object quirks.
-
Replaced
ArrayCursormethodshasNextandhasMorewith getters -
Renamed
ArrayCursormethodeachtoforEach -
Renamed
cursor.nextBatchtocursor.batches.next -
Renamed
cursor.hasMoretocursor.batches.hasMore -
In TypeScript
ArrayCursoris now a generic typeTypeScript users can now cast cursor instances to use a specific type for its values rather than
anyto aid type safety.
-
Renamed
view.setPropertiestoview.updateProperties -
Renamed type
ArangoViewtoView
- Renamed type
ArangoAnalyzertoAnalyzer
-
Renamed type
ArangoTransactiontoTransaction -
Renamed
transaction.runtotransaction.stepThis should hopefully make it more obvious that sequential calls to arangojs methods should be split into separate calls of this method.
-
Added
databaseNameconfiguration optionSetting this option to a database name will result in the initial
Databaseobject using this database instead of the default_systemdatabase. -
Added
authconfiguration optionIt is now possible to pass authentication credentials using the
authoption in addition to callingdb.useBasicAuthordb.useBearerAuth. -
Added
precaptureStackTracesconfiguration option (#599)This option can be used to get more useful stack traces but results in a performance hit on every request.
-
Added
beforeandafterto theagentOptionsconfiguration option (#585)These methods can be used to track performance metrics for outgoing requests.
-
Improved type signatures for TypeScript and inline documentation
Most methods should now provide full type signatures for options and response objects and provide inline documentation in IDEs and editors that support this feature in TypeScript and JavaScript.
-
Added
db.databasemethodThis method replaces the use case for the deprecated
db.useDatabasemethod. -
Added support for extended options in
db.createDatabaseThis method now supports passing an extended options object instead of passing the users array directly.
-
Added
db.createCollectionanddb.createEdgeCollectionmethodsThese are convenience methods wrapping
collection.create. In TypeScriptcreateEdgeCollectionwill return a collection cast to theEdgeCollectiontype. -
Added
db.createGraphmethodThis is a convenience method wrapping
graph.create. -
Added
db.createArangoSearchViewmethodThis is a convenience method wrapping
view.create. -
Added
db.createAnalyzermethodThis is a convenience method wrapping
analyzer.create. -
Added support for
db.createFunctionoptionisDeterministic -
Added support for
db.listServicesoptionexcludeSystem
-
Added collection
saveAll,updateAll,replaceAllandremoveAllmethodsThese methods replace the respective array versions of the collection methods
save,update,replaceandremove, which no longer accept arrays as inputs. -
Added
collection.documentIdmethodThe method takes a document or a document key and returns a fully qualified document ID string for the document in the current collection.
-
Added support for values
"ignore"and"conflict"inoverwriteModeoption when saving documents using the Collection API
-
Added
graphVertexCollection.vertexExistsandgraphEdgeCollection.edgeExistsmethodsThese mimic the behavior of the
collection.documentExistsmethod but using the Graph API. -
Added
graphVertexCollection.collectionandgraphEdgeCollection.collectionThese properties now provide access to regular (non-graph) collection objects for these graph collections. These objects can be used to perform operations not available within the context of a graph (e.g. bulk imports or modifying the collection itself).
-
Added support for
isDisjointoption in Graph API
-
Added
cursor.flatMapmethodThis method behaves similarly to the
ArraymethodflatMapbut operates on the cursor directly likecursor.mapdoes. -
Added
cursor.batchesto provide a batch-wise cursor API -
Added support for
for awaitinArrayCursor(#616)It is now possible to use
for awaitto iterate over each item in a cursor asynchronously.
- Added support for
primarySortCompressionandstoredValuesoptions in View API
-
Removed TypeScript dependency on
domlibraryIf you are using arangojs in Node.js, you no longer need to add the
domlibrary to yourtsconfig.jsonconfiguration.
-
Fixed
db.dropFunctionoptiongroupbeing ignored -
Fixed documentation of
db.runServiceTestsPreviously the documentation incorrectly indicated that the default value of the
idiomaticoption istrue. The correct default value isfalse.
6.14.1 - 2020-05-01
-
Added
uuidandpaddedto legalKeyGeneratorTypevalues in TypeScript (#656) -
Added
overwritetoInsertOptionstype in TypeScript (#657)
6.14.0 - 2020-03-18
- Added
db.listTransactionsanddb.transactionsmethods
6.13.0 - 2020-01-24
-
Empty querystring parameters are now omitted
In some cases ArangoDB would be unable to correctly handle querystring parameters without values. Any paremeters set to
undefinedwill now no longer be added to the querystring.This does not affect parameters set to empty string values.
- Added
maxRuntimeoption todb.querymethod
-
Replaced
linkedlistdependency withx3-linkedlist(#601)The
linkedlistdependency had a memory leak and was no longer maintained. The replacement should fix this issue.
6.12.0 - 2019-10-16
-
Added
cursor.killmethodCursors that have not yet been fully depleted can now be killed using the
cursor.killmethod. Note that this method has no effect if the cursor is already depleted. -
Added
cursor.nextBatchmethodCursors normally fetch additional batches as necessary while iterating over the individual results, this method allows consuming an entire batch at a time.
6.11.1 - 2019-08-30
-
Fixed View properties not being passed correctly when creating Views (#621)
-
Renamed internal
response.hostattribute toresponse.arangojsHostId(#604)In some environments the
hostattribute is already present and read-only. This should avoid aTypeErrorbeing thrown when a value is assigned by arangojs.
6.11.0 - 2019-08-16
-
Renamed
db.transactiontodb.executeTransactionThe method for executing server-side transactions is now called
executeTransactionand theparamsargument now must be passed via theoptionsobject.For backwards-compatibility the new
db.transactionmethod will continue to behave like before when passed anactionstring as the second argument. Note that this behavior is deprecated and will be removed in arangojs 7.
-
Added support for ArangoDB 3.5 streaming transactions
New streaming transactions can be created using
db.beginTransactionand existing streaming transactions can be accessed by passing the transaction ID todb.transaction.See the documentation of the
transaction.runmethod for examples of using streaming transactions with arangojs. -
Added support for ArangoDB 3.5 Analyzers API
See the documentation of the
database.analyzermethod and theAnalyzerinstances for information on using this API. -
Added
collection.getResponsibleShardmethod -
Added support for new ArangoDB 3.5 collection properties
-
Added support for new ArangoDB 3.5 View properties
-
Fixed a problem causing empty nested AQL expressions to be converted to bind variables
Nesting an empty AQL expression like the result of calling
aql.joinwith an empty array would previously result in the AQL expression not being recognized and being converted to an object bind variable instead.
6.10.0 - 2018-12-22
-
Changed Views API to match 3.4 GA implementation
This release updates the Views API to the version implemented in the final ArangoDB 3.4 GA release. Please note that these changes may break code written for earlier ArangoDB 3.4 release candidates.
-
Added
timeoutoption todb.queryand request methods (#572)Note that this merely cancels the request. Queries will still be executed and ArangoDB will still continue processing the request, this will merely result in the socket being forcefully disconnected.
-
Added query management API (#474)
This implements most endpoints of the HTTP Interface for AQL Queries.
6.9.0 - 2018-11-07
-
Restored support for credentials in URLs
If the server URL includes credentials, arangojs will now use them instead of the default username "root" and an empty password. Any credentials explicitly set using
useBasicAuthoruseBearerAuthwill still override the default credentials as before.
6.8.0 - 2018-11-07
-
Added
any[]to allowed types for AQL bind parametersThis should help in some cases where the previous TypeScript annotation was too restrictive.
-
Added support for UNIX socket URLs (#405)
In addition to the
unix:///socket/pathandhttp+unix:///socket/pathURL formats recognized by ArangoDB, arangojs also supports the formathttp://unix:/socket/pathcommonly supported in the Node ecosystem and automatically converts ArangoDB endpoint URLs between them.
6.7.0 - 2018-10-24
-
No longer emitting
undefinedvalues inaqltemplate stringsPreviously using
undefinedvalues in an aql template string would result in a bind parameter being added with no value, which would always lead to an error response when ArangoDB executes the query. Now undefined values will simply be omitted, also easing the conditional insertion of query fragments. -
Changed experimental Views API
This release updates the experimental support for the Views API to the version implemented in the ArangoDB 3.4 release candidate. Please note that this API is still subject to change and may indeed still change until the 3.4.0 GA release.
-
Updated TypeScript to version 3
This may result in type signatures that are incompatible with TypeScript 2 being added in future releases (including patch releases).
-
Added nesting support for
aqltemplate strings (#481)It is now possible to use aql queries as values in
aqltemplate strings:function createQuery(flowers, color) { const filter = color ? aql`FILTER flower.color == ${color}` : undefined; return aql`FOR flower IN ${flowers} ${filter} RETURN flower`; } createQuery(db.collection("flowers", "green")); // FOR flower IN @@value0 FILTER @value1 RETURN flower // {"@value0": "flowers", "value1": "green"} createQuery(db.collection("flowers")); // FOR flower IN @@value0 RETURN flower // {"@value0": "flowers"}
Previously aql fragments could only be created with
aql.literal, which does not support bind parameters:aql.literal("FILTER flower.color == " + JSON.stringify(color)); // Note that we had to rely on JSON.stringify to correctly escape the value // because the value is part of the literal, not a bind parameter
-
Added support for
undefinedand AQL literals toaql.literalPassing undefined to
aql.literalwill now result in an empty literal as would be expected. Passing an AQL literal back intoaql.literalwill return the existing literal rather than the string[object Object]. -
Added
aql.joinfunctionThe function
aql.joincan be used to convert an array ofaqlqueries into a combined query:const users = db.collection("users"); const keys = ["a", "b", "c"]; const fragments = keys.map((key) => aql`DOCUMENT(${users}, ${key})`); const combined = aql`[${aql.join(fragments, ", ")}]`; // [DOCUMENT(@@value0, @value1), DOCUMENT(@@value0, @value2), \ // DOCUMENT(@@value0, @value3)] // {"@value0": "users", "value1": "a", "value2": "b", "value3": "c"} const query = aql`FOR user IN ${combined} RETURN user.email`; // FOR user IN [DOCUMENT(@@value0, @value1), DOCUMENT(@@value0, @value2), \ // DOCUMENT(@@value0, @value3)] RETURN user.email // {"@value0": "users", "value1": "a", "value2": "b", "value3": "c"}
-
Added
allowDirtyReadoption todb.queryandcollection.documentDirty reads are supported in leader/follower replication setups and require ArangoDB 3.4 or later. When performing a request that permits dirty reads, arangojs will load balance across all know leaders and followers and instruct ArangoDB to allow responding with stale or dirty response data. Note that data returned from a dirty read may be out of date or inconsistent.
6.6.0 - 2018-08-28
-
Re-implemented
collection.importThe previous implementation was broken. The new implementation should be backwards-compatible in cases where it previously wasn't broken but is more flexible and also handles buffers.
-
Added missing dependency on
@types/node(#567)This should solve TypeScript errors when the dependency was not already added.
6.5.1 - 2018-08-15
-
Fixed
edgeCollection.savenot respecting options (#554) -
Fixed
database.createDatabaseTypeScript signature (#561)
6.5.0 - 2018-08-03
-
Requests that fail because a server can not be reached are now automatically retried if other servers are available
This behavior can be controlled using the
maxRetriesoption. -
Renamed
EdgeCollection#edgetoEdgeCollection#documentEdgeCollection#edgeis now an alias for thedocumentmethod. -
Renamed
GraphEdgeCollection#edgetoGraphEdgeCollection#documentGraphEdgeCollection#edgeis now an alias for thedocumentmethod. -
Renamed
GraphVertexCollection#vertextoGraphVertexCollection#documentGraphVertexCollection#vertexis now an alias for thedocumentmethod.
-
Added
maxRetriesoption to configuration to control retry behavior -
Added
collection.documentExistsmethod -
Added
gracefuloption tocollection.document
6.4.0 - 2018-07-06
- Added TypeScript validation for
optsinDocumentCollection#save
-
Added
ArangoErrorandCollectionTypeto public exports -
Added
database.closemethod -
Added
optsparameter toEdgeCollection#save
6.3.0 - 2018-06-20
-
Added
database.versionmethod -
Added
database.loginmethod -
Added
database.existsmethod -
Added
collection.existsmethod -
Added
graph.existsmethod -
Added
aql.literalfunction -
Exposed typings for collections and graphs (@samrg472 in #538)
-
Fixed synchronous errors during request creation not being handled
Internal errors thrown while a request is created (e.g. malformed URIs) would result in unhandled errors, which could result in termination of the process or promises never being rejected. These errors are now handled normally and will result in async rejections as expected.
6.2.4 - 2018-04-27
- Ensure
res.bodyis an empty string instead of null in the browser version
6.2.3 - 2018-04-03
-
Fixed
collection.update(documentHandle, newValue, opts)missing return value -
Fixed
collection.removeByKeys(keys, options)missing return value -
Fixed
collection.replaceByExample(example, newValue, opts)missing return value -
Fixed
collection.updateByExample(example, newValue, opts)missing return value
6.2.2 - 2018-03-21
-
Replaced
Object.valuesuse to improve Node version compatibilityThis allows using arangojs in Node.js 6 LTS without a polyfill.
6.2.1 - 2018-03-21
-
Moved most documentation out of the README (#123)
This is a necessary step to integrate arangojs with the Drivers book in the official ArangoDB documentation.
-
Replaced internal use of async functions with callbacks
This removes some unnecessary layers of indirection, which should increase overall performance.
- Increased test coverage (#34).
6.2.0 - 2018-03-06
-
Extended
db.transactionarguments (@f5io in #494)It's now possible to pass additional transaction options.
-
Fixed a typo (@lodestone in #506)
-
Fixed
graphEdgeCollection.edgereturn value (@Hunter21007 in #501) -
Fixed graph API sending incorrect requests resulting in HTTP 400 errors (@casdevs in #513)
6.1.0 - 2018-02-12
-
Removed ES modules build
This should solve compatibility problems with
es6-error. The cjs build now should also work with emulated ES module imports.
-
Use
cpy-clifor build processShould help with cross-platform compatibility.
-
Fixed
db.uninstallService(mount, opts)opts default value -
Fixed
db.getServiceConfiguration(mount, minimal)minimal representation -
Fixed
db.getServiceDependencies(mount, minimal)minimal representation -
Fixed
db.updateServiceConfiguration(mount, cfg, minimal)non-minimal representation -
Fixed
db.replaceServiceConfiguration(mount, cfg, minimal)non-minimal representation -
Fixed
db.updateServiceDependencies(mount, cfg, minimal)non-minimal representation -
Fixed
db.replaceServiceDependencies(mount, cfg, minimal)non-minimal representation -
Fixed handling of non-json responses
6.0.1 - 2018-01-22
-
Use
rimraffor build processShould help with cross-platform compatibility.
-
Fixed some imports broken during the TypeScript rewrite
If you were previously seeing errors involving a
defaultproperty, this should make those go away.
6.0.0 - 2018-01-11
-
Removed
retryConnectionconfig.It is not possible to reliably determine whether retrying a request is safe or not at the driver level. If you need automatic retry, you should implement your own logic, e.g. using the retry package.
-
Removed
promiseconfig.If you want to use an alternative promise implementation you need to overwrite the
Promiseglobal variable directly. -
Asynchronous functions no longer support node-style callbacks.
All asynchronous functions now return promises.
-
Removed support for credentials in
urlconfig.Use
db.useBasicAuthordb.useBearerAuthto pass credentials instead. -
Removed bower support.
Use yarn/npm instead.
-
Removed
libpath prefixAll arangojs files can now be imported directly by name.
Before:
import { DocumentCollection } from "arangojs/lib/collection";
After:
import { DocumentCollection } from "arangojs/collection";
-
The
urlconfig can now also be an array of URLs.The behavior depends on the load balancing strategy (see API docs).
-
The
databaseNameconfig has been replaced withisAbsolute.If you previously used
databaseName: false, the same behavior can now be achieved usingisAbsolute: true. If you want to use a specific database you can still switch databases withdb.useDatabaseat any time. -
Browser: maximum number of parallel connections behaves differently.
As keep-alive does not work reliably in the browser, the maximum number of parallel connections now matches
agentOptions.maxSocketsexactly. -
TypeScript: ported arangojs to TypeScript.
The generated typings are now included in the NPM release and should be more reliable than the community maintained typings included with earlier versions of arangojs. See also #480.
-
Added ES Modules and browser build to NPM release.
- ES Modules files live under
lib/esm/ - CommonJS files live under
lib/cjs/ - Precompiled browser build lives at
lib/web.js
- ES Modules files live under
-
Added support for load balancing and failover.
See API documentation for details.
-
Added
acquireHostListmethod.See API documentation for details.
-
Added support for leader/follower failover.
Connections to a follower responding with an endpoint redirect will now be transparently redirected to the indicated leader.
-
Fixed #354
Graph methods now only return the relevant part of the response body.