From 4ddd6b5c4cff3c1262ffd5ecd103926dd79d93dc Mon Sep 17 00:00:00 2001 From: Braden MacDonald Date: Wed, 22 Dec 2021 19:43:17 -0800 Subject: [PATCH 1/3] Fix TypeScript errors found by Deno with TypeScript 4.5 --- packages/core/src/connection.ts | 4 ++-- packages/core/src/internal/connection-holder.ts | 2 +- packages/core/src/internal/observers.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/core/src/connection.ts b/packages/core/src/connection.ts index 4e7ac84a7..3ce6e1f06 100644 --- a/packages/core/src/connection.ts +++ b/packages/core/src/connection.ts @@ -22,8 +22,8 @@ * @private */ class Connection { - id: string - databaseId: string + id: string = "" + databaseId: string = "" server: any /** diff --git a/packages/core/src/internal/connection-holder.ts b/packages/core/src/internal/connection-holder.ts index 394f10491..4c5b88eb4 100644 --- a/packages/core/src/internal/connection-holder.ts +++ b/packages/core/src/internal/connection-holder.ts @@ -194,7 +194,7 @@ class ConnectionHolder implements ConnectionHolderInterface { */ private _releaseConnection(): Promise { this._connectionPromise = this._connectionPromise - .then((connection?: Connection) => { + .then((connection?: Connection|void) => { if (connection) { if (connection.isOpen()) { return connection diff --git a/packages/core/src/internal/observers.ts b/packages/core/src/internal/observers.ts index b3b8a0087..b0a39592a 100644 --- a/packages/core/src/internal/observers.ts +++ b/packages/core/src/internal/observers.ts @@ -174,6 +174,6 @@ export class FailedObserver implements ResultStreamObserver { function apply(thisArg: any, func?: (param: T) => void, param?: T): void { if (func) { - func.bind(thisArg)(param) + func.bind(thisArg)(param as any) } } From f8a715f308cc441d4fbfcbcc694e3301f5460b28 Mon Sep 17 00:00:00 2001 From: Braden MacDonald Date: Wed, 22 Dec 2021 19:44:17 -0800 Subject: [PATCH 2/3] Change some Node-specific types to generic ones --- packages/core/src/internal/transaction-executor.ts | 3 ++- packages/neo4j-driver-lite/src/index.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/core/src/internal/transaction-executor.ts b/packages/core/src/internal/transaction-executor.ts index b8ea214df..adeb5cd38 100644 --- a/packages/core/src/internal/transaction-executor.ts +++ b/packages/core/src/internal/transaction-executor.ts @@ -30,13 +30,14 @@ type TransactionCreator = () => Transaction type TransactionWork = (tx: Transaction) => T | Promise type Resolve = (value: T | PromiseLike) => void type Reject = (value: any) => void +type Timeout = ReturnType export class TransactionExecutor { private _maxRetryTimeMs: number private _initialRetryDelayMs: number private _multiplier: number private _jitterFactor: number - private _inFlightTimeoutIds: NodeJS.Timeout[] + private _inFlightTimeoutIds: Timeout[] constructor( maxRetryTimeMs?: number | null, diff --git a/packages/neo4j-driver-lite/src/index.ts b/packages/neo4j-driver-lite/src/index.ts index 7e5716659..09926f9f5 100644 --- a/packages/neo4j-driver-lite/src/index.ts +++ b/packages/neo4j-driver-lite/src/index.ts @@ -337,7 +337,7 @@ const logging = { return { level: level, logger: (level: LogLevel, message: string) => - console.log(`${global.Date.now()} ${level.toUpperCase()} ${message}`) + console.log(`${globalThis.Date.now()} ${level.toUpperCase()} ${message}`) } } } From 69fd7a64ac04c1a906f7336073ddba56d01553ee Mon Sep 17 00:00:00 2001 From: Braden MacDonald Date: Wed, 29 Dec 2021 09:57:20 -0800 Subject: [PATCH 3/3] Fix Node 10 compatibility (address review comment) --- packages/neo4j-driver-lite/src/index.ts | 17 +---------------- packages/neo4j-driver-lite/src/logging.ts | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 packages/neo4j-driver-lite/src/logging.ts diff --git a/packages/neo4j-driver-lite/src/index.ts b/packages/neo4j-driver-lite/src/index.ts index 09926f9f5..f556d3193 100644 --- a/packages/neo4j-driver-lite/src/index.ts +++ b/packages/neo4j-driver-lite/src/index.ts @@ -17,6 +17,7 @@ * limitations under the License. */ import VERSION from './version' +import { logging } from './logging' import { Neo4jError, @@ -79,7 +80,6 @@ type EncryptionLevel = coreTypes.EncryptionLevel type SessionMode = coreTypes.SessionMode type Logger = internal.logger.Logger type ConfiguredCustomResolver = internal.resolver.ConfiguredCustomResolver -type LogLevel = coreTypes.LogLevel const { READ, WRITE } = coreDriver @@ -327,21 +327,6 @@ function driver ( const USER_AGENT: string = 'neo4j-javascript/' + VERSION -/** - * Object containing predefined logging configurations. These are expected to be used as values of the driver config's `logging` property. - * @property {function(level: ?string): object} console the function to create a logging config that prints all messages to `console.log` with - * timestamp, level and message. It takes an optional `level` parameter which represents the maximum log level to be logged. Default value is 'info'. - */ -const logging = { - console: (level: LogLevel) => { - return { - level: level, - logger: (level: LogLevel, message: string) => - console.log(`${globalThis.Date.now()} ${level.toUpperCase()} ${message}`) - } - } -} - /** * Object containing constructors for all neo4j types. */ diff --git a/packages/neo4j-driver-lite/src/logging.ts b/packages/neo4j-driver-lite/src/logging.ts new file mode 100644 index 000000000..8562da457 --- /dev/null +++ b/packages/neo4j-driver-lite/src/logging.ts @@ -0,0 +1,20 @@ +import { types as coreTypes } from 'neo4j-driver-core' + +type LogLevel = coreTypes.LogLevel + +/** + * Object containing predefined logging configurations. These are expected to be used as values of the driver config's `logging` property. + * @property {function(level: ?string): object} console the function to create a logging config that prints all messages to `console.log` with + * timestamp, level and message. It takes an optional `level` parameter which represents the maximum log level to be logged. Default value is 'info'. + */ +export const logging = { + console: (level: LogLevel) => { + return { + level: level, + logger: (level: LogLevel, message: string) => + console.log(`${Date.now()} ${level.toUpperCase()} ${message}`) + // Note: This 'logging' object is in its own file so we can easily access the global Date object here without conflicting + // with the Neo4j Date class, and without relying on 'globalThis' which isn't compatible with Node 10. + } + } +}