<img src="https://open.inf.is/assets/img/svg/logogram-color.svg" alt="OpenINF logo" title="OpenINF" align="right" height="96" width="96" />
The high-level goal of @openinf/util-object
is to serve as a Node.js package
containing utilities for common JavaScript object type-related operations
primarily enabling users to perform comparisons and analyze object contents. We
are constantly working to improve this repository, so please feel free to
contribute if you notice any omissions or errors.
Thanks!
import { hasOwn } from '@openinf/util-object';
export class GhFileImporter {
constructor(options: GhFileImporterOptions) {
if (!hasOwn(options, 'destDir')) {
throw new MissingOptionError('destDir');
}
}
}
T
Returns a map-like object. If opt_initial
is provided, copies its own
properties into the newly created object.
boolean
Checks if the given key is a property in the map.
unknown
Returns obj[key] iff key is obj's own property (is not inherited). Otherwise, returns undefined.
Object
Deep merges source into target.
Record<string, (number|RegExp)>
boolean
R
Takes an object, a property name, and a factory function. If the value of the property is undefined, it generates a value with the factory function, updates the object originally passed, and returns the value that was returned by the factory function.
T
Returns a map-like object. If `opt_initial` is provided, copies its own
properties into the newly created object.
**Kind**: global function
| Param | Type | Description |
| ------------- | -------------- | ------------------------------------------- |
| [opt_initial] | T
| This should typically be an object literal. |
#### hasOwn(obj, key) ⇒ boolean
Checks if the given key is a property in the map.
**Kind**: global function
| Param | Type | Description |
| ----- | ------------------- | -------------------- |
| obj | T
| a map like property. |
| key | string
| |
#### ownProperty(obj, key) ⇒ unknown
Returns obj[key] iff key is obj's own property (is not inherited). Otherwise,
returns undefined.
**Kind**: global function
| Param | Type |
| ----- | ---------------------------------------------------- |
| obj | Record<string, (number\|RegExp)>
|
| key | string
|
#### deepMerge(target, source, depth) ⇒ Object
Deep merges source into target.
**Kind**: global function
**Throws**:
- Error
If source contains a circular reference. Note: Only nested
objects are deep-merged, primitives and arrays are not.
| Param | Type | Default | Description |
| ------ | ------------------- | --------------- | ------------------------------------------------------------------------- |
| target | Object
| | |
| source | Object
| | |
| depth | number
| 10
| The maximum merge depth. If exceeded, Object.assign will be used instead. |
##### deepMerge~queue : Array<ITargetSourceDepth>
**Kind**: inner constant of [deepMerge
](#deepMerge)
#### omit(o, props) ⇒ Record<string, (number\|RegExp)>
**Kind**: global function
**Returns**: Record<string, (number\|RegExp)>
- An object
with the given properties removed.
| Param | Type | Description |
| ----- | ---------------------------------------------------- | ----------------------------------------------- |
| o | Record<string, (number\|RegExp)>
| An object to remove properties from. |
| props | Array<string>
| A list of properties to remove from the Object. |
#### objectsEqualShallow(o1, o2) ⇒ boolean
**Kind**: global function
| Param | Type |
| ----- | ---------------------------------------------------------------------------------------------------- |
| o1 | !Record<string, (number\|RegExp)>
\| null
\| undefined
|
| o2 | !Record<string, (number\|RegExp)>
\| null
\| undefined
|
#### memo(obj, prop, factory) ⇒ R
Takes an object, a property name, and a factory function. If the value of the
property is undefined, it generates a value with the factory function, updates
the object originally passed, and returns the value that was returned by the
factory function.
**Kind**: global function
| Param | Type |
| ------- | --------------------- |
| obj | T
|
| prop | string
|
| factory | function
|
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. If for whatever reason you spot something to fix but cannot patch it yourself, please open an issue.
This project is licensed under either of
at your option.
The SPDX license identifier for this project is
MIT OR Apache-2.0
.