Skip to content

v8.0.0

Compare
Choose a tag to compare
@pluma4345 pluma4345 released this 25 Oct 09:39
· 194 commits to main since this release
da984f5

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 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.

  • Added retryOnConflict option to Config

    If set to any number, this value will be used as the default value for all
    requests unless explicitly overridden when using db.query or
    route.request.