Skip to main content
Module

x/neo4j_lite_client/mod.ts>driver

Unofficial Neo4j Driver for Deno
Latest
function driver
import { driver } from "https://deno.land/x/neo4j_lite_client@4.4.6/mod.ts";

Construct a new Neo4j Driver. This is your main entry point for this library.

Configuration

This function optionally takes a configuration argument. Available configuration options are as follows:

{
  // Encryption level: ENCRYPTION_ON or ENCRYPTION_OFF.
  encrypted: ENCRYPTION_ON|ENCRYPTION_OFF

  // Trust strategy to use if encryption is enabled. There is no mode to disable
  // trust other than disabling encryption altogether. The reason for
  // this is that if you don't know who you are talking to, it is easy for an
  // attacker to hijack your encrypted connection, rendering encryption pointless.
  //
  // TRUST_SYSTEM_CA_SIGNED_CERTIFICATES is the default choice. For NodeJS environments, this
  // means that you trust whatever certificates are in the default trusted certificate
  // store of the underlying system. For Browser environments, the trusted certificate
  // store is usually managed by the browser. Refer to your system or browser documentation
  // if you want to explicitly add a certificate as trusted.
  //
  // TRUST_CUSTOM_CA_SIGNED_CERTIFICATES is another option for trust verification -
  // whenever we establish an encrypted connection, we ensure the host is using
  // an encryption certificate that is in, or is signed by, a certificate given
  // as trusted through configuration. This option is only available for NodeJS environments.
  //
  // TRUST_ALL_CERTIFICATES means that you trust everything without any verifications
  // steps carried out.  This option is only available for NodeJS environments and should not
  // be used on production systems.
  trust: "TRUST_SYSTEM_CA_SIGNED_CERTIFICATES" | "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES" |
  "TRUST_ALL_CERTIFICATES",

  // List of one or more paths to trusted encryption certificates. This only
  // works in the NodeJS bundle, and only matters if you use "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES".
  // The certificate files should be in regular X.509 PEM format.
  // For instance, ['./trusted.pem']
  trustedCertificates: [],

  // The maximum total number of connections allowed to be managed by the connection pool, per host.
  // This includes both in-use and idle connections. No maximum connection pool size is imposed
  // by default.
  maxConnectionPoolSize: 100,

  // The maximum allowed lifetime for a pooled connection in milliseconds. Pooled connections older than this
  // threshold will be closed and removed from the pool. Such discarding happens during connection acquisition
  // so that new session is never backed by an old connection. Setting this option to a low value will cause
  // a high connection churn and might result in a performance hit. It is recommended to set maximum lifetime
  // to a slightly smaller value than the one configured in network equipment (load balancer, proxy, firewall,
  // etc. can also limit maximum connection lifetime). No maximum lifetime limit is imposed by default. Zero
  // and negative values result in lifetime not being checked.
  maxConnectionLifetime: 60 * 60 * 1000, // 1 hour

  // The maximum amount of time to wait to acquire a connection from the pool (to either create a new
  // connection or borrow an existing one.
  connectionAcquisitionTimeout: 60000, // 1 minute

  // Specify the maximum time in milliseconds transactions are allowed to retry via
  // `Session#readTransaction()` and `Session#writeTransaction()` functions.
  // These functions will retry the given unit of work on `ServiceUnavailable`, `SessionExpired` and transient
  // errors with exponential backoff using initial delay of 1 second.
  // Default value is 30000 which is 30 seconds.
  maxTransactionRetryTime: 30000, // 30 seconds

  // Specify socket connection timeout in milliseconds. Numeric values are expected. Negative and zero values
  // result in no timeout being applied. Connection establishment will be then bound by the timeout configured
  // on the operating system level. Default value is 30000, which is 30 seconds.
  connectionTimeout: 30000, // 30 seconds

  // Make this driver always return native JavaScript numbers for integer values, instead of the
  // dedicated [Integer](https://deno.land/x/neo4j_lite_client@4.4.6/mod.ts?s=Integer) class. Values that do not fit in native number bit range will be represented as
  // `Number.NEGATIVE_INFINITY` or `Number.POSITIVE_INFINITY`.
  // **Warning:** ResultSummary It is not always safe to enable this setting when JavaScript applications are not the only ones
  // interacting with the database. Stored numbers might in such case be not representable by native
  // Number type and thus driver will return lossy values. This might also happen when data was
  // initially imported using neo4j import tool and contained numbers larger than
  // `Number.MAX_SAFE_INTEGER`. Driver will then return positive infinity, which is lossy.
  // Default value for this option is `false` because native JavaScript numbers might result
  // in loss of precision in the general case.
  disableLosslessIntegers: false,

  // Make this driver always return native Javascript BigInt for integer values, instead of the dedicated [Integer](https://deno.land/x/neo4j_lite_client@4.4.6/mod.ts?s=Integer) class or Number.
  //
  // Default value for this option is `false` for backwards compatibility.
  //
  // **Warning:** `BigInt` doesn't implement the method `toJSON`. In maner of serialize it as `json`, It's needed to add a custom implementation of the `toJSON` on the
  // `BigInt.prototype` {@see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#use_within_json}
  useBigInt: false,

  // Specify the logging configuration for the driver. Object should have two properties `level` and `logger`.
  //
  // Property `level` represents the logging level which should be one of: 'error', 'warn', 'info' or 'debug'. This property is optional and
  // its default value is 'info'. Levels have priorities: 'error': 0, 'warn': 1, 'info': 2, 'debug': 3. Enabling a certain level also enables all
  // levels with lower priority. For example: 'error', 'warn' and 'info' will be logged when 'info' level is configured.
  //
  // Property `logger` represents the logging function which will be invoked for every log call with an acceptable level. The function should
  // take two string arguments `level` and `message`. The function should not execute any blocking or long-running operations
  // because it is often executed on a hot path.
  //
  // No logging is done by default. See `neo4j.logging` object that contains predefined logging implementations.
  logging: {
    level: 'info',
    logger: (level, message) => console.log(level + ' ' + message)
  },

  // Specify a custom server address resolver function used by the routing driver to resolve the initial address used to create the driver.
  // Such resolution happens:
  //  * during the very first rediscovery when driver is created
  //  * when all the known routers from the current routing table have failed and driver needs to fallback to the initial address
  //
  // In NodeJS environment driver defaults to performing a DNS resolution of the initial address using 'dns' module.
  // In browser environment driver uses the initial address as-is.
  // Value should be a function that takes a single string argument - the initial address. It should return an array of new addresses.
  // Address is a string of shape '<host>:<port>'. Provided function can return either a Promise resolved with an array of addresses
  // or array of addresses directly.
  resolver: function(address) {
    return ['127.0.0.1:8888', 'fallback.db.com:7687'];
  },

 // Optionally override the default user agent name.
  userAgent: USER_AGENT
}

Parameters

url: string

The URL for the Neo4j database, for instance "neo4j://localhost" and/or "bolt://localhost"

authToken: AuthToken

Authentication credentials. See auth for helpers.

optional
config: Config = [UNSUPPORTED]

Configuration object. See the configuration section above for details.