Buckets:
| ; | |
| module.exports = function (obj) { | |
| if (typeof obj === 'string') { return camelCase(obj); } | |
| return walk(obj); | |
| }; | |
| function walk(obj) { | |
| if (!obj || typeof obj !== 'object') { return obj; } | |
| if (isDate(obj) || isRegex(obj)) { return obj; } | |
| if (isArray(obj)) { return map(obj, walk); } | |
| return reduce(objectKeys(obj), function (acc, key) { | |
| var camel = camelCase(key); | |
| acc[camel] = walk(obj[key]); | |
| return acc; | |
| }, {}); | |
| } | |
| function camelCase(str) { | |
| return str.replace(/[_.-](\w|$)/g, function (_, x) { | |
| return x.toUpperCase(); | |
| }); | |
| } | |
| var isArray = Array.isArray || function (obj) { | |
| return Object.prototype.toString.call(obj) === '[object Array]'; | |
| }; | |
| var isDate = function (obj) { | |
| return Object.prototype.toString.call(obj) === '[object Date]'; | |
| }; | |
| var isRegex = function (obj) { | |
| return Object.prototype.toString.call(obj) === '[object RegExp]'; | |
| }; | |
| var has = Object.prototype.hasOwnProperty; | |
| var objectKeys = Object.keys || function (obj) { | |
| var keys = []; | |
| for (var key in obj) { | |
| if (has.call(obj, key)) { keys.push(key); } | |
| } | |
| return keys; | |
| }; | |
| function map(xs, f) { | |
| if (xs.map) { return xs.map(f); } | |
| var res = []; | |
| for (var i = 0; i < xs.length; i++) { | |
| res.push(f(xs[i], i)); | |
| } | |
| return res; | |
| } | |
| function reduce(xs, f, acc) { | |
| if (xs.reduce) { return xs.reduce(f, acc); } | |
| for (var i = 0; i < xs.length; i++) { | |
| acc = f(acc, xs[i], i); | |
| } | |
| return acc; | |
| } | |
Xet Storage Details
- Size:
- 1.39 kB
- Xet hash:
- 6c8b15e237dd3f2aea7ac052b9ae8548b7231830c18f4003860df0b5b12b5c22
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.