diff --git a/lib/helpers/clone.js b/lib/helpers/clone.js index 4cdd9ecac5f..cd33c138feb 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,13 @@ function cloneArray(arr, options) { } return ret; -} \ No newline at end of file +} + +function cloneRegExp(regexp) { + const ret = new RegExp(regexp.source, regexp.flags); + + if (ret.lastIndex !== regexp.lastIndex) { + 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": { 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); }); }); });