UNPKG

@node-lightning/graph

Version:
1 lines 62.2 kB
{"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/channel.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/channel.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":25}},"2":{"start":{"line":10,"column":19},"end":{"line":10,"column":76}},"3":{"start":{"line":11,"column":19},"end":{"line":11,"column":76}},"4":{"start":{"line":12,"column":8},"end":{"line":12,"column":32}},"5":{"start":{"line":19,"column":8},"end":{"line":19,"column":96}},"6":{"start":{"line":25,"column":8},"end":{"line":38,"column":9}},"7":{"start":{"line":26,"column":12},"end":{"line":28,"column":13}},"8":{"start":{"line":27,"column":16},"end":{"line":27,"column":29}},"9":{"start":{"line":29,"column":12},"end":{"line":29,"column":42}},"10":{"start":{"line":30,"column":12},"end":{"line":30,"column":24}},"11":{"start":{"line":33,"column":12},"end":{"line":35,"column":13}},"12":{"start":{"line":34,"column":16},"end":{"line":34,"column":29}},"13":{"start":{"line":36,"column":12},"end":{"line":36,"column":42}},"14":{"start":{"line":37,"column":12},"end":{"line":37,"column":24}},"15":{"start":{"line":41,"column":0},"end":{"line":41,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":4},"end":{"line":9,"column":5}},"loc":{"start":{"line":9,"column":21},"end":{"line":13,"column":5}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":4},"end":{"line":18,"column":5}},"loc":{"start":{"line":18,"column":21},"end":{"line":20,"column":5}},"line":18},"2":{"name":"(anonymous_2)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":5}},"loc":{"start":{"line":24,"column":29},"end":{"line":39,"column":5}},"line":24}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":19},"end":{"line":10,"column":76}},"type":"binary-expr","locations":[{"start":{"line":10,"column":20},"end":{"line":10,"column":38}},{"start":{"line":10,"column":42},"end":{"line":10,"column":70}},{"start":{"line":10,"column":75},"end":{"line":10,"column":76}}],"line":10},"1":{"loc":{"start":{"line":11,"column":19},"end":{"line":11,"column":76}},"type":"binary-expr","locations":[{"start":{"line":11,"column":20},"end":{"line":11,"column":38}},{"start":{"line":11,"column":42},"end":{"line":11,"column":70}},{"start":{"line":11,"column":75},"end":{"line":11,"column":76}}],"line":11},"2":{"loc":{"start":{"line":19,"column":15},"end":{"line":19,"column":95}},"type":"binary-expr","locations":[{"start":{"line":19,"column":15},"end":{"line":19,"column":29}},{"start":{"line":19,"column":33},"end":{"line":19,"column":47}},{"start":{"line":19,"column":51},"end":{"line":19,"column":95}}],"line":19},"3":{"loc":{"start":{"line":19,"column":54},"end":{"line":19,"column":94}},"type":"binary-expr","locations":[{"start":{"line":19,"column":54},"end":{"line":19,"column":72}},{"start":{"line":19,"column":76},"end":{"line":19,"column":94}}],"line":19},"4":{"loc":{"start":{"line":25,"column":8},"end":{"line":38,"column":9}},"type":"if","locations":[{"start":{"line":25,"column":8},"end":{"line":38,"column":9}},{"start":{"line":25,"column":8},"end":{"line":38,"column":9}}],"line":25},"5":{"loc":{"start":{"line":26,"column":12},"end":{"line":28,"column":13}},"type":"if","locations":[{"start":{"line":26,"column":12},"end":{"line":28,"column":13}},{"start":{"line":26,"column":12},"end":{"line":28,"column":13}}],"line":26},"6":{"loc":{"start":{"line":26,"column":16},"end":{"line":26,"column":87}},"type":"binary-expr","locations":[{"start":{"line":26,"column":16},"end":{"line":26,"column":34}},{"start":{"line":26,"column":38},"end":{"line":26,"column":87}}],"line":26},"7":{"loc":{"start":{"line":33,"column":12},"end":{"line":35,"column":13}},"type":"if","locations":[{"start":{"line":33,"column":12},"end":{"line":35,"column":13}},{"start":{"line":33,"column":12},"end":{"line":35,"column":13}}],"line":33},"8":{"loc":{"start":{"line":33,"column":16},"end":{"line":33,"column":87}},"type":"binary-expr","locations":[{"start":{"line":33,"column":16},"end":{"line":33,"column":34}},{"start":{"line":33,"column":38},"end":{"line":33,"column":87}}],"line":33}},"s":{"0":1,"1":1,"2":7,"3":7,"4":7,"5":4,"6":18,"7":9,"8":1,"9":8,"10":8,"11":9,"12":1,"13":8,"14":8,"15":1},"f":{"0":7,"1":4,"2":18},"b":{"0":[7,4,3],"1":[7,5,2],"2":[4,3,3],"3":[3,1],"4":[9,9],"5":[1,8],"6":[9,2],"7":[1,8],"8":[9,2]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/channel.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/channel.ts"],"names":[],"mappings":";;;AAKA,MAAa,OAAO;IA8ChB;;;OAGG;IACH,IAAW,UAAU;QACjB,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,QAAyB;QAC3C,IAAI,QAAQ,CAAC,SAAS,KAAK,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE;gBACzE,OAAO,KAAK,CAAC;aAChB;YACD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,OAAO,IAAI,CAAC;SACf;aAAM;YACH,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE;gBACzE,OAAO,KAAK,CAAC;aAChB;YACD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,OAAO,IAAI,CAAC;SACf;IACL,CAAC;CACJ;AAlFD,0BAkFC","sourcesContent":["import { BitField } from \"@node-lightning/core\";\nimport { ShortChannelId } from \"@node-lightning/core\";\nimport { OutPoint } from \"@node-lightning/core\";\nimport { ChannelSettings } from \"./channel-settings\";\n\nexport class Channel {\n /**\n * Short channel identifier for the channel that points to the funding\n * transaction on the blockchain.\n */\n public shortChannelId: ShortChannelId;\n\n /**\n * Obtained after verifying the transaction is a valid\n * channel funding transaction and is still a UTXO\n */\n public channelPoint: OutPoint;\n\n /**\n * Public key of the first node, as ordered by DER encoding of the\n * 33-byte secp256k1 public key.\n */\n public nodeId1: Buffer;\n\n /**\n * Public key of the second node, as ordered by DER encoding of the\n * 33-byte secp256k1 public key.\n */\n public nodeId2: Buffer;\n\n /**\n * Channel features\n */\n public features: BitField;\n\n /**\n * Routing policy for the first node\n */\n public node1Settings: ChannelSettings;\n\n /**\n * Routing policy for the second node\n */\n public node2Settings: ChannelSettings;\n\n /**\n * Capacity of the channel as determined by the funding transaction\n * output amount.\n */\n public capacity: bigint;\n\n /**\n * Gets the most recently updated timestamp based on the settings\n * from the two nodes\n */\n public get lastUpdate(): number {\n const t1 = (this.node1Settings && this.node1Settings.timestamp) || 0;\n const t2 = (this.node2Settings && this.node2Settings.timestamp) || 0;\n return Math.max(t1, t2);\n }\n\n /**\n * Routable when nodes are known and validated and at least one\n * node has broadcast its relay fees\n */\n get isRoutable(): boolean {\n return !!this.nodeId1 && !!this.nodeId2 && !!(this.node1Settings || this.node2Settings);\n }\n\n /**\n * Update channel settings\n */\n public updateSettings(settings: ChannelSettings): boolean {\n if (settings.direction === 0) {\n if (this.node1Settings && this.node1Settings.timestamp > settings.timestamp) {\n return false;\n }\n this.node1Settings = settings;\n return true;\n } else {\n if (this.node2Settings && this.node2Settings.timestamp > settings.timestamp) {\n return false;\n }\n this.node2Settings = settings;\n return true;\n }\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e16f0903a5bca6b9031e698b063833599694b021"},"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/channel-settings.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/channel-settings.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"2":{"start":{"line":6,"column":8},"end":{"line":6,"column":30}},"3":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":4},"end":{"line":5,"column":5}},"loc":{"start":{"line":5,"column":18},"end":{"line":7,"column":5}},"line":5}},"branchMap":{},"s":{"0":1,"1":1,"2":27,"3":1},"f":{"0":27},"b":{},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/channel-settings.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/channel-settings.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAe;IAA5B;QAQW,aAAQ,GAAY,KAAK,CAAC;IACrC,CAAC;CAAA;AATD,0CASC","sourcesContent":["export class ChannelSettings {\n public direction: number;\n public timestamp: number;\n public cltvExpiryDelta: number;\n public htlcMinimumMsat: bigint;\n public htlcMaximumMsat: bigint;\n public feeBaseMsat: number;\n public feeProportionalMillionths: number;\n public disabled: boolean = false;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9634aa7b0f8b7e0fb688a29af4816547cf71112e"},"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph-error.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph-error.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":112}},"2":{"start":{"line":5,"column":0},"end":{"line":8,"column":77}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":78}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":72}},"5":{"start":{"line":11,"column":8},"end":{"line":11,"column":23}},"6":{"start":{"line":12,"column":8},"end":{"line":12,"column":25}},"7":{"start":{"line":15,"column":0},"end":{"line":15,"column":32}},"8":{"start":{"line":18,"column":20},"end":{"line":18,"column":58}},"9":{"start":{"line":19,"column":8},"end":{"line":19,"column":51}},"10":{"start":{"line":22,"column":0},"end":{"line":22,"column":52}},"11":{"start":{"line":25,"column":20},"end":{"line":25,"column":57}},"12":{"start":{"line":26,"column":8},"end":{"line":26,"column":48}},"13":{"start":{"line":29,"column":0},"end":{"line":29,"column":46}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":27},"end":{"line":8,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":31},"end":{"line":13,"column":5}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":5}},"loc":{"start":{"line":17,"column":22},"end":{"line":20,"column":5}},"line":17},"3":{"name":"(anonymous_3)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":5}},"loc":{"start":{"line":24,"column":24},"end":{"line":27,"column":5}},"line":24}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":20},"end":{"line":8,"column":75}},"type":"binary-expr","locations":[{"start":{"line":8,"column":20},"end":{"line":8,"column":42}},{"start":{"line":8,"column":47},"end":{"line":8,"column":74}}],"line":8}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":3,"6":3,"7":1,"8":1,"9":1,"10":1,"11":2,"12":2,"13":1},"f":{"0":1,"1":3,"2":1,"3":2},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph-error.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph-error.ts"],"names":[],"mappings":";;;AAGA,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,yEAAmB,CAAA;IACnB,mEAAgB,CAAA;AACpB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,MAAsB,UAAW,SAAQ,KAAK;IAG1C,YAAY,IAAoB,EAAE,OAAe;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AAPD,gCAOC;AAED,MAAa,oBAAqB,SAAQ,UAAU;IAChD,YAAY,IAAoB;QAC5B,MAAM,GAAG,GAAG,qBAAqB,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnD,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;CACJ;AALD,oDAKC;AAED,MAAa,iBAAkB,SAAQ,UAAU;IAC7C,YAAY,MAAc;QACtB,MAAM,GAAG,GAAG,kBAAkB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClD,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;CACJ;AALD,8CAKC","sourcesContent":["// tslint:disable: max-classes-per-file\nimport { ShortChannelId } from \"@node-lightning/core\";\n\nexport enum GraphErrorCode {\n ChannelNotFound = 1,\n NodeNotFound = 2,\n}\n\nexport abstract class GraphError extends Error {\n public code: GraphErrorCode;\n\n constructor(code: GraphErrorCode, message: string) {\n super(message);\n this.code = code;\n }\n}\n\nexport class ChannelNotFoundError extends GraphError {\n constructor(scid: ShortChannelId) {\n const msg = `channel_not_found ${scid.toString()}`;\n super(GraphErrorCode.ChannelNotFound, msg);\n }\n}\n\nexport class NodeNotFoundError extends GraphError {\n constructor(nodeId: Buffer) {\n const msg = `node_not_found ${nodeId.toString()}`;\n super(GraphErrorCode.NodeNotFound, msg);\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"719fdc757263e2a17a0e536bf032e04b53b4a909"},"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph-manager.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph-manager.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"2":{"start":{"line":4,"column":15},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":34}},"4":{"start":{"line":6,"column":31},"end":{"line":6,"column":76}},"5":{"start":{"line":7,"column":40},"end":{"line":7,"column":94}},"6":{"start":{"line":8,"column":16},"end":{"line":8,"column":34}},"7":{"start":{"line":9,"column":22},"end":{"line":9,"column":46}},"8":{"start":{"line":10,"column":15},"end":{"line":10,"column":32}},"9":{"start":{"line":18,"column":8},"end":{"line":18,"column":16}},"10":{"start":{"line":19,"column":8},"end":{"line":19,"column":27}},"11":{"start":{"line":20,"column":8},"end":{"line":20,"column":43}},"12":{"start":{"line":21,"column":8},"end":{"line":21,"column":69}},"13":{"start":{"line":28,"column":28},"end":{"line":28,"column":47}},"14":{"start":{"line":29,"column":8},"end":{"line":35,"column":9}},"15":{"start":{"line":30,"column":12},"end":{"line":34,"column":13}},"16":{"start":{"line":31,"column":16},"end":{"line":31,"column":50}},"17":{"start":{"line":32,"column":16},"end":{"line":32,"column":53}},"18":{"start":{"line":33,"column":16},"end":{"line":33,"column":23}},"19":{"start":{"line":44,"column":8},"end":{"line":68,"column":9}},"20":{"start":{"line":45,"column":28},"end":{"line":45,"column":74}},"21":{"start":{"line":47,"column":12},"end":{"line":49,"column":13}},"22":{"start":{"line":48,"column":16},"end":{"line":48,"column":23}},"23":{"start":{"line":51,"column":12},"end":{"line":56,"column":13}},"24":{"start":{"line":52,"column":30},"end":{"line":52,"column":47}},"25":{"start":{"line":53,"column":16},"end":{"line":53,"column":43}},"26":{"start":{"line":54,"column":16},"end":{"line":54,"column":42}},"27":{"start":{"line":55,"column":16},"end":{"line":55,"column":41}},"28":{"start":{"line":58,"column":12},"end":{"line":63,"column":13}},"29":{"start":{"line":59,"column":30},"end":{"line":59,"column":47}},"30":{"start":{"line":60,"column":16},"end":{"line":60,"column":43}},"31":{"start":{"line":61,"column":16},"end":{"line":61,"column":42}},"32":{"start":{"line":62,"column":16},"end":{"line":62,"column":41}},"33":{"start":{"line":65,"column":12},"end":{"line":65,"column":43}},"34":{"start":{"line":66,"column":12},"end":{"line":66,"column":42}},"35":{"start":{"line":67,"column":12},"end":{"line":67,"column":19}},"36":{"start":{"line":74,"column":8},"end":{"line":86,"column":9}},"37":{"start":{"line":76,"column":28},"end":{"line":76,"column":69}},"38":{"start":{"line":77,"column":12},"end":{"line":80,"column":13}},"39":{"start":{"line":78,"column":16},"end":{"line":78,"column":95}},"40":{"start":{"line":79,"column":16},"end":{"line":79,"column":23}},"41":{"start":{"line":82,"column":29},"end":{"line":82,"column":92}},"42":{"start":{"line":83,"column":12},"end":{"line":83,"column":45}},"43":{"start":{"line":84,"column":12},"end":{"line":84,"column":59}},"44":{"start":{"line":85,"column":12},"end":{"line":85,"column":19}},"45":{"start":{"line":90,"column":8},"end":{"line":103,"column":9}},"46":{"start":{"line":91,"column":23},"end":{"line":91,"column":53}},"47":{"start":{"line":92,"column":12},"end":{"line":96,"column":13}},"48":{"start":{"line":93,"column":16},"end":{"line":93,"column":41}},"49":{"start":{"line":94,"column":16},"end":{"line":94,"column":41}},"50":{"start":{"line":95,"column":16},"end":{"line":95,"column":41}},"51":{"start":{"line":97,"column":12},"end":{"line":97,"column":41}},"52":{"start":{"line":98,"column":12},"end":{"line":98,"column":44}},"53":{"start":{"line":99,"column":12},"end":{"line":99,"column":35}},"54":{"start":{"line":100,"column":12},"end":{"line":100,"column":41}},"55":{"start":{"line":101,"column":12},"end":{"line":101,"column":43}},"56":{"start":{"line":102,"column":12},"end":{"line":102,"column":36}},"57":{"start":{"line":106,"column":0},"end":{"line":106,"column":36}},"58":{"start":{"line":108,"column":4},"end":{"line":108,"column":63}},"59":{"start":{"line":111,"column":4},"end":{"line":111,"column":57}},"60":{"start":{"line":114,"column":4},"end":{"line":114,"column":60}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":5}},"loc":{"start":{"line":17,"column":60},"end":{"line":22,"column":5}},"line":17},"1":{"name":"(anonymous_1)","decl":{"start":{"line":27,"column":4},"end":{"line":27,"column":5}},"loc":{"start":{"line":27,"column":28},"end":{"line":36,"column":5}},"line":27},"2":{"name":"(anonymous_2)","decl":{"start":{"line":37,"column":4},"end":{"line":37,"column":5}},"loc":{"start":{"line":37,"column":20},"end":{"line":104,"column":5}},"line":37},"3":{"name":"isChannelAnnouncment","decl":{"start":{"line":107,"column":9},"end":{"line":107,"column":29}},"loc":{"start":{"line":107,"column":35},"end":{"line":109,"column":1}},"line":107},"4":{"name":"isChannelUpdate","decl":{"start":{"line":110,"column":9},"end":{"line":110,"column":24}},"loc":{"start":{"line":110,"column":30},"end":{"line":112,"column":1}},"line":110},"5":{"name":"isNodeAnnouncement","decl":{"start":{"line":113,"column":9},"end":{"line":113,"column":27}},"loc":{"start":{"line":113,"column":33},"end":{"line":115,"column":1}},"line":113}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":31},"end":{"line":17,"column":58}},"type":"default-arg","locations":[{"start":{"line":17,"column":39},"end":{"line":17,"column":58}}],"line":17},"1":{"loc":{"start":{"line":30,"column":12},"end":{"line":34,"column":13}},"type":"if","locations":[{"start":{"line":30,"column":12},"end":{"line":34,"column":13}},{"start":{"line":30,"column":12},"end":{"line":34,"column":13}}],"line":30},"2":{"loc":{"start":{"line":44,"column":8},"end":{"line":68,"column":9}},"type":"if","locations":[{"start":{"line":44,"column":8},"end":{"line":68,"column":9}},{"start":{"line":44,"column":8},"end":{"line":68,"column":9}}],"line":44},"3":{"loc":{"start":{"line":47,"column":12},"end":{"line":49,"column":13}},"type":"if","locations":[{"start":{"line":47,"column":12},"end":{"line":49,"column":13}},{"start":{"line":47,"column":12},"end":{"line":49,"column":13}}],"line":47},"4":{"loc":{"start":{"line":51,"column":12},"end":{"line":56,"column":13}},"type":"if","locations":[{"start":{"line":51,"column":12},"end":{"line":56,"column":13}},{"start":{"line":51,"column":12},"end":{"line":56,"column":13}}],"line":51},"5":{"loc":{"start":{"line":58,"column":12},"end":{"line":63,"column":13}},"type":"if","locations":[{"start":{"line":58,"column":12},"end":{"line":63,"column":13}},{"start":{"line":58,"column":12},"end":{"line":63,"column":13}}],"line":58},"6":{"loc":{"start":{"line":74,"column":8},"end":{"line":86,"column":9}},"type":"if","locations":[{"start":{"line":74,"column":8},"end":{"line":86,"column":9}},{"start":{"line":74,"column":8},"end":{"line":86,"column":9}}],"line":74},"7":{"loc":{"start":{"line":77,"column":12},"end":{"line":80,"column":13}},"type":"if","locations":[{"start":{"line":77,"column":12},"end":{"line":80,"column":13}},{"start":{"line":77,"column":12},"end":{"line":80,"column":13}}],"line":77},"8":{"loc":{"start":{"line":90,"column":8},"end":{"line":103,"column":9}},"type":"if","locations":[{"start":{"line":90,"column":8},"end":{"line":103,"column":9}},{"start":{"line":90,"column":8},"end":{"line":103,"column":9}}],"line":90},"9":{"loc":{"start":{"line":92,"column":12},"end":{"line":96,"column":13}},"type":"if","locations":[{"start":{"line":92,"column":12},"end":{"line":96,"column":13}},{"start":{"line":92,"column":12},"end":{"line":96,"column":13}}],"line":92}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":9,"10":9,"11":9,"12":9,"13":1,"14":1,"15":2,"16":1,"17":1,"18":1,"19":14,"20":8,"21":8,"22":1,"23":7,"24":6,"25":6,"26":6,"27":6,"28":7,"29":6,"30":6,"31":6,"32":6,"33":7,"34":7,"35":7,"36":6,"37":3,"38":3,"39":1,"40":1,"41":2,"42":2,"43":2,"44":2,"45":3,"46":3,"47":3,"48":2,"49":2,"50":2,"51":3,"52":3,"53":3,"54":3,"55":3,"56":3,"57":1,"58":14,"59":6,"60":3},"f":{"0":9,"1":1,"2":14,"3":14,"4":6,"5":3},"b":{"0":[9],"1":[1,1],"2":[8,6],"3":[1,7],"4":[6,1],"5":[6,1],"6":[3,3],"7":[1,2],"8":[3,0],"9":[2,1]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph-manager.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { OutPoint } from \"@node-lightning/core\";\nimport { IGossipEmitter, IWireMessage, MessageType } from \"@node-lightning/wire\";\nimport { ChannelAnnouncementMessage } from \"@node-lightning/wire\";\nimport { ChannelUpdateMessage } from \"@node-lightning/wire\";\nimport { NodeAnnouncementMessage } from \"@node-lightning/wire\";\nimport { EventEmitter } from \"events\";\nimport { Channel } from \"./channel\";\nimport { ChannelSettings } from \"./channel-settings\";\nimport { channelFromMessage } from \"./deserialize/channel-from-message\";\nimport { channelSettingsFromMessage } from \"./deserialize/channel-settings-from-message\";\nimport { Graph } from \"./graph\";\nimport { ChannelNotFoundError } from \"./graph-error\";\nimport { GraphError } from \"./graph-error\";\nimport { Node } from \"./node\";\n\n// tslint:disable-next-line: interface-name\nexport declare interface GraphManager {\n on(event: \"node\", fn: (node: Node) => void): this;\n on(event: \"channel\", fn: (channel: Channel) => void): this;\n on(event: \"channel_update\", fn: (channel: Channel, settings: ChannelSettings) => void): this;\n on(event: \"error\", fn: (err: GraphError) => void): this;\n}\n\n/**\n * GraphManager is a facade around a Graph object. It converts in-bound\n * gossip messages from the wire into a graph representation. Channels\n * can also be removed by monitoring the block chain via a chainmon object.\n */\nexport class GraphManager extends EventEmitter {\n public graph: Graph;\n public gossipEmitter: IGossipEmitter;\n\n constructor(gossipManager: IGossipEmitter, graph = new Graph()) {\n super();\n this.graph = graph;\n this.gossipEmitter = gossipManager;\n this.gossipEmitter.on(\"message\", this._onMessage.bind(this));\n }\n\n /**\n * Closes channel via the outpoint\n * @param outpoint\n */\n public removeChannel(outpoint: OutPoint) {\n const outpointStr = outpoint.toString();\n for (const channel of this.graph.channels.values()) {\n if (outpointStr === channel?.channelPoint?.toString()) {\n this.graph.removeChannel(channel);\n this.emit(\"channel_closed\", channel);\n return;\n }\n }\n }\n\n private _onMessage(msg: IWireMessage) {\n // channel_announcement messages are processed by:\n // First ensuring that we don't already have a duplicate channel.\n // We then check to see if we need to insert node\n // references. Inserting temporary node's is required because we\n // may receieve a channel_announcement without ever receiving\n // node_announcement messages.\n\n if (isChannelAnnouncment(msg)) {\n const channel = channelFromMessage(msg);\n\n // abort processing if the channel already exists\n if (this.graph.getChannel(msg.shortChannelId)) {\n return;\n }\n\n // construct node1 if required\n if (!this.graph.getNode(msg.nodeId1)) {\n const node1 = new Node();\n node1.nodeId = msg.nodeId1;\n this.graph.addNode(node1);\n this.emit(\"node\", node1);\n }\n\n // construct node2 if required\n if (!this.graph.getNode(msg.nodeId2)) {\n const node2 = new Node();\n node2.nodeId = msg.nodeId2;\n this.graph.addNode(node2);\n this.emit(\"node\", node2);\n }\n\n // finally attach the channel\n this.graph.addChannel(channel);\n this.emit(\"channel\", channel);\n return;\n }\n\n // channel_update messages are processed by:\n // * looking for the existing channel, if it doesn't then an error is thrown.\n // * updating the existing channel\n // The GossipFilter in Wire should ensure that channel_announcement messages\n // are always transmitted prior to channel_update messages being announced.\n if (isChannelUpdate(msg)) {\n // first validate we have a channel\n const channel = this.graph.getChannel(msg.shortChannelId);\n if (!channel) {\n this.emit(\"error\", new ChannelNotFoundError(msg.shortChannelId));\n return;\n }\n\n // construct the settings and update the channel\n const settings = channelSettingsFromMessage(msg);\n channel.updateSettings(settings);\n this.emit(\"channel_update\", channel, settings);\n return;\n }\n\n // node_announcement messages are processed by:\n // * finding or creating the node (if it doesn't exist)\n // * updating the node with values from the announcement\n if (isNodeAnnouncement(msg)) {\n let node = this.graph.getNode(msg.nodeId);\n if (!node) {\n node = new Node();\n node.nodeId = msg.nodeId;\n this.graph.addNode(node);\n }\n node.features = msg.features;\n node.lastUpdate = msg.timestamp;\n node.alias = msg.alias;\n node.rgbColor = msg.rgbColor;\n node.addresses = msg.addresses;\n this.emit(\"node\", node);\n }\n }\n}\n\nfunction isChannelAnnouncment(msg: IWireMessage): msg is ChannelAnnouncementMessage {\n return msg.type === MessageType.ChannelAnnouncement;\n}\n\nfunction isChannelUpdate(msg: IWireMessage): msg is ChannelUpdateMessage {\n return msg.type === MessageType.ChannelUpdate;\n}\n\nfunction isNodeAnnouncement(msg: IWireMessage): msg is NodeAnnouncementMessage {\n return msg.type === MessageType.NodeAnnouncement;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9c5ce34938169c75004fc0d74d86b1e3ae8bf00c"},"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/deserialize/channel-from-message.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/deserialize/channel-from-message.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":39}},"3":{"start":{"line":11,"column":14},"end":{"line":11,"column":37}},"4":{"start":{"line":12,"column":4},"end":{"line":12,"column":42}},"5":{"start":{"line":13,"column":4},"end":{"line":13,"column":30}},"6":{"start":{"line":14,"column":4},"end":{"line":14,"column":28}},"7":{"start":{"line":15,"column":4},"end":{"line":15,"column":28}},"8":{"start":{"line":16,"column":4},"end":{"line":19,"column":5}},"9":{"start":{"line":17,"column":8},"end":{"line":17,"column":38}},"10":{"start":{"line":18,"column":8},"end":{"line":18,"column":34}},"11":{"start":{"line":20,"column":4},"end":{"line":20,"column":13}},"12":{"start":{"line":22,"column":0},"end":{"line":22,"column":48}}},"fnMap":{"0":{"name":"channelFromMessage","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":27}},"loc":{"start":{"line":10,"column":33},"end":{"line":21,"column":1}},"line":10}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":4},"end":{"line":19,"column":5}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":19,"column":5}},{"start":{"line":16,"column":4},"end":{"line":19,"column":5}}],"line":16}},"s":{"0":1,"1":1,"2":1,"3":8,"4":8,"5":8,"6":8,"7":8,"8":8,"9":2,"10":2,"11":8,"12":1},"f":{"0":8},"b":{"0":[2,6]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/deserialize/channel-from-message.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/deserialize/channel-from-message.ts"],"names":[],"mappings":";;;AAEA,wCAAqC;AAErC;;;;GAIG;AACH,SAAgB,kBAAkB,CAC9B,GAAoE;IAEpE,MAAM,CAAC,GAAG,IAAI,iBAAO,EAAE,CAAC;IACxB,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;IACtC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1B,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IACxB,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IACxB,IAAI,UAAU,IAAI,GAAG,EAAE;QACnB,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;KAC7B;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AAbD,gDAaC","sourcesContent":["import { ChannelAnnouncementMessage } from \"@node-lightning/wire\";\nimport { ExtendedChannelAnnouncementMessage } from \"@node-lightning/wire\";\nimport { Channel } from \"../channel\";\n\n/**\n * Constructs an incomplete channel from a node announcement message. The channel does\n * not include outpoint, capacity, or per node settings found in channel_update\n * messages. These values need to be set elsewhere.\n */\nexport function channelFromMessage(\n msg: ChannelAnnouncementMessage | ExtendedChannelAnnouncementMessage,\n): Channel {\n const c = new Channel();\n c.shortChannelId = msg.shortChannelId;\n c.features = msg.features;\n c.nodeId1 = msg.nodeId1;\n c.nodeId2 = msg.nodeId2;\n if (\"outpoint\" in msg) {\n c.channelPoint = msg.outpoint;\n c.capacity = msg.capacity;\n }\n return c;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"27d08dee5220ebd3547f41d38b4612e4827e4ffb"},"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/deserialize/channel-settings-from-message.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/deserialize/channel-settings-from-message.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":44}},"2":{"start":{"line":4,"column":27},"end":{"line":4,"column":57}},"3":{"start":{"line":10,"column":21},"end":{"line":10,"column":61}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":39}},"5":{"start":{"line":12,"column":4},"end":{"line":12,"column":39}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":51}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":91}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":91}},"9":{"start":{"line":16,"column":4},"end":{"line":16,"column":87}},"10":{"start":{"line":17,"column":4},"end":{"line":19,"column":15}},"11":{"start":{"line":20,"column":4},"end":{"line":20,"column":37}},"12":{"start":{"line":21,"column":4},"end":{"line":21,"column":20}},"13":{"start":{"line":23,"column":0},"end":{"line":23,"column":64}}},"fnMap":{"0":{"name":"channelSettingsFromMessage","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":35}},"loc":{"start":{"line":9,"column":41},"end":{"line":22,"column":1}},"line":9}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":31},"end":{"line":14,"column":90}},"type":"cond-expr","locations":[{"start":{"line":14,"column":53},"end":{"line":14,"column":78}},{"start":{"line":14,"column":81},"end":{"line":14,"column":90}}],"line":14},"1":{"loc":{"start":{"line":15,"column":31},"end":{"line":15,"column":90}},"type":"cond-expr","locations":[{"start":{"line":15,"column":53},"end":{"line":15,"column":78}},{"start":{"line":15,"column":81},"end":{"line":15,"column":90}}],"line":15},"2":{"loc":{"start":{"line":16,"column":27},"end":{"line":16,"column":86}},"type":"cond-expr","locations":[{"start":{"line":16,"column":45},"end":{"line":16,"column":74}},{"start":{"line":16,"column":77},"end":{"line":16,"column":86}}],"line":16},"3":{"loc":{"start":{"line":17,"column":41},"end":{"line":19,"column":14}},"type":"cond-expr","locations":[{"start":{"line":18,"column":10},"end":{"line":18,"column":57}},{"start":{"line":19,"column":10},"end":{"line":19,"column":14}}],"line":17}},"s":{"0":1,"1":1,"2":1,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":1},"f":{"0":2},"b":{"0":[0,2],"1":[0,2],"2":[0,2],"3":[0,2]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/deserialize/channel-settings-from-message.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/deserialize/channel-settings-from-message.ts"],"names":[],"mappings":";;;AACA,0DAAsD;AAEtD;;;GAGG;AACH,SAAgB,0BAA0B,CAAC,GAAyB;IAChE,MAAM,QAAQ,GAAG,IAAI,kCAAe,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IACnC,QAAQ,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;IAC/C,QAAQ,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,QAAQ,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,QAAQ,CAAC,yBAAyB,GAAG,GAAG,CAAC,yBAAyB;QAC9D,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,SAAS,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC;IACX,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IACjC,OAAO,QAAQ,CAAC;AACpB,CAAC;AAbD,gEAaC","sourcesContent":["import { ChannelUpdateMessage } from \"@node-lightning/wire\";\nimport { ChannelSettings } from \"../channel-settings\";\n\n/**\n * Creates channels settings from an update message\n * @param msg\n */\nexport function channelSettingsFromMessage(msg: ChannelUpdateMessage): ChannelSettings {\n const instance = new ChannelSettings();\n instance.direction = msg.direction;\n instance.timestamp = msg.timestamp;\n instance.cltvExpiryDelta = msg.cltvExpiryDelta;\n instance.htlcMinimumMsat = msg.htlcMinimumMsat ? msg.htlcMinimumMsat.msats : undefined;\n instance.htlcMaximumMsat = msg.htlcMaximumMsat ? msg.htlcMaximumMsat.msats : undefined;\n instance.feeBaseMsat = msg.feeBaseMsat ? Number(msg.feeBaseMsat.msats) : undefined;\n instance.feeProportionalMillionths = msg.feeProportionalMillionths\n ? Number(msg.feeProportionalMillionths.microsats)\n : null;\n instance.disabled = msg.disabled;\n return instance;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"344492056ea8968f04b692ba1b59734950c7e0fc"},"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":23}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":46}},"3":{"start":{"line":13,"column":8},"end":{"line":13,"column":31}},"4":{"start":{"line":17,"column":8},"end":{"line":17,"column":34}},"5":{"start":{"line":21,"column":8},"end":{"line":21,"column":28}},"6":{"start":{"line":27,"column":8},"end":{"line":27,"column":58}},"7":{"start":{"line":33,"column":22},"end":{"line":33,"column":51}},"8":{"start":{"line":34,"column":22},"end":{"line":34,"column":51}},"9":{"start":{"line":35,"column":8},"end":{"line":36,"column":71}},"10":{"start":{"line":36,"column":12},"end":{"line":36,"column":71}},"11":{"start":{"line":37,"column":8},"end":{"line":38,"column":71}},"12":{"start":{"line":38,"column":12},"end":{"line":38,"column":71}},"13":{"start":{"line":40,"column":20},"end":{"line":40,"column":53}},"14":{"start":{"line":41,"column":8},"end":{"line":41,"column":40}},"15":{"start":{"line":43,"column":8},"end":{"line":43,"column":35}},"16":{"start":{"line":45,"column":8},"end":{"line":45,"column":35}},"17":{"start":{"line":51,"column":8},"end":{"line":51,"column":54}},"18":{"start":{"line":57,"column":8},"end":{"line":57,"column":60}},"19":{"start":{"line":63,"column":20},"end":{"line":63,"column":53}},"20":{"start":{"line":64,"column":19},"end":{"line":64,"column":48}},"21":{"start":{"line":65,"column":19},"end":{"line":65,"column":48}},"22":{"start":{"line":67,"column":8},"end":{"line":67,"column":34}},"23":{"start":{"line":69,"column":8},"end":{"line":69,"column":34}},"24":{"start":{"line":71,"column":8},"end":{"line":71,"column":34}},"25":{"start":{"line":74,"column":0},"end":{"line":74,"column":22}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":4},"end":{"line":9,"column":5}},"loc":{"start":{"line":9,"column":18},"end":{"line":22,"column":5}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":18},"end":{"line":28,"column":5}},"line":26},"2":{"name":"(anonymous_2)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":32,"column":24},"end":{"line":46,"column":5}},"line":32},"3":{"name":"(anonymous_3)","decl":{"start":{"line":50,"column":4},"end":{"line":50,"column":5}},"loc":{"start":{"line":50,"column":20},"end":{"line":52,"column":5}},"line":50},"4":{"name":"(anonymous_4)","decl":{"start":{"line":56,"column":4},"end":{"line":56,"column":5}},"loc":{"start":{"line":56,"column":31},"end":{"line":58,"column":5}},"line":56},"5":{"name":"(anonymous_5)","decl":{"start":{"line":62,"column":4},"end":{"line":62,"column":5}},"loc":{"start":{"line":62,"column":27},"end":{"line":72,"column":5}},"line":62}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":8},"end":{"line":36,"column":71}},"type":"if","locations":[{"start":{"line":35,"column":8},"end":{"line":36,"column":71}},{"start":{"line":35,"column":8},"end":{"line":36,"column":71}}],"line":35},"1":{"loc":{"start":{"line":37,"column":8},"end":{"line":38,"column":71}},"type":"if","locations":[{"start":{"line":37,"column":8},"end":{"line":38,"column":71}},{"start":{"line":37,"column":8},"end":{"line":38,"column":71}}],"line":37}},"s":{"0":1,"1":1,"2":1,"3":23,"4":23,"5":23,"6":34,"7":17,"8":17,"9":17,"10":1,"11":16,"12":1,"13":15,"14":15,"15":15,"16":15,"17":65,"18":17,"19":4,"20":4,"21":4,"22":4,"23":4,"24":4,"25":1},"f":{"0":23,"1":34,"2":17,"3":65,"4":17,"5":4},"b":{"0":[1,16],"1":[1,15]},"inputSourceMap":{"version":3,"file":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph.ts","sources":["/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/graph.ts"],"names":[],"mappings":";;;AAEA,+CAAkD;AAGlD;;GAEG;AACH,MAAa,KAAK;IAAlB;QACI;;WAEG;QACI,UAAK,GAAsB,IAAI,GAAG,EAAE,CAAC;QAE5C;;WAEG;QACI,aAAQ,GAAyB,IAAI,GAAG,EAAE,CAAC;QAElD;;WAEG;QACI,eAAU,GAAW,CAAC,CAAC;IA4DlC,CAAC;IA1DG;;OAEG;IACI,OAAO,CAAC,IAAU;QACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,OAAgB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,+BAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,+BAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzD,iBAAiB;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEhC,2BAA2B;QAC3B,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE3B,2BAA2B;QAC3B,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,cAA8B;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,OAAgB;QACjC,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzC,4BAA4B;QAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE1B,qBAAqB;QACrB,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1B,qBAAqB;QACrB,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;CACJ;AA1ED,sBA0EC","sourcesContent":["import { ShortChannelId } from \"@node-lightning/core\";\nimport { Channel } from \"./channel\";\nimport { NodeNotFoundError } from \"./graph-error\";\nimport { Node } from \"./node\";\n\n/**\n * Graph represents a\n */\nexport class Graph {\n /**\n * Map containing all nodes in the system\n */\n public nodes: Map<string, Node> = new Map();\n\n /**\n * Map containing all channels in the graph\n */\n public channels: Map<bigint, Channel> = new Map();\n\n /**\n * The height the graph has been synced through\n */\n public syncHeight: number = 0;\n\n /**\n * Adds a node to the graph\n */\n public addNode(node: Node) {\n this.nodes.set(node.nodeId.toString(\"hex\"), node);\n }\n\n /**\n * Adds a channgel to the graph\n */\n public addChannel(channel: Channel) {\n const node1 = this.getNode(channel.nodeId1);\n const node2 = this.getNode(channel.nodeId2);\n if (!node1) throw new NodeNotFoundError(channel.nodeId1);\n if (!node2) throw new NodeNotFoundError(channel.nodeId2);\n\n // attach channel\n const key = channel.shortChannelId.toNumber();\n this.channels.set(key, channel);\n\n // attach channel to node 1\n node1.linkChannel(channel);\n\n // attach channel to node 2\n node2.linkChannel(channel);\n }\n\n /**\n * Gets a node in the graph\n */\n public getNode(nodeId: Buffer): Node {\n return this.nodes.get(nodeId.toString(\"hex\"));\n }\n\n /**\n * Gets a node in the channel by shortChannelId\n */\n public getChannel(shortChannelId: ShortChannelId) {\n return this.channels.get(shortChannelId.toNumber());\n }\n\n /**\n * Removes the node from the graph\n */\n public removeChannel(channel: Channel) {\n const key = channel.shortChannelId.toNumber();\n const n1 = this.getNode(channel.nodeId1);\n const n2 = this.getNode(channel.nodeId2);\n\n // remove from channels list\n this.channels.delete(key);\n\n // detach from node 1\n n1.unlinkChannel(channel);\n\n // detach from node 2\n n2.unlinkChannel(channel);\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3ad7fc97b27ecf470d8faa017bb57290dee7f0e5"},"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/node.ts":{"path":"/Users/bmancini/code/altangent/node-lightning/packages/graph/lib/node.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":22}},"2":{"start":{"line":9,"column":8},"end":{"line":9,"column":28}},"3":{"start":{"line":13,"column":8},"end":{"line":13,"column":34}},"4":{"start":{"line":19,"column":8},"end":{"line":19,"column":80}},"5":{"start":{"line":25,"column":8},"end":{"line":25,"column":79}},"6":{"start":{"line":31,"column":20},"end":{"line":31,"column":53}},"7":{"start":{"line":32,"column":8},"end":{"line":32,"column":40}},"8":{"start":{"line":38,"column":20},"end":{"line":38,"column":53}},"9":{"start":{"line":39,"column":8},"end":{"line":39,"column":34}},"10":{"start":{"line":42,"column":0},"end":{"line":42,"column":20}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":5}},"loc":{"start":{"line":8,"column":18},"end":{"line":14,"column":5}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":4},"end":{"line":18,"column":5}},"loc":{"start":{"line":18,"column":22},"end":{"line":20,"column":5}},"line":18},"2":{"name":"(anonymous_2)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":5}},"loc":{"start":{"line":24,"column":25},"end":{"line":26,"column":5}},"line":24},"3":{"name":"(anonymous_3)","decl":{"start":{"line":30,"column":4},"end":{"line":30,"column":5}},"loc":{"start":{"line":30,"column":25},"end":{"line":33,"column":5}},"line":30},"4":{"name":"(anonymous_4)","decl":{"start":{"line":37,"column":4},"end":{"line":37,"column":5}},"loc":{"start":{"line":37,"column":27},"end":{"line":40,"column":5}},"line":37}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":15},"end":{"line":19,"column":79}},"type":"cond-expr","locations":[{"start":{"line":19,"column":28},"end":{"line":19,"column":74}},{"start":{"line":19,"column":77},"end":{"line":19,"column":79}}],"line":19},"1":{"loc":{"start":{"line":25,"column":15},"end":{"line":25,"column":78}},"type":"cond-expr","locations":[{"start":{"line":25,"column":31},"end":{"line":25,"column":66}},{"start":{"line":25,"column":69},"end":{"line":25,"column":78}}],"line":25}},"s":{"0":1,"1":1,"2":45,"3":45,"4":4,"5":4,"6":31,"7":31,"8":9,"9":9,"10":1},"f":{"0":45,"1":4,"2":4,"3":31,"4":9},"b":{"0":[4,0],"1":[4,0]},"inputSourceMap":{"version":3,