Skip to content

Commit 8e05cb5

Browse files
Remove lodash dependency (#37)
refactor: remove lodash dependency #23
1 parent ff6a450 commit 8e05cb5

20 files changed

+42
-63
lines changed

.github/dependabot.yml

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
11
version: 2
22
updates:
3-
- package-ecosystem: npm
4-
directory: "/"
5-
schedule:
6-
interval: daily
7-
open-pull-requests-limit: 10
8-
ignore:
9-
- dependency-name: sinon
10-
versions:
11-
- 10.0.0
12-
- 9.2.4
13-
- dependency-name: mocha
14-
versions:
15-
- 8.2.1
16-
- 8.3.0
17-
- 8.3.1
18-
- dependency-name: lodash
19-
versions:
20-
- 4.17.20
3+
- package-ecosystem: npm
4+
directory: "/"
5+
schedule:
6+
interval: daily
7+
open-pull-requests-limit: 10
8+
ignore:
9+
- dependency-name: sinon
10+
versions:
11+
- 10.0.0
12+
- 9.2.4
13+
- dependency-name: mocha
14+
versions:
15+
- 8.2.1
16+
- 8.3.0
17+
- 8.3.1

lib/errors/access-denied-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -17,7 +16,7 @@ var util = require('util');
1716
*/
1817

1918
function AccessDeniedError(message, properties) {
20-
properties = _.assign({
19+
properties = Object.assign({
2120
code: 400,
2221
name: 'access_denied'
2322
}, properties);

lib/errors/insufficient-scope-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -17,7 +16,7 @@ var util = require('util');
1716
*/
1817

1918
function InsufficientScopeError(message, properties) {
20-
properties = _.assign({
19+
properties = Object.assign({
2120
code: 403,
2221
name: 'insufficient_scope'
2322
}, properties);

lib/errors/invalid-argument-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -13,7 +12,7 @@ var util = require('util');
1312
*/
1413

1514
function InvalidArgumentError(message, properties) {
16-
properties = _.assign({
15+
properties = Object.assign({
1716
code: 500,
1817
name: 'invalid_argument'
1918
}, properties);

lib/errors/invalid-client-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -18,7 +17,7 @@ var util = require('util');
1817
*/
1918

2019
function InvalidClientError(message, properties) {
21-
properties = _.assign({
20+
properties = Object.assign({
2221
code: 400,
2322
name: 'invalid_client'
2423
}, properties);

lib/errors/invalid-grant-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -19,7 +18,7 @@ var util = require('util');
1918
*/
2019

2120
function InvalidGrantError(message, properties) {
22-
properties = _.assign({
21+
properties = Object.assign({
2322
code: 400,
2423
name: 'invalid_grant'
2524
}, properties);

lib/errors/invalid-request-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -18,7 +17,7 @@ var util = require('util');
1817
*/
1918

2019
function InvalidRequest(message, properties) {
21-
properties = _.assign({
20+
properties = Object.assign({
2221
code: 400,
2322
name: 'invalid_request'
2423
}, properties);

lib/errors/invalid-scope-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -17,7 +16,7 @@ var util = require('util');
1716
*/
1817

1918
function InvalidScopeError(message, properties) {
20-
properties = _.assign({
19+
properties = Object.assign({
2120
code: 400,
2221
name: 'invalid_scope'
2322
}, properties);

lib/errors/invalid-token-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -17,7 +16,7 @@ var util = require('util');
1716
*/
1817

1918
function InvalidTokenError(message, properties) {
20-
properties = _.assign({
19+
properties = Object.assign({
2120
code: 401,
2221
name: 'invalid_token'
2322
}, properties);

lib/errors/oauth-error.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
/**
44
* Module dependencies.
55
*/
6-
var _ = require('lodash');
76
var util = require('util');
87
var http = require('http');
98
/**
@@ -13,17 +12,16 @@ var http = require('http');
1312
function OAuthError(messageOrError, properties) {
1413
var message = messageOrError instanceof Error ? messageOrError.message : messageOrError;
1514
var error = messageOrError instanceof Error ? messageOrError : null;
16-
if (_.isEmpty(properties))
17-
{
15+
if (properties == null || !Object.entries(properties).length ) {
1816
properties = {};
1917
}
2018

21-
_.defaults(properties, { code: 500 });
19+
properties = Object.assign({ code: 500 }, properties);
2220

2321
if (error) {
2422
properties.inner = error;
2523
}
26-
if (_.isEmpty(message)) {
24+
if (!message || message.length === 0) {
2725
message = http.STATUS_CODES[properties.code];
2826
}
2927
this.code = this.status = this.statusCode = properties.code;

lib/errors/server-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -17,7 +16,7 @@ var util = require('util');
1716
*/
1817

1918
function ServerError(message, properties) {
20-
properties = _.assign({
19+
properties = Object.assign({
2120
code: 503,
2221
name: 'server_error'
2322
}, properties);

lib/errors/unauthorized-client-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -17,7 +16,7 @@ var util = require('util');
1716
*/
1817

1918
function UnauthorizedClientError(message, properties) {
20-
properties = _.assign({
19+
properties = Object.assign({
2120
code: 400,
2221
name: 'unauthorized_client'
2322
}, properties);

lib/errors/unauthorized-request-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -20,7 +19,7 @@ var util = require('util');
2019
*/
2120

2221
function UnauthorizedRequestError(message, properties) {
23-
properties = _.assign({
22+
properties = Object.assign({
2423
code: 401,
2524
name: 'unauthorized_request'
2625
}, properties);

lib/errors/unsupported-grant-type-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -17,7 +16,7 @@ var util = require('util');
1716
*/
1817

1918
function UnsupportedGrantTypeError(message, properties) {
20-
properties = _.assign({
19+
properties = Object.assign({
2120
code: 400,
2221
name: 'unsupported_grant_type'
2322
}, properties);

lib/errors/unsupported-response-type-error.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var OAuthError = require('./oauth-error');
98
var util = require('util');
109

@@ -18,7 +17,7 @@ var util = require('util');
1817
*/
1918

2019
function UnsupportedResponseTypeError(message, properties) {
21-
properties = _.assign({
20+
properties = Object.assign({
2221
code: 400,
2322
name: 'unsupported_response_type'
2423
}, properties);

lib/handlers/authorize-handler.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var AccessDeniedError = require('../errors/access-denied-error');
98
var AuthenticateHandler = require('../handlers/authenticate-handler');
109
var InvalidArgumentError = require('../errors/invalid-argument-error');
@@ -186,15 +185,15 @@ AuthorizeHandler.prototype.getClient = function(request) {
186185
throw new InvalidClientError('Invalid client: missing client `grants`');
187186
}
188187

189-
if (!_.includes(client.grants, 'authorization_code')) {
188+
if (!Array.isArray(client.grants) || !client.grants.includes('authorization_code')) {
190189
throw new UnauthorizedClientError('Unauthorized client: `grant_type` is invalid');
191190
}
192191

193192
if (!client.redirectUris || 0 === client.redirectUris.length) {
194193
throw new InvalidClientError('Invalid client: missing client `redirectUri`');
195194
}
196195

197-
if (redirectUri && !_.includes(client.redirectUris, redirectUri)) {
196+
if (redirectUri && !client.redirectUris.includes(redirectUri)) {
198197
throw new InvalidClientError('Invalid client: `redirect_uri` does not match client value');
199198
}
200199
return client;
@@ -301,7 +300,7 @@ AuthorizeHandler.prototype.getResponseType = function(request) {
301300
throw new InvalidRequestError('Missing parameter: `response_type`');
302301
}
303302

304-
if (!_.has(responseTypes, responseType)) {
303+
if (!Object.prototype.hasOwnProperty.call(responseTypes, responseType)) {
305304
throw new UnsupportedResponseTypeError('Unsupported response type: `response_type` is not supported');
306305
}
307306

lib/handlers/token-handler.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var BearerTokenType = require('../token-types/bearer-token-type');
98
var InvalidArgumentError = require('../errors/invalid-argument-error');
109
var InvalidClientError = require('../errors/invalid-client-error');
@@ -56,7 +55,7 @@ function TokenHandler(options) {
5655
}
5756

5857
this.accessTokenLifetime = options.accessTokenLifetime;
59-
this.grantTypes = _.assign({}, grantTypes, options.extendedGrantTypes);
58+
this.grantTypes = Object.assign({}, grantTypes, options.extendedGrantTypes);
6059
this.model = options.model;
6160
this.refreshTokenLifetime = options.refreshTokenLifetime;
6261
this.allowExtendedTokenAttributes = options.allowExtendedTokenAttributes;
@@ -208,11 +207,11 @@ TokenHandler.prototype.handleGrantType = function(request, client) {
208207
throw new InvalidRequestError('Invalid parameter: `grant_type`');
209208
}
210209

211-
if (!_.has(this.grantTypes, grantType)) {
210+
if (!Object.prototype.hasOwnProperty.call(this.grantTypes, grantType)) {
212211
throw new UnsupportedGrantTypeError('Unsupported grant type: `grant_type` is invalid');
213212
}
214213

215-
if (!_.includes(client.grants, grantType)) {
214+
if (!Array.isArray(client.grants) || !client.grants.includes(grantType)) {
216215
throw new UnauthorizedClientError('Unauthorized client: `grant_type` is invalid');
217216
}
218217

lib/server.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
* Module dependencies.
55
*/
66

7-
var _ = require('lodash');
87
var AuthenticateHandler = require('./handlers/authenticate-handler');
98
var AuthorizeHandler = require('./handlers/authorize-handler');
109
var InvalidArgumentError = require('./errors/invalid-argument-error');
@@ -33,7 +32,7 @@ OAuth2Server.prototype.authenticate = function(request, response, options, callb
3332
options = {scope: options};
3433
}
3534

36-
options = _.assign({
35+
options = Object.assign({
3736
addAcceptedScopesHeader: true,
3837
addAuthorizedScopesHeader: true,
3938
allowBearerTokensInQueryString: false
@@ -49,7 +48,7 @@ OAuth2Server.prototype.authenticate = function(request, response, options, callb
4948
*/
5049

5150
OAuth2Server.prototype.authorize = function(request, response, options, callback) {
52-
options = _.assign({
51+
options = Object.assign({
5352
allowEmptyState: false,
5453
authorizationCodeLifetime: 5 * 60 // 5 minutes.
5554
}, this.options, options);
@@ -64,7 +63,7 @@ OAuth2Server.prototype.authorize = function(request, response, options, callback
6463
*/
6564

6665
OAuth2Server.prototype.token = function(request, response, options, callback) {
67-
options = _.assign({
66+
options = Object.assign({
6867
accessTokenLifetime: 60 * 60, // 1 hour.
6968
refreshTokenLifetime: 60 * 60 * 24 * 14, // 2 weeks.
7069
allowExtendedTokenAttributes: false,

package-lock.json

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)