@basd/nested
v0.0.0
Published
Allows you to create deeply nested object structures, while also enabling you to traverse them efficiently.
Downloads
20
Maintainers
Readme
Nested
Provides nesting capabilities to classes allowing you to create deeply nested object structures, while also enabling you to traverse them efficiently.
Features
- Simple API for creating nested object hierarchies.
- Built-in
.root
property for accessing the root of the hierarchy. .sub()
method for creating sub-nodes.
Installation
npm install @basd/nested
Usage
Import the Nested
class mixin from the package:
import Nested from '@basd/nested'
or
const Nested = require('@basd/nested')
Create a nested instance
const nested = new Nested()
Extend your own class with the Nested
mixin:
class MyClass extends Nested {
// Your implementation here
}
const root = new MyClass()
Create a Nested Object
const nodeA = root.sub('nodeA')
const nodeB = nodeA.sub('nodeB')
Access Parent and Root Nodes
console.log(nodeB.parent === nodeA) // true
console.log(nodeB.root === root) // true
Dynamic Options
You can use a function as options to sub()
:
const dynamicNode = root.sub('dynamic', (node, part) => ({
someOption: `${node.someOption}/${part}`
}))
Documentation
Nested.mixin(childClass)
Mix the Nested
functionality into a childClass
.
root()
Returns the root node of the current hierarchy.
sub(path, opts, ...args)
Creates a sub-node at the specified path
. You can optionally pass a custom opts
object or a function for dynamic configuration.
Tests
In order to run the test suite, simply clone the repository and install its dependencies:
git clone https://gitlab.com/frenware/utils/nested.git
cd nested
npm install
To run the tests:
npm test
Contributing
Thank you! Please see our contributing guidelines for details.
Donations
If you find this project useful and want to help support further development, please send us some coin. We greatly appreciate any and all contributions. Thank you!
Bitcoin (BTC):
1JUb1yNFH6wjGekRUW6Dfgyg4J4h6wKKdF
Monero (XMR):
46uV2fMZT3EWkBrGUgszJCcbqFqEvqrB4bZBJwsbx7yA8e2WBakXzJSUK8aqT4GoqERzbg4oKT2SiPeCgjzVH6VpSQ5y7KQ
License
Nested is MIT licensed.