{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap c5d25a8c04c1c4f91b36","webpack:///./src/shared/context.ts","webpack:///./src/shared/console.ts","webpack:///./src/utils/match.utils.ts","webpack:///./src/utils/platform.utils.ts","webpack:///./src/index.ts","webpack:///./src/shared/system-info.ts","webpack:///./src/utils/time.utils.ts","webpack:///./src/utils/large-object.utils.ts","webpack:///./src/classes/devtools-detector.ts","webpack:///(webpack)/buildin/global.js","webpack:///./src/classes/worker-console.ts","webpack:///./src/utils/id.utils.ts","webpack:///./src/checkers/checkers.ts","webpack:///./src/checkers/dep-reg-to-string.checker.ts","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/checkers/performance.checker.ts","webpack:///./src/checkers/eruda.checker.ts","webpack:///./src/checkers/devtools-formatters.checker.ts","webpack:///./src/checkers/worker-performance.checker.ts","webpack:///./src/utils/crash.utils.ts","webpack:///./src/shared/version-map.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","globalThis","__WEBPACK_IMPORTED_MODULE_0__utils_platform_utils__","userAgent","_a","navigator","isFirefox","window","test","isIE","isEdge","isWebkit","isIqiyiApp","isChrome","_b","chrome","isSafari","_d","_c","safari","pushNotification","toString","inBrowser","_e","document","createElement","__webpack_exports__","log","table","clear","__WEBPACK_IMPORTED_MODULE_0__context__","cacheConsoleMethod","console","args","_i","arguments","length","apply","_args","options","includes","excludes","included","excluded","includes_1","item","excludes_1","getGlobalThis","workerConsole","supportWorkerConsole","workerBlob","Blob","__WEBPACK_IMPORTED_MODULE_0__classes_worker_console__","workerScript","workerSrc","URL","createObjectURL","Worker","revokeObjectURL","concat","btoa","global","isBrave","_isBrave","brave","Promise","race","resolve","setTimeout","sent","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__utils_crash_utils__","__WEBPACK_IMPORTED_MODULE_3__utils_match_utils__","__WEBPACK_IMPORTED_MODULE_4__utils_platform_utils__","__WEBPACK_IMPORTED_MODULE_5__shared_version_map__","__WEBPACK_IMPORTED_MODULE_6__shared_context__","__WEBPACK_IMPORTED_MODULE_7__shared_console__","__WEBPACK_IMPORTED_MODULE_8__shared_system_info__","checkers","isMac","isIpad","isIphone","isAndroid","isWindows","maxTouchPoints","performance","now","Date","largeObjectArray","largeObject","createLargeObject","push","createLargeObjectArray","DevtoolsDetector","_listeners","_isOpen","_detectLoopStopped","_detectLoopDelay","_checkers","slice","__WEBPACK_IMPORTED_MODULE_0__shared_context__","_detectLoop","clearTimeout","_timer","filter","_broadcast","isOpen","checkerName","checker","isEnable","_this","g","Function","eval","e","WorkerConsole","worker","callbacks","Map","onmessage","event","action","data","id","callback","delete","send","__spreadArray","type","messages","__WEBPACK_IMPORTED_MODULE_0__utils_id_utils__","reject","set","postMessage","payload","Error","Number","MAX_SAFE_INTEGER","__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__","__WEBPACK_IMPORTED_MODULE_6__performance_checker__","__WEBPACK_IMPORTED_MODULE_7__eruda_checker__","__WEBPACK_IMPORTED_MODULE_8__devtools_formatters_checker__","__WEBPACK_IMPORTED_MODULE_9__worker_performance_checker__","reg","depRegToStringChecker","__WEBPACK_IMPORTED_MODULE_1__shared_console__","dep","__WEBPACK_IMPORTED_MODULE_2__utils_match_utils__","ele","__WEBPACK_IMPORTED_MODULE_3__utils_platform_utils__","elementIdChecker","devtoolsTestFunction","count","functionToStringChecker","iOS","__WEBPACK_IMPORTED_MODULE_2__shared_system_info__","regToStringChecker","__WEBPACK_IMPORTED_MODULE_0__shared_console__","__WEBPACK_IMPORTED_MODULE_1__shared_context__","debuggerChecker","startTime","__WEBPACK_IMPORTED_MODULE_0__utils_time_utils__","constructor","date","dateToStringChecker","__WEBPACK_IMPORTED_MODULE_3____","maxPrintTime","performanceChecker","tablePrintTime","__WEBPACK_IMPORTED_MODULE_2__utils_large_object_utils__","start","__WEBPACK_IMPORTED_MODULE_5__utils_time_utils__","calcTablePrintTime","logPrintTime","Math","max","calcLogPrintTime","erudaChecker","eruda","_devTools","_isShow","devtoolsFormatter","header","devtoolsFormatterChecker","devtoolsFormatters","indexOf","workerPerformanceChecker","__WEBPACK_IMPORTED_MODULE_2__utils_platform_utils__","__WEBPACK_IMPORTED_MODULE_3__utils_large_object_utils__","__WEBPACK_IMPORTED_MODULE_1__utils_match_utils__","MAX_VALUE","Array","pow","fill","array","location","reload","versionMap","versions_1","match","split","versionSpec","versionNumber"],"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 c5d25a8c04c1c4f91b36","import { getGlobalThis } from '../utils/platform.utils';\r\nconst globalThis = getGlobalThis();\r\n\r\ndeclare global {\r\n interface Window {\r\n // Chrome\r\n chrome?: unknown;\r\n // Firefox\r\n InstallTrigger?: unknown;\r\n // Safari\r\n safari?: {\r\n pushNotification: () => void;\r\n };\r\n }\r\n}\r\n\r\nexport const userAgent = globalThis?.navigator?.userAgent || 'unknown';\r\n\r\n/** firefox */\r\nexport const isFirefox =\r\n 'InstallTrigger' in (globalThis?.window || {}) || /firefox/i.test(userAgent);\r\n\r\n/** ie */\r\nexport const isIE =\r\n // ie 11+\r\n /trident/i.test(userAgent) ||\r\n // other ie browser\r\n /msie/i.test(userAgent);\r\n\r\n/** edge */\r\nexport const isEdge = /edge/i.test(userAgent) || /EdgiOS/i.test(userAgent);\r\n\r\n/** webkit */\r\nexport const isWebkit = /webkit/i.test(userAgent);\r\n\r\nexport const isIqiyiApp = /IqiyiApp/.test(userAgent);\r\n\r\n/** chrome */\r\nexport const isChrome =\r\n typeof globalThis?.window?.chrome !== 'undefined' ||\r\n /chrome/i.test(userAgent) ||\r\n // chrome iOS\r\n /CriOS/i.test(userAgent);\r\n\r\n/** safari */\r\nexport const isSafari =\r\n (globalThis?.window?.safari?.pushNotification || false).toString() ===\r\n '[object SafariRemoteNotification]' ||\r\n (/safari/i.test(userAgent) && !isChrome);\r\n\r\nexport const inBrowser =\r\n typeof globalThis.document?.createElement === 'function';\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/context.ts","import { inBrowser, isEdge, isIE } from './context';\r\n\r\n/**\r\n * 缓存 console.log 等方法,防止第三方代码 hook console.log 等方法\r\n * 但是 ie 浏览器下不能缓存 console.log 之类的方法, 因为每次打开浏览器都是不同的 console, 调用缓存后的方法则会异常\r\n *\r\n */\r\nfunction cacheConsoleMethod(name: K): Console[K] {\r\n if (inBrowser) {\r\n if (console) {\r\n if (isIE || isEdge) {\r\n // IE 没有 console.table\r\n if (name === 'log' || name === 'clear') {\r\n return (...args: any[]) => {\r\n console[name].apply(console, args);\r\n };\r\n }\r\n } else {\r\n return console[name];\r\n }\r\n } else {\r\n }\r\n }\r\n\r\n return (..._args: any[]) => {};\r\n}\r\n\r\nexport const log = cacheConsoleMethod('log');\r\n\r\nexport const table = cacheConsoleMethod('table');\r\n\r\nexport const clear = cacheConsoleMethod('clear');\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/console.ts","export 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\n\n\n// WEBPACK FOOTER //\n// ./src/utils/match.utils.ts","import { WorkerConsole } from '../classes/worker-console';\r\n\r\ndeclare const global: any;\r\nexport function getGlobalThis(this: any): typeof globalThis {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if ((typeof global as any) !== 'undefined') {\r\n return global;\r\n }\r\n return this;\r\n}\r\n\r\nexport function createElement(\r\n ...args: Parameters<(typeof document)['createElement']>\r\n): ReturnType<(typeof document)['createElement']> {\r\n const globalThis = getGlobalThis();\r\n\r\n if (globalThis?.document) {\r\n return globalThis.document.createElement(...args);\r\n }\r\n\r\n return {} as any;\r\n}\r\n\r\nlet workerConsole: WorkerConsole;\r\nlet supportWorkerConsole = true;\r\nexport function getWorkerConsole() {\r\n if (workerConsole) return workerConsole;\r\n if (!supportWorkerConsole) return;\r\n\r\n const workerBlob = new Blob([WorkerConsole.workerScript]);\r\n\r\n try {\r\n const workerSrc = URL.createObjectURL(workerBlob);\r\n workerConsole = new WorkerConsole(new Worker(workerSrc));\r\n URL.revokeObjectURL(workerSrc);\r\n } catch {\r\n try {\r\n workerConsole = new WorkerConsole(\r\n new Worker(`data:text/javascript;base64,${btoa(WorkerConsole.workerScript)}`)\r\n );\r\n } catch {\r\n supportWorkerConsole = false;\r\n }\r\n }\r\n\r\n return workerConsole;\r\n}\r\n\r\n\r\n\r\ndeclare global {\r\n interface Navigator {\r\n brave: any;\r\n }\r\n}\r\nexport let isBrave = async function (): Promise {\r\n let _isBrave = false;\r\n\r\n if (navigator.brave) {\r\n if (navigator.brave.isBrave) {\r\n try {\r\n _isBrave = await Promise.race([navigator.brave.isBrave(), new Promise(resolve => setTimeout(() => resolve(false), 1000))]);\r\n } catch (e) {\r\n }\r\n }\r\n }\r\n\r\n isBrave = async function () {\r\n return _isBrave;\r\n }\r\n\r\n return _isBrave;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/platform.utils.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.erudaChecker,\r\n checkers.elementIdChecker,\r\n checkers.regToStringChecker,\r\n checkers.functionToStringChecker,\r\n checkers.depRegToStringChecker,\r\n checkers.dateToStringChecker,\r\n checkers.devtoolsFormatterChecker,\r\n checkers.performanceChecker,\r\n // checkers.workerPerformanceChecker,\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 * from './utils/crash.utils';\r\nexport * from './utils/match.utils';\r\nexport * from './utils/platform.utils';\r\nexport * from './shared/version-map';\r\nexport * from './shared/context';\r\nexport * from './shared/console';\r\nexport * from './shared/system-info';\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.ts","import { userAgent } from \"./context\";\r\n\r\n\r\nexport const isMac = /macintosh/i.test(userAgent);\r\n\r\nexport const isIpad = /ipad/i.test(userAgent) || (isMac && navigator.maxTouchPoints > 1);\r\n\r\nexport const isIphone = /iphone/i.test(userAgent);\r\n\r\nexport const isAndroid = /android/i.test(userAgent);\r\n\r\nexport const isWindows = /windows/i.test(userAgent);\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/system-info.ts","export function now() {\n if (typeof performance !== 'undefined') {\n return performance.now();\n } else {\n return Date.now();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/time.utils.ts","let largeObjectArray: Record[] | null = null;\n\nexport function getLargeObjectArray() {\n if (largeObjectArray === null) {\n largeObjectArray = createLargeObjectArray();\n }\n return largeObjectArray;\n}\n\nfunction createLargeObject(): Record {\n const largeObject: Record = {};\n for (let i = 0; i < 500; i++) {\n largeObject[`${i}`] = `${i}`;\n }\n return largeObject;\n}\n\nfunction createLargeObjectArray(): Record[] {\n const largeObject = createLargeObject();\n const largeObjectArray: Record[] = [];\n\n for (let i = 0; i < 50; i++) {\n largeObjectArray.push(largeObject);\n }\n\n return largeObjectArray;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/large-object.utils.ts","import { inBrowser } from '../shared/context';\r\nimport { DevtoolsDetail } from '../types/devtools-detail.type';\r\nimport { DevtoolsDetectorListener } from '../types/devtools-detector-listener.type';\r\nimport { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\r\n\r\nexport interface DetectorOptions {\r\n checkers: DevtoolsStatusChecker[];\r\n}\r\n\r\nexport class DevtoolsDetector {\r\n private readonly _checkers: DevtoolsStatusChecker[];\r\n private _listeners: DevtoolsDetectorListener[] = [];\r\n private _isOpen = false;\r\n private _detectLoopStopped = true;\r\n private _detectLoopDelay = 500;\r\n private _timer!: number;\r\n\r\n constructor({ checkers }: DetectorOptions) {\r\n this._checkers = checkers.slice();\r\n }\r\n\r\n get isOpen(): boolean {\r\n return this._isOpen;\r\n }\r\n\r\n launch() {\r\n if (!inBrowser) return;\r\n\r\n if (this._detectLoopDelay <= 0) {\r\n this.setDetectDelay(500);\r\n }\r\n if (this._detectLoopStopped) {\r\n this._detectLoopStopped = false;\r\n this._detectLoop();\r\n }\r\n }\r\n\r\n stop() {\r\n if (!this._detectLoopStopped) {\r\n this._detectLoopStopped = true;\r\n this._isOpen = false;\r\n clearTimeout(this._timer);\r\n }\r\n }\r\n\r\n isLaunch() {\r\n return !this._detectLoopStopped;\r\n }\r\n\r\n setDetectDelay(value: number) {\r\n this._detectLoopDelay = value;\r\n }\r\n\r\n addListener(listener: DevtoolsDetectorListener) {\r\n this._listeners.push(listener);\r\n }\r\n\r\n removeListener(listener: DevtoolsDetectorListener) {\r\n this._listeners = this._listeners.filter((value) => value !== listener);\r\n }\r\n\r\n private _broadcast(value: DevtoolsDetail) {\r\n for (const listener of this._listeners) {\r\n try {\r\n listener(value.isOpen, value);\r\n } catch {\r\n /** nothing to do */\r\n }\r\n }\r\n }\r\n\r\n private async _detectLoop() {\r\n let isOpen = false;\r\n let checkerName = '';\r\n\r\n for (const checker of this._checkers) {\r\n const isEnable = await checker.isEnable();\r\n\r\n if (isEnable) {\r\n checkerName = checker.name;\r\n isOpen = await checker.isOpen();\r\n }\r\n\r\n // 任意一个 checker 返回 true 就视为 devtools 已打开\r\n if (isOpen) {\r\n break;\r\n }\r\n }\r\n\r\n if (isOpen != this._isOpen) {\r\n this._isOpen = isOpen;\r\n this._broadcast({\r\n isOpen,\r\n checkerName,\r\n });\r\n }\r\n\r\n if (this._detectLoopDelay > 0 && !this._detectLoopStopped) {\r\n this._timer = setTimeout(() => this._detectLoop(), this._detectLoopDelay);\r\n } else {\r\n this.stop();\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/classes/devtools-detector.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 = 9\n// module chunks = 0","import { getId } from '../utils/id.utils';\n\nconst workerScript = `\nonmessage = function(event) {\n var action = event.data;\n var startTime = performance.now()\n\n console[action.type](...action.payload);\n postMessage({\n id: action.id,\n time: performance.now() - startTime\n })\n}\n`;\n\nexport type WorkerConsoleMethod = (\n ...args: Args\n) => Promise<{ time: number }>;\n\nexport class WorkerConsole {\n static workerScript = workerScript;\n\n private readonly worker: Worker;\n private callbacks: Map void> = new Map();\n\n readonly log: WorkerConsoleMethod>;\n readonly table: WorkerConsoleMethod>;\n readonly clear: WorkerConsoleMethod>;\n\n constructor(worker: Worker) {\n // const workerSrc = URL.createObjectURL(new Blob([workerContent]));\n // this.worker = new Worker(workerSrc);\n // URL.revokeObjectURL(workerSrc);\n\n this.worker = worker;\n\n this.worker.onmessage = (event) => {\n const action = event.data;\n const id = action.id;\n const callback = this.callbacks.get(action.id);\n if (callback) {\n callback({\n time: action.time,\n });\n this.callbacks.delete(id);\n }\n };\n\n this.log = (...args) => {\n return this.send('log', ...args);\n };\n this.table = (...args) => {\n return this.send('table', ...args);\n };\n this.clear = (...args) => {\n return this.send('clear', ...args);\n };\n }\n\n private async send(type: string, ...messages: any[]) {\n const id = getId();\n return new Promise<{ time: number }>((resolve, reject) => {\n this.callbacks.set(id, resolve);\n\n this.worker.postMessage({\n id,\n type,\n payload: messages,\n });\n\n setTimeout(() => {\n reject(new Error('timeout'));\n this.callbacks.delete(id);\n }, 2000);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/classes/worker-console.ts","let id = 0;\nexport function getId() {\n if (id > Number.MAX_SAFE_INTEGER) {\n id = 0;\n }\n\n return id++;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/id.utils.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\nexport { performanceChecker } from './performance.checker';\r\nexport { erudaChecker } from './eruda.checker';\r\nexport { devtoolsFormatterChecker } from './devtools-formatters.checker';\r\nexport { workerPerformanceChecker } from './worker-performance.checker';\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/checkers.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\r\nimport { isFirefox, isIE } from '../shared/context';\r\nimport { table, clear } from '../shared/console';\r\nimport { match } from '../utils/match.utils';\r\n\r\nconst reg = / /;\r\nlet isOpen = false;\r\n\r\nreg.toString = () => {\r\n isOpen = true;\r\n return depRegToStringChecker.name;\r\n};\r\n\r\nexport const depRegToStringChecker: DevtoolsStatusChecker = {\r\n name: 'dep-reg-to-string',\r\n async isOpen(): Promise {\r\n isOpen = false;\r\n\r\n table({ dep: reg });\r\n clear();\r\n\r\n return isOpen;\r\n },\r\n async isEnable(): Promise {\r\n return match({\r\n /** 匹配所有浏览器 */\r\n includes: [true],\r\n /** 排除 firefox 和 ie */\r\n excludes: [isFirefox, isIE],\r\n });\r\n },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/dep-reg-to-string.checker.ts","import { isEdge, isIE, isFirefox } from '../shared/context';\r\nimport { clear, log } from '../shared/console';\r\nimport { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\r\nimport { match } from '../utils/match.utils';\r\nimport { createElement } from '../utils/platform.utils';\r\n\r\nconst ele = createElement('div');\r\nlet isOpen = false;\r\n\r\nObject.defineProperty(ele, 'id', {\r\n get() {\r\n isOpen = true;\r\n return elementIdChecker.name;\r\n },\r\n configurable: true,\r\n});\r\n\r\nexport const elementIdChecker: DevtoolsStatusChecker = {\r\n name: 'element-id',\r\n async isOpen(): Promise {\r\n isOpen = false;\r\n\r\n log(ele);\r\n clear();\r\n\r\n return isOpen;\r\n },\r\n async isEnable(): Promise {\r\n return match({\r\n /** 匹配所有浏览器 */\r\n includes: [true],\r\n excludes: [isIE, isEdge, isFirefox],\r\n });\r\n },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/element-id.checker.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\r\nimport { isFirefox, isChrome, isIqiyiApp, isEdge } from '../shared/context';\r\nimport { clear, log } from '../shared/console';\r\nimport { isIpad, isIphone } from '../shared/system-info';\r\nimport { match } from '../utils/match.utils';\r\n\r\nfunction devtoolsTestFunction() {\r\n // nothing todo\r\n}\r\n\r\nlet count = 0;\r\n\r\ndevtoolsTestFunction.toString = () => {\r\n count++;\r\n\r\n return '';\r\n};\r\n\r\nexport const functionToStringChecker: DevtoolsStatusChecker = {\r\n name: 'function-to-string',\r\n async isOpen(): Promise {\r\n count = 0;\r\n\r\n log(devtoolsTestFunction);\r\n clear();\r\n\r\n return count === 2;\r\n },\r\n async isEnable(): Promise {\r\n const iOS = isIpad || isIphone;\r\n\r\n return match({\r\n /** 匹配所有浏览器 */\r\n includes: [true],\r\n /** 排除 firefox 和 ipad 或 iphone 上的 chrome */\r\n excludes: [\r\n isIqiyiApp,\r\n isFirefox,\r\n // ipad 或 iphone 上的 chrome\r\n iOS && isChrome,\r\n iOS && isEdge,\r\n ],\r\n });\r\n },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/function-to-string.checker.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\r\nimport { clear, log } from '../shared/console';\r\nimport { isWebkit } from '../shared/context';\r\nimport { match } from '../utils/match.utils';\r\n\r\nconst reg = / /;\r\nlet isOpen = false;\r\n\r\nreg.toString = () => {\r\n isOpen = true;\r\n return regToStringChecker.name;\r\n};\r\n\r\nexport const regToStringChecker: DevtoolsStatusChecker = {\r\n name: 'reg-to-string',\r\n async isOpen(): Promise {\r\n isOpen = false;\r\n\r\n log(reg);\r\n clear();\r\n\r\n return isOpen;\r\n },\r\n async isEnable(): Promise {\r\n return match({\r\n /** 匹配所有浏览器 */\r\n includes: [true],\r\n /** 排除 webkit */\r\n excludes: [isWebkit],\r\n });\r\n },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/reg-to-string.checker.ts","import { now } from '../utils/time.utils';\r\nimport { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\r\n\r\nexport const debuggerChecker: DevtoolsStatusChecker = {\r\n name: 'debugger-checker',\r\n async isOpen(): Promise {\r\n const startTime = now();\r\n\r\n try {\r\n // tslint:disable-next-line:no-empty only-arrow-functions\r\n (function () {}).constructor('debugger')();\r\n } catch {\r\n debugger;\r\n }\r\n\r\n return now() - startTime > 100;\r\n },\r\n async isEnable(): Promise {\r\n return true;\r\n },\r\n};\r\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/context';\r\nimport { clear, log } from '../shared/console';\r\nimport { match } from '../utils/match.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 { clear, log, table } from '../shared/console';\r\nimport { isChrome } from '../shared/context';\r\nimport { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\r\nimport { getLargeObjectArray } from '../utils/large-object.utils';\r\nimport { match } from '../utils/match.utils';\r\nimport { isBrave } from '../utils/platform.utils';\r\nimport { now } from '../utils/time.utils';\r\n\r\nlet maxPrintTime = 0;\r\nexport const performanceChecker: DevtoolsStatusChecker = {\r\n name: 'performance',\r\n async isOpen(): Promise {\r\n const tablePrintTime = calcTablePrintTime();\r\n const logPrintTime = Math.max(calcLogPrintTime(), calcLogPrintTime());\r\n maxPrintTime = Math.max(maxPrintTime, logPrintTime);\r\n\r\n clear();\r\n\r\n if (tablePrintTime === 0) return false;\r\n if (maxPrintTime === 0) {\r\n if (await isBrave()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n return tablePrintTime > maxPrintTime * 10;\r\n },\r\n async isEnable(): Promise {\r\n return match({\r\n /** 暂时仅用于 Chrome 浏览器 */\r\n includes: [isChrome],\r\n excludes: [],\r\n });\r\n },\r\n};\r\n\r\nfunction calcTablePrintTime(): number {\r\n const largeObjectArray = getLargeObjectArray();\r\n const start = now();\r\n\r\n table(largeObjectArray);\r\n\r\n return now() - start;\r\n}\r\n\r\nfunction calcLogPrintTime(): number {\r\n const largeObjectArray = getLargeObjectArray();\r\n const start = now();\r\n\r\n log(largeObjectArray);\r\n\r\n return now() - start;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/performance.checker.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\r\n\r\ndeclare global {\r\n const eruda:\r\n | {\r\n _devTools?: {\r\n _isShow?: boolean;\r\n };\r\n }\r\n | undefined;\r\n}\r\n\r\nexport const erudaChecker: DevtoolsStatusChecker = {\r\n name: 'eruda',\r\n async isOpen(): Promise {\r\n if (typeof eruda !== 'undefined') {\r\n return eruda?._devTools?._isShow === true;\r\n }\r\n return false;\r\n },\r\n async isEnable(): Promise {\r\n return true;\r\n },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/eruda.checker.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\nimport { clear, log } from '../shared/console';\n\ndeclare global {\n interface Window {\n devtoolsFormatters: unknown[] | undefined;\n }\n}\n\nlet isOpen = false;\nconst devtoolsFormatter = {\n header() {\n isOpen = true;\n return null;\n },\n};\nexport const devtoolsFormatterChecker: DevtoolsStatusChecker = {\n name: 'DevtoolsFormatters',\n async isOpen(): Promise {\n if (window.devtoolsFormatters) {\n if (window.devtoolsFormatters.indexOf(devtoolsFormatter) === -1) {\n window.devtoolsFormatters.push(devtoolsFormatter);\n }\n } else {\n window.devtoolsFormatters = [devtoolsFormatter];\n }\n\n isOpen = false;\n log({});\n clear();\n\n return isOpen;\n },\n async isEnable(): Promise {\n return true;\n },\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/devtools-formatters.checker.ts","import { DevtoolsStatusChecker } from '../types/devtools-status-checker.type';\r\nimport { isChrome } from '../shared/context';\r\nimport { match } from '../utils/match.utils';\r\nimport { getWorkerConsole, isBrave } from '../utils/platform.utils';\r\nimport { WorkerConsole } from '../classes/worker-console';\r\nimport { getLargeObjectArray } from '../utils/large-object.utils';\r\n\r\nlet maxPrintTime = 0;\r\nexport const workerPerformanceChecker: DevtoolsStatusChecker = {\r\n name: 'worker-performance',\r\n async isOpen(): Promise {\r\n const workerConsole = getWorkerConsole();\r\n\r\n if (workerConsole == null) return false;\r\n\r\n const tablePrintTime = await calcTablePrintTime(workerConsole);\r\n const logPrintTime = await calcLogPrintTime(workerConsole);\r\n maxPrintTime = Math.max(maxPrintTime, logPrintTime);\r\n\r\n await workerConsole.clear();\r\n\r\n if (tablePrintTime === 0) return false;\r\n if (maxPrintTime === 0) {\r\n if (await isBrave()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n return tablePrintTime > maxPrintTime * 10;\r\n },\r\n async isEnable(): Promise {\r\n return match({\r\n /** 暂时仅用于 Chrome 浏览器 */\r\n includes: [isChrome],\r\n excludes: [],\r\n });\r\n },\r\n};\r\n\r\nasync function calcTablePrintTime(\r\n workerConsole: WorkerConsole\r\n): Promise {\r\n const largeObjectArray = getLargeObjectArray();\r\n const { time } = await workerConsole.table(largeObjectArray);\r\n return time;\r\n}\r\n\r\nasync function calcLogPrintTime(workerConsole: WorkerConsole): Promise {\r\n const largeObjectArray = getLargeObjectArray();\r\n const { time } = await workerConsole.log(largeObjectArray);\r\n return time;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/checkers/worker-performance.checker.ts","/**\r\n * @overview\r\n * @author AEPKILL\r\n * @created 2024-07-17 09:47:08\r\n */\r\n\r\nimport { inBrowser } from '../shared/context';\r\n\r\n/**\r\n * This function will crash the browser current tab\r\n *\r\n * only tested on Chrome\r\n */\r\nexport function crashBrowserCurrentTab() {\r\n if (inBrowser) {\r\n for (let id = 0; id < Number.MAX_VALUE; id++) {\r\n (window as any)[`${id}`] = new Array(2 ** 32 - 1).fill(0);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * This function will crash the browser all tabs\r\n *\r\n * only tested on Chrome\r\n */\r\nexport function crashBrowser() {\r\n if (inBrowser) {\r\n const array: number[] = [];\r\n while (true) {\r\n array.push(0);\r\n location.reload();\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/crash.utils.ts","/**\r\n * @description\r\n * version-map 方便以后根据浏览器各种特征的版本选择 checker\r\n * 现在暂时还未用到\r\n */\r\n\r\nimport { userAgent } from \"./context\";\r\n\r\n\r\nconst versions = (userAgent || '').match(/\\w+\\/(\\d|\\.)+(\\s|$)/gi) || [];\r\nconst versionMap: { [key: string]: string } = {};\r\n\r\nfor (const version of versions) {\r\n const [versionSpec, versionNumber] = version.split('/');\r\n versionMap[versionSpec] = versionNumber;\r\n}\r\n\r\nexport { versionMap };\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/version-map.ts"],"sourceRoot":""}