UNPKG

time-analytics-webpack-plugin

Version:
81 lines 3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.isConstructorNameInPrototypeChain = exports.now = exports.assertNever = exports.assertIsDefined = exports.assert = exports.failInDebug = exports.fail = exports.ConsoleHelper = void 0; const const_1 = require("./const"); const perf_hooks_1 = require("perf_hooks"); const chalk_1 = __importDefault(require("chalk")); const MESSAGE_PREFIX = `[${const_1.PACKAGE_NAME}]: `; /** * Add prefix "[time-analytics-webpack-plugin]: " prefix to all meesages */ class ConsoleHelper { static log(message) { console.log(ConsoleHelper.getMessage(message)); } static warn(message) { console.log(chalk_1.default.yellow(ConsoleHelper.getMessage(message))); } static getMessage(message) { return `${MESSAGE_PREFIX}${message}`; } } exports.ConsoleHelper = ConsoleHelper; /// The whole assert part is basically copied from typescript repo. function fail(message) { // const isProduction = true; // if (isProduction) return; failInDebug(message); } exports.fail = fail; function failInDebug(message) { // eslint-disable-next-line no-debugger debugger; const e = new Error(message ? `Debug Failure.${message} ` : 'Debug Failure.'); throw e; } exports.failInDebug = failInDebug; function assert(expression, message, verboseDebugInfo) { if (!expression) { const messagePostfix = message ? `with message "${message}"` : ''; message = `${MESSAGE_PREFIX}assert failed${messagePostfix}`; if (verboseDebugInfo) { message += '\r\nVerbose Debug Information: ' + (typeof verboseDebugInfo === 'string' ? verboseDebugInfo : verboseDebugInfo()); } fail(message); } } exports.assert = assert; function assertIsDefined(value, message) { if (value === undefined || value === null) { fail(message); } } exports.assertIsDefined = assertIsDefined; function assertNever(member, message = 'Assert never:') { const detail = JSON.stringify(member); return failInDebug(`${message} ${detail} `); } exports.assertNever = assertNever; function now() { return perf_hooks_1.performance.now(); } exports.now = now; /** * like `instanceof `, but not accurate. Judgement by the name of constructor. */ // webpack does not export tapable, so there is no way to know whether a class is hook or not easily. function isConstructorNameInPrototypeChain(name, obj) { let curProto = obj; while (curProto) { if (curProto.constructor.name === name) { return true; } curProto = Reflect.getPrototypeOf(curProto); } return false; } exports.isConstructorNameInPrototypeChain = isConstructorNameInPrototypeChain; //# sourceMappingURL=utils.js.map