{"id":15006094,"url":"https://github.com/crabtree/ctr-ipaddr-js","last_synced_at":"2025-10-30T11:30:36.568Z","repository":{"id":42488029,"uuid":"108668283","full_name":"crabtree/ctr-ipaddr-js","owner":"crabtree","description":"Work with IPv4 addresses - JavaScript","archived":false,"fork":false,"pushed_at":"2023-08-02T01:38:49.000Z","size":225,"stargazers_count":4,"open_issues_count":6,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-03T14:49:09.448Z","etag":null,"topics":["ctr-ipaddr","ctr-ipaddr-js","hacktoberfest","ipaddress","ipv4","ipv4-address","javascript","javascript-library","js","netmask","node-js","nodejs","nodejs-modules","subnet"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crabtree.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-28T17:10:39.000Z","updated_at":"2022-05-27T21:09:48.000Z","dependencies_parsed_at":"2024-10-30T04:20:34.389Z","dependency_job_id":null,"html_url":"https://github.com/crabtree/ctr-ipaddr-js","commit_stats":{"total_commits":17,"total_committers":1,"mean_commits":17.0,"dds":0.0,"last_synced_commit":"e44aa4100d53e027a1e5fa8621bfaf01dcd6497f"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crabtree%2Fctr-ipaddr-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crabtree%2Fctr-ipaddr-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crabtree%2Fctr-ipaddr-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crabtree%2Fctr-ipaddr-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crabtree","download_url":"https://codeload.github.com/crabtree/ctr-ipaddr-js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238829557,"owners_count":19537720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ctr-ipaddr","ctr-ipaddr-js","hacktoberfest","ipaddress","ipv4","ipv4-address","javascript","javascript-library","js","netmask","node-js","nodejs","nodejs-modules","subnet"],"created_at":"2024-09-24T19:01:37.982Z","updated_at":"2025-10-30T11:30:36.042Z","avatar_url":"https://github.com/crabtree.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ctr-ipaddr-js\r\n\r\n[![Maintainability](https://api.codeclimate.com/v1/badges/369491a92154d4431283/maintainability)](https://codeclimate.com/github/crabtree/ctr-ipaddr-js/maintainability)\r\n[![Test Coverage](https://api.codeclimate.com/v1/badges/369491a92154d4431283/test_coverage)](https://codeclimate.com/github/crabtree/ctr-ipaddr-js/test_coverage)\r\n\r\n## Installation\r\n\r\n```bash\r\n$ npm install ctr-ipaddr\r\n```\r\n\r\n## Usage\r\n\r\n```js\r\nconst {IPv4} = require('ctr-ipaddr');\r\n```\r\n\r\n### Convert dotted string into long representation\r\n\r\n```js\r\nlet ipLong = IPv4.toLong(\"192.168.0.1\"); // =\u003e 3232235521\r\n```\r\n\r\n### Convert long representation to dotted string\r\n\r\n```js\r\nlet ipStr = IPv4.fromLong(3232235521); // =\u003e \"192.168.0.1\"\r\n```\r\n\r\n### Convert to CIDR mask\r\n\r\n```js\r\nlet cidr1 = IPv4.cidrFromMask(\"255.255.255.0\"); // =\u003e 24\r\nlet cidr2 = IPv4.cidrFromMask(24); // =\u003e 24\r\nlet cidr3 = IPv4.cidrFromMask(4294967040); // =\u003e 24\r\n```\r\n\r\n### Initializing the object\r\n\r\n```js\r\nlet ip1 = new IPv4(\"192.168.0.1/24\");\r\nlet ip2 = new IPv4(\"192.168.0.1/255.255.255.0\");\r\nlet ip3 = new IPv4(\"192.168.0.1\", 24);\r\nlet ip4 = new IPv4(\"192.168.0.1\", \"255.255.255.0\");\r\nlet ip5 = new IPv4(3232235521, 24);\r\n```\r\n\r\nAfter initialization it offers you following properties:\r\n\r\n```json\r\n{\r\n  \"ip\": \"192.168.0.1\",\r\n  \"ipLong\": 3232235521,\r\n  \"mask\": \"255.255.255.0\",\r\n  \"maskLong\": 4294967040,\r\n  \"maskCidr\": 24,\r\n  \"hostMaskLong\": 255,\r\n  \"hostMask\": \"0.0.0.255\",\r\n  \"netSize\": 256,\r\n  \"netAddrLong\": 3232235520,\r\n  \"netAddr\": \"192.168.0.0\",\r\n  \"broadcastLong\": 3232235775,\r\n  \"broadcast\": \"192.168.0.255\" \r\n}\r\n```\r\n\r\n### Generator method eachForSubnet\r\n\r\nOn the instance of an object there is also a generator method ```* eachForSubnet(startIp = void 0)```, which returns a generator for all IPv4 objects for IP addresses from a subnet. If you not specify the ```startIp``` parameter the generation will be started from the first address of the subnet.\r\n\r\n```js\r\nlet subnet = ip1.eachForSubnet();\r\nsubnet.next(); // =\u003e { value: IPv4 { ip: 192.168.0.0, ... }, done: false }\r\nsubnet.next(); // =\u003e { value: IPv4 { ip: 192.168.0.1, ... }, done: false }\r\nsubnet.next(); // =\u003e { value: IPv4 { ip: 192.168.0.2, ... }, done: false }\r\n...\r\nsubnet.next(); // =\u003e { value: IPv4 { ip: 192.168.0.255, ... }, done: false }\r\nsubnet.next(); // =\u003e { value: undefined, done: true }\r\n```\r\n\r\n```js\r\nlet subnet = ip1.eachForSubnet(\"192.168.0.253\");\r\nsubnet.next(); // =\u003e { value: IPv4 { ip: 192.168.0.253, ... }, done: false }\r\nsubnet.next(); // =\u003e { value: IPv4 { ip: 192.168.0.254, ... }, done: false }\r\nsubnet.next(); // =\u003e { value: IPv4 { ip: 192.168.0.255, ... }, done: false }\r\nsubnet.next(); // =\u003e { value: undefined, done: true }\r\n```\r\n\r\n### Checking if an address belongs to the subnet\r\n\r\nOn the instance of an object there is a method named `belongsToSubnet(ip)`, which returns true when the given ip address belongs to the subnet represented by the instance.\r\n\r\n```js\r\nip1.belongsToSubnet(\"192.168.0.5\"); // =\u003e true\r\nip1.belongsToSubnet(\"10.0.0.1\"); // =\u003e false\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrabtree%2Fctr-ipaddr-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrabtree%2Fctr-ipaddr-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrabtree%2Fctr-ipaddr-js/lists"}