Socket
Socket
Sign inDemoInstall

neo4j-driver-bolt-connection

Package Overview
Dependencies
Maintainers
1
Versions
70
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

neo4j-driver-bolt-connection - npm Package Compare versions

Comparing version 5.6.0 to 5.7.0

lib/bolt/bolt-protocol-v5x1.js

21

lib/bolt/bolt-protocol-util.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertImpersonatedUserIsEmpty = exports.assertTxConfigIsEmpty = exports.assertDatabaseIsEmpty = void 0;
exports.assertNotificationFilterIsEmpty = exports.assertImpersonatedUserIsEmpty = exports.assertTxConfigIsEmpty = exports.assertDatabaseIsEmpty = void 0;
/**

@@ -78,1 +78,20 @@ * Copyright (c) "Neo4j"

exports.assertImpersonatedUserIsEmpty = assertImpersonatedUserIsEmpty;
/**
* Asserts that the passed-in notificationFilter is empty
* @param {NotificationFilter} notificationFilter
* @param {function (err:Error)} onProtocolError Called when it does have notificationFilter user set
* @param {any} observer
*/
function assertNotificationFilterIsEmpty(notificationFilter, onProtocolError, observer) {
if (onProtocolError === void 0) { onProtocolError = function () { }; }
if (notificationFilter !== undefined) {
var error = (0, neo4j_driver_core_1.newError)('Driver is connected to a database that does not support user notification filters. ' +
'Please upgrade to Neo4j 5.7.0 or later in order to use this functionality. ' +
"Trying to set notifications to ".concat(neo4j_driver_core_1.json.stringify(notificationFilter), "."));
// unsupported API was used, consider this a fatal error for the current connection
onProtocolError(error.message);
observer.onError(error);
throw error;
}
}
exports.assertNotificationFilterIsEmpty = assertNotificationFilterIsEmpty;
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -28,3 +51,3 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

var packstream_1 = require("../packstream");
var request_message_1 = __importDefault(require("./request-message"));
var request_message_1 = __importStar(require("./request-message"));
var stream_observers_1 = require("./stream-observers");

@@ -91,2 +114,32 @@ var neo4j_driver_core_1 = require("neo4j-driver-core");

});
Object.defineProperty(BoltProtocol.prototype, "supportsReAuth", {
/**
* @property {boolean} supportsReAuth Either if the protocol version supports re-auth or not.
*/
get: function () {
return false;
},
enumerable: false,
configurable: true
});
Object.defineProperty(BoltProtocol.prototype, "initialized", {
/**
* @property {boolean} initialized Either if the protocol was initialized or not
*/
get: function () {
return !!this._initialized;
},
enumerable: false,
configurable: true
});
Object.defineProperty(BoltProtocol.prototype, "authToken", {
/**
* @property {object} authToken The token used in the last login
*/
get: function () {
return this._authToken;
},
enumerable: false,
configurable: true
});
/**

@@ -135,2 +188,3 @@ * Get the packer.

* @param {Object} param.authToken the authentication token.
* @param {NotificationFilter} param.notificationFilter the notification filter.
* @param {function(err: Error)} param.onError the callback to invoke on error.

@@ -142,3 +196,3 @@ * @param {function()} param.onComplete the callback to invoke on completion.

var _this = this;
var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, authToken = _b.authToken, onError = _b.onError, onComplete = _b.onComplete;
var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, authToken = _b.authToken, notificationFilter = _b.notificationFilter, onError = _b.onError, onComplete = _b.onComplete;
var observer = new stream_observers_1.LoginObserver({

@@ -148,2 +202,4 @@ onError: function (error) { return _this._onLoginError(error, onError); },

});
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
this.write(request_message_1.default.init(userAgent, authToken), observer, true);

@@ -153,2 +209,50 @@ return observer;

/**
* Performs logoff of the underlying connection
*
* @param {Object} param
* @param {function(err: Error)} param.onError the callback to invoke on error.
* @param {function()} param.onComplete the callback to invoke on completion.
* @param {boolean} param.flush whether to flush the buffered messages.
*
* @returns {StreamObserver} the stream observer that monitors the corresponding server response.
*/
BoltProtocol.prototype.logoff = function (_a) {
var _b = _a === void 0 ? {} : _a, onComplete = _b.onComplete, onError = _b.onError, flush = _b.flush;
var observer = new stream_observers_1.LogoffObserver({
onCompleted: onComplete,
onError: onError
});
var error = (0, neo4j_driver_core_1.newError)('Driver is connected to a database that does not support logoff. ' +
'Please upgrade to Neo4j 5.5.0 or later in order to use this functionality.');
// unsupported API was used, consider this a fatal error for the current connection
this._onProtocolError(error.message);
observer.onError(error);
throw error;
};
/**
* Performs login of the underlying connection
*
* @param {Object} args
* @param {Object} args.authToken the authentication token.
* @param {function(err: Error)} args.onError the callback to invoke on error.
* @param {function()} args.onComplete the callback to invoke on completion.
* @param {boolean} args.flush whether to flush the buffered messages.
*
* @returns {StreamObserver} the stream observer that monitors the corresponding server response.
*/
BoltProtocol.prototype.logon = function (_a) {
var _this = this;
var _b = _a === void 0 ? {} : _a, authToken = _b.authToken, onComplete = _b.onComplete, onError = _b.onError, flush = _b.flush;
var observer = new stream_observers_1.LoginObserver({
onCompleted: function () { return _this._onLoginCompleted({}, authToken, onComplete); },
onError: function (error) { return _this._onLoginError(error, onError); }
});
var error = (0, neo4j_driver_core_1.newError)('Driver is connected to a database that does not support logon. ' +
'Please upgrade to Neo4j 5.5.0 or later in order to use this functionality.');
// unsupported API was used, consider this a fatal error for the current connection
this._onProtocolError(error.message);
observer.onError(error);
throw error;
};
/**
* Perform protocol related operations for closing this connection

@@ -167,2 +271,3 @@ */

* @param {string} param.impersonatedUser the impersonated user
* @param {NotificationFilter} param.notificationFilter the notification filter.
* @param {function(err: Error)} param.beforeError the callback to invoke before handling the error.

@@ -175,3 +280,3 @@ * @param {function(err: Error)} param.afterError the callback to invoke after handling the error.

BoltProtocol.prototype.beginTransaction = function (_a) {
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete;
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser, notificationFilter = _b.notificationFilter, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete;
return this.run('BEGIN', bookmarks ? bookmarks.asBeginTransactionParameters() : {}, {

@@ -183,2 +288,3 @@ bookmarks: bookmarks,

impersonatedUser: impersonatedUser,
notificationFilter: notificationFilter,
beforeError: beforeError,

@@ -246,2 +352,3 @@ afterError: afterError,

* @param {string} param.impersonatedUser the impersonated user
* @param {NotificationFilter} param.notificationFilter the notification filter.
* @param {string} param.mode the access mode.

@@ -258,3 +365,3 @@ * @param {function(keys: string[])} param.beforeKeys the callback to invoke before handling the keys.

BoltProtocol.prototype.run = function (query, parameters, _a) {
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser, beforeKeys = _b.beforeKeys, afterKeys = _b.afterKeys, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete, _c = _b.flush, flush = _c === void 0 ? true : _c, _d = _b.highRecordWatermark, highRecordWatermark = _d === void 0 ? Number.MAX_VALUE : _d, _e = _b.lowRecordWatermark, lowRecordWatermark = _e === void 0 ? Number.MAX_VALUE : _e;
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser, notificationFilter = _b.notificationFilter, beforeKeys = _b.beforeKeys, afterKeys = _b.afterKeys, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete, _c = _b.flush, flush = _c === void 0 ? true : _c, _d = _b.highRecordWatermark, highRecordWatermark = _d === void 0 ? Number.MAX_VALUE : _d, _e = _b.lowRecordWatermark, lowRecordWatermark = _e === void 0 ? Number.MAX_VALUE : _e;
var observer = new stream_observers_1.ResultStreamObserver({

@@ -277,2 +384,4 @@ server: this._server,

(0, bolt_protocol_util_1.assertImpersonatedUserIsEmpty)(impersonatedUser, this._onProtocolError, observer);
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
this.write(request_message_1.default.run(query, parameters), observer, false);

@@ -333,7 +442,8 @@ this.write(request_message_1.default.pullAll(), observer, flush);

};
BoltProtocol.prototype.isLastMessageLogin = function () {
return this._lastMessageSignature === 0x01;
BoltProtocol.prototype.isLastMessageLogon = function () {
return this._lastMessageSignature === request_message_1.SIGNATURES.HELLO ||
this._lastMessageSignature === request_message_1.SIGNATURES.LOGON;
};
BoltProtocol.prototype.isLastMessageReset = function () {
return this._lastMessageSignature === 0x0f;
return this._lastMessageSignature === request_message_1.SIGNATURES.RESET;
};

@@ -398,3 +508,5 @@ /**

};
BoltProtocol.prototype._onLoginCompleted = function (metadata, onCompleted) {
BoltProtocol.prototype._onLoginCompleted = function (metadata, authToken, onCompleted) {
this._initialized = true;
this._authToken = authToken;
if (metadata) {

@@ -401,0 +513,0 @@ var serverVersion = metadata.server;

14

lib/bolt/bolt-protocol-v3.js

@@ -101,7 +101,9 @@ "use strict";

var _this = this;
var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, authToken = _b.authToken, onError = _b.onError, onComplete = _b.onComplete;
var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, authToken = _b.authToken, notificationFilter = _b.notificationFilter, onError = _b.onError, onComplete = _b.onComplete;
var observer = new stream_observers_1.LoginObserver({
onError: function (error) { return _this._onLoginError(error, onError); },
onCompleted: function (metadata) { return _this._onLoginCompleted(metadata, onComplete); }
onCompleted: function (metadata) { return _this._onLoginCompleted(metadata, authToken, onComplete); }
});
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
this.write(request_message_1.default.hello(userAgent, authToken), observer, true);

@@ -114,3 +116,3 @@ return observer;

BoltProtocol.prototype.beginTransaction = function (_a) {
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, impersonatedUser = _b.impersonatedUser, mode = _b.mode, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete;
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, impersonatedUser = _b.impersonatedUser, notificationFilter = _b.notificationFilter, mode = _b.mode, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete;
var observer = new stream_observers_1.ResultStreamObserver({

@@ -128,2 +130,4 @@ server: this._server,

(0, bolt_protocol_util_1.assertImpersonatedUserIsEmpty)(impersonatedUser, this._onProtocolError, observer);
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
this.write(request_message_1.default.begin({ bookmarks: bookmarks, txConfig: txConfig, mode: mode }), observer, true);

@@ -159,3 +163,3 @@ return observer;

BoltProtocol.prototype.run = function (query, parameters, _a) {
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, impersonatedUser = _b.impersonatedUser, mode = _b.mode, beforeKeys = _b.beforeKeys, afterKeys = _b.afterKeys, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete, _c = _b.flush, flush = _c === void 0 ? true : _c, _d = _b.highRecordWatermark, highRecordWatermark = _d === void 0 ? Number.MAX_VALUE : _d, _e = _b.lowRecordWatermark, lowRecordWatermark = _e === void 0 ? Number.MAX_VALUE : _e;
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, impersonatedUser = _b.impersonatedUser, notificationFilter = _b.notificationFilter, mode = _b.mode, beforeKeys = _b.beforeKeys, afterKeys = _b.afterKeys, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete, _c = _b.flush, flush = _c === void 0 ? true : _c, _d = _b.highRecordWatermark, highRecordWatermark = _d === void 0 ? Number.MAX_VALUE : _d, _e = _b.lowRecordWatermark, lowRecordWatermark = _e === void 0 ? Number.MAX_VALUE : _e;
var observer = new stream_observers_1.ResultStreamObserver({

@@ -176,2 +180,4 @@ server: this._server,

(0, bolt_protocol_util_1.assertImpersonatedUserIsEmpty)(impersonatedUser, this._onProtocolError, observer);
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
this.write(request_message_1.default.runWithMetadata(query, parameters, {

@@ -178,0 +184,0 @@ bookmarks: bookmarks,

@@ -85,3 +85,3 @@ "use strict";

BoltProtocol.prototype.beginTransaction = function (_a) {
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, impersonatedUser = _b.impersonatedUser, mode = _b.mode, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete;
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, impersonatedUser = _b.impersonatedUser, notificationFilter = _b.notificationFilter, mode = _b.mode, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete;
var observer = new stream_observers_1.ResultStreamObserver({

@@ -97,2 +97,4 @@ server: this._server,

(0, bolt_protocol_util_1.assertImpersonatedUserIsEmpty)(impersonatedUser, this._onProtocolError, observer);
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
this.write(request_message_1.default.begin({ bookmarks: bookmarks, txConfig: txConfig, database: database, mode: mode }), observer, true);

@@ -102,3 +104,3 @@ return observer;

BoltProtocol.prototype.run = function (query, parameters, _a) {
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, impersonatedUser = _b.impersonatedUser, mode = _b.mode, beforeKeys = _b.beforeKeys, afterKeys = _b.afterKeys, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete, _c = _b.flush, flush = _c === void 0 ? true : _c, _d = _b.reactive, reactive = _d === void 0 ? false : _d, _e = _b.fetchSize, fetchSize = _e === void 0 ? FETCH_ALL : _e, _f = _b.highRecordWatermark, highRecordWatermark = _f === void 0 ? Number.MAX_VALUE : _f, _g = _b.lowRecordWatermark, lowRecordWatermark = _g === void 0 ? Number.MAX_VALUE : _g;
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, impersonatedUser = _b.impersonatedUser, notificationFilter = _b.notificationFilter, mode = _b.mode, beforeKeys = _b.beforeKeys, afterKeys = _b.afterKeys, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete, _c = _b.flush, flush = _c === void 0 ? true : _c, _d = _b.reactive, reactive = _d === void 0 ? false : _d, _e = _b.fetchSize, fetchSize = _e === void 0 ? FETCH_ALL : _e, _f = _b.highRecordWatermark, highRecordWatermark = _f === void 0 ? Number.MAX_VALUE : _f, _g = _b.lowRecordWatermark, lowRecordWatermark = _g === void 0 ? Number.MAX_VALUE : _g;
var observer = new stream_observers_1.ResultStreamObserver({

@@ -121,2 +123,4 @@ server: this._server,

(0, bolt_protocol_util_1.assertImpersonatedUserIsEmpty)(impersonatedUser, this._onProtocolError, observer);
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
var flushRun = reactive;

@@ -123,0 +127,0 @@ this.write(request_message_1.default.runWithMetadata(query, parameters, {

@@ -43,2 +43,3 @@ "use strict";

var neo4j_driver_core_1 = require("neo4j-driver-core");
var bolt_protocol_util_1 = require("./bolt-protocol-util");
var bolt_protocol_v4x1_transformer_1 = __importDefault(require("./bolt-protocol-v4x1.transformer"));

@@ -87,7 +88,9 @@ var transformer_1 = __importDefault(require("./transformer"));

var _this = this;
var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, authToken = _b.authToken, onError = _b.onError, onComplete = _b.onComplete;
var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, authToken = _b.authToken, notificationFilter = _b.notificationFilter, onError = _b.onError, onComplete = _b.onComplete;
var observer = new stream_observers_1.LoginObserver({
onError: function (error) { return _this._onLoginError(error, onError); },
onCompleted: function (metadata) { return _this._onLoginCompleted(metadata, onComplete); }
onCompleted: function (metadata) { return _this._onLoginCompleted(metadata, authToken, onComplete); }
});
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
this.write(request_message_1.default.hello(userAgent, authToken, this._serversideRouting), observer, true);

@@ -94,0 +97,0 @@ return observer;

@@ -53,2 +53,3 @@ "use strict";

var stream_observers_1 = require("./stream-observers");
var bolt_protocol_util_1 = require("./bolt-protocol-util");
var bolt_protocol_v4x3_transformer_1 = __importDefault(require("./bolt-protocol-v4x3.transformer"));

@@ -108,7 +109,8 @@ var bolt_protocol_v5x0_utc_transformer_1 = __importDefault(require("./bolt-protocol-v5x0.utc.transformer"));

*
* @param {Object} param0 The params
* @param {string} param0.userAgent The user agent
* @param {any} param0.authToken The auth token
* @param {function(error)} param0.onError On error callback
* @param {function(onComplte)} param0.onComplete On complete callback
* @param {Object} args The params
* @param {string} args.userAgent The user agent
* @param {any} args.authToken The auth token
* @param {NotificationFilter} args.notificationFilter The notification filter.
* @param {function(error)} args.onError On error callback
* @param {function(onComplte)} args.onComplete On complete callback
* @returns {LoginObserver} The Login observer

@@ -118,3 +120,3 @@ */

var _this = this;
var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, authToken = _b.authToken, onError = _b.onError, onComplete = _b.onComplete;
var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, authToken = _b.authToken, notificationFilter = _b.notificationFilter, onError = _b.onError, onComplete = _b.onComplete;
var observer = new stream_observers_1.LoginObserver({

@@ -126,5 +128,7 @@ onError: function (error) { return _this._onLoginError(error, onError); },

}
return _this._onLoginCompleted(metadata, onComplete);
return _this._onLoginCompleted(metadata, authToken, onComplete);
}
});
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
this.write(request_message_1.default.hello(userAgent, authToken, this._serversideRouting, ['utc']), observer, true);

@@ -131,0 +135,0 @@ return observer;

@@ -54,2 +54,3 @@ "use strict";

var stream_observers_1 = require("./stream-observers");
var bolt_protocol_util_1 = require("./bolt-protocol-util");
var bolt_protocol_v4x4_transformer_1 = __importDefault(require("./bolt-protocol-v4x4.transformer"));

@@ -106,3 +107,3 @@ var bolt_protocol_v5x0_utc_transformer_1 = __importDefault(require("./bolt-protocol-v5x0.utc.transformer"));

BoltProtocol.prototype.run = function (query, parameters, _a) {
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser, beforeKeys = _b.beforeKeys, afterKeys = _b.afterKeys, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete, _c = _b.flush, flush = _c === void 0 ? true : _c, _d = _b.reactive, reactive = _d === void 0 ? false : _d, _e = _b.fetchSize, fetchSize = _e === void 0 ? FETCH_ALL : _e, _f = _b.highRecordWatermark, highRecordWatermark = _f === void 0 ? Number.MAX_VALUE : _f, _g = _b.lowRecordWatermark, lowRecordWatermark = _g === void 0 ? Number.MAX_VALUE : _g;
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser, notificationFilter = _b.notificationFilter, beforeKeys = _b.beforeKeys, afterKeys = _b.afterKeys, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete, _c = _b.flush, flush = _c === void 0 ? true : _c, _d = _b.reactive, reactive = _d === void 0 ? false : _d, _e = _b.fetchSize, fetchSize = _e === void 0 ? FETCH_ALL : _e, _f = _b.highRecordWatermark, highRecordWatermark = _f === void 0 ? Number.MAX_VALUE : _f, _g = _b.lowRecordWatermark, lowRecordWatermark = _g === void 0 ? Number.MAX_VALUE : _g;
var observer = new stream_observers_1.ResultStreamObserver({

@@ -123,2 +124,4 @@ server: this._server,

});
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
var flushRun = reactive;

@@ -138,3 +141,3 @@ this.write(request_message_1.default.runWithMetadata(query, parameters, {

BoltProtocol.prototype.beginTransaction = function (_a) {
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete;
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser, notificationFilter = _b.notificationFilter, beforeError = _b.beforeError, afterError = _b.afterError, beforeComplete = _b.beforeComplete, afterComplete = _b.afterComplete;
var observer = new stream_observers_1.ResultStreamObserver({

@@ -148,2 +151,4 @@ server: this._server,

observer.prepareToHandleSingleResponse();
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
this.write(request_message_1.default.begin({ bookmarks: bookmarks, txConfig: txConfig, database: database, mode: mode, impersonatedUser: impersonatedUser }), observer, true);

@@ -150,0 +155,0 @@ return observer;

@@ -40,2 +40,3 @@ "use strict";

var bolt_protocol_v4x4_1 = __importDefault(require("./bolt-protocol-v4x4"));
var bolt_protocol_util_1 = require("./bolt-protocol-util");
var bolt_protocol_v5x0_transformer_1 = __importDefault(require("./bolt-protocol-v5x0.transformer"));

@@ -73,7 +74,8 @@ var transformer_1 = __importDefault(require("./transformer"));

*
* @param {Object} param0 The params
* @param {string} param0.userAgent The user agent
* @param {any} param0.authToken The auth token
* @param {function(error)} param0.onError On error callback
* @param {function(onComplte)} param0.onComplete On complete callback
* @param {Object} args The params
* @param {string} args.userAgent The user agent
* @param {any} args.authToken The auth token
* @param {NotificationFilter} args.notificationFilter The notification filter.
* @param {function(error)} args.onError On error callback
* @param {function(onComplte)} args.onComplete On complete callback
* @returns {LoginObserver} The Login observer

@@ -83,7 +85,9 @@ */

var _this = this;
var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, authToken = _b.authToken, onError = _b.onError, onComplete = _b.onComplete;
var _b = _a === void 0 ? {} : _a, userAgent = _b.userAgent, authToken = _b.authToken, notificationFilter = _b.notificationFilter, onError = _b.onError, onComplete = _b.onComplete;
var observer = new stream_observers_1.LoginObserver({
onError: function (error) { return _this._onLoginError(error, onError); },
onCompleted: function (metadata) { return _this._onLoginCompleted(metadata, onComplete); }
onCompleted: function (metadata) { return _this._onLoginCompleted(metadata, authToken, onComplete); }
});
// passing notification filter on this protocol version throws an error
(0, bolt_protocol_util_1.assertNotificationFilterIsEmpty)(notificationFilter, this._onProtocolError, observer);
this.write(request_message_1.default.hello(userAgent, authToken, this._serversideRouting), observer, true);

@@ -90,0 +94,0 @@ return observer;

@@ -34,2 +34,4 @@ "use strict";

var bolt_protocol_v5x0_1 = __importDefault(require("./bolt-protocol-v5x0"));
var bolt_protocol_v5x1_1 = __importDefault(require("./bolt-protocol-v5x1"));
var bolt_protocol_v5x2_1 = __importDefault(require("./bolt-protocol-v5x2"));
// eslint-disable-next-line no-unused-vars

@@ -99,2 +101,6 @@ var channel_1 = require("../channel");

return new bolt_protocol_v5x0_1.default(server, chunker, packingConfig, createResponseHandler, log, onProtocolError, serversideRouting);
case 5.1:
return new bolt_protocol_v5x1_1.default(server, chunker, packingConfig, createResponseHandler, log, onProtocolError, serversideRouting);
case 5.2:
return new bolt_protocol_v5x2_1.default(server, chunker, packingConfig, createResponseHandler, log, onProtocolError, serversideRouting);
default:

@@ -101,0 +107,0 @@ throw (0, neo4j_driver_core_1.newError)('Unknown Bolt protocol version: ' + version);

@@ -70,3 +70,3 @@ "use strict";

return createHandshakeMessage([
version(5, 0),
[version(5, 2), version(5, 0)],
[version(4, 4), version(4, 2)],

@@ -73,0 +73,0 @@ version(4, 1),

@@ -21,2 +21,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.SIGNATURES = void 0;
var neo4j_driver_core_1 = require("neo4j-driver-core");

@@ -38,2 +39,4 @@ var _a = neo4j_driver_core_1.internal.constants, ACCESS_MODE_READ = _a.ACCESS_MODE_READ, FETCH_ALL = _a.FETCH_ALL, assertString = neo4j_driver_core_1.internal.util.assertString;

var ROUTE = 0x66; // 0110 0110 // ROUTE
var LOGON = 0x6A; // LOGON
var LOGOFF = 0x6B; // LOGOFF
var DISCARD = 0x2f; // 0010 1111 // DISCARD

@@ -44,2 +47,19 @@ var PULL = 0x3f; // 0011 1111 // PULL

var NO_STATEMENT_ID = -1;
var SIGNATURES = Object.freeze({
INIT: INIT,
RESET: RESET,
RUN: RUN,
PULL_ALL: PULL_ALL,
HELLO: HELLO,
GOODBYE: GOODBYE,
BEGIN: BEGIN,
COMMIT: COMMIT,
ROLLBACK: ROLLBACK,
ROUTE: ROUTE,
LOGON: LOGON,
LOGOFF: LOGOFF,
DISCARD: DISCARD,
PULL: PULL
});
exports.SIGNATURES = SIGNATURES;
var RequestMessage = /** @class */ (function () {

@@ -103,2 +123,57 @@ function RequestMessage(signature, fields, toString) {

/**
* Create a new HELLO message.
* @param {string} userAgent the user agent.
* @param {Object} optional server side routing, set to routing context to turn on server side routing (> 4.1)
* @return {RequestMessage} new HELLO message.
*/
RequestMessage.hello5x1 = function (userAgent, routing) {
if (routing === void 0) { routing = null; }
var metadata = { user_agent: userAgent };
if (routing) {
metadata.routing = routing;
}
return new RequestMessage(HELLO, [metadata], function () { return "HELLO {user_agent: '".concat(userAgent, "', ...}"); });
};
/**
* Create a new HELLO message.
* @param {string} userAgent the user agent.
* @param {NotificationFilter} notificationFilter the notification filter configured
* @param {Object} routing server side routing, set to routing context to turn on server side routing (> 4.1)
* @return {RequestMessage} new HELLO message.
*/
RequestMessage.hello5x2 = function (userAgent, notificationFilter, routing) {
if (notificationFilter === void 0) { notificationFilter = null; }
if (routing === void 0) { routing = null; }
var metadata = { user_agent: userAgent };
if (notificationFilter) {
if (notificationFilter.minimumSeverityLevel) {
metadata.notifications_minimum_severity = notificationFilter.minimumSeverityLevel;
}
if (notificationFilter.disabledCategories) {
metadata.notifications_disabled_categories = notificationFilter.disabledCategories;
}
}
if (routing) {
metadata.routing = routing;
}
return new RequestMessage(HELLO, [metadata], function () { return "HELLO ".concat(neo4j_driver_core_1.json.stringify(metadata)); });
};
/**
* Create a new LOGON message.
*
* @param {object} authToken The auth token
* @returns {RequestMessage} new LOGON message
*/
RequestMessage.logon = function (authToken) {
return new RequestMessage(LOGON, [authToken], function () { return 'LOGON { ... }'; });
};
/**
* Create a new LOGOFF message.
*
* @returns {RequestMessage} new LOGOFF message
*/
RequestMessage.logoff = function () {
return new RequestMessage(LOGOFF, [], function () { return 'LOGOFF'; });
};
/**
* Create a new BEGIN message.

@@ -110,7 +185,8 @@ * @param {Bookmarks} bookmarks the bookmarks.

* @param {string} impersonatedUser the impersonated user.
* @param {NotificationFilter} notificationFilter the notification filter
* @return {RequestMessage} new BEGIN message.
*/
RequestMessage.begin = function (_a) {
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser;
var metadata = buildTxMetadata(bookmarks, txConfig, database, mode, impersonatedUser);
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser, notificationFilter = _b.notificationFilter;
var metadata = buildTxMetadata(bookmarks, txConfig, database, mode, impersonatedUser, notificationFilter);
return new RequestMessage(BEGIN, [metadata], function () { return "BEGIN ".concat(neo4j_driver_core_1.json.stringify(metadata)); });

@@ -144,4 +220,4 @@ };

RequestMessage.runWithMetadata = function (query, parameters, _a) {
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser;
var metadata = buildTxMetadata(bookmarks, txConfig, database, mode, impersonatedUser);
var _b = _a === void 0 ? {} : _a, bookmarks = _b.bookmarks, txConfig = _b.txConfig, database = _b.database, mode = _b.mode, impersonatedUser = _b.impersonatedUser, notificationFilter = _b.notificationFilter;
var metadata = buildTxMetadata(bookmarks, txConfig, database, mode, impersonatedUser, notificationFilter);
return new RequestMessage(RUN, [query, parameters, metadata], function () {

@@ -231,5 +307,6 @@ return "RUN ".concat(query, " ").concat(neo4j_driver_core_1.json.stringify(parameters), " ").concat(neo4j_driver_core_1.json.stringify(metadata));

* @param {string} impersonatedUser the impersonated user mode.
* @param {notificationFilter} notificationFilter the notification filter
* @return {Object} a metadata object.
*/
function buildTxMetadata(bookmarks, txConfig, database, mode, impersonatedUser) {
function buildTxMetadata(bookmarks, txConfig, database, mode, impersonatedUser, notificationFilter) {
var metadata = {};

@@ -254,2 +331,10 @@ if (!bookmarks.isEmpty()) {

}
if (notificationFilter) {
if (notificationFilter.minimumSeverityLevel) {
metadata.notifications_minimum_severity = notificationFilter.minimumSeverityLevel;
}
if (notificationFilter.disabledCategories) {
metadata.notifications_disabled_categories = notificationFilter.disabledCategories;
}
}
return metadata;

@@ -256,0 +341,0 @@ }

@@ -21,3 +21,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.ProcedureRouteObserver = exports.RouteObserver = exports.CompletedObserver = exports.FailedObserver = exports.ResetObserver = exports.LoginObserver = exports.ResultStreamObserver = exports.StreamObserver = void 0;
exports.ProcedureRouteObserver = exports.RouteObserver = exports.CompletedObserver = exports.FailedObserver = exports.ResetObserver = exports.LogoffObserver = exports.LoginObserver = exports.ResultStreamObserver = exports.StreamObserver = void 0;
/**

@@ -412,2 +412,33 @@ * Copyright (c) "Neo4j"

exports.LoginObserver = LoginObserver;
var LogoffObserver = /** @class */ (function (_super) {
__extends(LogoffObserver, _super);
/**
*
* @param {Object} param -
* @param {function(err: Error)} param.onError
* @param {function(metadata)} param.onCompleted
*/
function LogoffObserver(_a) {
var _b = _a === void 0 ? {} : _a, onError = _b.onError, onCompleted = _b.onCompleted;
var _this = _super.call(this) || this;
_this._onError = onError;
_this._onCompleted = onCompleted;
return _this;
}
LogoffObserver.prototype.onNext = function (record) {
this.onError((0, neo4j_driver_core_1.newError)('Received RECORD when logging off ' + neo4j_driver_core_1.json.stringify(record)));
};
LogoffObserver.prototype.onError = function (error) {
if (this._onError) {
this._onError(error);
}
};
LogoffObserver.prototype.onCompleted = function (metadata) {
if (this._onCompleted) {
this._onCompleted(metadata);
}
};
return LogoffObserver;
}(StreamObserver));
exports.LogoffObserver = LogoffObserver;
var ResetObserver = /** @class */ (function (_super) {

@@ -414,0 +445,0 @@ __extends(ResetObserver, _super);

@@ -193,3 +193,3 @@ "use strict";

_b.trys.push([2, , 5, 7]);
if (!!connection.protocol().isLastMessageLogin()) return [3 /*break*/, 4];
if (!!connection.protocol().isLastMessageLogon()) return [3 /*break*/, 4];
return [4 /*yield*/, connection.resetAndFlush()];

@@ -196,0 +196,0 @@ case 3:

@@ -123,3 +123,3 @@ "use strict";

};
var connection = new ChannelConnection(channel, errorHandler, address, log, config.disableLosslessIntegers, serversideRouting, chunker, createProtocol);
var connection = new ChannelConnection(channel, errorHandler, address, log, config.disableLosslessIntegers, serversideRouting, chunker, config.notificationFilter, createProtocol);
// forward all pending bytes to the dechunker

@@ -149,3 +149,3 @@ consumeRemainingBuffer(function (buffer) { return dechunker.write(buffer); });

function ChannelConnection(channel, errorHandler, address, log, disableLosslessIntegers, serversideRouting, chunker, // to be removed,
protocolSupplier) {
notificationFilter, protocolSupplier) {
if (disableLosslessIntegers === void 0) { disableLosslessIntegers = false; }

@@ -165,2 +165,3 @@ if (serversideRouting === void 0) { serversideRouting = null; }

_this._serversideRouting = serversideRouting;
_this._notificationFilter = notificationFilter;
// connection from the database, returned in response for HELLO message and might not be available

@@ -220,2 +221,3 @@ _this._dbConnectionId = null;

authToken: authToken,
notificationFilter: _this._notificationFilter,
onError: function (err) { return reject(err); },

@@ -222,0 +224,0 @@ onComplete: function (metadata) {

{
"name": "neo4j-driver-bolt-connection",
"version": "5.6.0",
"version": "5.7.0",
"description": "Implements the connection with the Neo4j Database using the Bolt Protocol",

@@ -39,10 +39,10 @@ "main": "lib/index.js",

"ts-jest": "^27.1.4",
"typescript": "^4.9.4"
"typescript": "^4.9.5"
},
"dependencies": {
"buffer": "^6.0.3",
"neo4j-driver-core": "^5.6.0",
"neo4j-driver-core": "^5.7.0",
"string_decoder": "^1.3.0"
},
"gitHead": "d6a6cf797a071485dd95015f689f396837a007c5"
"gitHead": "dd93e78d7b189c59765fe6bc0104c5d4a5fbd15d"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc