UNPKG

slavery-js

Version:

A simple clustering app that allows you to scale an application on multiple thread, containers or machines

1 lines 2.62 kB
{"version":3,"sources":["../../src/utils/ipAndPort.ts"],"sourcesContent":["import * as os from 'os';\nimport * as ip from 'ip';\nimport getPort from 'get-port';\n\ninterface NetworkInterfaceInfo {\n ip: string;\n subnet: string;\n}\n\n\nfunction getLocalIpAndSubnet() : NetworkInterfaceInfo[] {\n const interfaces = os.networkInterfaces();\n const result = [];\n\n for (const name of Object.keys(interfaces)) {\n for (const iface of interfaces[name]!) {\n if (iface.family === 'IPv4' && !iface.internal) {\n result.push({ ip: iface.address, subnet: iface.netmask });\n }\n }\n }\n return result;\n}\n\n\nfunction isSameNetwork(localIp: string, localSubnet: string, targetIp: string) : boolean {\n const localSubnetInfo = ip.subnet(localIp, localSubnet);\n const targetSubnetInfo = ip.subnet(targetIp, localSubnet); // Using localSubnet for the mask\n return localSubnetInfo.networkAddress === targetSubnetInfo.networkAddress;\n}\n\nfunction findLocalIpOnSameNetwork(targetIp: string) : string | null {\n // if targetIp is localhost, use\n if(targetIp === 'localhost') targetIp = '127.0.0.1';\n // if targetIp is in the local network, return the local IP\n if (ip.isLoopback(targetIp) && ip.isPrivate(targetIp))\n return targetIp;\n // Otherwise, find the local IP on the same network\n const localNetworks = getLocalIpAndSubnet();\n // for each local network, check if the target IP is in the same network\n for (const network of localNetworks) {\n if (isSameNetwork(network.ip, network.subnet, targetIp)) {\n // return the local IP\n return network.ip;\n }\n }\n return null;\n}\n\nexport { findLocalIpOnSameNetwork, getLocalIpAndSubnet, getPort };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA,iCAAAA;AAAA;AAAA;AAAA,SAAoB;AACpB,SAAoB;AACpB,sBAAoB;AAQpB,SAAS,sBAA+C;AACpD,QAAM,aAAa,GAAG,kBAAkB;AACxC,QAAM,SAAS,CAAC;AAEhB,aAAW,QAAQ,OAAO,KAAK,UAAU,GAAG;AACxC,eAAW,SAAS,WAAW,IAAI,GAAI;AACnC,UAAI,MAAM,WAAW,UAAU,CAAC,MAAM,UAAU;AAC5C,eAAO,KAAK,EAAE,IAAI,MAAM,SAAS,QAAQ,MAAM,QAAQ,CAAC;AAAA,MAC5D;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AAGA,SAAS,cAAc,SAAiB,aAAqB,UAA4B;AACrF,QAAM,kBAAkB,GAAG,OAAO,SAAS,WAAW;AACtD,QAAM,mBAAmB,GAAG,OAAO,UAAU,WAAW;AACxD,SAAO,gBAAgB,mBAAmB,iBAAiB;AAC/D;AAEA,SAAS,yBAAyB,UAAkC;AAEhE,MAAG,aAAa,YAAa,YAAW;AAExC,MAAI,GAAG,WAAW,QAAQ,KAAK,GAAG,UAAU,QAAQ;AAChD,WAAO;AAEX,QAAM,gBAAgB,oBAAoB;AAE1C,aAAW,WAAW,eAAe;AACjC,QAAI,cAAc,QAAQ,IAAI,QAAQ,QAAQ,QAAQ,GAAG;AAErD,aAAO,QAAQ;AAAA,IACnB;AAAA,EACJ;AACA,SAAO;AACX;","names":["getPort"]}