v8.0.0
This is a major release and breaks backwards compatibility.
See the migration guide for detailed instructions
for upgrading your code to arangojs v8.
Removed
-
Removed Node.js 10 and Node.js 12 support
With Node.js 10 and 12 having reached their end of life, arangojs will no
longer support these versions of Node.js going forward. -
Removed Internet Explorer and older browser support
As of version 8 arangojs uses the Browserlist
defaults
list to generate the pre-built browser bundle, which excludes older browsers
and specifically all versions of Internet Explorer.You may still be able to use arangojs in some of the excluded browsers when
bundling arangojs yourself but this may require polyfills and additional
transformations. -
Removed
Dict
type fromconnection
moduleThe
Dict<T>
type was identical toRecord<string, T>
and has been replaced
with this built-in type across arangojs. -
Removed workaround for ArangoDB pre-3.2.8 Foxx HTTP API responses
When fetching or modifying the configuration or dependencies of a Foxx
service using ArangoDB 3.2.7 and earlier, arangojs would perform additional
operations to convert the server response to a compatible format. All
affected versions of ArangoDB have reached End of Life since December 2018. -
Removed deprecated
db.useDatabase
methodThe method was previously deprecated and can be replaced with
db.database
,
which returns a newDatabase
object instead of modifying the existing one. -
Removed deprecated MMFiles methods and types
The MMFiles storage engine was removed in ArangoDB 3.7.
-
Removed deprecated
minReplicationFactor
option from collection and
database related typesThis option was renamed to
writeConcern
in ArangoDB 3.6. -
Removed deprecated
overwrite
option fromCollectionInsertOptions
typeThis option was deprecated in ArangoDB 3.7 and should be replaced with the
overwriteMode
option. -
Removed internal
request.host
attributeThis attribute has been replaced with
request.hostUrl
. -
Removed internal
response.arangojsHostId
attributeThis attribute has been replaced with
response.arangojsHostUrl
. -
Removed
CollectionStatus
andCollectionType
enum re-exportsPreviously these would be re-exported by the arangojs module for backwards
compatibility. If you still need to access these enums, you can import them
from thecollection
sub-module instead. Note that theViewType
enum
has been removed completely.
Changed
-
Changed default URL to
http://127.0.0.1:8529
to match ArangoDB defaultPreviously arangojs would use
localhost
which on some systems resolves to
the IPv6 address::1
instead, resulting in confusing connection errors. -
Changed TypeScript compilation target to ES2020
Since all evergreen browsers including Firefox ESR and all active Node.js LTS
releases fully support ES2020, the compilation target for the browser bundle
and Node.js has been moved from ES2016 and ES2018 respectively to ES2020. -
Updated TypeScript to version 4.8
This may result in type signatures that are incompatible with TypeScript 3
being added in future releases (including patch releases). -
Changed default behavior of internal
db.request
methodPreviously this method would always return the full response object if no
transform
callback was provided. The method now defaults to atransform
callback that extracts the response body instead. The previous behavior can
still be forced by passingfalse
instead of a callback function.This change has no effect on other methods like
route.request
. -
Replaced node core module polyfills with native APIs in browser build
As part of upgrading to webpack 5, arangojs now no longer requires node core
modules to be polyfilled to work in the browser. This also drastically
reduces the file size of the pre-built browser bundlearangojs/web
. -
db.query
now supports a generic return type (#764)This allows explictly setting the item type of the
ArrayCursor
returned by
the query without using a type assertion on the promise result. Note that
arangojs can make no guarantees that the type matches the actual data
returned by the query.const numbers = await db.query<{ index: number; squared: number }>(aql` FOR i IN 1..1000 RETURN { index: i, squared: i * i } `); const first = await numbers.next(); console.log(first.index, first.squared); // 1 1
-
Moved
aql.literal
andaql.join
intoaql
modulePreviously these were available as methods on the
aql
function. Now they
need to be imported from theaql
module. -
Changed return values of
db.getUserAccessLevel
anddb.getUserDatabases
to match documented return types -
Retry requests resulting in status 503
ArangoError
(#710)Unless retries are explicitly disabled by setting
config.maxRetries
to
false
, requests will now also be retried if the server responded with a
503ArangoError
, which ArangoDB uses to indicate the server is running in
maintenance mode. Previously this would always result in an error. -
Extended
CursorExtras
type in TypeScriptThe types of the attributes
plan
,profile
, andstats
are now defined
more explicitly. -
Changed behavior of
collection.removeAll
for non-string arraysPreviously
collection.removeAll
would always convert its argument into an
array of document IDs and fail with an error if passed any documents had an
ID not matching the collection name. Now the selector argument is passed
as-is, bypassing this validation but allowingignoreRevs
to be respected
by the server. -
Extracted type
ArangoSearchViewLinkOptions
fromArangoSearchViewLink
Note that
ArangoSearchViewLink
now represents the type of the value
returned by the server, marking several properties as required. -
Extracted type
CreateArangoSearchView
from
ArangoSearchViewPropertiesOptions
Note that
ArangoSearchViewPropertiesOptions
now includes only those options
that can be updated/replaced whereasCreateArangoSearchView
also includes
options that can only be set during creation of a view. -
Renamed type
GraphCreateOptions
toCreateGraphOptions
-
Renamed type
PrimarySortCompression
toCompression
-
Replaced type
AnalyzerInfo
and all its constituent typesPreviously each type of Analyzer was represented by an
AnalyzerInfo
type
and (where relevant) anAnalyzerProperties
type, which were used for both
creating and fetching Analyzers. The new types more closely follow the
pattern already used for index types, providing pairs of
CreateAnalyzerOptions
andAnalyzerDescription
types. -
Removed enum
ViewType
, typeArangoSearchView
and changedView
class to
be non-genericThe
View
class now behaves analogous to theAnalyzer
class. The various
types related to different view types have been restructured to more closely
follow the pattern used for indexes and analyzers.
Deprecated
-
Deprecated
EnsureFulltextIndexOptions
andFulltextIndex
typesFulltext indexes have been deprecated in ArangoDB 3.10 and should be replaced
with ArangoSearch. -
Deprecated
BytesAccumConsolidationPolicy
typeThe
bytes_accum
consolidation policy for views was deprecated in
ArangoDB 3.7 and should be replaced with thetier
consolidation policy.
The type is also no longer supported inArangoSearchViewPropertiesOptions
.
Added
-
Added
toJSON
method to system errorsArangoJS already adds the
request
object to system errors encountered
while attempting to make network requests. This change makes it easier
to serialize these error objects to JSON the same wayArangoError
and
HttpError
objects can already be serialized. -
Added
allowDirtyRead
option todb.beginTransaction
,trx.commit
,
trx.abort
,collection.edges
,collection.inEdges
,collection.outEdges
The option is only respected by read-only requests.
-
Added support for
ifMatch
andifNoneMatch
options (#707) -
Added
overwrite
option todb.acquireHostList
(#711)Setting this option to
true
will replace the current host list, removing any
hosts no longer present in the cluster. -
Added new ArangoDB 3.10
legacyPolygons
option toEnsureGeoIndexOptions
andGeoIndex
typesGeo indexes created in ArangoDB pre-3.10 will implicitly default this option
totrue
. ArangoDB 3.10 and later will default tofalse
and use the new
parsing rules for geo indexes. -
Added support for new ArangoDB 3.10
cacheEnabled
andstoredValues
options
in persistent indexes -
Added support for new ArangoDB 3.10 computed values in collections
-
Added support for new ArangoDB 3.10
InvertedIndex
type -
Added support for new ArangoDB 3.10
offset
Analyzer feature -
Added support for new ArangoDB 3.10
minhash
,classification
and
nearest_neighbors
Analyzer types -
Added missing
replicationFactor
andwriteConcern
options to
CollectionPropertiesOptions
type -
Added missing
commitIntervalMsec
option toArangoSearchViewProperties
type -
Added missing
deduplicate
option toEnsurePersistentIndexOptions
type
(#771) -
Added missing
unique
option toEnsureZkdIndexOptions
type -
Added missing
deduplicate
andestimates
fields toPersistentIndex
type -
Added new ArangoDB 3.10
db.queryRules
method -
Added support for
Analyzer
inaql
templatesAnalyzer
objects can now be passed intoaql
templates likeView
and
ArangoCollection
objects. -
Added
retryOnConflict
option toConfig
If set to any number, this value will be used as the default value for all
requests unless explicitly overridden when usingdb.query
or
route.request
.