pure-graph-utils

1.4.19 • Public • Published

pure-graph-utils

npm npm bundle size

Graph generation and handling utils, built with pure functions.

Disclaimer

This project is no longer being maintained.

Table of contents

Installation

npm install pure-graph-utils

API

To get a better grasp of each function's behavior, please check the tests file.

createNode(id, value)

Returns an object with an 'id' and a 'value' properties.

createNode('nodeId', 'nodeValue')

// Output
{
  id: 'nodeId',
  value: 'nodeValue'
}

changeNodeId(newId, node)

Returns a new node with newNode.id === newId.

changeNodeId(
  'newId',
  createNode('nodeId', 'nodeValue')
)

// Output
{
  id: 'newId',
  value: 'nodeValue'
}

addNodeProperty(propKey, propValue, node)

Returns a new node with newNode[propKey] === propValue.

addNodeProperty(
  'extraProperty',
  'extraPropertyValue',
  createNode('nodeId', 'nodeValue')
)

// Output
{
  extraProperty: 'extraPropertyValue',
  id: 'nodeId',
  value: 'nodeValue'
}

editNodeProperty(propKey, propNewValue, node)

Returns a new node with newNode[propKey] === propNewValue.

editNodeProperty(
  'value',
  'newValue',
  createNode('nodeId', 'nodeValue')
)

// Output
{
  id: 'nodeId',
  value: 'newValue'
}

removeNodeProperty(propKey, node)

Returns a new node without propKey.

removeNodeProperty(
  'value',
  createNode('nodeId', 'nodeValue')
)

// Output
{
  id: 'nodeId',
}

createGraph(node)

Returns an object with node.

createGraph(createNode('nodeId', 'nodeValue'))

// Output
{
  nodeId: {
    connections: [],
    id: 'nodeId',
    value: 'nodeValue'
  }
}

changeGraphNodeId(nodeId, nodeNewId, graph)

Returns a new graph with graph[nodeId] adapted to newGraph[nodeNewId].

changeGraphNodeId(
  'nodeId',
  'nodeNewId',
  createGraph(createNode('nodeId', 'nodeValue'))
)

// Output
{
  nodeNewId: {
    connections: [],
    id: 'nodeNewId',
    value: 'nodeValue'
  }
}

addNode(node, graph)

Returns a new graph with node.

addNode(
  createNode('id2', 'value2'),
  createGraph(createNode('id1', 'value1'))
)

// Output
{
  id1: {
    connections: [],
    id: 'id1',
    value: 'value1'
  },
  id2: {
    connections: [],
    id: 'id2',
    value: 'value2'
  }
}

addGraphNodeProperty(nodeId, propKey, propValue, graph)

Returns a new graph with newGraph[nodeId][propKey] === propValue.

addGraphNodeProperty(
  'nodeId',
  'extraProperty',
  'extraPropertyValue',
  createGraph(createNode('nodeId', 'nodeValue'))
)

// Output
{
  nodeId: {
    connections: [],
    extraProperty: 'extraPropertyValue',
    id: 'nodeId',
    value: 'nodeValue'
  }
}

editGraphNodeProperty(nodeId, propKey, propNewValue, graph)

Returns a new graph with newGraph[nodeId][propKey] === propNewValue.

editGraphNodeProperty(
  'nodeId',
  'value',
  'newValue',
  createGraph(createNode('nodeId', 'nodeValue'))
)

// Output
{
  nodeId: {
    connections: [],
    id: 'nodeId',
    value: 'newValue'
  }
}

removeGraphNodeProperty(nodeId, propKey, graph)

Returns a new graph without graph[nodeId]'s propKey.

removeGraphNodeProperty(
  'nodeId',
  'value',
  createGraph(createNode('nodeId', 'nodeValue'))
)

// Output
{
  nodeId: {
    connections: [],
    id: 'nodeId'
  }
}

addConnection(nodeAId, nodeBId, graph)

Returns a new graph with nodeA and nodeB connected.

addConnection(
  'id1',
  'id2',
  addNode(
    createNode('id2', 'value2'),
    createGraph(createNode('id1', 'value1'))
  )
)


// Output
{
  id1: {
    connections: ['id2'],
    id: 'id1',
    value: 'value1'
  },
  id2: {
    connections: ['id1'],
    id: 'id2',
    value: 'value2'
  }
}

removeConnection(nodeAId, nodeBId, graph)

Returns a new graph with nodeA and nodeB disconnected.

removeConnection(
  'id1',
  'id2',
  addConnection(
    'id1',
    'id2',
    addNode(
      createNode('id2', 'value2'),
      createGraph(createNode('id1', 'value1'))
    )
  )
)


// Output
{
  id1: {
    connections: [],
    id: 'id1',
    value: 'value1'
  },
  id2: {
    connections: [],
    id: 'id2',
    value: 'value2'
  }
}

removeAllConnections(nodeId, graph)

Returns a new graph with graph[nodeId] disconnected from other nodes.

removeAllConnections(
  'id1',
  addConnection(
    'id2',
    'id3',
    addConnection(
      'id1',
      'id3',
      addConnection(
        'id1',
        'id2',
        addNode(
          createNode('id3', 'value3'),
          addNode(
            createNode('id2', 'value2'),
            createGraph(createNode('id1', 'value1'))
          )
        )
      )
    )
  )
)


// Output
{
  id1: {
    connections: [],
    id: 'id1',
    value: 'value1'
  },
  id2: {
    connections: ['id3'],
    id: 'id2',
    value: 'value2'
  },
  id3: {
    connections: ['id2'],
    id: 'id3',
    value: 'value3'
  }
}

removeNode(nodeId, graph)

Returns a new graph without graph[nodeId].

removeNode(
  'id1',
  addNode(
    createNode('id2', 'value2'),
    createGraph(createNode('id1', 'value1'))
  )
)

// Output
{
  id2: {
    connections: [],
    id: 'id2',
    value: 'value2'
  }
}

Development

Testing

Single run

npm run test

Watch mode

npm run test:watch

Building

npm run build

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
1.4.191latest

Version History

VersionDownloads (Last 7 Days)Published
1.4.191
1.4.180
1.4.170
1.4.160
1.4.150
1.4.140
1.4.130
1.4.120
1.4.110
1.4.100
1.4.90
1.4.80
1.4.70
1.4.60
1.4.51
1.4.40
1.4.30
1.4.00
1.3.00
1.2.20
1.1.10
1.1.00
1.0.00
0.13.10
0.13.00
0.12.10
0.11.50
0.11.30
0.11.20
0.11.10
0.11.00
0.10.00
0.9.00
0.8.00
0.7.00
0.6.10
0.5.10
0.4.10
0.3.20
0.3.10
0.3.00
0.2.20
0.2.10
0.2.00
0.1.10
0.1.00
0.0.10

Package Sidebar

Install

npm i pure-graph-utils

Weekly Downloads

2

Version

1.4.19

License

MIT

Unpacked Size

63.4 kB

Total Files

8

Last publish

Collaborators

  • alcar