diff --git a/packages/bolt-connection/package-lock.json b/packages/bolt-connection/package-lock.json index 4a1fc6662..39438362a 100644 --- a/packages/bolt-connection/package-lock.json +++ b/packages/bolt-connection/package-lock.json @@ -1195,6 +1195,11 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1251,6 +1256,15 @@ "node-int64": "^0.4.0" } }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -1798,6 +1812,11 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "import-local": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", @@ -3741,6 +3760,21 @@ "strip-ansi": "^6.0.1" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -3808,11 +3842,6 @@ "minimatch": "^3.0.4" } }, - "text-encoding-utf-8": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", - "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" - }, "throat": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", diff --git a/packages/bolt-connection/package.json b/packages/bolt-connection/package.json index fc5f30e59..e8ac43ddc 100644 --- a/packages/bolt-connection/package.json +++ b/packages/bolt-connection/package.json @@ -38,7 +38,8 @@ "typescript": "^4.4.4" }, "dependencies": { + "buffer": "^6.0.3", "neo4j-driver-core": "^4.4.0-dev", - "text-encoding-utf-8": "^1.0.2" + "string_decoder": "^1.3.0" } } diff --git a/packages/bolt-connection/src/channel/browser/browser-buf.js b/packages/bolt-connection/src/channel/browser/browser-buf.js deleted file mode 100644 index 21c1bb76f..000000000 --- a/packages/bolt-connection/src/channel/browser/browser-buf.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Copyright (c) "Neo4j" - * Neo4j Sweden AB [http://neo4j.com] - * - * This file is part of Neo4j. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import BaseBuffer from '../../buf' - -export default class HeapBuffer extends BaseBuffer { - constructor (arg) { - const buffer = arg instanceof ArrayBuffer ? arg : new ArrayBuffer(arg) - super(buffer.byteLength) - this._buffer = buffer - this._view = new DataView(this._buffer) - } - - putUInt8 (position, val) { - this._view.setUint8(position, val) - } - - getUInt8 (position) { - return this._view.getUint8(position) - } - - putInt8 (position, val) { - this._view.setInt8(position, val) - } - - getInt8 (position) { - return this._view.getInt8(position) - } - - getFloat64 (position) { - return this._view.getFloat64(position) - } - - putFloat64 (position, val) { - this._view.setFloat64(position, val) - } - - getSlice (start, length) { - if (this._buffer.slice) { - return new HeapBuffer(this._buffer.slice(start, start + length)) - } else { - // Some platforms (eg. phantomjs) don't support slice, so fall back to a copy - // We do this rather than return a SliceBuffer, because sliceBuffer cannot - // be passed to native network write ops etc - we need ArrayBuffer for that - const copy = new HeapBuffer(length) - for (let i = 0; i < length; i++) { - copy.putUInt8(i, this.getUInt8(i + start)) - } - return copy - } - } - - /** - * Specific to HeapBuffer, this gets a DataView from the - * current position and of the specified length. - */ - readView (length) { - return new DataView(this._buffer, this._updatePos(length), length) - } -} diff --git a/packages/bolt-connection/src/channel/browser/browser-channel.js b/packages/bolt-connection/src/channel/browser/browser-channel.js index 496889f75..469f5300d 100644 --- a/packages/bolt-connection/src/channel/browser/browser-channel.js +++ b/packages/bolt-connection/src/channel/browser/browser-channel.js @@ -17,7 +17,7 @@ * limitations under the License. */ -import HeapBuffer from './browser-buf' +import ChannelBuffer from '../channel-buf' import { newError, internal } from 'neo4j-driver-core' const { @@ -83,7 +83,7 @@ export default class WebSocketChannel { } this._ws.onmessage = event => { if (self.onmessage) { - const b = new HeapBuffer(event.data) + const b = new ChannelBuffer(event.data) self.onmessage(b) } } @@ -130,14 +130,14 @@ export default class WebSocketChannel { /** * Write the passed in buffer to connection - * @param {HeapBuffer} buffer - Buffer to write + * @param {ChannelBuffer} buffer - Buffer to write */ write (buffer) { // If there is a pending queue, push this on that queue. This means // we are not yet connected, so we queue things locally. if (this._pending !== null) { this._pending.push(buffer) - } else if (buffer instanceof HeapBuffer) { + } else if (buffer instanceof ChannelBuffer) { try { this._ws.send(buffer._buffer) } catch (error) { diff --git a/packages/bolt-connection/src/channel/browser/browser-utf8.js b/packages/bolt-connection/src/channel/browser/browser-utf8.js deleted file mode 100644 index c6275efcf..000000000 --- a/packages/bolt-connection/src/channel/browser/browser-utf8.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright (c) "Neo4j" - * Neo4j Sweden AB [http://neo4j.com] - * - * This file is part of Neo4j. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import HeapBuffer from './browser-buf' -import { TextEncoder, TextDecoder } from 'text-encoding-utf-8' - -const encoder = new TextEncoder('utf-8') -const decoder = new TextDecoder('utf-8') - -function encode (str) { - return new HeapBuffer(encoder.encode(str).buffer) -} - -function decode (buffer, length) { - if (buffer instanceof HeapBuffer) { - return decoder.decode( - buffer.readView(Math.min(length, buffer.length - buffer.position)) - ) - } else { - // Copy the given buffer into a regular buffer and decode that - const tmpBuf = new HeapBuffer(length) - for (let i = 0; i < length; i++) { - tmpBuf.writeUInt8(buffer.readUInt8()) - } - tmpBuf.reset() - return decoder.decode(tmpBuf.readView(length)) - } -} - -export default { - encode, - decode -} diff --git a/packages/bolt-connection/src/channel/browser/index.js b/packages/bolt-connection/src/channel/browser/index.js index 85729a226..0d99ae4a6 100644 --- a/packages/bolt-connection/src/channel/browser/index.js +++ b/packages/bolt-connection/src/channel/browser/index.js @@ -17,10 +17,8 @@ * limitations under the License. */ -import HeapBuffer from './browser-buf' import WebSocketChannel from './browser-channel' import BrowserHosNameResolver from './browser-host-name-resolver' -import utf8Codec from './browser-utf8' /* @@ -32,8 +30,5 @@ Such imports are replaced at build time with `browser/index.js` when building a NOTE: exports in this module should have exactly the same names/structure as exports in `node/index.js`. */ - -export const alloc = arg => new HeapBuffer(arg) export const Channel = WebSocketChannel export const HostNameResolver = BrowserHosNameResolver -export const utf8 = utf8Codec diff --git a/packages/bolt-connection/src/channel/node/node-buf.js b/packages/bolt-connection/src/channel/channel-buf.js similarity index 74% rename from packages/bolt-connection/src/channel/node/node-buf.js rename to packages/bolt-connection/src/channel/channel-buf.js index 2ca1003cc..fad2adfb7 100644 --- a/packages/bolt-connection/src/channel/node/node-buf.js +++ b/packages/bolt-connection/src/channel/channel-buf.js @@ -17,12 +17,12 @@ * limitations under the License. */ -import node from 'buffer' -import BaseBuffer from '../../buf' +import buffer from 'buffer' +import BaseBuffer from '../buf' -export default class NodeBuffer extends BaseBuffer { +export default class ChannelBuffer extends BaseBuffer { constructor (arg) { - const buffer = newNodeJSBuffer(arg) + const buffer = newChannelJSBuffer(arg) super(buffer.length) this._buffer = buffer } @@ -52,7 +52,7 @@ export default class NodeBuffer extends BaseBuffer { } putBytes (position, val) { - if (val instanceof NodeBuffer) { + if (val instanceof ChannelBuffer) { const bytesToCopy = Math.min( val.length - val.position, this.length - position @@ -70,22 +70,33 @@ export default class NodeBuffer extends BaseBuffer { } getSlice (start, length) { - return new NodeBuffer(this._buffer.slice(start, start + length)) + return new ChannelBuffer(this._buffer.slice(start, start + length)) } } -function newNodeJSBuffer (arg) { - if (arg instanceof node.Buffer) { +/** + * Allocate a buffer + * + * @param {number} size The buffer sizzer + * @returns {BaseBuffer} The buffer + */ +export function alloc (size) { + return new ChannelBuffer(size) +} + + +function newChannelJSBuffer (arg) { + if (arg instanceof buffer.Buffer) { return arg } else if ( typeof arg === 'number' && - typeof node.Buffer.alloc === 'function' + typeof buffer.Buffer.alloc === 'function' ) { // use static factory function present in newer NodeJS versions to allocate new buffer with specified size - return node.Buffer.alloc(arg) + return buffer.Buffer.alloc(arg) } else { // fallback to the old, potentially deprecated constructor // eslint-disable-next-line node/no-deprecated-api - return new node.Buffer(arg) + return new buffer.Buffer(arg) } } diff --git a/packages/bolt-connection/src/channel/chunking.js b/packages/bolt-connection/src/channel/chunking.js index 1d0863b1d..e51953567 100644 --- a/packages/bolt-connection/src/channel/chunking.js +++ b/packages/bolt-connection/src/channel/chunking.js @@ -18,7 +18,7 @@ */ import BaseBuffer from '../buf/base-buf' -import { alloc } from './node' +import { alloc } from './channel-buf' import CombinedBuffer from './combined-buf' const _CHUNK_HEADER_SIZE = 2 diff --git a/packages/bolt-connection/src/channel/combined-buf.js b/packages/bolt-connection/src/channel/combined-buf.js index 2da8c5c57..34c588505 100644 --- a/packages/bolt-connection/src/channel/combined-buf.js +++ b/packages/bolt-connection/src/channel/combined-buf.js @@ -18,7 +18,7 @@ */ import { BaseBuffer } from '../buf' -import { alloc } from './node' +import { alloc } from './channel-buf' /** * Buffer that combines multiple buffers, exposing them as one single buffer. diff --git a/packages/bolt-connection/src/channel/index.js b/packages/bolt-connection/src/channel/index.js index f6fcfea68..fbcf1a75c 100644 --- a/packages/bolt-connection/src/channel/index.js +++ b/packages/bolt-connection/src/channel/index.js @@ -1,5 +1,3 @@ -import ChannelConfig from './channel-config' - /** * Copyright (c) "Neo4j" * Neo4j Sweden AB [http://neo4j.com] @@ -18,6 +16,9 @@ import ChannelConfig from './channel-config' * See the License for the specific language governing permissions and * limitations under the License. */ + export * from './node' export * from './chunking' export { default as ChannelConfig } from './channel-config' +export { alloc } from './channel-buf' +export { default as utf8 } from './utf8' diff --git a/packages/bolt-connection/src/channel/node/index.js b/packages/bolt-connection/src/channel/node/index.js index 7a3c7b678..a9c7bbc91 100644 --- a/packages/bolt-connection/src/channel/node/index.js +++ b/packages/bolt-connection/src/channel/node/index.js @@ -17,10 +17,8 @@ * limitations under the License. */ -import NodeBuffer from './node-buf' import NodeChannel from './node-channel' import NodeHostNameResolver from './node-host-name-resolver' -import utf8Codec from './node-utf8' /* @@ -33,7 +31,6 @@ NOTE: exports in this module should have exactly the same names/structure as exp */ -export const alloc = arg => new NodeBuffer(arg) export const Channel = NodeChannel export const HostNameResolver = NodeHostNameResolver -export const utf8 = utf8Codec + diff --git a/packages/bolt-connection/src/channel/node/node-channel.js b/packages/bolt-connection/src/channel/node/node-channel.js index c1bebe23a..4ffba285c 100644 --- a/packages/bolt-connection/src/channel/node/node-channel.js +++ b/packages/bolt-connection/src/channel/node/node-channel.js @@ -19,7 +19,7 @@ import net from 'net' import tls from 'tls' import fs from 'fs' -import NodeBuffer from './node-buf' +import ChannelBuffer from '../channel-buf' import { newError, internal } from 'neo4j-driver-core' const { @@ -252,7 +252,7 @@ export default class NodeChannel { self._conn.on('data', buffer => { if (self.onmessage) { - self.onmessage(new NodeBuffer(buffer)) + self.onmessage(new ChannelBuffer(buffer)) } }) @@ -358,14 +358,14 @@ export default class NodeChannel { /** * Write the passed in buffer to connection - * @param {NodeBuffer} buffer - Buffer to write + * @param {ChannelBuffer} buffer - Buffer to write */ write (buffer) { // If there is a pending queue, push this on that queue. This means // we are not yet connected, so we queue things locally. if (this._pending !== null) { this._pending.push(buffer) - } else if (buffer instanceof NodeBuffer) { + } else if (buffer instanceof ChannelBuffer) { this._conn.write(buffer._buffer) } else { throw newError("Don't know how to write: " + buffer) diff --git a/packages/bolt-connection/src/channel/node/node-utf8.js b/packages/bolt-connection/src/channel/utf8.js similarity index 88% rename from packages/bolt-connection/src/channel/node/node-utf8.js rename to packages/bolt-connection/src/channel/utf8.js index f7d17e411..6f530d7dc 100644 --- a/packages/bolt-connection/src/channel/node/node-utf8.js +++ b/packages/bolt-connection/src/channel/utf8.js @@ -17,20 +17,20 @@ * limitations under the License. */ -import NodeBuffer from './node-buf' +import ChannelBuffer from './channel-buf' import { newError } from 'neo4j-driver-core' -import node from 'buffer' +import buffer from 'buffer' import { StringDecoder } from 'string_decoder' const decoder = new StringDecoder('utf8') function encode (str) { - return new NodeBuffer(newNodeJSBuffer(str)) + return new ChannelBuffer(newBuffer(str)) } function decode (buffer, length) { if (Object.prototype.hasOwnProperty.call(buffer, '_buffer')) { - return decodeNodeBuffer(buffer, length) + return decodeChannelBuffer(buffer, length) } else if (Object.prototype.hasOwnProperty.call(buffer, '_buffers')) { return decodeCombinedBuffer(buffer, length) } else { @@ -38,7 +38,7 @@ function decode (buffer, length) { } } -function decodeNodeBuffer (buffer, length) { +function decodeChannelBuffer (buffer, length) { const start = buffer.position const end = start + length buffer.position = Math.min(end, buffer.length) @@ -86,15 +86,15 @@ function streamDecodeCombinedBuffer (combinedBuffers, length, decodeFn, endFn) { return out + endFn() } -function newNodeJSBuffer (str) { +function newBuffer (str) { // use static factory function present in newer NodeJS versions to create a buffer containing the given string // or fallback to the old, potentially deprecated constructor - if (typeof node.Buffer.from === 'function') { - return node.Buffer.from(str, 'utf8') + if (typeof buffer.Buffer.from === 'function') { + return buffer.Buffer.from(str, 'utf8') } else { // eslint-disable-next-line node/no-deprecated-api - return new node.Buffer(str, 'utf8') + return new buffer.Buffer(str, 'utf8') } } diff --git a/packages/bolt-connection/test/channel/__snapshots__/encode-decode.test.js.snap b/packages/bolt-connection/test/channel/__snapshots__/encode-decode.test.js.snap new file mode 100644 index 000000000..37112f105 --- /dev/null +++ b/packages/bolt-connection/test/channel/__snapshots__/encode-decode.test.js.snap @@ -0,0 +1,46 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`uft8 .encode("") should match snapshot 1`] = ` +"ChannelBuffer( position=0 ) + " +`; + +exports[`uft8 .encode("1234567890") should match snapshot 1`] = ` +"ChannelBuffer( position=0 ) + 31 32 33 34 35 36 37 38 39 30" +`; + +exports[`uft8 .encode("±!@#$%^&*()_+~\`'|][{}=-+±§<>,."") should match snapshot 1`] = ` +"ChannelBuffer( position=0 ) + c2 b1 21 40 23 24 25 5e 26 2a 28 29 5f 2b 7e 60 27 7c 5d 5b 7b 7d 3d 2d 2b c2 b1 c2 a7 3c 3e 2c 2e 22" +`; + +exports[`uft8 .encode("àáâäæãåā") should match snapshot 1`] = ` +"ChannelBuffer( position=0 ) + c3 a0 c3 a1 c3 a2 c3 a4 c3 a6 c3 a3 c3 a5 c4 81" +`; + +exports[`uft8 .encode("èéêëēėę") should match snapshot 1`] = ` +"ChannelBuffer( position=0 ) + c3 a8 c3 a9 c3 aa c3 ab c4 93 c4 97 c4 99" +`; + +exports[`uft8 .encode("îïíīīįì") should match snapshot 1`] = ` +"ChannelBuffer( position=0 ) + c3 ae c3 af c3 ad c4 ab c4 ab c4 af c3 ac" +`; + +exports[`uft8 .encode("ôöòóœøōõ") should match snapshot 1`] = ` +"ChannelBuffer( position=0 ) + c3 b4 c3 b6 c3 b2 c3 b3 c5 93 c3 b8 c5 8d c3 b5" +`; + +exports[`uft8 .encode("ûüùúū") should match snapshot 1`] = ` +"ChannelBuffer( position=0 ) + c3 bb c3 bc c3 b9 c3 ba c5 ab" +`; + +exports[`uft8 .encode("⚡ 🏃‍♀️") should match snapshot 1`] = ` +"ChannelBuffer( position=0 ) + e2 9a a1 20 f0 9f 8f 83 e2 80 8d e2 99 80 ef b8 8f" +`; diff --git a/packages/bolt-connection/test/channel/encode-decode.test.js b/packages/bolt-connection/test/channel/encode-decode.test.js new file mode 100644 index 000000000..18b4c1969 --- /dev/null +++ b/packages/bolt-connection/test/channel/encode-decode.test.js @@ -0,0 +1,65 @@ +/** + * Copyright (c) "Neo4j" + * Neo4j Sweden AB [http://neo4j.com] + * + * This file is part of Neo4j. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import crypto from 'crypto' +import { utf8 } from '../../src/channel' + +const { encode, decode } = utf8 + +describe('uft8', () => { + it.each([ + makeString(85000), + '1234567890', + '', + '±!@#$%^&*()_+~`\'|][{}=-+±§<>,."', + 'àáâäæãåā', + 'èéêëēėę', + 'îïíīīįì', + 'ôöòóœøōõ', + 'ûüùúū', + '⚡ 🏃‍♀️' + ])('should decode encoded string', str => { + const encoded = encode(str) + + const encodedThenDecoded = decode(encoded, encoded.length) + + expect(encodedThenDecoded).toEqual(str) + }) + + it.each([ + '1234567890', + '', + '±!@#$%^&*()_+~`\'|][{}=-+±§<>,."', + 'àáâäæãåā', + 'èéêëēėę', + 'îïíīīįì', + 'ôöòóœøōõ', + 'ûüùúū', + '⚡ 🏃‍♀️' + ])('.encode("%s") should match snapshot', str => { + const encoded = encode(str) + + expect(encoded.toString()).toMatchSnapshot() + }) +}) + + +function makeString ( len ) { + return crypto.randomBytes(len).toString('hex') +} diff --git a/packages/neo4j-driver-lite/package-lock.json b/packages/neo4j-driver-lite/package-lock.json index 5e020a650..d37a9eb02 100644 --- a/packages/neo4j-driver-lite/package-lock.json +++ b/packages/neo4j-driver-lite/package-lock.json @@ -6480,11 +6480,6 @@ "minimatch": "^3.0.4" } }, - "text-encoding-utf-8": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", - "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" - }, "throat": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", diff --git a/packages/neo4j-driver/package-lock.json b/packages/neo4j-driver/package-lock.json index 7a5e2d54f..d44f23a37 100644 --- a/packages/neo4j-driver/package-lock.json +++ b/packages/neo4j-driver/package-lock.json @@ -13568,11 +13568,6 @@ "require-main-filename": "^2.0.0" } }, - "text-encoding-utf-8": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", - "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", diff --git a/packages/testkit-backend/package-lock.json b/packages/testkit-backend/package-lock.json index a252369bf..d57669890 100644 --- a/packages/testkit-backend/package-lock.json +++ b/packages/testkit-backend/package-lock.json @@ -9,41 +9,6 @@ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", "dev": true - }, - "neo4j": { - "version": "file:../neo4j-driver", - "requires": { - "@babel/runtime": "^7.5.5", - "rxjs": "^6.6.3" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", - "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } } } }