Skip to content

Commit cbad304

Browse files
author
Amir Tocker
committed
Add polyfill for Object.entries
1 parent 895f1dc commit cbad304

File tree

10 files changed

+54
-31
lines changed

10 files changed

+54
-31
lines changed

lib-es5/config.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ var extend = require("lodash/extend");
1515
var isObject = require("lodash/isObject");
1616
var isString = require("lodash/isString");
1717
var isUndefined = require("lodash/isUndefined");
18+
var entries = require('./utils/entries');
1819

1920
var cloudinary_config = void 0;
2021

@@ -61,7 +62,7 @@ module.exports = function (new_config, new_value) {
6162
private_cdn: uri.pathname != null,
6263
secure_distribution: uri.pathname && uri.pathname.substring(1)
6364
};
64-
Object.entries(parsedConfig).forEach(function (_ref) {
65+
entries(parsedConfig).forEach(function (_ref) {
6566
var _ref2 = _slicedToArray(_ref, 2),
6667
key = _ref2[0],
6768
value = _ref2[1];
@@ -71,7 +72,7 @@ module.exports = function (new_config, new_value) {
7172
}
7273
});
7374
if (uri.query != null) {
74-
Object.entries(uri.query).forEach(function (_ref3) {
75+
entries(uri.query).forEach(function (_ref3) {
7576
var _ref4 = _slicedToArray(_ref3, 2),
7677
key = _ref4[0],
7778
value = _ref4[1];

lib-es5/uploader.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ var extend = utils.extend,
3434
build_upload_params = utils.build_upload_params;
3535

3636
var Cache = require('./cache');
37+
var entries = require('./utils/entries');
3738

3839
exports.unsigned_upload_stream = function unsigned_upload_stream(upload_preset, callback) {
3940
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
@@ -499,7 +500,7 @@ function call_api(action, callback, options, get_params) {
499500
return callback({ error });
500501
}
501502
};
502-
var post_data = Object.entries(params).reduce(function (entries, _ref3) {
503+
var post_data = entries(params).reduce(function (entries, _ref3) {
503504
var _ref4 = _slicedToArray(_ref3, 2),
504505
key = _ref4[0],
505506
value = _ref4[1];

lib-es5/utils/ensurePresenceOf.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,11 @@
1313
* }
1414
*/
1515
function ensurePresenceOf(parameters) {
16-
var missing = Object.entries(parameters).filter(function (param) {
17-
return param[1] === undefined;
16+
var missing = Object.keys(parameters).filter(function (key) {
17+
return parameters[key] === undefined;
1818
});
1919
if (missing.length) {
20-
console.error(missing.map(function (p) {
21-
return p[0];
22-
}).join(',') + " cannot be undefined");
20+
console.error(missing.join(',') + " cannot be undefined");
2321
}
2422
}
2523

lib-es5/utils/entries.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
"use strict";
2+
3+
module.exports = Object.entries ? Object.entries : function (obj) {
4+
var ownProps = Object.keys(obj),
5+
i = ownProps.length,
6+
resArray = new Array(i); // preallocate the Array
7+
while (i--) {
8+
resArray[i] = [ownProps[i], obj[ownProps[i]]];
9+
}return resArray;
10+
};

lib-es5/utils/index.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ var utf8_encode = require('./utf8_encode');
4848
var crc32 = require('./crc32');
4949
var ensurePresenceOf = require('./ensurePresenceOf');
5050
var ensureOption = require('./ensureOption').defaults(config());
51+
var entries = require('./entries');
5152

5253
module.exports = {
5354
at,
@@ -394,7 +395,7 @@ exports.encode_double_array = function encode_double_array(array) {
394395

395396
exports.encode_key_value = function encode_key_value(arg) {
396397
if (isObject(arg)) {
397-
return Object.entries(args).map(function (_ref) {
398+
return entries(args).map(function (_ref) {
398399
var _ref2 = _slicedToArray(_ref, 2),
399400
k = _ref2[0],
400401
v = _ref2[1];
@@ -409,7 +410,7 @@ exports.encode_key_value = function encode_key_value(arg) {
409410
exports.encode_context = function encode_context(arg) {
410411
var k, pairs, v;
411412
if (isObject(arg)) {
412-
return Object.entries(arg).map(function (_ref3) {
413+
return entries(arg).map(function (_ref3) {
413414
var _ref4 = _slicedToArray(_ref3, 2),
414415
k = _ref4[0],
415416
v = _ref4[1];
@@ -440,7 +441,7 @@ exports.build_custom_headers = function build_custom_headers(headers) {
440441
} else if (isArray(headers)) {
441442
return headers.join("\n");
442443
} else if (isObject(headers)) {
443-
return Object.entries(headers).map(function (_ref5) {
444+
return entries(headers).map(function (_ref5) {
444445
var _ref6 = _slicedToArray(_ref5, 2),
445446
k = _ref6[0],
446447
v = _ref6[1];
@@ -509,7 +510,7 @@ exports.generate_transformation_string = function generate_transformation_string
509510
if (isArray(effect)) {
510511
effect = effect.join(":");
511512
} else if (isObject(effect)) {
512-
effect = Object.entries(effect).map(function (_ref9) {
513+
effect = entries(effect).map(function (_ref9) {
513514
var _ref10 = _slicedToArray(_ref9, 2),
514515
key = _ref10[0],
515516
value = _ref10[1];
@@ -598,7 +599,7 @@ exports.generate_transformation_string = function generate_transformation_string
598599
});
599600

600601
var variablesParam = utils.option_consume(options, "variables", []);
601-
var variables = Object.entries(options).filter(function (_ref11) {
602+
var variables = entries(options).filter(function (_ref11) {
602603
var _ref12 = _slicedToArray(_ref11, 2),
603604
key = _ref12[0],
604605
value = _ref12[1];
@@ -619,7 +620,7 @@ exports.generate_transformation_string = function generate_transformation_string
619620
return `${name}_${normalize_expression(value)}`;
620621
})).join(',');
621622

622-
var transformations = Object.entries(params).filter(function (_ref17) {
623+
var transformations = entries(params).filter(function (_ref17) {
623624
var _ref18 = _slicedToArray(_ref17, 2),
624625
key = _ref18[0],
625626
value = _ref18[1];
@@ -982,7 +983,7 @@ exports.signed_preloaded_image = function signed_preloaded_image(result) {
982983
};
983984

984985
exports.api_sign_request = function api_sign_request(params_to_sign, api_secret) {
985-
var to_sign = Object.entries(params_to_sign).filter(function (_ref21) {
986+
var to_sign = entries(params_to_sign).filter(function (_ref21) {
986987
var _ref22 = _slicedToArray(_ref21, 2),
987988
k = _ref22[0],
988989
v = _ref22[1];
@@ -1002,7 +1003,7 @@ exports.api_sign_request = function api_sign_request(params_to_sign, api_secret)
10021003

10031004
exports.clear_blank = function clear_blank(hash) {
10041005
var filtered_hash = {};
1005-
Object.entries(hash).filter(function (_ref25) {
1006+
entries(hash).filter(function (_ref25) {
10061007
var _ref26 = _slicedToArray(_ref25, 2),
10071008
k = _ref26[0],
10081009
v = _ref26[1];
@@ -1359,7 +1360,7 @@ exports.build_streaming_profiles_param = function build_streaming_profiles_param
13591360
* @return {string} A URI query string.
13601361
*/
13611362
function hashToQuery(hash) {
1362-
return Object.entries(hash).reduce(function (entries, _ref29) {
1363+
return entries(hash).reduce(function (entries, _ref29) {
13631364
var _ref30 = _slicedToArray(_ref29, 2),
13641365
key = _ref30[0],
13651366
value = _ref30[1];

lib/config.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const extend = require("lodash/extend");
1111
const isObject = require("lodash/isObject");
1212
const isString = require("lodash/isString");
1313
const isUndefined = require("lodash/isUndefined");
14+
const entries = require('./utils/entries');
1415

1516
let cloudinary_config = void 0;
1617

@@ -54,13 +55,13 @@ module.exports = function(new_config, new_value) {
5455
private_cdn: uri.pathname != null,
5556
secure_distribution: uri.pathname && uri.pathname.substring(1)
5657
};
57-
Object.entries(parsedConfig).forEach(([key, value])=> {
58+
entries(parsedConfig).forEach(([key, value])=> {
5859
if(value !== undefined) {
5960
cloudinary_config[key] = value;
6061
}
6162
});
6263
if (uri.query != null) {
63-
Object.entries(uri.query).forEach( ([key, value])=> putNestedValue(cloudinary_config, key, value));
64+
entries(uri.query).forEach( ([key, value])=> putNestedValue(cloudinary_config, key, value));
6465
}
6566
}
6667
}

lib/uploader.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const UploadStream = require('./upload_stream');
1414
const utils = require("./utils");
1515
const {extend, includes, isArray, isObject, build_upload_params} = utils;
1616
const Cache = require('./cache');
17+
const entries = require('./utils/entries');
1718

1819
exports.unsigned_upload_stream = function unsigned_upload_stream(upload_preset, callback, options = {}) {
1920
return exports.upload_stream(callback, utils.merge(options, {
@@ -402,7 +403,7 @@ function call_api(action, callback, options, get_params) {
402403
return callback({error});
403404
}
404405
};
405-
let post_data = Object.entries(params)
406+
let post_data = entries(params)
406407
.reduce((entries, [key, value]) => {
407408
if (isArray(value)) {
408409
key = key.endsWith('[]') ? key : key + '[]';

lib/utils/ensurePresenceOf.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
* }
1212
*/
1313
function ensurePresenceOf(parameters) {
14-
let missing = Object.entries(parameters).filter(param => param[1] === undefined);
14+
let missing = Object.keys(parameters).filter(key => parameters[key] === undefined);
1515
if (missing.length) {
16-
console.error(missing.map(p=>p[0]).join(',') + " cannot be undefined");
16+
console.error(missing.join(',') + " cannot be undefined");
1717
}
1818
}
1919

lib/utils/entries.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module.exports = Object.entries ? Object.entries : function (obj) {
2+
var ownProps = Object.keys(obj),
3+
i = ownProps.length,
4+
resArray = new Array(i); // preallocate the Array
5+
while (i--)
6+
resArray[i] = [ownProps[i], obj[ownProps[i]]];
7+
8+
return resArray;
9+
};

lib/utils/index.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ const utf8_encode = require('./utf8_encode');
4242
const crc32 = require('./crc32');
4343
const ensurePresenceOf = require('./ensurePresenceOf');
4444
const ensureOption = require('./ensureOption').defaults(config());
45+
const entries = require('./entries');
4546

4647
module.exports = {
4748
at,
@@ -391,7 +392,7 @@ exports.encode_double_array = function encode_double_array(array) {
391392

392393
exports.encode_key_value = function encode_key_value(arg) {
393394
if (isObject(arg)) {
394-
return Object.entries(args).map(([k,v])=>`${k}=${v}`).join('|');
395+
return entries(args).map(([k,v])=>`${k}=${v}`).join('|');
395396
} else {
396397
return arg;
397398
}
@@ -400,7 +401,7 @@ exports.encode_key_value = function encode_key_value(arg) {
400401
exports.encode_context = function encode_context(arg) {
401402
var k, pairs, v;
402403
if (isObject(arg)) {
403-
return Object.entries(arg).map(([k,v])=>`${k}=${v.replace(/([=|])/g, '\\$&')}`).join('|');
404+
return entries(arg).map(([k,v])=>`${k}=${v.replace(/([=|])/g, '\\$&')}`).join('|');
404405
} else {
405406
return arg;
406407
}
@@ -428,7 +429,7 @@ exports.build_custom_headers = function build_custom_headers(headers) {
428429
} else if (isArray(headers)) {
429430
return headers.join("\n");
430431
} else if (isObject(headers)) {
431-
return Object.entries(headers).map(([k,v])=>`${k}:${v}`).join("\n");
432+
return entries(headers).map(([k,v])=>`${k}:${v}`).join("\n");
432433
} else {
433434
return headers;
434435
}
@@ -526,7 +527,7 @@ exports.generate_transformation_string = function generate_transformation_string
526527
if (isArray(effect)) {
527528
effect = effect.join(":");
528529
} else if (isObject(effect)) {
529-
effect = Object.entries(effect).map(
530+
effect = entries(effect).map(
530531
([key, value])=> `${key}:${value}`
531532
);
532533
}
@@ -605,7 +606,7 @@ exports.generate_transformation_string = function generate_transformation_string
605606
});
606607

607608
let variablesParam = utils.option_consume(options, "variables", []);
608-
let variables = Object.entries(options)
609+
let variables = entries(options)
609610
.filter(([key,value])=>key.startsWith('$'))
610611
.map(([key,value])=>{
611612
delete options[key];
@@ -614,7 +615,7 @@ exports.generate_transformation_string = function generate_transformation_string
614615
variablesParam.map(([name,value])=>`${name}_${normalize_expression(value)}`)
615616
).join(',');
616617

617-
let transformations = Object.entries(params)
618+
let transformations = entries(params)
618619
.filter(([key,value])=>utils.present(value))
619620
.map(([key,value])=> key + '_' + value)
620621
.sort()
@@ -964,7 +965,7 @@ exports.signed_preloaded_image = function signed_preloaded_image(result) {
964965
};
965966

966967
exports.api_sign_request = function api_sign_request(params_to_sign, api_secret) {
967-
let to_sign = Object.entries( params_to_sign).filter(
968+
let to_sign = entries( params_to_sign).filter(
968969
([k,v])=> utils.present(v)
969970
).map(
970971
([k,v])=>`${k}=${utils.build_array(v).join(",")}`
@@ -976,7 +977,7 @@ exports.api_sign_request = function api_sign_request(params_to_sign, api_secret)
976977

977978
exports.clear_blank = function clear_blank(hash) {
978979
let filtered_hash = {};
979-
Object.entries(hash).filter(
980+
entries(hash).filter(
980981
([k, v])=>utils.present(v)
981982
).forEach(
982983
([k, v])=> {filtered_hash[k] = v;}
@@ -1301,7 +1302,7 @@ exports.build_streaming_profiles_param = function build_streaming_profiles_param
13011302
* @return {string} A URI query string.
13021303
*/
13031304
function hashToQuery(hash) {
1304-
return Object.entries(hash).reduce((entries, [key, value]) => {
1305+
return entries(hash).reduce((entries, [key, value]) => {
13051306
if (isArray(value)) {
13061307
key = key.endsWith('[]') ? key : key + '[]';
13071308
const items = value.map(v => [key, v]);

0 commit comments

Comments
 (0)