Comparing version 1.0.0 to 1.1.0
@@ -6,3 +6,5 @@ /** | ||
var keypather = require('keypather')(); | ||
var passAny = require('./pass-any'); | ||
var isString = require('./is-string'); | ||
var isNumber = require('./is-number'); | ||
var isObject = require('./is-object'); | ||
@@ -35,3 +37,3 @@ | ||
var keys; | ||
var numberOrString = passAny(isString, isNumber); | ||
if (isObject(obj) && numberOrString(key)) { | ||
@@ -55,5 +57,1 @@ // (obj, key) | ||
} | ||
function numberOrString (val) { | ||
return isString(val) || typeof val === 'number'; | ||
} |
{ | ||
"name": "101", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"description": "common javascript utils that can be required selectively that assume es5+", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
50
put.js
@@ -6,6 +6,6 @@ /** | ||
var clone = require("./clone"); | ||
var assign = require('./assign'); | ||
var isString = require('./is-string'); | ||
var isNumber = require('./is-number'); | ||
var isObject = require('./is-object'); | ||
var isNumber = require('./is-number'); | ||
var keypather = require('keypather')(); | ||
@@ -24,12 +24,8 @@ /** | ||
function put (obj, key, val) { | ||
var putObj; | ||
if (!arguments.length) { | ||
throw new TypeError('Invalid number of arguments: expected at least one'); | ||
} | ||
var setObj; | ||
if (arguments.length === 1) { | ||
// (putObj) | ||
putObj = obj; | ||
if (!isObject(putObj)) throw new TypeError('Invalid arguments: expected putObj'); | ||
// (setObj) | ||
setObj = obj; | ||
return function (obj) { | ||
return assign(clone(obj), putObj); // returns new object | ||
return putKeypaths(obj, setObj); // extends original | ||
}; | ||
@@ -40,24 +36,34 @@ } | ||
// (key, val) | ||
val = arguments[1]; | ||
key = arguments[0]; | ||
putObj = {}; | ||
putObj[key] = val; | ||
val = key; | ||
key = obj; | ||
setObj = {}; | ||
keypather.set(setObj, key, val); | ||
return function (obj) { | ||
return assign(clone(obj), putObj); // returns new object | ||
return putKeypaths(obj, setObj); // extends original | ||
}; | ||
} | ||
else if (isObject(key)) { | ||
// (obj, putObj) | ||
putObj = key; | ||
return assign(clone(obj), putObj); | ||
// (obj, setObj) | ||
setObj = key; | ||
return putKeypaths(obj, setObj); // extends original | ||
} | ||
else { | ||
throw new TypeError('Invalid arguments: expected key, val or obj, putObj'); | ||
throw new TypeError('Invalid arguments: expected string, number, or object'); | ||
} | ||
} | ||
else { | ||
putObj = {}; | ||
putObj[key] = val; | ||
return assign(clone(obj), putObj); // returns new object | ||
setObj = {}; | ||
keypather.set(setObj, key, val); | ||
return putKeypaths(obj, setObj); // extends original | ||
} | ||
} | ||
function putKeypaths (obj, setObj) { | ||
// copy the object | ||
obj = clone(obj); | ||
Object.keys(setObj).forEach(function (keypath) { | ||
var val = setObj[keypath]; | ||
keypather.set(obj, keypath, val); | ||
}); | ||
return obj; | ||
} |
@@ -17,3 +17,3 @@ ![101](http://i.imgur.com/MFrmMt6.png) | ||
* Each util method is a module that can be required `require('101/<util>')`. | ||
* Currently node/browserify is supported, I will add other module system support on request. | ||
* Currently CommonJS (node, browserify, webpack, etc) is supported, I will add other module system support on request. | ||
* Other libraries can be large, and require manually creating custom builds when optimizing for size. | ||
@@ -705,2 +705,14 @@ | ||
obj; // { foo: 1, bar: 2 } (not modified) | ||
// supports keypaths by default | ||
var obj = { | ||
bar: 2 | ||
}; | ||
put(obj, 'foo.qux', 100); // { foo: { qux: 100 }, bar: 2 } | ||
put(obj, { | ||
'foo.qux': 100 | ||
'yolo': 1 | ||
}); // { foo: { qux: 100 }, bar: 2, yolo: 1 } | ||
obj; // { foo: 1, bar: 2 } (not modified) | ||
``` | ||
@@ -707,0 +719,0 @@ |
@@ -6,2 +6,3 @@ /** | ||
var isString = require('./is-string'); | ||
var isNumber = require('./is-number'); | ||
var isObject = require('./is-object'); | ||
@@ -31,3 +32,3 @@ var keypather = require('keypather')(); | ||
if (arguments.length === 2) { | ||
if (isString(obj) || typeof obj === 'number') { | ||
if (isString(obj) || isNumber(obj)) { | ||
// (key, val) | ||
@@ -48,3 +49,3 @@ val = key; | ||
else { | ||
throw new TypeError('Invalid arguments: expected str, val or val, obj'); | ||
throw new TypeError('Invalid arguments: expected string, number, or object'); | ||
} | ||
@@ -51,0 +52,0 @@ } |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
54938
49
1157
779