UNPKG

is-in-subnet

Version:

Check if an IPv4 or IPv6 address is contained in the given CIDR subnet

81 lines (51 loc) 2.72 kB
# is-in-subnet [![npm](https://img.shields.io/npm/v/is-in-subnet.svg)](https://www.npmjs.com/package/is-in-subnet) [![dependencies](https://img.shields.io/david/natesilva/is-in-subnet.svg)](https://www.npmjs.com/package/is-in-subnet) [![license](https://img.shields.io/github/license/natesilva/is-in-subnet.svg)](https://github.com/natesilva/is-in-subnet/blob/master/LICENSE) [![node](https://img.shields.io/node/v/is-in-subnet.svg)](https://www.npmjs.com/package/p-ratelimit) Check if an IPv4 or IPv6 address is contained in the given [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) subnet. - Small - Fast - Simple syntax - Full test coverage - TypeScript-friendly - Zero dependencies - 🆕 [Browser-friendly](#in-a-browser) See the 📖 [Reference](doc/reference.md) page for complete documentation. ## Installation ### With Node.js `npm install is-in-subnet` ### In a browser This module is compatible with Browserify and other bundling tools. If you prefer to load it as a single file from a CDN: - <https://cdn.jsdelivr.net/npm/is-in-subnet@4/browser/isInSubnet.js> - <https://cdn.jsdelivr.net/npm/is-in-subnet@4/browser/isInSubnet.min.js> The module is loaded as a global named `isInSubnet`. ## Basic Usage ### Node.js ```javascript const { isInSubnet } = require('is-in-subnet'); console.log(isInSubnet('10.5.0.1', '10.4.5.0/16')); // false console.log(isInSubnet('10.5.0.1', '10.4.5.0/15')); // true console.log(isInSubnet('2001:db8:f53a::1', '2001:db8:f53b::1:1/48')); // false console.log(isInSubnet('2001:db8:f53a::1', '2001:db8:f531::1:1/44')); // true ``` ### Browser ```javascript console.log(isInSubnet.isInSubnet('10.5.0.1', '10.4.5.0/16')); // if you don’t like that syntax, you may use this instead: console.log(isInSubnet.check('10.5.0.1', '10.4.5.0/16')); ``` ## More ways to use it ### Test multiple subnets at once - You can pass an array instead of a single subnet. ```javascript const inAnySubnet = isInSubnet('10.5.0.1', ['10.4.5.0/16', '192.168.1.0/24']); ``` ### Amortise the parsing cost using a functional version - `createChecker(subnetOrSubnets)` returns a function used to check an address ```javascript const checker = createChecker(['10.4.5.0/16', '192.168.1.0/24']); console.log(checker('10.5.0.1')); // true ``` ### Test for special types of addresses - `isPrivate(address)` — Private addresses (like `192.168.0.0`) - `isLocalhost(address)` — Localhost addresses (like `::1`) And more. See the [documentation](doc/reference.md#testing-for-special-address-ranges). ### Check if an address is valid - `isIPv4(address)`, `isIPv6(address)`, `isIP(address)` — works just like the similarly-named functions in Node’s `net` module.