@basd/nested

0.0.0 • Public • Published

Nested

npm pipeline license downloads

Gitlab Github Twitter Discord

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.

Package Sidebar

Install

npm i @basd/nested

Weekly Downloads

4

Version

0.0.0

License

MIT

Unpacked Size

12.8 kB

Total Files

9

Last publish

Collaborators

  • basedwon