@basd/nested v0.0.0
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
.rootproperty for accessing the root of the hierarchy. .sub()method for creating sub-nodes.
Installation
npm install @basd/nestedUsage
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) // trueDynamic 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 installTo run the tests:
npm testContributing
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):
1JUb1yNFH6wjGekRUW6Dfgyg4J4h6wKKdFMonero (XMR):
46uV2fMZT3EWkBrGUgszJCcbqFqEvqrB4bZBJwsbx7yA8e2WBakXzJSUK8aqT4GoqERzbg4oKT2SiPeCgjzVH6VpSQ5y7KQLicense
Nested is MIT licensed.
2 years ago