neo4j-driver-bolt-connection
Advanced tools
Comparing version 5.6.0 to 5.7.0
"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; |
@@ -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" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
547583
84
11850
Updatedneo4j-driver-core@^5.7.0