Skip to content

Releases: arangodb/arangojs

v7.0.0-rc.2

20 Aug 19:03
633095a
Compare
Choose a tag to compare
v7.0.0-rc.2 Pre-release
Pre-release

This is a release candidate 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.

This is a major release and breaks backwards compatibility.

Fixed

  • Renamed validation option to schema (#681)

Added

  • Added support for isDisjoint option in Graph API

  • Added support for values "ignore" and "conflict" in overwriteMode
    option when saving documents using the Collection API

  • Added support for primarySortCompression and storedValues options in
    View API

v7.0.0-rc.1

11 Jul 15:08
bf75713
Compare
Choose a tag to compare
v7.0.0-rc.1 Pre-release
Pre-release

This is a release candidate 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.

This is a major release and breaks backwards compatibility.

Fixed

  • Fixed export is not defined error in the browser build

v7.0.0-rc.0

10 Jul 15:17
0fd7083
Compare
Choose a tag to compare
v7.0.0-rc.0 Pre-release
Pre-release

This is a release candidate 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.

This is a major release and breaks backwards compatibility.

Removed

  • Removed statusCode properties of ArangoError and HttpError

    Both of these error types still expose the HTTP status code as the code
    property. For ArangoError the true HTTP status code may be different and
    can still be accessed using the response.statusCode property.

  • Removed ArangoError re-export

    The type can still be imported directly from the error module.

Changed

  • Renamed cursor.nextBatch to cursor.batches.next

  • Renamed cursor.hasMore to cursor.batches.hasMore

  • Renamed db.createArangoSearchView to db.createView

  • Renamed transaction.run to transaction.step

    This should hopefully make it more obvious that sequential calls to arangojs
    methods should be split into separate calls of this method.

  • Added support for View in aql templates (#667)

    View (or ArangoSearchView) objects can now be passed into aql templates
    like ArangoCollection objects.

  • Graph methods now also accept ArangoCollection instances instead of names

    This brings these methods behavior in line with that of the beginTransaction
    and executeTransaction methods of Database objects.

  • Moved collectionToString helper into collection module

  • Moved Dict type into connection module

  • Moved Patch type into documents module

  • Removed Errback type from public API

  • Renamed util/foxx-manifest module to foxx-manifest

  • Removed Collection type from public API

    All public APIs reference DocumentCollection and EdgeCollection directly.

Added

  • Added precaptureStackTraces configuration option (#599)

    This option can be used to get more useful stack traces but results in a
    performance hit on every request.

  • Added cursor.batches to provide a batch-wise cursor API

  • Added before and after to the agentOptions configuration option (#585)

    These methods can be used to track performance metrics for outgoing requests.

v7.0.0-preview.1

13 May 13:14
9658b59
Compare
Choose a tag to compare
v7.0.0-preview.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.

This is a major release and breaks backwards compatibility.

Known issues

The inline documentation is currently incomplete. This will be resolved before the final 7.0.0 release is published.

Removed

  • Removed collection.edge method

    This method was previously an alias for collection.document.

    The method graphEdgeCollection.edge is unaffected by this change.

  • Removed graphName option for edgeCollection.traversal

    Graph traversals can still be performed via graph.traversal.

  • Removed ViewResponse type

    The type ViewDescription represents the same structure.

  • Removed ArangoSearchViewPropertiesResponse type

    The type ArangoSearchViewProperties & ViewDescription can be used
    to represent the same structure.

Changed

  • Removed CollectionMetadata fields from CollectionProperties type

    Methods that previously returned CollectionProperties now return
    CollectionMetadata & CollectionProperties.

Added

  • Added auth option to configuration

    It is now possible to pass authentication credentials using the auth
    option in addition to calling db.useBasicAuth or db.useBearerAuth.

Fixed

  • Changed async return type of collection.index from Index[] to Index

v7.0.0-preview.0

01 May 17:04
b5e05fc
Compare
Choose a tag to compare
v7.0.0-preview.0 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.

This is a major release and breaks backwards compatibility.

Known issues

The inline documentation is currently incomplete. This will be resolved before the final 7.0.0 release is published.

Removed

General

  • 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 isAbsolute option from the arangojs configuration.

Database API

  • Removed db.edgeCollection method

    As 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 DocumentCollection or EdgeCollection types in TypeScript.

  • Removed db.truncate convenience method

    This was a wrapper around db.listCollections and collection.truncate.
    The behavior of db.truncate can still be emulated by calling these methods
    directly.

Collection API

  • Removed collection createCapConstraint, createHashIndex,
    createSkipList, createPersistentIndex, createGeoIndex and
    createFulltextIndex methods

    These methods are no longer part of the official ArangoDB API and can be
    replaced by using the collection.ensureIndex method.

  • Removed save(fromId, toId, edgeData) method variants

    Methods for creating edges now require the _to and _from attributes to
    be specified in the edge (document) data and no longer accept these values
    as positional arguments.

Graph API

  • Removed generic collection methods from GraphVertexCollection

    All methods that are not part of the graph API have been removed.
    The underlying collection can still be accessed from the collection
    property.

  • Removed generic collection methods from GraphEdgeCollection

    All methods that are not part of the graph API have been removed.
    The underlying collection can still be accessed from the collection
    property.

Cursor API

  • Removed cursor.some and cursor.every methods

    These methods encouraged overfetching and should be replaced with more
    efficient AQL queries.

    The behavior can still be implemented by using the next method directly
    or iterating over the cursor using the forEach method or the for await
    syntax.

Deprecated

Database API

  • Deprecated db.useDatabase method

    Using this method will affect Collection, Graph and 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.database method can be used instead to create a
    new, separate Database object using the same connection pool.

Collection API

  • Deprecated Collection methods for simple queries: list, all, any,
    byExample, firstExample, removeByExample, replaceByExample,
    updateByExample, lookupByKeys, removeByKeys, fulltext

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

Graph API

  • Deprecated graph.traversal and collection.traversal

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

Changed

General

  • Multiple Database objects can now share a single Connection

    All arangojs objects now reference a Database object rather than accessing
    the underlying Connection directly. This allows multiple Database objects
    to be created by using the db.database method while still allowing the
    creation of separate database objects with separate connection pools if
    desired.

  • Memoized Database, Collection, Graph, View and Analyzer

    Database objects are now memoized per-connection and the other object types
    are memoized per-database. Using useDatabase de-memoizes the database
    object to prevent unexpected behavior.

Database API

  • Renamed method db.arangoSearchView to db.view

  • Replaced methods db.enableServiceDevelopmentMode and
    db.disableServiceDevelopmentMode with db.setServiceDevelopmentMode

  • Flattened database query method options argument

    The optional options argument previously contained an additional options
    object with additional query options. These options are now specified on the
    options argument 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.listServices option excludeSystem default to true

    To be more consistent with the equivalent options in other methods,
    the default value has been changed from false to true.

  • Changed db.createDatabase return type to Database

Collection API

  • Renamed collection.setProperties to collection.properties

    The method will now return the existing properties or set the properties
    depending on whether an argument is provided.

  • Renamed collection.setQueryTracking to collection.queryTracking

    The method will now return the existing query tracking properties or set the
    new query tracking properties depending on whether an argument is provided.

  • Merged DocumentCollection and EdgeCollection APIs

    All collections are now implemented as generic Collection objects.
    In TypeScript the generic collection object can still be explicitly cast to
    DocumentCollection or EdgeCollection for stricter type safety.

  • Collection methods save, update, replace and remove no longer take
    arrays as input

    The array versions have been renamed to saveAll, updateAll, replaceAll
    and removeAll to 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.import option type behavior

    Previously this option would always default to "auto".

    When passing a string, Buffer or Blob as data, the option now defaults
    to undefined. This matches the behavior in previous versions of setting
    the option explicitly to null.

    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.list return type to ArrayCursor

Graph API

  • Graph create method (and db.createGraph) signature changed

    The graph.create method now takes an array of edge definitions as the
    first argument and any additional options (not just the waitForSync
    option) 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.replaceEdgeDefinition is now optional

    Since 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 old and new properties when
    returnOld or returnNew options are used

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

Cursor API

  • Replaced ArrayCursor methods hasNext and hasMore with get...
Read more

v6.14.1

01 May 17:03
ee30e4d
Compare
Choose a tag to compare

Fixed

  • Added uuid and padded to legal KeyGeneratorType values in TypeScript (#656)

  • Added overwrite to InsertOptions type in TypeScript (#657)

v6.14.0

01 May 17:02
d9d1171
Compare
Choose a tag to compare

Added

  • Added db.listTransactions and db.transactions methods

v6.13.0

24 Jan 14:31
835aa66
Compare
Choose a tag to compare

Changed

  • Empty querystring parameters are now omitted

    In some cases ArangoDB would be unable to correctly handle querystring
    parameters without values. Any paremeters set to undefined will now
    no longer be added to the querystring.

    This does not affect parameters set to empty string values.

Added

  • Added maxRuntime option to db.query method

Fixed

  • Replaced linkedlist dependency with x3-linkedlist (#601)

    The linkedlist dependency had a memory leak and was no longer maintained.
    The replacement should fix this issue.

v6.12.0

18 Oct 13:09
a034e46
Compare
Choose a tag to compare

Added

  • Added cursor.kill method

    Cursors that have not yet been fully depleted can now be killed using the
    cursor.kill method. Note that this method has no effect if the cursor
    is already depleted.

  • Added cursor.nextBatch method

    Cursors normally fetch additional batches as necessary while iterating
    over the individual results, this method allows consuming an entire batch
    at a time.

v6.11.1

18 Oct 13:09
9d93dcd
Compare
Choose a tag to compare

Fixed

  • Fixed view properties not being passed correctly when creating views (#621)

  • Renamed internal response.host attribute to response.arangojsHostId (#604)

    In some environments the host attribute is already present and read-only.
    This should avoid a TypeError being thrown when a value is assigned by
    arangojs.