{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 110d0d0f18409d28d74c","webpack:///./src/shared/utils.ts","webpack:///./src/shared/browser-info.ts","webpack:///./src/shared/console.ts","webpack:///./src/shared/browser-context.ts","webpack:///./src/index.ts","webpack:///./src/shared/version-map.ts","webpack:///./src/shared/system-info.ts","webpack:///./src/classes/devtools-detector.ts","webpack:///./src/checkers/checkers.ts","webpack:///./src/checkers/dep-reg-to-string.checker.ts","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/compare-versions/index.js","webpack:///./src/checkers/element-id.checker.ts","webpack:///./src/checkers/function-to-string.checker.ts","webpack:///./src/checkers/reg-to-string.checker.ts","webpack:///./src/checkers/debugger.checker.ts","webpack:///./src/checkers/date-to-string.checker.ts","webpack:///./src/shared/platform-info.ts"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","global","__webpack_exports__","options","_a","includes","_b","excludes","included","excluded","_i","includes_1","length","item","_c","excludes_1","specific","version","operator","specificVersion","__WEBPACK_IMPORTED_MODULE_1__version_map__","undefined","__WEBPACK_IMPORTED_MODULE_0_compare_versions__","window","globalThis","__WEBPACK_IMPORTED_MODULE_1__utils__","isFirefox","test","__WEBPACK_IMPORTED_MODULE_0__browser_context__","isIE","isEdge","isWebkit","isChrome","chrome","isSafari","safari","pushNotification","toString","log","table","clear","__WEBPACK_IMPORTED_MODULE_0__browser_info__","cacheConsoleMethod","console","args","arguments","apply","_args","document","createElement","__WEBPACK_IMPORTED_MODULE_0__utils__","userAgent","navigator","value","listener","defaultDetector","addListener","removeListener","isLaunch","launch","stop","time","setDetectDelay","__WEBPACK_IMPORTED_MODULE_0__classes_devtools_detector__","__WEBPACK_IMPORTED_MODULE_1__checkers_checkers__","__WEBPACK_IMPORTED_MODULE_2__shared_utils__","__WEBPACK_IMPORTED_MODULE_3__shared_browser_info__","__WEBPACK_IMPORTED_MODULE_4__shared_console__","__WEBPACK_IMPORTED_MODULE_5__shared_platform_info__","__WEBPACK_IMPORTED_MODULE_6__shared_version_map__","__WEBPACK_IMPORTED_MODULE_7__shared_system_info__","checkers","versionMap","versions_1","match","split","versionSpec","versionNumber","isIpad","isMac","isIphone","isAndroid","isWindows","DevtoolsDetector","_listeners","_isOpen","_detectLoopStopped","_detectLoopDelay","_checkers","slice","_detectLoop","clearTimeout","_timer","push","filter","_broadcast","isOpen","checkerName","checker","isEnable","sent","setTimeout","_this","__WEBPACK_IMPORTED_MODULE_0__dep_reg_to_string_checker__","__WEBPACK_IMPORTED_MODULE_1__element_id_checker__","__WEBPACK_IMPORTED_MODULE_2__function_to_string_checker__","__WEBPACK_IMPORTED_MODULE_3__reg_to_string_checker__","__WEBPACK_IMPORTED_MODULE_4__debugger_checker__","__WEBPACK_IMPORTED_MODULE_5__date_to_string_checker__","reg","depRegToStringChecker","__WEBPACK_IMPORTED_MODULE_1__shared_console__","dep","__WEBPACK_IMPORTED_MODULE_0__shared_browser_info__","g","Function","eval","e","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","semver","v","replace","patchIndex","str","q","indexOf","indexOrEnd","arr","substring","tryParse","isNaN","Number","validate","TypeError","Error","compareVersions","v1","v2","forEach","s1","s2","Math","max","n1","parseInt","n2","sp1","sp2","p1","map","p2","allowedOperators","operatorResMap",">",">=","=","<=","<","compare","op","join","validateOperator","res","ele","__WEBPACK_IMPORTED_MODULE_3__shared_browser_context__","elementIdChecker","devtoolsTestFunction","count","functionToStringChecker","__WEBPACK_IMPORTED_MODULE_3__shared_utils__","__WEBPACK_IMPORTED_MODULE_2__shared_system_info__","regToStringChecker","__WEBPACK_IMPORTED_MODULE_0__shared_console__","__WEBPACK_IMPORTED_MODULE_1__shared_browser_info__","now","performance","Date","debuggerChecker","startTime","constructor","date","dateToStringChecker","__WEBPACK_IMPORTED_MODULE_3____","isMobile"],"mappings":"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","file":"devtools-detector.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"devtoolsDetector\"] = factory();\n\telse\n\t\troot[\"devtoolsDetector\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 110d0d0f18409d28d74c","import { compare, CompareOperator } from 'compare-versions';\nimport { versionMap } from './version-map';\n\nexport interface MatchOptions {\n includes?: boolean[];\n excludes?: boolean[];\n}\n\nexport function match(options: MatchOptions = {}): boolean {\n const { includes = [], excludes = [] } = options;\n\n let included = false;\n let excluded = false;\n\n for (const item of includes) {\n if (item === true) {\n included = true;\n break;\n }\n }\n\n for (const item of excludes) {\n if (item === true) {\n excluded = true;\n break;\n }\n }\n\n return included && !excluded;\n}\n\nexport function specificVersionMatch(\n specific: string,\n version: string,\n operator: CompareOperator\n): boolean {\n const specificVersion = versionMap[specific];\n\n if (specificVersion === undefined) {\n return false;\n }\n\n return compare(specificVersion, version, operator);\n}\n\ndeclare const global: any;\n\nexport function getGlobalThis(this: any): typeof globalThis {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n\n return this;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/utils.ts","import { userAgent } from './browser-context';\nimport { getGlobalThis } from './utils';\n\nconst globalThis = getGlobalThis();\n\ndeclare global {\n interface Window {\n // Chrome\n chrome?: unknown;\n // Firefox\n InstallTrigger?: unknown;\n // Safari\n safari?: {\n pushNotification: () => void;\n };\n }\n}\n\n/** firefox */\nexport const isFirefox =\n 'InstallTrigger' in (globalThis?.window || {}) || /firefox/i.test(userAgent);\n\n/** ie */\nexport const isIE =\n // ie 11+\n /trident/i.test(userAgent) ||\n // other ie browser\n /msie/i.test(userAgent);\n\n/** edge */\nexport const isEdge = /edge/i.test(userAgent);\n\n/** webkit */\nexport const isWebkit = /webkit/i.test(userAgent) && !isEdge;\n\n/** chrome */\nexport const isChrome =\n typeof globalThis?.window?.chrome !== 'undefined' ||\n /chrome/i.test(userAgent) ||\n // chrome iOS\n /CriOS/i.test(userAgent);\n\n/** safari */\nexport const isSafari =\n (globalThis?.window?.safari?.pushNotification || false).toString() ===\n '[object SafariRemoteNotification]' ||\n (/safari/i.test(userAgent) && !isChrome);\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/browser-info.ts","import { isEdge, isIE } from './browser-info';\n\n/**\n * 缓存 console.log 等方法,防止第三方代码 hook console.log 等方法\n * 但是 ie 浏览器下不能缓存 console.log 之类的方法, 因为每次打开浏览器都是不同的 console, 调用缓存后的方法则会异常\n *\n */\nfunction cacheConsoleMethod(name: K): Console[K] {\n if (console) {\n if (isIE || isEdge) {\n // IE 没有 console.table\n if (name === 'log' || name === 'clear') {\n return (...args: any[]) => {\n console[name](...args);\n };\n }\n } else {\n return console[name];\n }\n }\n\n return (..._args: any[]) => {};\n}\n\nexport const log = cacheConsoleMethod('log');\n\nexport const table = cacheConsoleMethod('table');\n\nexport const clear = cacheConsoleMethod('clear');\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/console.ts","import { FnArguments } from '../types/utils.type';\nimport { getGlobalThis } from './utils';\n\nconst globalThis = getGlobalThis();\n\nexport function createElement(\n ...args: FnArguments\n): ReturnType {\n if (globalThis?.document) {\n return globalThis.document.createElement(...args);\n }\n\n return {} as any;\n}\n\nexport const userAgent = globalThis?.navigator?.userAgent || 'xxxxx';\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/browser-context.ts","import { DevtoolsDetector } from './classes/devtools-detector';\r\nimport { DevtoolsDetectorListener } from './types/devtools-detector-listener.type';\r\nimport * as checkers from './checkers/checkers';\r\n\r\nconst defaultDetector = new DevtoolsDetector({\r\n // 会按照 checker 的顺序执行检查\r\n checkers: [\r\n checkers.elementIdChecker,\r\n checkers.regToStringChecker,\r\n checkers.functionToStringChecker,\r\n checkers.depRegToStringChecker,\r\n checkers.dateToStringChecker,\r\n checkers.debuggerChecker,\r\n ],\r\n});\r\n\r\nexport function addListener(listener: DevtoolsDetectorListener) {\r\n defaultDetector.addListener(listener);\r\n}\r\n\r\nexport function removeListener(listener: DevtoolsDetectorListener) {\r\n defaultDetector.removeListener(listener);\r\n}\r\n\r\nexport function isLaunch() {\r\n return defaultDetector.isLaunch();\r\n}\r\n\r\nexport function launch() {\r\n defaultDetector.launch();\r\n}\r\n\r\nexport function stop() {\r\n defaultDetector.stop();\r\n}\r\n\r\nexport function setDetectDelay(time: number) {\r\n defaultDetector.setDetectDelay(time);\r\n}\r\n\r\nexport default defaultDetector;\r\n\r\nexport { DevtoolsDetail } from './types/devtools-detail.type';\r\nexport { DevtoolsDetectorListener } from './types/devtools-detector-listener.type';\r\nexport { DevtoolsStatusChecker } from './types/devtools-status-checker.type';\r\n\r\nexport { DevtoolsDetector, checkers };\r\n\r\nexport { match, specificVersionMatch } from './shared/utils';\r\n\r\nexport * from './shared/browser-info';\r\nexport * from './shared/console';\r\nexport * from './shared/platform-info';\r\nexport * from './shared/version-map';\r\nexport * from './shared/system-info';\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.ts","/**\n * @description\n * version-map 方便以后根据浏览器各种特征的版本选择 checker\n * 现在暂时还未用到\n */\n\nimport { userAgent } from './browser-context';\n\nconst versions = (userAgent || '').match(/\\w+\\/(\\d|\\.)+(\\s|$)/gi) || [];\nconst versionMap: { [key: string]: string } = {};\n\nfor (const version of versions) {\n const [versionSpec, versionNumber] = version.split('/');\n versionMap[versionSpec] = versionNumber;\n}\n\nexport { versionMap };\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/version-map.ts","import { userAgent } from \"./browser-context\";\n\n\nexport const isIpad = /ipad/i.test(userAgent);\n\nexport const isMac = /macintosh/i.test(userAgent);\n\nexport const isIphone = /iphone/i.test(userAgent);\n\nexport const isAndroid = /android/i.test(userAgent);\n\nexport const isWindows = /windows/i.test(userAgent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/system-info.ts","import { DevtoolsDetail } from '../types/devtools-detail.type';\nimport { DevtoolsDetectorListener } from '../types/devtools-detector-listener.type';\nimport { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\n\nexport interface DetectorOptions {\n checkers: DevtoolsStatusChecker[];\n}\n\nexport class DevtoolsDetector {\n private readonly _checkers: DevtoolsStatusChecker[];\n private _listeners: DevtoolsDetectorListener[] = [];\n private _isOpen = false;\n private _detectLoopStopped = true;\n private _detectLoopDelay = 500;\n private _timer!: number;\n\n constructor({ checkers }: DetectorOptions) {\n this._checkers = checkers.slice();\n }\n\n launch() {\n if (this._detectLoopDelay <= 0) {\n this.setDetectDelay(500);\n }\n if (this._detectLoopStopped) {\n this._detectLoopStopped = false;\n this._detectLoop();\n }\n }\n\n stop() {\n if (!this._detectLoopStopped) {\n this._detectLoopStopped = true;\n clearTimeout(this._timer);\n }\n }\n\n isLaunch() {\n return !this._detectLoopStopped;\n }\n\n setDetectDelay(value: number) {\n this._detectLoopDelay = value;\n }\n\n addListener(listener: DevtoolsDetectorListener) {\n this._listeners.push(listener);\n }\n\n removeListener(listener: DevtoolsDetectorListener) {\n this._listeners = this._listeners.filter((value) => value !== listener);\n }\n\n private _broadcast(value: DevtoolsDetail) {\n for (const listener of this._listeners) {\n try {\n listener(value.isOpen, value);\n } catch {\n /** nothing to do */\n }\n }\n }\n\n private async _detectLoop() {\n let isOpen = false;\n let checkerName = '';\n\n for (const checker of this._checkers) {\n const isEnable = await checker.isEnable();\n if (isEnable) {\n checkerName = checker.name;\n isOpen = await checker.isOpen();\n }\n\n // 任意一个 checker 返回 true 就视为 devtools 已打开\n if (isOpen) {\n break;\n }\n }\n\n if (isOpen != this._isOpen) {\n this._isOpen = isOpen;\n this._broadcast({\n isOpen,\n checkerName,\n });\n }\n\n if (this._detectLoopDelay > 0) {\n this._timer = setTimeout(() => this._detectLoop(), this._detectLoopDelay);\n } else {\n this.stop();\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/classes/devtools-detector.ts","export { depRegToStringChecker } from './dep-reg-to-string.checker';\r\nexport { elementIdChecker } from './element-id.checker';\r\nexport { functionToStringChecker } from './function-to-string.checker';\r\nexport { regToStringChecker } from './reg-to-string.checker';\r\nexport { debuggerChecker } from './debugger.checker';\r\nexport { dateToStringChecker } from './date-to-string.checker';\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/checkers.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\nimport { isEdge, isFirefox, isIE } from '../shared/browser-info';\nimport { table, clear } from '../shared/console';\nimport { match } from '../shared/utils';\n\nconst reg = / /;\nlet isOpen = false;\n\nreg.toString = () => {\n isOpen = true;\n return depRegToStringChecker.name;\n};\n\nexport const depRegToStringChecker: DevtoolsStatusChecker = {\n name: 'dep-reg-to-string',\n async isOpen(): Promise {\n isOpen = false;\n\n table({ dep: reg });\n clear();\n\n return isOpen;\n },\n async isEnable(): Promise {\n return match({\n /** 匹配所有浏览器 */\n includes: [true],\n /** 排除 firefox 和 ie */\n excludes: [isFirefox, isIE],\n });\n },\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/dep-reg-to-string.checker.ts","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 10\n// module chunks = 0","/* global define */\n(function (root, factory) {\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.compareVersions = factory();\n }\n}(this, function () {\n\n var semver = /^v?(?:\\d+)(\\.(?:[x*]|\\d+)(\\.(?:[x*]|\\d+)(\\.(?:[x*]|\\d+))?(?:-[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\n\n function indexOrEnd(str, q) {\n return str.indexOf(q) === -1 ? str.length : str.indexOf(q);\n }\n\n function split(v) {\n var c = v.replace(/^v/, '').replace(/\\+.*$/, '');\n var patchIndex = indexOrEnd(c, '-');\n var arr = c.substring(0, patchIndex).split('.');\n arr.push(c.substring(patchIndex + 1));\n return arr;\n }\n\n function tryParse(v) {\n return isNaN(Number(v)) ? v : Number(v);\n }\n\n function validate(version) {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n if (!semver.test(version)) {\n throw new Error('Invalid argument not valid semver (\\''+version+'\\' received)');\n }\n }\n\n function compareVersions(v1, v2) {\n [v1, v2].forEach(validate);\n\n var s1 = split(v1);\n var s2 = split(v2);\n\n for (var i = 0; i < Math.max(s1.length - 1, s2.length - 1); i++) {\n var n1 = parseInt(s1[i] || 0, 10);\n var n2 = parseInt(s2[i] || 0, 10);\n\n if (n1 > n2) return 1;\n if (n2 > n1) return -1;\n }\n\n var sp1 = s1[s1.length - 1];\n var sp2 = s2[s2.length - 1];\n\n if (sp1 && sp2) {\n var p1 = sp1.split('.').map(tryParse);\n var p2 = sp2.split('.').map(tryParse);\n\n for (i = 0; i < Math.max(p1.length, p2.length); i++) {\n if (p1[i] === undefined || typeof p2[i] === 'string' && typeof p1[i] === 'number') return -1;\n if (p2[i] === undefined || typeof p1[i] === 'string' && typeof p2[i] === 'number') return 1;\n\n if (p1[i] > p2[i]) return 1;\n if (p2[i] > p1[i]) return -1;\n }\n } else if (sp1 || sp2) {\n return sp1 ? -1 : 1;\n }\n\n return 0;\n };\n\n var allowedOperators = [\n '>',\n '>=',\n '=',\n '<',\n '<='\n ];\n\n var operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1]\n };\n\n function validateOperator(op) {\n if (typeof op !== 'string') {\n throw new TypeError('Invalid operator type, expected string but got ' + typeof op);\n }\n if (allowedOperators.indexOf(op) === -1) {\n throw new TypeError('Invalid operator, expected one of ' + allowedOperators.join('|'));\n }\n }\n\n compareVersions.validate = function(version) {\n return typeof version === 'string' && semver.test(version);\n }\n\n compareVersions.compare = function (v1, v2, operator) {\n // Validate operator\n validateOperator(operator);\n\n // since result of compareVersions can only be -1 or 0 or 1\n // a simple map can be used to replace switch\n var res = compareVersions(v1, v2);\n return operatorResMap[operator].indexOf(res) > -1;\n }\n\n return compareVersions;\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/compare-versions/index.js\n// module id = 11\n// module chunks = 0","import { isEdge, isIE, isFirefox } from '../shared/browser-info';\nimport { clear, log } from '../shared/console';\nimport { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\nimport { match } from '../shared/utils';\nimport { createElement } from '../shared/browser-context';\n\nconst ele = createElement('div');\nlet isOpen = false;\n\nObject.defineProperty(ele, 'id', {\n get() {\n isOpen = true;\n return elementIdChecker.name;\n },\n configurable: true,\n});\n\nexport const elementIdChecker: DevtoolsStatusChecker = {\n name: 'element-id',\n async isOpen(): Promise {\n isOpen = false;\n\n log(ele);\n clear();\n\n return isOpen;\n },\n async isEnable(): Promise {\n return match({\n /** 匹配所有浏览器 */\n includes: [true],\n excludes: [isIE, isEdge, isFirefox],\n });\n },\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/element-id.checker.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\nimport { isFirefox, isChrome } from '../shared/browser-info';\nimport { clear, log } from '../shared/console';\nimport { isIpad, isIphone } from '../shared/system-info';\nimport { match } from '../shared/utils';\n\nfunction devtoolsTestFunction() {\n // nothing todo\n}\n\nlet count = 0;\n\ndevtoolsTestFunction.toString = () => {\n count++;\n\n return '';\n};\n\nexport const functionToStringChecker: DevtoolsStatusChecker = {\n name: 'function-to-string',\n async isOpen(): Promise {\n count = 0;\n\n log(devtoolsTestFunction);\n clear();\n\n return count === 2;\n },\n async isEnable(): Promise {\n return match({\n /** 匹配所有浏览器 */\n includes: [true],\n /** 排除 firefox 和 ipad 或 iphone 上的 chrome */\n excludes: [\n isFirefox,\n // ipad 或 iphone 上的 chrome\n (isIpad || isIphone) && isChrome,\n ],\n });\n },\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/function-to-string.checker.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\nimport { clear, log } from '../shared/console';\nimport { isWebkit } from '../shared/browser-info';\nimport { match } from '../shared/utils';\n\nconst reg = / /;\nlet isOpen = false;\n\nreg.toString = () => {\n isOpen = true;\n return regToStringChecker.name;\n};\n\nexport const regToStringChecker: DevtoolsStatusChecker = {\n name: 'reg-to-string',\n async isOpen(): Promise {\n isOpen = false;\n\n log(reg);\n clear();\n\n return isOpen;\n },\n async isEnable(): Promise {\n return match({\n /** 匹配所有浏览器 */\n includes: [true],\n /** 排除 webkit */\n excludes: [isWebkit],\n });\n },\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/reg-to-string.checker.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\n\nfunction now() {\n if (performance) {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\nexport const debuggerChecker: DevtoolsStatusChecker = {\n name: 'debugger-checker',\n async isOpen(): Promise {\n const startTime = now();\n\n // tslint:disable-next-line:no-empty only-arrow-functions\n (function () {}.constructor('debugger')());\n\n return now() - startTime > 100;\n },\n async isEnable(): Promise {\n return true;\n },\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/debugger.checker.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\r\nimport { isChrome } from '../shared/browser-info';\r\nimport { clear, log } from '../shared/console';\r\nimport { match } from '../shared/utils';\r\nimport { isIpad, isIphone } from '..';\r\n\r\nvar date = new Date();\r\n\r\nlet count = 0;\r\n\r\ndate.toString = () => {\r\n count++;\r\n\r\n return '';\r\n};\r\n\r\n// see https://github.com/ChromeDevTools/devtools-frontend/front_end/core/sdk/RemoteObject.ts\r\nexport const dateToStringChecker: DevtoolsStatusChecker = {\r\n name: 'date-to-string',\r\n async isOpen(): Promise {\r\n count = 0;\r\n\r\n log(date);\r\n clear();\r\n\r\n return count === 2;\r\n },\r\n async isEnable(): Promise {\r\n return match({\r\n /** 仅针对 chrome 其他待测试 */\r\n includes: [isChrome],\r\n /** 排除 firefox 和 ipad 或 iphone 上的 chrome */\r\n excludes: [\r\n // isFirefox,\r\n // ipad 或 iphone 上的 chrome\r\n (isIpad || isIphone) && isChrome,\r\n ],\r\n });\r\n },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/date-to-string.checker.ts","import { userAgent } from \"./browser-context\";\n\nexport const isMobile = /mobile/i.test(userAgent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/platform-info.ts"],"sourceRoot":""}