@terascope/ip-utils 2.0.0-dev.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,17 @@
1
+ <!-- THIS FILE IS AUTO-GENERATED, EDIT docs/packages/ip-utils/overview.md -->
2
+
3
+ # IP Utils
4
+
5
+ > A collection of Teraslice IP Utilities
6
+
7
+ This is a package within the [Teraslice](https://github.com/terascope/teraslice) monorepo. See our [documentation](https://terascope.github.io/teraslice/docs/packages/ip-utils/overview) for more information or the [issues](https://github.com/terascope/teraslice/issues?q=is%3Aopen+is%3Aissue+label%3Apkg%2Fip-utils) associated with this package
8
+
9
+ ## Contributing
10
+
11
+ Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
12
+
13
+ Please make sure to update tests as appropriate.
14
+
15
+ ## License
16
+
17
+ [MIT](./LICENSE) licensed.
@@ -0,0 +1,70 @@
1
+ export declare function isIP(input: unknown): input is string;
2
+ /** Will throw if input is not a valid CIDR */
3
+ export declare function isIPRangeOrThrow(input: unknown): string;
4
+ /** Will throw if input is not a valid IP */
5
+ export declare function isIPOrThrow(input: unknown): string;
6
+ export declare function isIPv6(input: unknown): boolean;
7
+ export declare function isIPv4(input: unknown): boolean;
8
+ export declare function isMappedIPv4(input: unknown): boolean;
9
+ export declare function extractMappedIPv4(input: unknown): string;
10
+ export declare function inIPRange(input: unknown, args: {
11
+ min?: string;
12
+ max?: string;
13
+ cidr?: string;
14
+ }): boolean;
15
+ export declare function isRoutableIP(input: unknown): boolean;
16
+ export declare function isNonRoutableIP(input: unknown): boolean;
17
+ export declare function isCIDR(input: unknown): input is string;
18
+ /**
19
+ *
20
+ * @param input ip address block in CIDR notation
21
+ * @returns first IP address in the block
22
+ * @deprecated use getFirstUsableIPInCIDR
23
+ */
24
+ export declare function getCIDRMin(input: unknown): string;
25
+ /**
26
+ *
27
+ * @param input ip address block in CIDR notation
28
+ * @returns last ip address in the block
29
+ * @deprecated use getLastUsableIPInCIDR
30
+ */
31
+ export declare function getCIDRMax(input: unknown): string;
32
+ /**
33
+ *
34
+ * @param input ip address block in CIDR notation, inclusive
35
+ * @returns first IP address in the block
36
+ */
37
+ export declare function getFirstIPInCIDR(input: unknown): string;
38
+ /**
39
+ *
40
+ * @param input ip address block in CIDR notation
41
+ * @returns last ip address in the block, inclusive
42
+ */
43
+ export declare function getLastIPInCIDR(input: unknown): string;
44
+ /**
45
+ *
46
+ * @param input ip address block in CIDR notation
47
+ * @returns first usable ip address of the CIDR block
48
+ */
49
+ export declare function getFirstUsableIPInCIDR(input: unknown): string;
50
+ /**
51
+ *
52
+ * @param input ip address block in CIDR notation
53
+ * @returns last usable ip address of the CIDR block
54
+ */
55
+ export declare function getLastUsableIPInCIDR(input: unknown): string;
56
+ /**
57
+ *
58
+ * @param input ip address
59
+ * @returns IPv6 addresses are returned without leading 0's in a group or empty groups
60
+ * ipv4 addresses are simply returned
61
+ */
62
+ export declare function shortenIPv6Address(input: unknown): string;
63
+ export declare function getCIDRBroadcast(input: unknown): string;
64
+ export declare function getCIDRNetwork(input: unknown): string;
65
+ export declare function toCIDR(input: unknown, suffix: string | number): string;
66
+ export declare function isNonZeroCidr(input: string): boolean;
67
+ export declare function ipToInt(input: unknown): bigint;
68
+ export declare function intToIP(input: unknown, ipVersion: string | number): string;
69
+ export declare function reverseIP(input: unknown): string;
70
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAcA,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEpD;AAED,8CAA8C;AAC9C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMvD;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMlD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE9C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE9C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQpD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUxD;AAED,wBAAgB,SAAS,CACrB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAcT;AAwBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIpD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIvD;AAuDD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMvD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMtD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,UAOpD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,UAOnD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,UAMhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUvD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAYrD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAMtE;AAuBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAM9C;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAmB1E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUhD"}
@@ -0,0 +1,312 @@
1
+ import { toInteger, isNumberLike, toBigIntOrThrow, isNumber, isString, getTypeOf, isBoolean } from '@terascope/core-utils';
2
+ import { isIP as _isIP, isIPv4 as _isIPv4, isIPv6 as _isIPv6, ipVersion as _ipVersion } from '@chainsafe/is-ip';
3
+ import IPCIDR from 'ip-cidr';
4
+ import isCidr from 'is-cidr';
5
+ import ipaddr from 'ipaddr.js';
6
+ import { parseIp, stringifyIp } from 'ip-bigint';
7
+ import ip6addr from 'ip6addr';
8
+ export function isIP(input) {
9
+ return isString(input) && _isIP(input);
10
+ }
11
+ /** Will throw if input is not a valid CIDR */
12
+ export function isIPRangeOrThrow(input) {
13
+ if (!isCIDR(input)) {
14
+ throw new TypeError(`Expected ${input} (${getTypeOf(input)}) to be a valid IP range`);
15
+ }
16
+ return input;
17
+ }
18
+ /** Will throw if input is not a valid IP */
19
+ export function isIPOrThrow(input) {
20
+ if (!isString(input) || !isIP(input)) {
21
+ throw new TypeError(`Expected ${input} (${getTypeOf(input)}) to be a valid IP`);
22
+ }
23
+ return input;
24
+ }
25
+ export function isIPv6(input) {
26
+ return isString(input) && _isIPv6(input);
27
+ }
28
+ export function isIPv4(input) {
29
+ return isString(input) && _isIPv4(input);
30
+ }
31
+ export function isMappedIPv4(input) {
32
+ if (isIPv6(input)) {
33
+ const parsed = ipaddr.parse(input);
34
+ return parsed.isIPv4MappedAddress();
35
+ }
36
+ return false;
37
+ }
38
+ export function extractMappedIPv4(input) {
39
+ if (isIPv6(input) && isMappedIPv4(input)) {
40
+ const parsed = ipaddr.parse(input);
41
+ const ipv4 = parsed.toIPv4Address();
42
+ return ipv4.octets.join('.');
43
+ }
44
+ throw Error('input must be an IPv4 address mapped to an IPv6 address');
45
+ }
46
+ export function inIPRange(input, args) {
47
+ if (!isIP(input))
48
+ return false;
49
+ if (args.cidr != null) {
50
+ return isCIDR(args.cidr) && ip6addr.createCIDR(args.cidr).contains(input);
51
+ }
52
+ const ipType = _ipVersion(input);
53
+ const min = args.min || _assignMin(ipType);
54
+ const max = args.max || _assignMax(ipType);
55
+ return _validMinAndMax(min, max)
56
+ && ip6addr.createAddrRange(min, max).contains(input);
57
+ }
58
+ function _assignMin(ipType, min) {
59
+ if (min)
60
+ return min;
61
+ if (ipType === 4)
62
+ return '0.0.0.0';
63
+ return '::';
64
+ }
65
+ function _assignMax(ipType, max) {
66
+ if (max)
67
+ return max;
68
+ if (ipType === 4)
69
+ return '255.255.255.255';
70
+ return 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff';
71
+ }
72
+ function _validMinAndMax(min, max) {
73
+ return isIP(min) && isIP(max)
74
+ && _ipVersion(min) === _ipVersion(max)
75
+ && ip6addr.compare(min, max) === -1;
76
+ }
77
+ export function isRoutableIP(input) {
78
+ if (!isIP(input))
79
+ return false;
80
+ return !_isPrivateIP(input);
81
+ }
82
+ export function isNonRoutableIP(input) {
83
+ if (!isIP(input))
84
+ return false;
85
+ return _isPrivateIP(input);
86
+ }
87
+ function _isPrivateIP(input) {
88
+ const parsedIp = _parseIpAddress(input);
89
+ return _inPrivateIPRange(parsedIp.range()) || _inRestrictedIPRange(parsedIp);
90
+ }
91
+ function _parseIpAddress(input) {
92
+ if (isMappedIPv4(input)) {
93
+ return ipaddr.parse(extractMappedIPv4(input));
94
+ }
95
+ return ipaddr.parse(input);
96
+ }
97
+ function _inPrivateIPRange(ipRange) {
98
+ return [
99
+ 'private',
100
+ 'uniqueLocal',
101
+ 'loopback',
102
+ 'unspecified',
103
+ 'carrierGradeNat',
104
+ 'linkLocal',
105
+ 'reserved',
106
+ 'rfc6052',
107
+ 'teredo',
108
+ '6to4',
109
+ 'broadcast'
110
+ ].includes(ipRange);
111
+ }
112
+ // parse the ranges here
113
+ // to avoid having to parse every time the function is called
114
+ const ipv4RestrictedRanges = [
115
+ ipaddr.parseCIDR('192.31.196.0/24'),
116
+ ipaddr.parseCIDR('192.52.193.0/24'),
117
+ ipaddr.parseCIDR('192.175.48.0/24'),
118
+ ipaddr.parseCIDR('198.18.0.0/15'),
119
+ ipaddr.parseCIDR('224.0.0.0/8')
120
+ ];
121
+ const ipv6RestrictedRanges = [
122
+ ipaddr.parseCIDR('64:ff9b:1::/48'),
123
+ ipaddr.parseCIDR('100::/64'),
124
+ ipaddr.parseCIDR('2001::/23'),
125
+ ipaddr.parseCIDR('2620:4f:8000::/48')
126
+ ];
127
+ function _inRestrictedIPRange(parsedIp) {
128
+ const rangesToCheck = parsedIp.kind() === 'ipv4' ? ipv4RestrictedRanges : ipv6RestrictedRanges;
129
+ return rangesToCheck.some((ipRange) => parsedIp.match(ipRange));
130
+ }
131
+ export function isCIDR(input) {
132
+ return isString(input) && IPCIDR.isValidCIDR(input);
133
+ }
134
+ /**
135
+ *
136
+ * @param input ip address block in CIDR notation
137
+ * @returns first IP address in the block
138
+ * @deprecated use getFirstUsableIPInCIDR
139
+ */
140
+ export function getCIDRMin(input) {
141
+ return getFirstUsableIPInCIDR(input);
142
+ }
143
+ /**
144
+ *
145
+ * @param input ip address block in CIDR notation
146
+ * @returns last ip address in the block
147
+ * @deprecated use getLastUsableIPInCIDR
148
+ */
149
+ export function getCIDRMax(input) {
150
+ return getLastUsableIPInCIDR(input);
151
+ }
152
+ /**
153
+ *
154
+ * @param input ip address block in CIDR notation, inclusive
155
+ * @returns first IP address in the block
156
+ */
157
+ export function getFirstIPInCIDR(input) {
158
+ if (isCIDR(input)) {
159
+ return shortenIPv6Address(new IPCIDR(input).start());
160
+ }
161
+ throw Error('input must be a valid IP address in CIDR notation');
162
+ }
163
+ /**
164
+ *
165
+ * @param input ip address block in CIDR notation
166
+ * @returns last ip address in the block, inclusive
167
+ */
168
+ export function getLastIPInCIDR(input) {
169
+ if (isCIDR(input)) {
170
+ return shortenIPv6Address(new IPCIDR(input).end());
171
+ }
172
+ throw Error('input must be a valid IP address in CIDR notation');
173
+ }
174
+ /**
175
+ *
176
+ * @param input ip address block in CIDR notation
177
+ * @returns first usable ip address of the CIDR block
178
+ */
179
+ export function getFirstUsableIPInCIDR(input) {
180
+ if (isCIDR(input)) {
181
+ return createCIDR(input).first()
182
+ .toString();
183
+ }
184
+ throw Error('input must be a valid IP address in CIDR notation');
185
+ }
186
+ /**
187
+ *
188
+ * @param input ip address block in CIDR notation
189
+ * @returns last usable ip address of the CIDR block
190
+ */
191
+ export function getLastUsableIPInCIDR(input) {
192
+ if (isCIDR(input)) {
193
+ return createCIDR(input).last()
194
+ .toString();
195
+ }
196
+ throw Error('input must be a valid IP address in CIDR notation');
197
+ }
198
+ /**
199
+ *
200
+ * @param input ip address
201
+ * @returns IPv6 addresses are returned without leading 0's in a group or empty groups
202
+ * ipv4 addresses are simply returned
203
+ */
204
+ export function shortenIPv6Address(input) {
205
+ if (isIP(input)) {
206
+ return ip6addr.parse(input).toString();
207
+ }
208
+ throw Error('input must be a valid address');
209
+ }
210
+ export function getCIDRBroadcast(input) {
211
+ if (isCIDR(input)) {
212
+ const asCIDR = createCIDR(input);
213
+ if (isIPv4(asCIDR.address().toString())) {
214
+ return asCIDR.broadcast().toString();
215
+ }
216
+ }
217
+ throw Error('input must be a valid IPv4 address in CIDR notation');
218
+ }
219
+ export function getCIDRNetwork(input) {
220
+ if (isCIDR(input)) {
221
+ const asCIDR = createCIDR(input);
222
+ const address = asCIDR.address().toString();
223
+ if (isIPv4(address)) {
224
+ return ipaddr.IPv4.networkAddressFromCIDR(input).octets.join('.');
225
+ }
226
+ }
227
+ throw Error('input must be a valid IPv4 address in CIDR notation');
228
+ }
229
+ export function toCIDR(input, suffix) {
230
+ if (isIP(input) && _validSuffix(_ipVersion(input), suffix)) {
231
+ return createCIDR(input, toInteger(suffix)).toString();
232
+ }
233
+ throw Error('input must be a valid IP address and suffix must be a value <= 32 for IPv4 or <= 128 for IPv6');
234
+ }
235
+ function _validSuffix(ipVersion, suffix) {
236
+ if (isNumberLike(suffix)) {
237
+ const asInt = toInteger(suffix);
238
+ if (isBoolean(asInt))
239
+ return false;
240
+ if (asInt < 0)
241
+ return false;
242
+ if (ipVersion === 4)
243
+ return asInt <= 32;
244
+ if (ipVersion === 6)
245
+ return asInt <= 128;
246
+ }
247
+ return false;
248
+ }
249
+ function createCIDR(input, suffix) {
250
+ if (suffix != null) {
251
+ return ip6addr.createCIDR(input, suffix);
252
+ }
253
+ return ip6addr.createCIDR(input);
254
+ }
255
+ export function isNonZeroCidr(input) {
256
+ const cidrValue = isCidr(input);
257
+ if (isNumber(cidrValue) && cidrValue > 0)
258
+ return true;
259
+ return false;
260
+ }
261
+ export function ipToInt(input) {
262
+ if (isIP(input)) {
263
+ return toBigIntOrThrow(parseIp(input).number);
264
+ }
265
+ throw Error('input must be a valid ip address');
266
+ }
267
+ export function intToIP(input, ipVersion) {
268
+ const versionAsInt = toInteger(ipVersion);
269
+ if (isNumberLike(input) && (versionAsInt === 4 || versionAsInt === 6)) {
270
+ const bigInt = BigInt(input);
271
+ const maxIpV4 = 2n ** 32n - 1n;
272
+ const maxIpV6 = 2n ** 128n - 1n;
273
+ if (bigInt < 0n || bigInt > (versionAsInt === 4 ? maxIpV4 : maxIpV6)) {
274
+ throw new Error(`Invalid IP input: ${bigInt}`);
275
+ }
276
+ return stringifyIp({
277
+ number: bigInt,
278
+ version: versionAsInt,
279
+ ipv4mapped: false,
280
+ scopeid: undefined
281
+ });
282
+ }
283
+ throw Error('input should be a big int or string for large numbers. Version must be 4 or 6');
284
+ }
285
+ export function reverseIP(input) {
286
+ if (!isIP(input))
287
+ throw Error('input must be a valid ip address');
288
+ const parsedIp = ipaddr.parse(input);
289
+ if (parsedIp.kind() === 'ipv4') {
290
+ return parsedIp.octets.reverse().join('.');
291
+ }
292
+ return _reverseIPv6(parsedIp);
293
+ }
294
+ function _reverseIPv6(ip) {
295
+ return ip.toNormalizedString().split(':')
296
+ .reduce((parts, part) => {
297
+ parts.push(_expandIPv6Part(part));
298
+ return parts;
299
+ }, [])
300
+ .join('')
301
+ .split('')
302
+ .reverse()
303
+ .join('.');
304
+ }
305
+ function _expandIPv6Part(part) {
306
+ let expandedPart = part;
307
+ while (expandedPart.length < 4) {
308
+ expandedPart = `0${expandedPart}`;
309
+ }
310
+ return expandedPart;
311
+ }
312
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@terascope/ip-utils",
3
+ "displayName": "IP Utils",
4
+ "version": "2.0.0-dev.10",
5
+ "description": "A collection of Teraslice IP Utilities",
6
+ "homepage": "https://github.com/terascope/teraslice/tree/master/packages/ip-utils#readme",
7
+ "bugs": {
8
+ "url": "https://github.com/terascope/teraslice/issues"
9
+ },
10
+ "repository": "git@github.com:terascope/teraslice.git",
11
+ "license": "MIT",
12
+ "author": "Terascope, LLC <info@terascope.io>",
13
+ "sideEffects": false,
14
+ "type": "module",
15
+ "main": "dist/src/index.js",
16
+ "typings": "dist/src/index.d.ts",
17
+ "files": [
18
+ "dist/src/**/*"
19
+ ],
20
+ "scripts": {
21
+ "benchmark": "yarn build && node bench/index.js",
22
+ "build": "tsc --build",
23
+ "build:watch": "yarn build --watch",
24
+ "test": "node ../scripts/bin/ts-scripts test ../ip-utils --",
25
+ "test:debug": "node ../scripts/bin/ts-scripts test --debug ../ip-utils --",
26
+ "test:watch": "node ../scripts/bin/ts-scripts test --watch ../ip-utils --"
27
+ },
28
+ "resolutions": {
29
+ "debug": "~4.4.3"
30
+ },
31
+ "dependencies": {
32
+ "@chainsafe/is-ip": "~2.1.0",
33
+ "@terascope/core-utils": "~2.0.0-dev.10",
34
+ "@terascope/types": "~2.0.0-dev.8",
35
+ "ip-bigint": "~8.2.2",
36
+ "ip-cidr": "~4.0.2",
37
+ "ip6addr": "~0.2.5",
38
+ "ipaddr.js": "~2.2.0",
39
+ "is-cidr": "~6.0.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/ip6addr": "^0.2.6"
43
+ },
44
+ "engines": {
45
+ "node": ">=22.0.0",
46
+ "yarn": ">=1.22.19"
47
+ },
48
+ "publishConfig": {
49
+ "access": "public",
50
+ "registry": "https://registry.npmjs.org/"
51
+ },
52
+ "srcMain": "src/index.ts",
53
+ "terascope": {
54
+ "enableTypedoc": true,
55
+ "testSuite": "unit"
56
+ }
57
+ }