rate-limiter-flexible 8.3.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/RateLimiterMongo.js +2 -41
- package/package.json +1 -1
package/lib/RateLimiterMongo.js
CHANGED
|
@@ -1,34 +1,6 @@
|
|
|
1
1
|
const RateLimiterStoreAbstract = require('./RateLimiterStoreAbstract');
|
|
2
2
|
const RateLimiterRes = require('./RateLimiterRes');
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
* Get MongoDB driver version as upsert options differ
|
|
6
|
-
* @params {Object} Client instance
|
|
7
|
-
* @returns {Object} Version Object containing major, feature & minor versions.
|
|
8
|
-
*/
|
|
9
|
-
function getDriverVersion(client) {
|
|
10
|
-
try {
|
|
11
|
-
const _client = client.client ? client.client : client;
|
|
12
|
-
|
|
13
|
-
let _v = [0, 0, 0];
|
|
14
|
-
if (typeof _client.topology === 'undefined') {
|
|
15
|
-
const { version } = _client.options.metadata.driver;
|
|
16
|
-
_v = version.split('|', 1)[0].split('.').map(v => parseInt(v));
|
|
17
|
-
} else {
|
|
18
|
-
const { version } = _client.topology.s.options.metadata.driver;
|
|
19
|
-
_v = version.split('.').map(v => parseInt(v));
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return {
|
|
23
|
-
major: _v[0],
|
|
24
|
-
feature: _v[1],
|
|
25
|
-
patch: _v[2],
|
|
26
|
-
};
|
|
27
|
-
} catch (err) {
|
|
28
|
-
return { major: 0, feature: 0, patch: 0 };
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
4
|
class RateLimiterMongo extends RateLimiterStoreAbstract {
|
|
33
5
|
/**
|
|
34
6
|
*
|
|
@@ -59,11 +31,9 @@ class RateLimiterMongo extends RateLimiterStoreAbstract {
|
|
|
59
31
|
.then((conn) => {
|
|
60
32
|
this.client = conn;
|
|
61
33
|
this._initCollection();
|
|
62
|
-
this._driverVersion = getDriverVersion(this.client);
|
|
63
34
|
});
|
|
64
35
|
} else {
|
|
65
36
|
this._initCollection();
|
|
66
|
-
this._driverVersion = getDriverVersion(this.client);
|
|
67
37
|
}
|
|
68
38
|
}
|
|
69
39
|
|
|
@@ -198,20 +168,11 @@ class RateLimiterMongo extends RateLimiterStoreAbstract {
|
|
|
198
168
|
upsertData.$setOnInsert = Object.assign(upsertData.$setOnInsert, docAttrs);
|
|
199
169
|
}
|
|
200
170
|
|
|
201
|
-
//
|
|
171
|
+
// All supported MongoDB drivers (3.6.7+) use returnDocument: 'after'
|
|
202
172
|
const upsertOptions = {
|
|
203
173
|
upsert: true,
|
|
174
|
+
returnDocument: 'after',
|
|
204
175
|
};
|
|
205
|
-
if ((this._driverVersion.major >= 4) ||
|
|
206
|
-
(this._driverVersion.major === 3 &&
|
|
207
|
-
(this._driverVersion.feature >=7) ||
|
|
208
|
-
(this._driverVersion.feature >= 6 &&
|
|
209
|
-
this._driverVersion.patch >= 7 )))
|
|
210
|
-
{
|
|
211
|
-
upsertOptions.returnDocument = 'after';
|
|
212
|
-
} else {
|
|
213
|
-
upsertOptions.returnOriginal = false;
|
|
214
|
-
}
|
|
215
176
|
|
|
216
177
|
/*
|
|
217
178
|
* 1. Find actual limit and increment points
|
package/package.json
CHANGED