Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 145x 25104x 25104x 25104x 25104x 25104x 25104x 145x 23701x 23701x 23701x 23701x 23701x 23701x 145x 24916x 24916x 24903x 13469x 24916x 145x 145x 145x 145x 145x 145x 145x 145x 145x | 'use strict'; const { RegExp, RegExpPrototypeTest, Symbol, } = primordials; const Buffer = require('buffer').Buffer; const { writeBuffer } = internalBinding('fs'); const errors = require('internal/errors'); // IPv4 Segment const v4Seg = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; const v4Str = `(${v4Seg}[.]){3}${v4Seg}`; const IPv4Reg = new RegExp(`^${v4Str}$`); // IPv6 Segment const v6Seg = '(?:[0-9a-fA-F]{1,4})'; const IPv6Reg = new RegExp('^(' + `(?:${v6Seg}:){7}(?:${v6Seg}|:)|` + `(?:${v6Seg}:){6}(?:${v4Str}|:${v6Seg}|:)|` + `(?:${v6Seg}:){5}(?::${v4Str}|(:${v6Seg}){1,2}|:)|` + `(?:${v6Seg}:){4}(?:(:${v6Seg}){0,1}:${v4Str}|(:${v6Seg}){1,3}|:)|` + `(?:${v6Seg}:){3}(?:(:${v6Seg}){0,2}:${v4Str}|(:${v6Seg}){1,4}|:)|` + `(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|` + `(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|` + `(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:))` + ')(%[0-9a-zA-Z-.:]{1,})?$'); function isIPv4(s) { // TODO(aduh95): Replace RegExpPrototypeTest with RegExpPrototypeExec when it // no longer creates a perf regression in the dns benchmark. // eslint-disable-next-line node-core/avoid-prototype-pollution return RegExpPrototypeTest(IPv4Reg, s); } function isIPv6(s) { // TODO(aduh95): Replace RegExpPrototypeTest with RegExpPrototypeExec when it // no longer creates a perf regression in the dns benchmark. // eslint-disable-next-line node-core/avoid-prototype-pollution return RegExpPrototypeTest(IPv6Reg, s); } function isIP(s) { if (isIPv4(s)) return 4; if (isIPv6(s)) return 6; return 0; } function makeSyncWrite(fd) { return function(chunk, enc, cb) { if (enc !== 'buffer') chunk = Buffer.from(chunk, enc); this._handle.bytesWritten += chunk.length; const ctx = {}; writeBuffer(fd, chunk, 0, chunk.length, null, undefined, ctx); if (ctx.errno !== undefined) { const ex = errors.uvException(ctx); ex.errno = ctx.errno; return cb(ex); } cb(); }; } module.exports = { isIP, isIPv4, isIPv6, makeSyncWrite, normalizedArgsSymbol: Symbol('normalizedArgs') }; |