Releases: arangodb/arangojs
v8.4.0
Changed
-
Fetching additional cursor results now uses
POST
instead ofPUT
(DE-605)The
POST
route was deprecated and thePUT
route is supported in all
actively maintained versions of ArangoDB. -
User management methods now use database-relative URLs (DE-606)
Previously these methods would make requests without a database prefix,
implicitly using the_system
database. -
aql
template strings now take a generic type argumentThis allows explictly setting the item type of the
ArrayCursor
returned by
db.query
when usingaql
template strings. Note that like when setting
the type ondb.query
directly, arangojs can make no guarantees that the
type matches the actual data returned by the query.const numbers = await db.query(aql<{ index: number; squared: number }>` FOR i IN 1..1000 RETURN { index: i, squared: i * i } `); const first = await numbers.next(); // { index: number; squared: number; } console.log(first.index, first.squared); // 1 1
Fixed
-
Fixed
listUsers
behavior (#782) -
Fixed
graph.create
not correctly handlingisDisjoint
option
Added
-
Added missing attributes to
QueryInfo
andMultiExplainResult.stats
types (DE-607) -
Added cluster rebalancing methods to
Database
(DE-583) -
Added
db.withTransaction
helper method for streaming transactions (#786)This method allows using streaming transactions without having to manually
begin and commit or abort the transaction.const vertices = db.collection("vertices"); const edges = db.collection("edges"); const info = await db.withTransaction([vertices, edges], async (step) => { const start = await step(() => vertices.document("a")); const end = await step(() => vertices.document("b")); return await step(() => edges.save({ _from: start._id, _to: end._id })); });
v8.3.1
v8.3.0
Fixed
- Fixed
updateUser
andreplaceUser
behavior (#783)
Added
-
Added
renewAuthToken
method toDatabase
(#784)This method allows refreshing the authentication token passed to the
useBearerAuth
method or used by thelogin
method. Note that ArangoDB
will currently only return a new token if the token is going to expire
in the next 150 seconds. -
Added
returnOld
andmergeObjects
toCollectionInsertOptions
typeThese options are only available when using
overwriteMode
. -
Added caching options to
InvertedIndex
andArangoSearchView
typesThese options were added in ArangoDB 3.10.2.
-
Added support for
ArangoSearchView
typestoredValues
shorthand notationInstead of using an object, attributes can also be defined as arrays of
strings and arrays of arrays of strings. This was added in ArangoDB 3.10.3. -
Added
peakMemoryUsage
andexecutionTime
toSingleExplainResult.stats
typeThese attributes were added in ArangoDB 3.10.4.
-
Added
geo_s2
Analyzer typesThis Analyzer was added in ArangoDB 3.10.5.
-
Added
refillIndexCaches
option to document operation options typesThis option was added in ArangoDB 3.11.
-
Added
optimizeTopK
toArangoSearchView
andInvertedIndex
typesThis option was added in ArangoDB 3.11.
-
Added support for
allowRetry
option indb.query
This feature was added in ArangoDB 3.11.
-
Added
x-arango-driver
headerThe arangojs driver now correctly identifies itself to ArangoDB, allowing the
ArangoGraph Insights Platform to take advantage of the driver's support for
cloud-optimized behaviors.
v8.2.1
v8.2.0
Changed
-
Index names are now automatically NFC-normalized (DE-506)
This change affects all index names using unicode characters. The change
has no effect when using non-unicode (ASCII) names.Any names used when creating/ensuring indexes or passed to any methods that
expect anIndexSelector
will automatically be NFC normalized. -
Internal querystring handling logic now uses
URLSearchParams
instead of
nodequerystring
moduleThis change should be backwards compatible but may produce different results
when relying on undefined behavior in custom (e.g. Foxx) routes.
v8.1.0
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 to...
v8.0.0-rc.1
This is a preview release which is not intended for use in production and has been published under the npm next
tag.
To install the latest preview release, run npm install arangojs@next
or yarn add arangojs@next
.
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 support
As of version 8 arangojs no longer maintains compatibility for IE11 in the
pre-built browser bundle. You may still be able to use arangojs in IE11 when
bundling arangojs yourself but this may require polyfills and transformation. -
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
BytesAccumConsolidationPolicy
typeThe
bytes_accum
consolidation policy for views was deprecated in
ArangoDB 3.7 and should be replaced with thetier
consolidation policy. -
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.
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.
v7.8.0
v7.7.0
Changed
-
Unicode names are now automatically NFC normalized
This change affects all database, collection, graph, view and analyzer names
using unicode characters. The change has no effect when using non-unicode
(ASCII) names. At this time, ArangoDB does not support unicode characters
in any of these names but experimental support for unicode database names is
available in ArangoDB 3.9 using the--database.extended-names-databases
startup option.Any names used to create
Database
,Collection
, etc instances or passed to
methods will automatically be NFC normalized. Additionally the collection
name part of any value passed as aDocumentSelector
and the collection name
part of values returned bycollection.documentId
will automatically be NFC
normalized.
Deprecated
-
Deprecated
EnsureHashIndexOptions
andEnsureSkiplistIndexOptions
typesThe hash and skiplist index types have been deprecated in ArangoDB 3.9 and
should be replaced with persistent indexes which behave identically. -
Deprecated all MMFiles related options and methods
The MMFiles storage engine was removed in ArangoDB 3.7.
Added
-
Added support for new ArangoDB 3.9
CollationAnalyzer
and
SegmentationAnalyzer
types -
Added support for new ArangoDB 3.9 (multi-dimensional)
ZkdIndex
type -
Added support for new ArangoDB 3.9 Hybrid SmartGraphs graph options
-
Added support for new ArangoDB 3.9 response queue time reporting
This adds the
db.queueTime
property, which provides methods for accessing
queue time metrics reported by the most recently received server responses if
the server supports this feature. -
Added
ArangoSearchViewLink#inBackground
(#759) -
Added
collection.compact
(#630)