UNPKG

5.76 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/Utils.js"],"names":["ipaddr","require","isValidStreamIndex","index","Number","isInteger","isWithinValidPublicIpRange","publicIp","range","parse","isValidPublicIP","ip","Error","isValid","stripUndefined","obj","result","Object","keys","forEach","key","undefined","valueOf","args","context","i","length","hasOwnProperty","call","module","exports","GetNested","arguments"],"mappings":";;AAAA;AACA,MAAMA,SAASC,QAAQ,WAAR,CAAf;AACA;;AAEA,MAAMC,qBAAqBC,SAAUC,OAAOC,SAAP,CAAiBD,OAAOD,KAAP,CAAjB,KAAmCC,OAAOD,KAAP,KAAiB,CAAzF;;AAEA,MAAMG,6BAA8BC,QAAD,IAAc;AACzC,cAAMC,QAAQR,OAAOS,KAAP,CAAaF,QAAb,EAAuBC,KAAvB,EAAd;AACA,eAAO,EAAEA,UAAU,WAAV,IACNA,UAAU,WADJ,IAENA,UAAU,UAFJ,IAGNA,UAAU,WAHJ,IAINA,UAAU,SAJJ,IAKNA,UAAU,UALJ,IAMNA,UAAU,aANN,CAAP;AAOP,CATD;;AAWA,MAAME,kBAAmBC,EAAD,IAAQ;AACxB,YAAI,CAACA,EAAL,EAAS;AACD,uBAAO,IAAIC,KAAJ,CAAU,cAAV,CAAP;AACP;AACD,YAAI,CAACZ,OAAOa,OAAP,CAAeF,EAAf,CAAL,EAAyB;AACjB,uBAAO,IAAIC,KAAJ,CAAW,wBAAsBD,EAAG,GAApC,CAAP;AACP;AACD,YAAI,CAACL,2BAA2BK,EAA3B,CAAL,EAAqC;AAC7B,uBAAO,IAAIC,KAAJ,CAAW,+BAA6BD,EAAG,GAA3C,CAAP;AACP;AACD,eAAO,IAAP;AACP,CAXD;;AAaA,MAAMG,iBAAkBC,GAAD,IAAS;AACxB,cAAMC,SAASD,GAAf;AACAE,eAAOC,IAAP,CAAYF,MAAZ,EAAoBG,OAApB,CAA4BC,OAAO;AAC3B,oBAAIJ,OAAOI,GAAP,KAAe,OAAOJ,OAAOI,GAAP,CAAP,KAAuB,QAA1C,EAAoD;AAC5CN,uCAAeE,OAAOI,GAAP,CAAf;AACP,iBAFD,MAEO,IAAIJ,OAAOI,GAAP,MAAgBC,SAApB,EAA+B;AAC9B,+BAAOL,OAAOI,GAAP,CAAP;AACP;AACR,SAND;AAOA,eAAOJ,MAAP;AACP,CAVD;;AAYA,MAAMM,UAAU,CAACP,GAAD,EAAM,GAAGQ,IAAT,KAAkB;AAC1B,YAAI,CAACR,GAAL,EAAU,OAAO,IAAP;AACV,cAAMS,UAAU,EAAET,GAAF,EAAhB;AACA,aAAK,IAAIU,IAAI,CAAb,EAAgBA,IAAIF,KAAKG,MAAzB,EAAiCD,GAAjC,EAAsC;AAC9B,oBAAI,CAAC,GAAGE,cAAH,CAAkBC,IAAlB,CAAuBJ,QAAQT,GAA/B,EAAoCQ,KAAKE,CAAL,CAApC,CAAL,EAAmD,OAAOJ,SAAP;AACnDG,wBAAQT,GAAR,GAAcS,QAAQT,GAAR,CAAYQ,KAAKE,CAAL,CAAZ,CAAd;AACP;AACD,eAAOD,QAAQT,GAAf;AACP,CARD;;AAUAc,OAAOC,OAAP,GAAiB;AACTC,kBAAUhB,GAAV,EAAe;AAAE;AACT,oBAAI,CAACA,GAAL,EAAU,OAAO,IAAP;AACV,qBAAK,IAAIU,IAAI,CAAb,EAAgBA,IAAIO,UAAUN,MAA9B,EAAsCD,GAAtC,EAA2C;AACnC,4BAAI,CAACV,IAAIY,cAAJ,CAAmBK,UAAUP,CAAV,CAAnB,CAAL,EAAuC;AAC/B,uCAAOJ,SAAP;AACP;AACDN,8BAAMA,IAAIiB,UAAUP,CAAV,CAAJ,CAAN;AACP;AACD,uBAAOV,GAAP;AACP,SAVQ;AAWTb,0BAXS;AAYTQ,uBAZS;AAaTJ,kCAbS;AAcTQ,sBAdS;AAeTQ;AAfS,CAAjB;;AAkBA;;;;;;;;;AASA;;;;;;AAMA;;;;;;AAMA;;;;;;;;;AASA;;;;;;;;;;;;AAYA","file":"Utils.js","sourcesContent":["//region 1. Platform Libraries\nconst ipaddr = require('ipaddr.js');\n//endregion\n\nconst isValidStreamIndex = index => (Number.isInteger(Number(index)) && Number(index) >= 0);\n\nconst isWithinValidPublicIpRange = (publicIp) => {\n const range = ipaddr.parse(publicIp).range();\n return !(range === 'broadcast'\n || range === 'linkLocal'\n || range === 'loopback'\n || range === 'multicast'\n || range === 'private'\n || range === 'reserved'\n || range === 'unspecified');\n};\n\nconst isValidPublicIP = (ip) => {\n if (!ip) {\n return new Error('No Public IP');\n }\n if (!ipaddr.isValid(ip)) {\n return new Error(`Malformed Public IP ${ip}`);\n }\n if (!isWithinValidPublicIpRange(ip)) {\n return new Error(`Public IP in Invalid Range ${ip}`);\n }\n return true;\n};\n\nconst stripUndefined = (obj) => {\n const result = obj;\n Object.keys(result).forEach(key => {\n if (result[key] && typeof result[key] === 'object') {\n stripUndefined(result[key]);\n } else if (result[key] === undefined) {\n delete result[key];\n }\n });\n return result;\n};\n\nconst valueOf = (obj, ...args) => {\n if (!obj) return null;\n const context = { obj };\n for (let i = 0; i < args.length; i++) {\n if (!{}.hasOwnProperty.call(context.obj, args[i])) return undefined;\n context.obj = context.obj[args[i]];\n }\n return context.obj;\n};\n\nmodule.exports = {\n GetNested(obj) { // TODO: Deprecated. Remove when possible.\n if (!obj) return null;\n for (var i = 1; i < arguments.length; i++) {\n if (!obj.hasOwnProperty(arguments[i])) {\n return undefined;\n }\n obj = obj[arguments[i]];\n }\n return obj;\n },\n isValidStreamIndex,\n isValidPublicIP,\n isWithinValidPublicIpRange,\n stripUndefined,\n valueOf,\n};\n\n/**\n * @typedef {object} Router\n * @property {*} use\n * @property {*} post\n * @property {*} get\n * @property {*} put\n * @property {*} delete\n */\n\n/**\n * @typedef {object} RateControl\n * @property {number} bitrate_limit\n * @property {number} frame_rate_limit\n */\n\n/**\n * @typedef {object} H264\n * @property {string} h264_profile\n * @property {number} gov_length\n */\n\n/**\n * @typedef {object} VideoInfo\n * @property {number} index\n * @property {*} start_time\n * @property {*} end_time\n * @property {string} bucket_name\n * @property {string} object_name\n */\n\n/**\n * @typedef {object} Stream\n * @property {string} rtsp_url\n * @property {number} trigger_idle_duration\n * @property {number} trigger_prealarm_duration\n * @property {number} trigger_video_duration\n * @property {RateControl} rate_control\n * @property {H264} h264\n * @property {VideoInfo} video_info\n * @property {string[]} triggered_streams\n */\n\n/**\n * @typedef {object} Camera\n * @property {string} username\n * @property {string} password\n * @property {string} public_address\n * @property {number} web_port\n */\n"]}
\No newline at end of file