No DisableDevTool

Break disable-devtool while keeping the website working perfectly.

// ==UserScript==
// @name              No DisableDevTool
// @name:zh-CN        放飞 disable-devtool
// @namespace         NoDisableDevTool
// @version           1.0
// @description       Break disable-devtool while keeping the website working perfectly.
// @description:zh-CN 在禁用 disable-devtool 的同时,使网站完美运行。
// @author            FurryR
// @match             *://*/*
// @license           MIT
// @grant             none
// @run-at            document-start
// ==/UserScript==

(function() {
    'use strict';

    if (document instanceof XMLDocument) {
        return;
    }

    const assign = Object.assign;
    Object.assign = function (...args) {
        if (args.length === 2 && typeof args[0] === 'function' && typeof args[1] === 'object' && args[1] !== null && typeof args[1].isDevToolOpened === 'function' && typeof args[1].version === 'string' && typeof args[1].isRunning === 'boolean' && typeof args[1].isSuspend === 'boolean') {
            Object.assign = assign;
            const result = Object.assign(...args);
            console.log('Detected disable-devtool component', result);
            return Object.assign(function () {
                console.trace('disable-devtool called here');
            }, args[1]);
        }
        return assign.call(this, ...args);
    }
})();