You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.0 KiB
32 lines
1.0 KiB
/** |
|
* Sets a constant default value for the property when it is undefined. |
|
* @template T |
|
* @template {keyof T} Property |
|
* @param {T} object An object. |
|
* @param {Property} property A property of the provided object. |
|
* @param {T[Property]} [defaultValue] The default value to set for the property. |
|
* @returns {T[Property]} The defaulted property value. |
|
*/ |
|
const d = (object, property, defaultValue) => { |
|
if (typeof object[property] === 'undefined' && typeof defaultValue !== 'undefined') { |
|
object[property] = defaultValue; |
|
} |
|
return object[property]; |
|
}; |
|
|
|
/** |
|
* Resolves the value for a nested object option. |
|
* @template T |
|
* @template {keyof T} Property |
|
* @template Result |
|
* @param {T} object An object. |
|
* @param {Property} property A property of the provided object. |
|
* @param {function(T | undefined): Result} fn The handler to resolve the property's value. |
|
* @returns {Result} The resolved option value. |
|
*/ |
|
const n = (object, property, fn) => { |
|
object[property] = fn(object[property]); |
|
return object[property]; |
|
}; |
|
|
|
module.exports = { d, n };
|
|
|