From f19010d1c173dc385ed34b0646a48881e7b8d8a4 Mon Sep 17 00:00:00 2001 From: uzlopak Date: Fri, 4 Feb 2022 04:19:54 +0100 Subject: [PATCH 1/5] remove regexp-clone --- lib/helpers/clone.js | 12 +++++++++--- package.json | 1 - 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/helpers/clone.js b/lib/helpers/clone.js index 4cdd9ecac5f..44f04cab0de 100644 --- a/lib/helpers/clone.js +++ b/lib/helpers/clone.js @@ -1,7 +1,5 @@ 'use strict'; - -const cloneRegExp = require('regexp-clone'); const Decimal = require('../types/decimal128'); const ObjectId = require('../types/objectid'); const specialProperties = require('./specialProperties'); @@ -145,4 +143,12 @@ function cloneArray(arr, options) { } return ret; -} \ No newline at end of file +} + +function cloneRegExp(regexp) { + const ret = new RegExp(regexp.source, regexp.flags); + if (typeof regexp.lastIndex === 'number') { + ret.lastIndex = regexp.lastIndex; + } + return ret; +} diff --git a/package.json b/package.json index 66cc0331c24..6a8c7a9cc69 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,6 @@ "mpath": "0.8.4", "mquery": "4.0.2", "ms": "2.1.2", - "regexp-clone": "1.0.0", "sift": "13.5.2" }, "devDependencies": { From 3fa133b68797f1cbdede502a088df64b7c242c4f Mon Sep 17 00:00:00 2001 From: uzlopak Date: Fri, 4 Feb 2022 04:23:52 +0100 Subject: [PATCH 2/5] improve unit test --- test/helpers/clone.test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/helpers/clone.test.js b/test/helpers/clone.test.js index 7e0e7132638..d59d631d2c3 100644 --- a/test/helpers/clone.test.js +++ b/test/helpers/clone.test.js @@ -148,9 +148,11 @@ describe('clone', () => { describe('constructor is RegExp', () => { it('return new equal date ', () => { - const base = new RegExp(/A-Z.*/); + const base = new RegExp(/A-Z.*/g); + base.lastIndex = 2; const cloned = clone(base); assert.deepStrictEqual(base, cloned); + assert.ok(base.lastIndex === cloned.lastIndex); }); }); }); From e6f7250ed23644e6e8076efd69b27c617db47a69 Mon Sep 17 00:00:00 2001 From: uzlopak Date: Fri, 4 Feb 2022 20:10:49 +0100 Subject: [PATCH 3/5] branchless is better --- lib/helpers/clone.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/helpers/clone.js b/lib/helpers/clone.js index 44f04cab0de..c0f371639c8 100644 --- a/lib/helpers/clone.js +++ b/lib/helpers/clone.js @@ -146,9 +146,8 @@ function cloneArray(arr, options) { } function cloneRegExp(regexp) { - const ret = new RegExp(regexp.source, regexp.flags); - if (typeof regexp.lastIndex === 'number') { - ret.lastIndex = regexp.lastIndex; - } + const ret = new RegExp(regexp); + + (typeof regexp.lastIndex === 'number') && (ret.lastIndex = regexp.lastIndex); return ret; } From 490d9264efabec45b8ea2a7b8e43cac0f17790f5 Mon Sep 17 00:00:00 2001 From: Uzlopak Date: Sat, 5 Feb 2022 19:46:56 +0100 Subject: [PATCH 4/5] Update lib/helpers/clone.js --- lib/helpers/clone.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/helpers/clone.js b/lib/helpers/clone.js index c0f371639c8..6533ad0853f 100644 --- a/lib/helpers/clone.js +++ b/lib/helpers/clone.js @@ -146,7 +146,7 @@ function cloneArray(arr, options) { } function cloneRegExp(regexp) { - const ret = new RegExp(regexp); + const ret = new RegExp(regexp.source, regexp.flags); (typeof regexp.lastIndex === 'number') && (ret.lastIndex = regexp.lastIndex); return ret; From 1a88a05f0e6bb5efd5a2c9a1e66f4dbabbf6b426 Mon Sep 17 00:00:00 2001 From: uzlopak Date: Sat, 5 Feb 2022 19:59:35 +0100 Subject: [PATCH 5/5] fix remark --- lib/helpers/clone.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/helpers/clone.js b/lib/helpers/clone.js index 6533ad0853f..cd33c138feb 100644 --- a/lib/helpers/clone.js +++ b/lib/helpers/clone.js @@ -148,6 +148,8 @@ function cloneArray(arr, options) { function cloneRegExp(regexp) { const ret = new RegExp(regexp.source, regexp.flags); - (typeof regexp.lastIndex === 'number') && (ret.lastIndex = regexp.lastIndex); + if (ret.lastIndex !== regexp.lastIndex) { + ret.lastIndex = regexp.lastIndex; + } return ret; }