@northernblock/triangulation-algorithm

    1.0.0 • Public • Published

    Triangulation Algorithm for SkyTech Project

    Installation

    npm i @northernblock/triangulation-algorithm

    Usage

    To import the library, you can write

    const triangulate = require('@northernblock/triangulation-algorithm')

    Then, triangulate is a function that takes 2 parameters:

    1. newNodePings: new nodes ping data to all other nodes on the network
    2. existingNodePings: existing nodes on the networks pings to each other

    triangulate function throws errors

    const newNodePings = { A: 180, B: 200, C: 400, D: 300 }
    const existingNodePings = {
        A: { B: 500, C: 500, D: 500 },
        B: { A: 500, C: 500, D: 500 },
        C: { A: 500, B: 500, D: 500 },
        D: { A: 500, B: 500, C: 500 },
    }
    try {
        const res = triangulate(newNodePings, existingNodePings)
        // expected output: [{ A: 180, D: 300, B: 200 }]
    } catch (e) {
        console.log(e.message)
    }

    Scripts

    npm test to run all test units

    Errors

    • If newNodePings is null or undefined: Received: ${newNodePings}. newNodePings cannot be null or undefined
    • If newNodePings is not an object: Received: ${newNodePings}. newNodePings needs to be an object
    • If ping data inside newNodePings is not defined: newNodePings has an undefined value: ${nodePingTime}
    • If ping data inside newNodePings is not an Integer: Received ${nodePingTime} of type ${typeof nodePingTime}. Node pings need to be Integers. Make sure they are numbers, not strings. ( you can use parseInt(string) )
    • If existingNodePings is null or undefined: Received: ${existingNodePings}. existingNodePings cannot be null or undefined.)
    • If existingNodePings is not an Object: Received: ${existingNodePings}. existingNodePings needs to be an object
    • If node data inside existingNodePings is null or undefined: Received: ${existingNodePingData}. existingNodePingData cannot be null or undefined
    • If node data inside existingNodePings is not an Object: Received ${existingNodePingData} for one of the ping times. Each nodes pingtimes to other nodes needs to be an object in this format: { [nodeId]: pingTime }
    • If ping times of node data inside existingNodePings is null or undefined: One node ping in existingNodePings has an undefined value: ${nodePingTime}
    • If ping times of node data inside existingNodePings is not an Integer: node pings need to be Integers. Make sure they are numbers, not strings. ( you can use parseInt(string) )
    • If newNodePings has less than 4 distances: Please provide 4 or more distances.
    • If newNodePings doesn't include all the nodes provided in existingNodePings: Please provide ping time to all nodes!
    • If a collision is detected: New node collides with node(s) ${arrayOfNodes}
    • If the algorithm has detected that a node is lying about it's distance from another node: New node falls outside of the globe because of distances ${arrayOfNodesWithDistances}
    • If ping data received is not valid: Ping data received is not valid
    • Internal errors: Something went horribly wrong inside /lib/ping-validator.js, Internal error... something bad has happened!

    Keywords

    Install

    npm i @northernblock/triangulation-algorithm

    DownloadsWeekly Downloads

    0

    Version

    1.0.0

    License

    ISC

    Unpacked Size

    82.8 kB

    Total Files

    12

    Last publish

    Collaborators

    • armingh
    • darryl44