@roots/container
Advanced tools
Comparing version 4.0.1 to 4.1.0
@@ -1,6 +0,6 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Container = void 0; | ||
const tslib_1 = require("tslib"); | ||
const lodash_1 = tslib_1.__importDefault(require("lodash")); | ||
'use strict' | ||
Object.defineProperty(exports, '__esModule', {value: true}) | ||
exports.Container = void 0 | ||
const tslib_1 = require('tslib') | ||
const lodash_1 = tslib_1.__importDefault(require('lodash')) | ||
/** | ||
@@ -10,722 +10,777 @@ * @roots/container | ||
class Container { | ||
/** | ||
* Class constructor | ||
*/ | ||
constructor(repository) { | ||
this.setStore(repository !== null && repository !== void 0 ? repository : {}); | ||
/** | ||
* Class constructor | ||
*/ | ||
constructor(repository) { | ||
this.setStore( | ||
repository !== null && repository !== void 0 | ||
? repository | ||
: {}, | ||
) | ||
} | ||
/** | ||
* ## container.all | ||
* | ||
* Does the same thing as container.all | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.all() | ||
* ``` | ||
*/ | ||
all() { | ||
return this.repository | ||
} | ||
/** | ||
* ## container.setStore | ||
* | ||
* Replace the store with an all new set of values | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.setStore({ | ||
* new: ['store', 'contents'], | ||
* }) | ||
* ``` | ||
*/ | ||
setStore(repository) { | ||
this.repository = repository | ||
return this | ||
} | ||
/** | ||
* ## container.mergeStore | ||
* | ||
* Merge values onto the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mergeStore({test: 'foo'}) | ||
* ``` | ||
*/ | ||
mergeStore(values) { | ||
this.setStore( | ||
Object.assign(Object.assign({}, this.all()), values), | ||
) | ||
return this | ||
} | ||
/** | ||
* ## container.transformStore | ||
* | ||
* Retrieve the container store, running it through the supplied fn. | ||
* | ||
* Returns the transformed value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.transform(store=> modifiedStore) | ||
* ``` | ||
*/ | ||
transformStore(transformFn) { | ||
return transformFn(this.all()) | ||
} | ||
/** | ||
* ## container.mutateStore | ||
* | ||
* Mutate the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutate('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
mutateStore(mutationFn) { | ||
const transform = this.transformStore(mutationFn) | ||
this.setStore(transform) | ||
return this | ||
} | ||
/** | ||
* ## container.mutateStore | ||
* | ||
* Mutate the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutateStoreEntries((key, value) => value + 1) | ||
* ``` | ||
*/ | ||
mutateStoreEntries(mutateFn) { | ||
this.fromEntries( | ||
this.getEntries().map(([key, value]) => [ | ||
key, | ||
mutateFn(key, value), | ||
]), | ||
) | ||
return this | ||
} | ||
/** | ||
* ## container.get | ||
* | ||
* Get a value from the container. | ||
* | ||
* If no key is passed the container store will be returned. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.get('container.container-item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.get(['container', 'container-item']) | ||
* ``` | ||
*/ | ||
get(key) { | ||
return lodash_1.default.get(this.repository, key) | ||
} | ||
/** | ||
* ## container.getEntries | ||
* | ||
* Get container value as [K, V] tuples. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getEntries() | ||
* ``` | ||
* | ||
* ```js | ||
* container.getEntries('key') | ||
* ``` | ||
*/ | ||
getEntries(key) { | ||
let data = [] | ||
if (!key) { | ||
this.all() && | ||
Object.entries(this.all()).map(entry => data.push(entry)) | ||
} else { | ||
this.has(key) && | ||
this.isIndexed(key) && | ||
Object.entries(this.get(key)).map(entry => | ||
data.push(entry), | ||
) | ||
} | ||
/** | ||
* ## container.all | ||
* | ||
* Does the same thing as container.all | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.all() | ||
* ``` | ||
*/ | ||
all() { | ||
return this.repository; | ||
return data | ||
} | ||
/** | ||
* ## container.fromEntries | ||
* | ||
* Set container value from [K, V] tuples. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getEntries() | ||
* ``` | ||
* | ||
* ```js | ||
* container.getEntries('key') | ||
* ``` | ||
*/ | ||
fromEntries(entries) { | ||
this.mergeStore(Object.fromEntries(entries)) | ||
return this | ||
} | ||
/** | ||
* ## container.withEntries | ||
* | ||
* Use each value as parameters in a supplied callback | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.withEntries('key', (key, value) => doSomething) | ||
* ``` | ||
*/ | ||
each(key, callFn) { | ||
this.getEntries(key).forEach(([key, value]) => [ | ||
key, | ||
callFn(key, value), | ||
]) | ||
return this | ||
} | ||
/** | ||
* ## container.every | ||
* | ||
* Use each value as parameters in a supplied callback | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.withEntries('key', (key, value) => doSomething) | ||
* ``` | ||
*/ | ||
every(fn) { | ||
this.getEntries().forEach(([key, value]) => { | ||
fn(key, value) | ||
}) | ||
return this | ||
} | ||
/** | ||
* Find | ||
*/ | ||
find(...searchItem) { | ||
return lodash_1.default.findKey( | ||
this.repository, | ||
...searchItem, | ||
) | ||
} | ||
/** | ||
* Find in container item | ||
*/ | ||
findIn(key, ...searchItem) { | ||
const parseInner = v => | ||
(!lodash_1.default.isArray(v) | ||
? Object.entries(v) | ||
: v | ||
).reduce( | ||
(a, [k, v]) => | ||
Object.assign(Object.assign({}, a), {[k]: v}), | ||
{}, | ||
) | ||
return lodash_1.default.findKey( | ||
parseInner(this.get(key)), | ||
...searchItem, | ||
) | ||
} | ||
/** | ||
* ## container.mutateEntries | ||
* | ||
* Mutate each value via a supplied mutagen. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutateEntries('key', (key, value) => value + 1) | ||
* ``` | ||
*/ | ||
mutateEntries(key, mutateFn) { | ||
this.fromEntries( | ||
this.getEntries(key).map(([key, value]) => [ | ||
key, | ||
mutateFn(key, value), | ||
]), | ||
) | ||
return this | ||
} | ||
/** | ||
* ## container.getValues | ||
* | ||
* Get an item value. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getValues('container.container-item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.getValues() | ||
* // => returns values from entire store | ||
* ``` | ||
*/ | ||
getValues(key) { | ||
return Object.values(key ? this.get(key) : this.all()) | ||
} | ||
/** | ||
* ## container.getKeys | ||
* | ||
* Get an item's keys. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getKeys('item') | ||
* // => returns keys of container.repository[item] | ||
* ``` | ||
* | ||
* ```js | ||
* container.getKeys() | ||
* // => returns keys of container.repository | ||
* ``` | ||
*/ | ||
getKeys(key) { | ||
return Object.keys(key ? this.get(key) : this.all()) | ||
} | ||
/** | ||
* ## container.getMap | ||
* | ||
* Get an item as a Map datatype. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getMap('item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.getMap() | ||
* ``` | ||
*/ | ||
getMap(key) { | ||
const reducer = [ | ||
(map, [key, value]) => { | ||
map.set(key, value) | ||
return map | ||
}, | ||
new Map(), | ||
] | ||
return this.getEntries( | ||
key !== null && key !== void 0 ? key : null, | ||
).reduce(...reducer) | ||
} | ||
/** | ||
* ## container.set | ||
* | ||
* Set a value on a container item. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.set('key', value) | ||
* ``` | ||
*/ | ||
set(key, value) { | ||
lodash_1.default.set(this.repository, key, value) | ||
return this | ||
} | ||
/** | ||
* ## container.push | ||
* | ||
* Push an item or entry onto the container | ||
* | ||
* ```js | ||
* container.unique('containerKey') // unique values of containerKey | ||
* ``` | ||
* | ||
* ```js | ||
* container.unique() // unique values of container | ||
* ``` | ||
*/ | ||
push(value, key) { | ||
if (key) { | ||
this.mutate(key, k => k.push(value)) | ||
return this | ||
} | ||
/** | ||
* ## container.setStore | ||
* | ||
* Replace the store with an all new set of values | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.setStore({ | ||
* new: ['store', 'contents'], | ||
* }) | ||
* ``` | ||
*/ | ||
setStore(repository) { | ||
this.repository = repository; | ||
return this; | ||
if (!lodash_1.default.isArray(this.all())) { | ||
throw new Error( | ||
'Type mismatch: Attempted to push onto object container as if it were an array.', | ||
) | ||
} | ||
/** | ||
* ## container.mergeStore | ||
* | ||
* Merge values onto the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mergeStore({test: 'foo'}) | ||
* ``` | ||
*/ | ||
mergeStore(values) { | ||
this.setStore(Object.assign(Object.assign({}, this.all()), values)); | ||
return this; | ||
} | ||
/** | ||
* ## container.transformStore | ||
* | ||
* Retrieve the container store, running it through the supplied fn. | ||
* | ||
* Returns the transformed value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.transform(store=> modifiedStore) | ||
* ``` | ||
*/ | ||
transformStore(transformFn) { | ||
return transformFn(this.all()); | ||
} | ||
/** | ||
* ## container.mutateStore | ||
* | ||
* Mutate the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutate('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
mutateStore(mutationFn) { | ||
const transform = this.transformStore(mutationFn); | ||
this.setStore(transform); | ||
return this; | ||
} | ||
/** | ||
* ## container.mutateStore | ||
* | ||
* Mutate the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutateStoreEntries((key, value) => value + 1) | ||
* ``` | ||
*/ | ||
mutateStoreEntries(mutateFn) { | ||
this.fromEntries(this.getEntries().map(([key, value]) => [ | ||
key, | ||
mutateFn(key, value), | ||
])); | ||
return this; | ||
} | ||
/** | ||
* ## container.get | ||
* | ||
* Get a value from the container. | ||
* | ||
* If no key is passed the container store will be returned. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.get('container.container-item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.get(['container', 'container-item']) | ||
* ``` | ||
*/ | ||
get(key) { | ||
return lodash_1.default.get(this.repository, key); | ||
} | ||
/** | ||
* ## container.getEntries | ||
* | ||
* Get container value as [K, V] tuples. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getEntries() | ||
* ``` | ||
* | ||
* ```js | ||
* container.getEntries('key') | ||
* ``` | ||
*/ | ||
getEntries(key) { | ||
let data = []; | ||
if (!key) { | ||
this.all() && | ||
Object.entries(this.all()).map(entry => data.push(entry)); | ||
} | ||
else { | ||
this.has(key) && | ||
this.isIndexed(key) && | ||
Object.entries(this.get(key)).map(entry => data.push(entry)); | ||
} | ||
return data; | ||
} | ||
/** | ||
* ## container.fromEntries | ||
* | ||
* Set container value from [K, V] tuples. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getEntries() | ||
* ``` | ||
* | ||
* ```js | ||
* container.getEntries('key') | ||
* ``` | ||
*/ | ||
fromEntries(entries) { | ||
this.mergeStore(Object.fromEntries(entries)); | ||
return this; | ||
} | ||
/** | ||
* ## container.withEntries | ||
* | ||
* Use each value as parameters in a supplied callback | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.withEntries('key', (key, value) => doSomething) | ||
* ``` | ||
*/ | ||
each(key, callFn) { | ||
this.getEntries(key).forEach(([key, value]) => [ | ||
key, | ||
callFn(key, value), | ||
]); | ||
return this; | ||
} | ||
/** | ||
* ## container.every | ||
* | ||
* Use each value as parameters in a supplied callback | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.withEntries('key', (key, value) => doSomething) | ||
* ``` | ||
*/ | ||
every(fn) { | ||
this.getEntries().forEach(([key, value]) => { | ||
fn(key, value); | ||
}); | ||
return this; | ||
} | ||
/** | ||
* Find | ||
*/ | ||
find(...searchItem) { | ||
return lodash_1.default.findKey(this.repository, ...searchItem); | ||
} | ||
/** | ||
* Find in container item | ||
*/ | ||
findIn(key, ...searchItem) { | ||
const parseInner = v => (!lodash_1.default.isArray(v) ? Object.entries(v) : v).reduce((a, [k, v]) => (Object.assign(Object.assign({}, a), { [k]: v })), {}); | ||
return lodash_1.default.findKey(parseInner(this.get(key)), ...searchItem); | ||
} | ||
/** | ||
* ## container.mutateEntries | ||
* | ||
* Mutate each value via a supplied mutagen. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutateEntries('key', (key, value) => value + 1) | ||
* ``` | ||
*/ | ||
mutateEntries(key, mutateFn) { | ||
this.fromEntries(this.getEntries(key).map(([key, value]) => [ | ||
key, | ||
mutateFn(key, value), | ||
])); | ||
return this; | ||
} | ||
/** | ||
* ## container.getValues | ||
* | ||
* Get an item value. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getValues('container.container-item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.getValues() | ||
* // => returns values from entire store | ||
* ``` | ||
*/ | ||
getValues(key) { | ||
return Object.values(key ? this.get(key) : this.all()); | ||
} | ||
/** | ||
* ## container.getKeys | ||
* | ||
* Get an item's keys. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getKeys('item') | ||
* // => returns keys of container.repository[item] | ||
* ``` | ||
* | ||
* ```js | ||
* container.getKeys() | ||
* // => returns keys of container.repository | ||
* ``` | ||
*/ | ||
getKeys(key) { | ||
return Object.keys(key ? this.get(key) : this.all()); | ||
} | ||
/** | ||
* ## container.getMap | ||
* | ||
* Get an item as a Map datatype. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getMap('item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.getMap() | ||
* ``` | ||
*/ | ||
getMap(key) { | ||
const reducer = [ | ||
(map, [key, value]) => { | ||
map.set(key, value); | ||
return map; | ||
}, | ||
new Map(), | ||
]; | ||
return this.getEntries(key !== null && key !== void 0 ? key : null).reduce(...reducer); | ||
} | ||
/** | ||
* ## container.set | ||
* | ||
* Set a value on a container item. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.set('key', value) | ||
* ``` | ||
*/ | ||
set(key, value) { | ||
lodash_1.default.set(this.repository, key, value); | ||
return this; | ||
} | ||
/** | ||
* ## container.push | ||
* | ||
* Push an item or entry onto the container | ||
* | ||
* ```js | ||
* container.unique('containerKey') // unique values of containerKey | ||
* ``` | ||
* | ||
* ```js | ||
* container.unique() // unique values of container | ||
* ``` | ||
*/ | ||
push(value, key) { | ||
if (key) { | ||
this.mutate(key, k => k.push(value)); | ||
return this; | ||
} | ||
if (!lodash_1.default.isArray(this.all())) { | ||
throw new Error('Type mismatch: Attempted to push onto object container as if it were an array.'); | ||
} | ||
this.setStore(this.all().push(value)); | ||
return this; | ||
} | ||
/** | ||
* ## container.transform | ||
* | ||
* Retrieve a container item, running it through the supplied fn. | ||
* | ||
* Returns the transformed value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.transform('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
transform(key, mutationFn) { | ||
return mutationFn(this.get(key)); | ||
} | ||
/** | ||
* ## container.mutate | ||
* | ||
* Mutate a container item. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutate('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
mutate(key, mutationFn) { | ||
this.set(key, this.transform(key, mutationFn)); | ||
return this; | ||
} | ||
/** | ||
* ## container.merge | ||
* | ||
* Merge a container item. | ||
* | ||
* If no key is supplied the value will be merged onto the store itself. | ||
* | ||
* ```js | ||
* container.merge('key', {merge: values}) | ||
* ``` | ||
*/ | ||
merge(key, value) { | ||
this.set(key, lodash_1.default.merge(this.get(key), value)); | ||
return this; | ||
} | ||
/** | ||
* ## container.has | ||
* | ||
* Return a boolean indicating if a given key exists. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.has('my-key') | ||
* // true if container.repository['my-key'] exists | ||
* ``` | ||
*/ | ||
has(key) { | ||
return lodash_1.default.has(this.repository, key) ? true : false; | ||
} | ||
/** | ||
* ## container.delete | ||
* | ||
* Delete an entry from the repository | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.remove('my-key') | ||
* // Remove container.repository['my-key'] | ||
* ``` | ||
*/ | ||
remove(key) { | ||
delete this.repository[key]; | ||
return this; | ||
} | ||
/** | ||
* ## container.is | ||
* | ||
* Return a boolean indicating if the given key matches the given value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.is('my-key', {whatever: 'value'}) | ||
* // True if container.repository['my-key'] === {whatever: 'value'} | ||
* ``` | ||
*/ | ||
is(key, value) { | ||
return this.get(key) === value; | ||
} | ||
/** | ||
* ## container.isTrue | ||
* | ||
* Return a boolean indicating if the given key's value is true | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isTrue('my-key') | ||
* // True if container.repository['my-key'] === true | ||
* ``` | ||
*/ | ||
isTrue(key) { | ||
return this.is(key, true || 'true'); | ||
} | ||
/** | ||
* ## container.enabled | ||
* | ||
* Same as container.isTrue. | ||
* | ||
* Return a boolean indicating if the given key's value is true | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isTrue('my-key') | ||
* // True if container.repository['my-key'] === true | ||
* ``` | ||
*/ | ||
enabled(key) { | ||
return this.is(key, true || 'true'); | ||
} | ||
/** | ||
* ## container.isFalse | ||
* | ||
* Return a boolean indicating if the given key's value is false | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFalse('my-key') | ||
* // True if container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
isFalse(key) { | ||
return this.is(key, false || 'false'); | ||
} | ||
/** | ||
* ## container.disabled | ||
* | ||
* Same as container.isFalse | ||
* | ||
* Return a boolean indicating if the given key's value is `false` | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFalse('my-key') | ||
* // True if container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
disabled(key) { | ||
return this.isFalse(key || 'false'); | ||
} | ||
/** | ||
* ## container.enable | ||
* | ||
* Set the value of the given key to `true`. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.enable('my-key') | ||
* // => container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
enable(key) { | ||
this.set(key, true); | ||
} | ||
/** | ||
* ## container.disable | ||
* | ||
* Set the value of the given key to `false`. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.disable('my-key') | ||
* // => container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
disable(key) { | ||
this.set(key, false); | ||
} | ||
/** | ||
* ## container.isIndexed | ||
* | ||
* Return true if object is likely a vanilla object with | ||
* string keys. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isIndexed('my-key') | ||
* // True if container.repository['my-key'] appears to be an object. | ||
* ``` | ||
*/ | ||
isIndexed(key) { | ||
const value = key ? this.get(key) : this.all(); | ||
return (this.has(key) && | ||
lodash_1.default.isObject(value) && | ||
!lodash_1.default.isArrayLikeObject(value)); | ||
} | ||
/** | ||
* ## container.isArray | ||
* | ||
* Return true if object is an array. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isArray('my-key') | ||
* // True if container.repository['my-key'] is an array | ||
* ``` | ||
*/ | ||
isArray(key) { | ||
return this.has(key) && lodash_1.default.isArray(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNotArray | ||
* | ||
* Return true if object is not an array. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNotArray('my-key') | ||
* // True if container.repository['my-key'] is not an array | ||
* ``` | ||
*/ | ||
isNotArray(key) { | ||
return this.has(key) && !lodash_1.default.isArray(this.get(key)); | ||
} | ||
/** | ||
* ## container.isString | ||
* | ||
* Return true if object is a string. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isString('my-key') | ||
* // True if container.repository['my-key'] is a string | ||
* ``` | ||
*/ | ||
isString(key) { | ||
return this.has(key) && lodash_1.default.isString(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNotString | ||
* | ||
* Return true if object is a string. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isString('my-key') | ||
* // True if container.repository['my-key'] is not a string | ||
* ``` | ||
*/ | ||
isNotString(key) { | ||
return this.has(key) && !lodash_1.default.isString(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNumber | ||
* | ||
* Return true if object is a number. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNumber('my-key') | ||
* // True if container.repository['my-key'] is a number | ||
* ``` | ||
*/ | ||
isNumber(key) { | ||
return this.has(key) && lodash_1.default.isNumber(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNotNumber | ||
* | ||
* Return true if object is not a number. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNumber('my-key') | ||
* // True if container.repository['my-key'] is not a number | ||
* ``` | ||
*/ | ||
isNotNumber(key) { | ||
return this.has(key) && !lodash_1.default.isNumber(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNull | ||
* | ||
* Return true if object is null. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNull('my-key') | ||
* // True if container.repository['my-key'] is null | ||
* ``` | ||
*/ | ||
isNull(key) { | ||
return this.has(key) && lodash_1.default.isNull(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNotNull | ||
* | ||
* Return true if object is not null. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNotNull('my-key') | ||
* // True if container.repository['my-key'] is not null | ||
* ``` | ||
*/ | ||
isNotNull(key) { | ||
return this.has(key) && !lodash_1.default.isNull(this.get(key)); | ||
} | ||
/** | ||
* ## container.isDefined | ||
* | ||
* Return true if object is defined. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isDefined('my-key') | ||
* // True if container has a 'my-key' entry with a definite value. | ||
* ``` | ||
*/ | ||
isDefined(key) { | ||
return this.has(key) && !lodash_1.default.isUndefined(this.get(key)); | ||
} | ||
/** | ||
* ## container.isUndefined | ||
* | ||
* Return true if object is defined. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isDefined('my-key') | ||
* // True if container has a 'my-key' entry with a definite value. | ||
* ``` | ||
*/ | ||
isUndefined(key) { | ||
return !this.has(key) || lodash_1.default.isUndefined(this.get(key)); | ||
} | ||
/** | ||
* ## container.isFunction | ||
* | ||
* Return true if object is a function | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFunction('my-key') | ||
* // True if object associated with 'my-key' is a fn. | ||
* ```` | ||
*/ | ||
isFunction(key) { | ||
return lodash_1.default.isFunction(this.get(key)); | ||
} | ||
this.setStore(this.all().push(value)) | ||
return this | ||
} | ||
/** | ||
* ## container.transform | ||
* | ||
* Retrieve a container item, running it through the supplied fn. | ||
* | ||
* Returns the transformed value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.transform('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
transform(key, mutationFn) { | ||
return mutationFn(this.get(key)) | ||
} | ||
/** | ||
* ## container.mutate | ||
* | ||
* Mutate a container item. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutate('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
mutate(key, mutationFn) { | ||
this.set(key, this.transform(key, mutationFn)) | ||
return this | ||
} | ||
/** | ||
* ## container.merge | ||
* | ||
* Merge a container item. | ||
* | ||
* If no key is supplied the value will be merged onto the store itself. | ||
* | ||
* ```js | ||
* container.merge('key', {merge: values}) | ||
* ``` | ||
*/ | ||
merge(key, value) { | ||
this.set(key, lodash_1.default.merge(this.get(key), value)) | ||
return this | ||
} | ||
/** | ||
* ## container.has | ||
* | ||
* Return a boolean indicating if a given key exists. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.has('my-key') | ||
* // true if container.repository['my-key'] exists | ||
* ``` | ||
*/ | ||
has(key) { | ||
return lodash_1.default.has(this.repository, key) | ||
? true | ||
: false | ||
} | ||
/** | ||
* ## container.delete | ||
* | ||
* Delete an entry from the repository | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.remove('my-key') | ||
* // Remove container.repository['my-key'] | ||
* ``` | ||
*/ | ||
remove(key) { | ||
delete this.repository[key] | ||
return this | ||
} | ||
/** | ||
* ## container.is | ||
* | ||
* Return a boolean indicating if the given key matches the given value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.is('my-key', {whatever: 'value'}) | ||
* // True if container.repository['my-key'] === {whatever: 'value'} | ||
* ``` | ||
*/ | ||
is(key, value) { | ||
return this.get(key) === value | ||
} | ||
/** | ||
* ## container.isTrue | ||
* | ||
* Return a boolean indicating if the given key's value is true | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isTrue('my-key') | ||
* // True if container.repository['my-key'] === true | ||
* ``` | ||
*/ | ||
isTrue(key) { | ||
return this.is(key, true || 'true') | ||
} | ||
/** | ||
* ## container.enabled | ||
* | ||
* Same as container.isTrue. | ||
* | ||
* Return a boolean indicating if the given key's value is true | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isTrue('my-key') | ||
* // True if container.repository['my-key'] === true | ||
* ``` | ||
*/ | ||
enabled(key) { | ||
return this.is(key, true || 'true') | ||
} | ||
/** | ||
* ## container.isFalse | ||
* | ||
* Return a boolean indicating if the given key's value is false | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFalse('my-key') | ||
* // True if container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
isFalse(key) { | ||
return this.is(key, false || 'false') | ||
} | ||
/** | ||
* ## container.disabled | ||
* | ||
* Same as container.isFalse | ||
* | ||
* Return a boolean indicating if the given key's value is `false` | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFalse('my-key') | ||
* // True if container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
disabled(key) { | ||
return this.isFalse(key || 'false') | ||
} | ||
/** | ||
* ## container.enable | ||
* | ||
* Set the value of the given key to `true`. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.enable('my-key') | ||
* // => container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
enable(key) { | ||
this.set(key, true) | ||
} | ||
/** | ||
* ## container.disable | ||
* | ||
* Set the value of the given key to `false`. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.disable('my-key') | ||
* // => container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
disable(key) { | ||
this.set(key, false) | ||
} | ||
/** | ||
* ## container.isIndexed | ||
* | ||
* Return true if object is likely a vanilla object with | ||
* string keys. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isIndexed('my-key') | ||
* // True if container.repository['my-key'] appears to be an object. | ||
* ``` | ||
*/ | ||
isIndexed(key) { | ||
const value = key ? this.get(key) : this.all() | ||
return ( | ||
this.has(key) && | ||
lodash_1.default.isObject(value) && | ||
!lodash_1.default.isArrayLikeObject(value) | ||
) | ||
} | ||
/** | ||
* ## container.isArray | ||
* | ||
* Return true if object is an array. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isArray('my-key') | ||
* // True if container.repository['my-key'] is an array | ||
* ``` | ||
*/ | ||
isArray(key) { | ||
return ( | ||
this.has(key) && lodash_1.default.isArray(this.get(key)) | ||
) | ||
} | ||
/** | ||
* ## container.isNotArray | ||
* | ||
* Return true if object is not an array. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNotArray('my-key') | ||
* // True if container.repository['my-key'] is not an array | ||
* ``` | ||
*/ | ||
isNotArray(key) { | ||
return ( | ||
this.has(key) && !lodash_1.default.isArray(this.get(key)) | ||
) | ||
} | ||
/** | ||
* ## container.isString | ||
* | ||
* Return true if object is a string. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isString('my-key') | ||
* // True if container.repository['my-key'] is a string | ||
* ``` | ||
*/ | ||
isString(key) { | ||
return ( | ||
this.has(key) && lodash_1.default.isString(this.get(key)) | ||
) | ||
} | ||
/** | ||
* ## container.isNotString | ||
* | ||
* Return true if object is a string. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isString('my-key') | ||
* // True if container.repository['my-key'] is not a string | ||
* ``` | ||
*/ | ||
isNotString(key) { | ||
return ( | ||
this.has(key) && !lodash_1.default.isString(this.get(key)) | ||
) | ||
} | ||
/** | ||
* ## container.isNumber | ||
* | ||
* Return true if object is a number. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNumber('my-key') | ||
* // True if container.repository['my-key'] is a number | ||
* ``` | ||
*/ | ||
isNumber(key) { | ||
return ( | ||
this.has(key) && lodash_1.default.isNumber(this.get(key)) | ||
) | ||
} | ||
/** | ||
* ## container.isNotNumber | ||
* | ||
* Return true if object is not a number. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNumber('my-key') | ||
* // True if container.repository['my-key'] is not a number | ||
* ``` | ||
*/ | ||
isNotNumber(key) { | ||
return ( | ||
this.has(key) && !lodash_1.default.isNumber(this.get(key)) | ||
) | ||
} | ||
/** | ||
* ## container.isNull | ||
* | ||
* Return true if object is null. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNull('my-key') | ||
* // True if container.repository['my-key'] is null | ||
* ``` | ||
*/ | ||
isNull(key) { | ||
return ( | ||
this.has(key) && lodash_1.default.isNull(this.get(key)) | ||
) | ||
} | ||
/** | ||
* ## container.isNotNull | ||
* | ||
* Return true if object is not null. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNotNull('my-key') | ||
* // True if container.repository['my-key'] is not null | ||
* ``` | ||
*/ | ||
isNotNull(key) { | ||
return ( | ||
this.has(key) && !lodash_1.default.isNull(this.get(key)) | ||
) | ||
} | ||
/** | ||
* ## container.isDefined | ||
* | ||
* Return true if object is defined. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isDefined('my-key') | ||
* // True if container has a 'my-key' entry with a definite value. | ||
* ``` | ||
*/ | ||
isDefined(key) { | ||
return ( | ||
this.has(key) && | ||
!lodash_1.default.isUndefined(this.get(key)) | ||
) | ||
} | ||
/** | ||
* ## container.isUndefined | ||
* | ||
* Return true if object is defined. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isDefined('my-key') | ||
* // True if container has a 'my-key' entry with a definite value. | ||
* ``` | ||
*/ | ||
isUndefined(key) { | ||
return ( | ||
!this.has(key) || | ||
lodash_1.default.isUndefined(this.get(key)) | ||
) | ||
} | ||
/** | ||
* ## container.isFunction | ||
* | ||
* Return true if object is a function | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFunction('my-key') | ||
* // True if object associated with 'my-key' is a fn. | ||
* ```` | ||
*/ | ||
isFunction(key) { | ||
return lodash_1.default.isFunction(this.get(key)) | ||
} | ||
} | ||
exports.Container = Container; | ||
//# sourceMappingURL=index.js.map | ||
exports.Container = Container | ||
//# sourceMappingURL=index.js.map |
@@ -1,6 +0,11 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Container = void 0; | ||
var index_1 = require("./Container/index"); | ||
Object.defineProperty(exports, "Container", { enumerable: true, get: function () { return index_1.Container; } }); | ||
//# sourceMappingURL=index.js.map | ||
'use strict' | ||
Object.defineProperty(exports, '__esModule', {value: true}) | ||
exports.Container = void 0 | ||
var index_1 = require('./Container/index') | ||
Object.defineProperty(exports, 'Container', { | ||
enumerable: true, | ||
get: function () { | ||
return index_1.Container | ||
}, | ||
}) | ||
//# sourceMappingURL=index.js.map |
@@ -1,2 +0,2 @@ | ||
import _ from 'lodash'; | ||
import _ from 'lodash' | ||
/** | ||
@@ -6,721 +6,743 @@ * @roots/container | ||
export class Container { | ||
/** | ||
* Class constructor | ||
*/ | ||
constructor(repository) { | ||
this.setStore(repository !== null && repository !== void 0 ? repository : {}); | ||
/** | ||
* Class constructor | ||
*/ | ||
constructor(repository) { | ||
this.setStore( | ||
repository !== null && repository !== void 0 | ||
? repository | ||
: {}, | ||
) | ||
} | ||
/** | ||
* ## container.all | ||
* | ||
* Does the same thing as container.all | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.all() | ||
* ``` | ||
*/ | ||
all() { | ||
return this.repository | ||
} | ||
/** | ||
* ## container.setStore | ||
* | ||
* Replace the store with an all new set of values | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.setStore({ | ||
* new: ['store', 'contents'], | ||
* }) | ||
* ``` | ||
*/ | ||
setStore(repository) { | ||
this.repository = repository | ||
return this | ||
} | ||
/** | ||
* ## container.mergeStore | ||
* | ||
* Merge values onto the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mergeStore({test: 'foo'}) | ||
* ``` | ||
*/ | ||
mergeStore(values) { | ||
this.setStore( | ||
Object.assign(Object.assign({}, this.all()), values), | ||
) | ||
return this | ||
} | ||
/** | ||
* ## container.transformStore | ||
* | ||
* Retrieve the container store, running it through the supplied fn. | ||
* | ||
* Returns the transformed value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.transform(store=> modifiedStore) | ||
* ``` | ||
*/ | ||
transformStore(transformFn) { | ||
return transformFn(this.all()) | ||
} | ||
/** | ||
* ## container.mutateStore | ||
* | ||
* Mutate the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutate('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
mutateStore(mutationFn) { | ||
const transform = this.transformStore(mutationFn) | ||
this.setStore(transform) | ||
return this | ||
} | ||
/** | ||
* ## container.mutateStore | ||
* | ||
* Mutate the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutateStoreEntries((key, value) => value + 1) | ||
* ``` | ||
*/ | ||
mutateStoreEntries(mutateFn) { | ||
this.fromEntries( | ||
this.getEntries().map(([key, value]) => [ | ||
key, | ||
mutateFn(key, value), | ||
]), | ||
) | ||
return this | ||
} | ||
/** | ||
* ## container.get | ||
* | ||
* Get a value from the container. | ||
* | ||
* If no key is passed the container store will be returned. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.get('container.container-item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.get(['container', 'container-item']) | ||
* ``` | ||
*/ | ||
get(key) { | ||
return _.get(this.repository, key) | ||
} | ||
/** | ||
* ## container.getEntries | ||
* | ||
* Get container value as [K, V] tuples. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getEntries() | ||
* ``` | ||
* | ||
* ```js | ||
* container.getEntries('key') | ||
* ``` | ||
*/ | ||
getEntries(key) { | ||
let data = [] | ||
if (!key) { | ||
this.all() && | ||
Object.entries(this.all()).map(entry => data.push(entry)) | ||
} else { | ||
this.has(key) && | ||
this.isIndexed(key) && | ||
Object.entries(this.get(key)).map(entry => | ||
data.push(entry), | ||
) | ||
} | ||
/** | ||
* ## container.all | ||
* | ||
* Does the same thing as container.all | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.all() | ||
* ``` | ||
*/ | ||
all() { | ||
return this.repository; | ||
return data | ||
} | ||
/** | ||
* ## container.fromEntries | ||
* | ||
* Set container value from [K, V] tuples. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getEntries() | ||
* ``` | ||
* | ||
* ```js | ||
* container.getEntries('key') | ||
* ``` | ||
*/ | ||
fromEntries(entries) { | ||
this.mergeStore(Object.fromEntries(entries)) | ||
return this | ||
} | ||
/** | ||
* ## container.withEntries | ||
* | ||
* Use each value as parameters in a supplied callback | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.withEntries('key', (key, value) => doSomething) | ||
* ``` | ||
*/ | ||
each(key, callFn) { | ||
this.getEntries(key).forEach(([key, value]) => [ | ||
key, | ||
callFn(key, value), | ||
]) | ||
return this | ||
} | ||
/** | ||
* ## container.every | ||
* | ||
* Use each value as parameters in a supplied callback | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.withEntries('key', (key, value) => doSomething) | ||
* ``` | ||
*/ | ||
every(fn) { | ||
this.getEntries().forEach(([key, value]) => { | ||
fn(key, value) | ||
}) | ||
return this | ||
} | ||
/** | ||
* Find | ||
*/ | ||
find(...searchItem) { | ||
return _.findKey(this.repository, ...searchItem) | ||
} | ||
/** | ||
* Find in container item | ||
*/ | ||
findIn(key, ...searchItem) { | ||
const parseInner = v => | ||
(!_.isArray(v) ? Object.entries(v) : v).reduce( | ||
(a, [k, v]) => | ||
Object.assign(Object.assign({}, a), {[k]: v}), | ||
{}, | ||
) | ||
return _.findKey(parseInner(this.get(key)), ...searchItem) | ||
} | ||
/** | ||
* ## container.mutateEntries | ||
* | ||
* Mutate each value via a supplied mutagen. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutateEntries('key', (key, value) => value + 1) | ||
* ``` | ||
*/ | ||
mutateEntries(key, mutateFn) { | ||
this.fromEntries( | ||
this.getEntries(key).map(([key, value]) => [ | ||
key, | ||
mutateFn(key, value), | ||
]), | ||
) | ||
return this | ||
} | ||
/** | ||
* ## container.getValues | ||
* | ||
* Get an item value. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getValues('container.container-item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.getValues() | ||
* // => returns values from entire store | ||
* ``` | ||
*/ | ||
getValues(key) { | ||
return Object.values(key ? this.get(key) : this.all()) | ||
} | ||
/** | ||
* ## container.getKeys | ||
* | ||
* Get an item's keys. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getKeys('item') | ||
* // => returns keys of container.repository[item] | ||
* ``` | ||
* | ||
* ```js | ||
* container.getKeys() | ||
* // => returns keys of container.repository | ||
* ``` | ||
*/ | ||
getKeys(key) { | ||
return Object.keys(key ? this.get(key) : this.all()) | ||
} | ||
/** | ||
* ## container.getMap | ||
* | ||
* Get an item as a Map datatype. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getMap('item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.getMap() | ||
* ``` | ||
*/ | ||
getMap(key) { | ||
const reducer = [ | ||
(map, [key, value]) => { | ||
map.set(key, value) | ||
return map | ||
}, | ||
new Map(), | ||
] | ||
return this.getEntries( | ||
key !== null && key !== void 0 ? key : null, | ||
).reduce(...reducer) | ||
} | ||
/** | ||
* ## container.set | ||
* | ||
* Set a value on a container item. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.set('key', value) | ||
* ``` | ||
*/ | ||
set(key, value) { | ||
_.set(this.repository, key, value) | ||
return this | ||
} | ||
/** | ||
* ## container.push | ||
* | ||
* Push an item or entry onto the container | ||
* | ||
* ```js | ||
* container.unique('containerKey') // unique values of containerKey | ||
* ``` | ||
* | ||
* ```js | ||
* container.unique() // unique values of container | ||
* ``` | ||
*/ | ||
push(value, key) { | ||
if (key) { | ||
this.mutate(key, k => k.push(value)) | ||
return this | ||
} | ||
/** | ||
* ## container.setStore | ||
* | ||
* Replace the store with an all new set of values | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.setStore({ | ||
* new: ['store', 'contents'], | ||
* }) | ||
* ``` | ||
*/ | ||
setStore(repository) { | ||
this.repository = repository; | ||
return this; | ||
if (!_.isArray(this.all())) { | ||
throw new Error( | ||
'Type mismatch: Attempted to push onto object container as if it were an array.', | ||
) | ||
} | ||
/** | ||
* ## container.mergeStore | ||
* | ||
* Merge values onto the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mergeStore({test: 'foo'}) | ||
* ``` | ||
*/ | ||
mergeStore(values) { | ||
this.setStore(Object.assign(Object.assign({}, this.all()), values)); | ||
return this; | ||
} | ||
/** | ||
* ## container.transformStore | ||
* | ||
* Retrieve the container store, running it through the supplied fn. | ||
* | ||
* Returns the transformed value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.transform(store=> modifiedStore) | ||
* ``` | ||
*/ | ||
transformStore(transformFn) { | ||
return transformFn(this.all()); | ||
} | ||
/** | ||
* ## container.mutateStore | ||
* | ||
* Mutate the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutate('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
mutateStore(mutationFn) { | ||
const transform = this.transformStore(mutationFn); | ||
this.setStore(transform); | ||
return this; | ||
} | ||
/** | ||
* ## container.mutateStore | ||
* | ||
* Mutate the container store. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutateStoreEntries((key, value) => value + 1) | ||
* ``` | ||
*/ | ||
mutateStoreEntries(mutateFn) { | ||
this.fromEntries(this.getEntries().map(([key, value]) => [ | ||
key, | ||
mutateFn(key, value), | ||
])); | ||
return this; | ||
} | ||
/** | ||
* ## container.get | ||
* | ||
* Get a value from the container. | ||
* | ||
* If no key is passed the container store will be returned. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.get('container.container-item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.get(['container', 'container-item']) | ||
* ``` | ||
*/ | ||
get(key) { | ||
return _.get(this.repository, key); | ||
} | ||
/** | ||
* ## container.getEntries | ||
* | ||
* Get container value as [K, V] tuples. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getEntries() | ||
* ``` | ||
* | ||
* ```js | ||
* container.getEntries('key') | ||
* ``` | ||
*/ | ||
getEntries(key) { | ||
let data = []; | ||
if (!key) { | ||
this.all() && | ||
Object.entries(this.all()).map(entry => data.push(entry)); | ||
} | ||
else { | ||
this.has(key) && | ||
this.isIndexed(key) && | ||
Object.entries(this.get(key)).map(entry => data.push(entry)); | ||
} | ||
return data; | ||
} | ||
/** | ||
* ## container.fromEntries | ||
* | ||
* Set container value from [K, V] tuples. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getEntries() | ||
* ``` | ||
* | ||
* ```js | ||
* container.getEntries('key') | ||
* ``` | ||
*/ | ||
fromEntries(entries) { | ||
this.mergeStore(Object.fromEntries(entries)); | ||
return this; | ||
} | ||
/** | ||
* ## container.withEntries | ||
* | ||
* Use each value as parameters in a supplied callback | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.withEntries('key', (key, value) => doSomething) | ||
* ``` | ||
*/ | ||
each(key, callFn) { | ||
this.getEntries(key).forEach(([key, value]) => [ | ||
key, | ||
callFn(key, value), | ||
]); | ||
return this; | ||
} | ||
/** | ||
* ## container.every | ||
* | ||
* Use each value as parameters in a supplied callback | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.withEntries('key', (key, value) => doSomething) | ||
* ``` | ||
*/ | ||
every(fn) { | ||
this.getEntries().forEach(([key, value]) => { | ||
fn(key, value); | ||
}); | ||
return this; | ||
} | ||
/** | ||
* Find | ||
*/ | ||
find(...searchItem) { | ||
return _.findKey(this.repository, ...searchItem); | ||
} | ||
/** | ||
* Find in container item | ||
*/ | ||
findIn(key, ...searchItem) { | ||
const parseInner = v => (!_.isArray(v) ? Object.entries(v) : v).reduce((a, [k, v]) => (Object.assign(Object.assign({}, a), { [k]: v })), {}); | ||
return _.findKey(parseInner(this.get(key)), ...searchItem); | ||
} | ||
/** | ||
* ## container.mutateEntries | ||
* | ||
* Mutate each value via a supplied mutagen. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutateEntries('key', (key, value) => value + 1) | ||
* ``` | ||
*/ | ||
mutateEntries(key, mutateFn) { | ||
this.fromEntries(this.getEntries(key).map(([key, value]) => [ | ||
key, | ||
mutateFn(key, value), | ||
])); | ||
return this; | ||
} | ||
/** | ||
* ## container.getValues | ||
* | ||
* Get an item value. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getValues('container.container-item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.getValues() | ||
* // => returns values from entire store | ||
* ``` | ||
*/ | ||
getValues(key) { | ||
return Object.values(key ? this.get(key) : this.all()); | ||
} | ||
/** | ||
* ## container.getKeys | ||
* | ||
* Get an item's keys. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getKeys('item') | ||
* // => returns keys of container.repository[item] | ||
* ``` | ||
* | ||
* ```js | ||
* container.getKeys() | ||
* // => returns keys of container.repository | ||
* ``` | ||
*/ | ||
getKeys(key) { | ||
return Object.keys(key ? this.get(key) : this.all()); | ||
} | ||
/** | ||
* ## container.getMap | ||
* | ||
* Get an item as a Map datatype. | ||
* | ||
* If no key is passed the container store will be used. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.getMap('item') | ||
* ``` | ||
* | ||
* ```js | ||
* container.getMap() | ||
* ``` | ||
*/ | ||
getMap(key) { | ||
const reducer = [ | ||
(map, [key, value]) => { | ||
map.set(key, value); | ||
return map; | ||
}, | ||
new Map(), | ||
]; | ||
return this.getEntries(key !== null && key !== void 0 ? key : null).reduce(...reducer); | ||
} | ||
/** | ||
* ## container.set | ||
* | ||
* Set a value on a container item. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.set('key', value) | ||
* ``` | ||
*/ | ||
set(key, value) { | ||
_.set(this.repository, key, value); | ||
return this; | ||
} | ||
/** | ||
* ## container.push | ||
* | ||
* Push an item or entry onto the container | ||
* | ||
* ```js | ||
* container.unique('containerKey') // unique values of containerKey | ||
* ``` | ||
* | ||
* ```js | ||
* container.unique() // unique values of container | ||
* ``` | ||
*/ | ||
push(value, key) { | ||
if (key) { | ||
this.mutate(key, k => k.push(value)); | ||
return this; | ||
} | ||
if (!_.isArray(this.all())) { | ||
throw new Error('Type mismatch: Attempted to push onto object container as if it were an array.'); | ||
} | ||
this.setStore(this.all().push(value)); | ||
return this; | ||
} | ||
/** | ||
* ## container.transform | ||
* | ||
* Retrieve a container item, running it through the supplied fn. | ||
* | ||
* Returns the transformed value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.transform('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
transform(key, mutationFn) { | ||
return mutationFn(this.get(key)); | ||
} | ||
/** | ||
* ## container.mutate | ||
* | ||
* Mutate a container item. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutate('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
mutate(key, mutationFn) { | ||
this.set(key, this.transform(key, mutationFn)); | ||
return this; | ||
} | ||
/** | ||
* ## container.merge | ||
* | ||
* Merge a container item. | ||
* | ||
* If no key is supplied the value will be merged onto the store itself. | ||
* | ||
* ```js | ||
* container.merge('key', {merge: values}) | ||
* ``` | ||
*/ | ||
merge(key, value) { | ||
this.set(key, _.merge(this.get(key), value)); | ||
return this; | ||
} | ||
/** | ||
* ## container.has | ||
* | ||
* Return a boolean indicating if a given key exists. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.has('my-key') | ||
* // true if container.repository['my-key'] exists | ||
* ``` | ||
*/ | ||
has(key) { | ||
return _.has(this.repository, key) ? true : false; | ||
} | ||
/** | ||
* ## container.delete | ||
* | ||
* Delete an entry from the repository | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.remove('my-key') | ||
* // Remove container.repository['my-key'] | ||
* ``` | ||
*/ | ||
remove(key) { | ||
delete this.repository[key]; | ||
return this; | ||
} | ||
/** | ||
* ## container.is | ||
* | ||
* Return a boolean indicating if the given key matches the given value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.is('my-key', {whatever: 'value'}) | ||
* // True if container.repository['my-key'] === {whatever: 'value'} | ||
* ``` | ||
*/ | ||
is(key, value) { | ||
return this.get(key) === value; | ||
} | ||
/** | ||
* ## container.isTrue | ||
* | ||
* Return a boolean indicating if the given key's value is true | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isTrue('my-key') | ||
* // True if container.repository['my-key'] === true | ||
* ``` | ||
*/ | ||
isTrue(key) { | ||
return this.is(key, true || 'true'); | ||
} | ||
/** | ||
* ## container.enabled | ||
* | ||
* Same as container.isTrue. | ||
* | ||
* Return a boolean indicating if the given key's value is true | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isTrue('my-key') | ||
* // True if container.repository['my-key'] === true | ||
* ``` | ||
*/ | ||
enabled(key) { | ||
return this.is(key, true || 'true'); | ||
} | ||
/** | ||
* ## container.isFalse | ||
* | ||
* Return a boolean indicating if the given key's value is false | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFalse('my-key') | ||
* // True if container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
isFalse(key) { | ||
return this.is(key, false || 'false'); | ||
} | ||
/** | ||
* ## container.disabled | ||
* | ||
* Same as container.isFalse | ||
* | ||
* Return a boolean indicating if the given key's value is `false` | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFalse('my-key') | ||
* // True if container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
disabled(key) { | ||
return this.isFalse(key || 'false'); | ||
} | ||
/** | ||
* ## container.enable | ||
* | ||
* Set the value of the given key to `true`. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.enable('my-key') | ||
* // => container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
enable(key) { | ||
this.set(key, true); | ||
} | ||
/** | ||
* ## container.disable | ||
* | ||
* Set the value of the given key to `false`. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.disable('my-key') | ||
* // => container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
disable(key) { | ||
this.set(key, false); | ||
} | ||
/** | ||
* ## container.isIndexed | ||
* | ||
* Return true if object is likely a vanilla object with | ||
* string keys. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isIndexed('my-key') | ||
* // True if container.repository['my-key'] appears to be an object. | ||
* ``` | ||
*/ | ||
isIndexed(key) { | ||
const value = key ? this.get(key) : this.all(); | ||
return (this.has(key) && | ||
_.isObject(value) && | ||
!_.isArrayLikeObject(value)); | ||
} | ||
/** | ||
* ## container.isArray | ||
* | ||
* Return true if object is an array. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isArray('my-key') | ||
* // True if container.repository['my-key'] is an array | ||
* ``` | ||
*/ | ||
isArray(key) { | ||
return this.has(key) && _.isArray(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNotArray | ||
* | ||
* Return true if object is not an array. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNotArray('my-key') | ||
* // True if container.repository['my-key'] is not an array | ||
* ``` | ||
*/ | ||
isNotArray(key) { | ||
return this.has(key) && !_.isArray(this.get(key)); | ||
} | ||
/** | ||
* ## container.isString | ||
* | ||
* Return true if object is a string. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isString('my-key') | ||
* // True if container.repository['my-key'] is a string | ||
* ``` | ||
*/ | ||
isString(key) { | ||
return this.has(key) && _.isString(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNotString | ||
* | ||
* Return true if object is a string. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isString('my-key') | ||
* // True if container.repository['my-key'] is not a string | ||
* ``` | ||
*/ | ||
isNotString(key) { | ||
return this.has(key) && !_.isString(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNumber | ||
* | ||
* Return true if object is a number. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNumber('my-key') | ||
* // True if container.repository['my-key'] is a number | ||
* ``` | ||
*/ | ||
isNumber(key) { | ||
return this.has(key) && _.isNumber(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNotNumber | ||
* | ||
* Return true if object is not a number. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNumber('my-key') | ||
* // True if container.repository['my-key'] is not a number | ||
* ``` | ||
*/ | ||
isNotNumber(key) { | ||
return this.has(key) && !_.isNumber(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNull | ||
* | ||
* Return true if object is null. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNull('my-key') | ||
* // True if container.repository['my-key'] is null | ||
* ``` | ||
*/ | ||
isNull(key) { | ||
return this.has(key) && _.isNull(this.get(key)); | ||
} | ||
/** | ||
* ## container.isNotNull | ||
* | ||
* Return true if object is not null. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNotNull('my-key') | ||
* // True if container.repository['my-key'] is not null | ||
* ``` | ||
*/ | ||
isNotNull(key) { | ||
return this.has(key) && !_.isNull(this.get(key)); | ||
} | ||
/** | ||
* ## container.isDefined | ||
* | ||
* Return true if object is defined. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isDefined('my-key') | ||
* // True if container has a 'my-key' entry with a definite value. | ||
* ``` | ||
*/ | ||
isDefined(key) { | ||
return this.has(key) && !_.isUndefined(this.get(key)); | ||
} | ||
/** | ||
* ## container.isUndefined | ||
* | ||
* Return true if object is defined. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isDefined('my-key') | ||
* // True if container has a 'my-key' entry with a definite value. | ||
* ``` | ||
*/ | ||
isUndefined(key) { | ||
return !this.has(key) || _.isUndefined(this.get(key)); | ||
} | ||
/** | ||
* ## container.isFunction | ||
* | ||
* Return true if object is a function | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFunction('my-key') | ||
* // True if object associated with 'my-key' is a fn. | ||
* ```` | ||
*/ | ||
isFunction(key) { | ||
return _.isFunction(this.get(key)); | ||
} | ||
this.setStore(this.all().push(value)) | ||
return this | ||
} | ||
/** | ||
* ## container.transform | ||
* | ||
* Retrieve a container item, running it through the supplied fn. | ||
* | ||
* Returns the transformed value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.transform('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
transform(key, mutationFn) { | ||
return mutationFn(this.get(key)) | ||
} | ||
/** | ||
* ## container.mutate | ||
* | ||
* Mutate a container item. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.mutate('key', currentValue => modifiedValue) | ||
* ``` | ||
*/ | ||
mutate(key, mutationFn) { | ||
this.set(key, this.transform(key, mutationFn)) | ||
return this | ||
} | ||
/** | ||
* ## container.merge | ||
* | ||
* Merge a container item. | ||
* | ||
* If no key is supplied the value will be merged onto the store itself. | ||
* | ||
* ```js | ||
* container.merge('key', {merge: values}) | ||
* ``` | ||
*/ | ||
merge(key, value) { | ||
this.set(key, _.merge(this.get(key), value)) | ||
return this | ||
} | ||
/** | ||
* ## container.has | ||
* | ||
* Return a boolean indicating if a given key exists. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.has('my-key') | ||
* // true if container.repository['my-key'] exists | ||
* ``` | ||
*/ | ||
has(key) { | ||
return _.has(this.repository, key) ? true : false | ||
} | ||
/** | ||
* ## container.delete | ||
* | ||
* Delete an entry from the repository | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.remove('my-key') | ||
* // Remove container.repository['my-key'] | ||
* ``` | ||
*/ | ||
remove(key) { | ||
delete this.repository[key] | ||
return this | ||
} | ||
/** | ||
* ## container.is | ||
* | ||
* Return a boolean indicating if the given key matches the given value. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.is('my-key', {whatever: 'value'}) | ||
* // True if container.repository['my-key'] === {whatever: 'value'} | ||
* ``` | ||
*/ | ||
is(key, value) { | ||
return this.get(key) === value | ||
} | ||
/** | ||
* ## container.isTrue | ||
* | ||
* Return a boolean indicating if the given key's value is true | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isTrue('my-key') | ||
* // True if container.repository['my-key'] === true | ||
* ``` | ||
*/ | ||
isTrue(key) { | ||
return this.is(key, true || 'true') | ||
} | ||
/** | ||
* ## container.enabled | ||
* | ||
* Same as container.isTrue. | ||
* | ||
* Return a boolean indicating if the given key's value is true | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isTrue('my-key') | ||
* // True if container.repository['my-key'] === true | ||
* ``` | ||
*/ | ||
enabled(key) { | ||
return this.is(key, true || 'true') | ||
} | ||
/** | ||
* ## container.isFalse | ||
* | ||
* Return a boolean indicating if the given key's value is false | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFalse('my-key') | ||
* // True if container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
isFalse(key) { | ||
return this.is(key, false || 'false') | ||
} | ||
/** | ||
* ## container.disabled | ||
* | ||
* Same as container.isFalse | ||
* | ||
* Return a boolean indicating if the given key's value is `false` | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFalse('my-key') | ||
* // True if container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
disabled(key) { | ||
return this.isFalse(key || 'false') | ||
} | ||
/** | ||
* ## container.enable | ||
* | ||
* Set the value of the given key to `true`. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.enable('my-key') | ||
* // => container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
enable(key) { | ||
this.set(key, true) | ||
} | ||
/** | ||
* ## container.disable | ||
* | ||
* Set the value of the given key to `false`. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.disable('my-key') | ||
* // => container.repository['my-key'] === false | ||
* ``` | ||
*/ | ||
disable(key) { | ||
this.set(key, false) | ||
} | ||
/** | ||
* ## container.isIndexed | ||
* | ||
* Return true if object is likely a vanilla object with | ||
* string keys. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isIndexed('my-key') | ||
* // True if container.repository['my-key'] appears to be an object. | ||
* ``` | ||
*/ | ||
isIndexed(key) { | ||
const value = key ? this.get(key) : this.all() | ||
return ( | ||
this.has(key) && | ||
_.isObject(value) && | ||
!_.isArrayLikeObject(value) | ||
) | ||
} | ||
/** | ||
* ## container.isArray | ||
* | ||
* Return true if object is an array. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isArray('my-key') | ||
* // True if container.repository['my-key'] is an array | ||
* ``` | ||
*/ | ||
isArray(key) { | ||
return this.has(key) && _.isArray(this.get(key)) | ||
} | ||
/** | ||
* ## container.isNotArray | ||
* | ||
* Return true if object is not an array. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNotArray('my-key') | ||
* // True if container.repository['my-key'] is not an array | ||
* ``` | ||
*/ | ||
isNotArray(key) { | ||
return this.has(key) && !_.isArray(this.get(key)) | ||
} | ||
/** | ||
* ## container.isString | ||
* | ||
* Return true if object is a string. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isString('my-key') | ||
* // True if container.repository['my-key'] is a string | ||
* ``` | ||
*/ | ||
isString(key) { | ||
return this.has(key) && _.isString(this.get(key)) | ||
} | ||
/** | ||
* ## container.isNotString | ||
* | ||
* Return true if object is a string. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isString('my-key') | ||
* // True if container.repository['my-key'] is not a string | ||
* ``` | ||
*/ | ||
isNotString(key) { | ||
return this.has(key) && !_.isString(this.get(key)) | ||
} | ||
/** | ||
* ## container.isNumber | ||
* | ||
* Return true if object is a number. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNumber('my-key') | ||
* // True if container.repository['my-key'] is a number | ||
* ``` | ||
*/ | ||
isNumber(key) { | ||
return this.has(key) && _.isNumber(this.get(key)) | ||
} | ||
/** | ||
* ## container.isNotNumber | ||
* | ||
* Return true if object is not a number. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNumber('my-key') | ||
* // True if container.repository['my-key'] is not a number | ||
* ``` | ||
*/ | ||
isNotNumber(key) { | ||
return this.has(key) && !_.isNumber(this.get(key)) | ||
} | ||
/** | ||
* ## container.isNull | ||
* | ||
* Return true if object is null. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNull('my-key') | ||
* // True if container.repository['my-key'] is null | ||
* ``` | ||
*/ | ||
isNull(key) { | ||
return this.has(key) && _.isNull(this.get(key)) | ||
} | ||
/** | ||
* ## container.isNotNull | ||
* | ||
* Return true if object is not null. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isNotNull('my-key') | ||
* // True if container.repository['my-key'] is not null | ||
* ``` | ||
*/ | ||
isNotNull(key) { | ||
return this.has(key) && !_.isNull(this.get(key)) | ||
} | ||
/** | ||
* ## container.isDefined | ||
* | ||
* Return true if object is defined. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isDefined('my-key') | ||
* // True if container has a 'my-key' entry with a definite value. | ||
* ``` | ||
*/ | ||
isDefined(key) { | ||
return this.has(key) && !_.isUndefined(this.get(key)) | ||
} | ||
/** | ||
* ## container.isUndefined | ||
* | ||
* Return true if object is defined. | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isDefined('my-key') | ||
* // True if container has a 'my-key' entry with a definite value. | ||
* ``` | ||
*/ | ||
isUndefined(key) { | ||
return !this.has(key) || _.isUndefined(this.get(key)) | ||
} | ||
/** | ||
* ## container.isFunction | ||
* | ||
* Return true if object is a function | ||
* | ||
* ### Usage | ||
* | ||
* ```js | ||
* container.isFunction('my-key') | ||
* // True if object associated with 'my-key' is a fn. | ||
* ```` | ||
*/ | ||
isFunction(key) { | ||
return _.isFunction(this.get(key)) | ||
} | ||
} | ||
//# sourceMappingURL=index.js.map | ||
//# sourceMappingURL=index.js.map |
@@ -1,2 +0,2 @@ | ||
export { Container } from './Container/index'; | ||
//# sourceMappingURL=index.js.map | ||
export {Container} from './Container/index' | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@roots/container", | ||
"version": "4.0.1", | ||
"version": "4.1.0", | ||
"description": "Collections utility", | ||
@@ -5,0 +5,0 @@ "homepage": "https://roots.io/bud", |
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
2143
471731