Skip to content

Releases: arangodb/arangojs

v8.3.0

11 May 08:45
7b82407
Compare
Choose a tag to compare

Fixed

  • Fixed updateUser and replaceUser behavior (#783)

Added

  • Added renewAuthToken method to Database (#784)

    This method allows refreshing the authentication token passed to the
    useBearerAuth method or used by the login 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 and mergeObjects to CollectionInsertOptions type

    These options are only available when using overwriteMode.

  • Added caching options to InvertedIndex and ArangoSearchView types

    These options were added in ArangoDB 3.10.2.

  • Added support for ArangoSearchView type storedValues shorthand notation

    Instead 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 and executionTime to SingleExplainResult.stats type

    These attributes were added in ArangoDB 3.10.4.

  • Added geo_s2 Analyzer types

    This Analyzer was added in ArangoDB 3.10.5.

  • Added refillIndexCaches option to document operation options types

    This option was added in ArangoDB 3.11.

  • Added optimizeTopK to ArangoSearchView and InvertedIndex types

    This option was added in ArangoDB 3.11.

  • Added support for allowRetry option in db.query

    This feature was added in ArangoDB 3.11.

  • Added x-arango-driver header

    The 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

05 Apr 18:44
565344a
Compare
Choose a tag to compare

Fixed

  • Fixed a bug in search parameter handling in the browser version

    Previously the browser version would incorrectly handle search parameters,
    which could result in invalid request URLs in many cases.

v8.2.0

05 Apr 18:44
bd03e70
Compare
Choose a tag to compare

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 an IndexSelector will automatically be NFC normalized.

  • Internal querystring handling logic now uses URLSearchParams instead of
    node querystring module

    This change should be backwards compatible but may produce different results
    when relying on undefined behavior in custom (e.g. Foxx) routes.

v8.1.0

05 Apr 18:44
83353e8
Compare
Choose a tag to compare

Added

  • Added support for new ArangoDB 3.9.5 cache field in ArangoSearch types

v8.0.0

25 Oct 09:39
da984f5
Compare
Choose a tag to compare

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 from connection module

    The Dict<T> type was identical to Record<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 method

    The method was previously deprecated and can be replaced with db.database,
    which returns a new Database 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 types

    This option was renamed to writeConcern in ArangoDB 3.6.

  • Removed deprecated overwrite option from CollectionInsertOptions type

    This option was deprecated in ArangoDB 3.7 and should be replaced with the
    overwriteMode option.

  • Removed internal request.host attribute

    This attribute has been replaced with request.hostUrl.

  • Removed internal response.arangojsHostId attribute

    This attribute has been replaced with response.arangojsHostUrl.

  • Removed CollectionStatus and CollectionType enum re-exports

    Previously 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 the collection sub-module instead. Note that the ViewType enum
    has been removed completely.

Changed

  • Changed default URL to http://127.0.0.1:8529 to match ArangoDB default

    Previously 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 method

    Previously this method would always return the full response object if no
    transform callback was provided. The method now defaults to a transform
    callback that extracts the response body instead. The previous behavior can
    still be forced by passing false 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 bundle arangojs/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 and aql.join into aql module

    Previously these were available as methods on the aql function. Now they
    need to be imported from the aql module.

  • Changed return values of db.getUserAccessLevel and db.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
    503 ArangoError, which ArangoDB uses to indicate the server is running in
    maintenance mode. Previously this would always result in an error.

  • Extended CursorExtras type in TypeScript

    The types of the attributes plan, profile, and stats are now defined
    more explicitly.

  • Changed behavior of collection.removeAll for non-string arrays

    Previously 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 allowing ignoreRevs to be respected
    by the server.

  • Extracted type ArangoSearchViewLinkOptions from ArangoSearchViewLink

    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 whereas CreateArangoSearchView also includes
    options that can only be set during creation of a view.

  • Renamed type GraphCreateOptions to CreateGraphOptions

  • Renamed type PrimarySortCompression to Compression

  • Replaced type AnalyzerInfo and all its constituent types

    Previously each type of Analyzer was represented by an AnalyzerInfo type
    and (where relevant) an AnalyzerProperties 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 and AnalyzerDescription types.

  • Removed enum ViewType, type ArangoSearchView and changed View class to
    be non-generic

    The View class now behaves analogous to the Analyzer 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 and FulltextIndex types

    Fulltext indexes have been deprecated in ArangoDB 3.10 and should be replaced
    with ArangoSearch.

  • Deprecated BytesAccumConsolidationPolicy type

    The bytes_accum consolidation policy for views was deprecated in
    ArangoDB 3.7 and should be replaced with the tier consolidation policy.
    The type is also no longer supported in ArangoSearchViewPropertiesOptions.

Added

  • Added toJSON method to system errors

    ArangoJS 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 way ArangoError and
    HttpError objects can already be serialized.

  • Added allowDirtyRead option to db.beginTransaction, trx.commit,
    trx.abort, collection.edges, collection.inEdges, collection.outEdges

    The option is only respected by read-only requests.

  • Added support for ifMatch and ifNoneMatch options (#707)

  • Added overwrite option to db.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 to EnsureGeoIndexOptions
    and GeoIndex types

    Geo indexes created in ArangoDB pre-3.10 will implicitly default this option
    to true. ArangoDB 3.10 and later will default to false and use the new
    parsing rules for geo indexes.

  • Added support for new ArangoDB 3.10 cacheEnabled and storedValues 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 and writeConcern options to
    CollectionPropertiesOptions type

  • Added missing commitIntervalMsec option to ArangoSearchViewProperties
    type

  • Added missing deduplicate option to EnsurePersistentIndexOptions type
    (#771)

  • Added missing unique option to EnsureZkdIndexOptions type

  • Added missing deduplicate and estimates fields to...

Read more

v8.0.0-rc.1

30 Sep 14:34
0b1d540
Compare
Choose a tag to compare
v8.0.0-rc.1 Pre-release
Pre-release

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 from connection module

    The Dict<T> type was identical to Record<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 method

    The method was previously deprecated and can be replaced with db.database,
    which returns a new Database 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 type

    The bytes_accum consolidation policy for views was deprecated in
    ArangoDB 3.7 and should be replaced with the tier consolidation policy.

  • Removed deprecated minReplicationFactor option from collection and
    database related types

    This option was renamed to writeConcern in ArangoDB 3.6.

  • Removed deprecated overwrite option from CollectionInsertOptions type

    This option was deprecated in ArangoDB 3.7 and should be replaced with the
    overwriteMode option.

  • Removed internal request.host attribute

    This attribute has been replaced with request.hostUrl.

  • Removed internal response.arangojsHostId attribute

    This attribute has been replaced with response.arangojsHostUrl.

  • Removed CollectionStatus and CollectionType enum re-exports

    Previously 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 the collection sub-module instead. Note that the ViewType enum
    has been removed completely.

Changed

  • Changed default URL to http://127.0.0.1:8529 to match ArangoDB default

    Previously 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 method

    Previously this method would always return the full response object if no
    transform callback was provided. The method now defaults to a transform
    callback that extracts the response body instead. The previous behavior can
    still be forced by passing false 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 bundle arangojs/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 and aql.join into aql module

    Previously these were available as methods on the aql function. Now they
    need to be imported from the aql module.

  • Changed return values of db.getUserAccessLevel and db.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
    503 ArangoError, which ArangoDB uses to indicate the server is running in
    maintenance mode. Previously this would always result in an error.

  • Extended CursorExtras type in TypeScript

    The types of the attributes plan, profile, and stats are now defined
    more explicitly.

  • Changed behavior of collection.removeAll for non-string arrays

    Previously 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 allowing ignoreRevs to be respected
    by the server.

  • Extracted type ArangoSearchViewLinkOptions from ArangoSearchViewLink

    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 whereas CreateArangoSearchView also includes
    options that can only be set during creation of a view.

  • Renamed type GraphCreateOptions to CreateGraphOptions

  • Renamed type PrimarySortCompression to Compression

  • Replaced type AnalyzerInfo and all its constituent types

    Previously each type of Analyzer was represented by an AnalyzerInfo type
    and (where relevant) an AnalyzerProperties 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 and AnalyzerDescription types.

  • Removed enum ViewType, type ArangoSearchView and changed View class to
    be non-generic

    The View class now behaves analogous to the Analyzer 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 and FulltextIndex types

    Fulltext indexes have been deprecated in ArangoDB 3.10 and should be replaced
    with ArangoSearch.

Added

  • Added toJSON method to system errors

    ArangoJS 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 way ArangoError and
    HttpError objects can already be serialized.

  • Added allowDirtyRead option to db.beginTransaction, trx.commit,
    trx.abort, collection.edges, collection.inEdges, collection.outEdges

    The option is only respected by read-only requests.

  • Added support for ifMatch and ifNoneMatch options (#707)

  • Added overwrite option to db.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 to EnsureGeoIndexOptions
    and GeoIndex types

    Geo indexes created in ArangoDB pre-3.10 will implicitly default this option
    to true. ArangoDB 3.10 and later will default to false and use the new
    parsing rules for geo indexes.

  • Added support for new ArangoDB 3.10 cacheEnabled and storedValues 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 and writeConcern options to
    CollectionPropertiesOptions type

  • Added missing commitIntervalMsec option to ArangoSearchViewProperties
    type

  • Added missing deduplicate option to EnsurePersistentIndexOptions type
    (#771)

  • Added missing unique option to EnsureZkdIndexOptions type

  • Added missing deduplicate and estimates fields to PersistentIndex type

  • Added new ArangoDB 3.10 db.queryRules method

  • Added support for Analyzer in aql templates

    Analyzer objects can now be passed into aql templates like View and
    ArangoCollection objects.

v7.8.0

19 May 12:09
d597f31
Compare
Choose a tag to compare

Added

  • Added retryOnConflict option to db.query and route.request

    This option allows specifying the number of times the request will be retried
    if it results in a write-write conflict.

v7.7.0

26 Jan 15:14
bda001e
Compare
Choose a tag to compare

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 a DocumentSelector and the collection name
    part of values returned by collection.documentId will automatically be NFC
    normalized.

Deprecated

  • Deprecated EnsureHashIndexOptions and EnsureSkiplistIndexOptions types

    The 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)

v7.6.1

26 Oct 10:27
dd1f339
Compare
Choose a tag to compare

This is a bugfix release that addresses a backwards incompatibility in the TypeScript type signatures in v7.6.0 and does not include any changes relevant to non-TypeScript users.

Fixed

  • Changed all uses of Record<string, unknown> to Record<string, any> (#750)

    This should allow using more specific types without having to implement
    index signatures.

v7.6.0

20 Oct 10:32
abec3ee
Compare
Choose a tag to compare

Added

  • Added collection.documents for fetching multiple documents

  • Added support for fillBlockCache query option

  • Added support for passing Graph objects in AQL queries (#740)

    This also adds the isArangoGraph helper function for type checking.

  • Added User Management API (#664)

    This implements the endpoints of the
    HTTP Interface for User Management

Fixed

  • Added missing hex flag to StopwordsAnalyzer type (#732)

  • Added missing details flag to collection.figures (#728)

  • Added missing inBackground flag to index options (#734)