loglevel

loglevel bundled with loglevel-plugin-prefix

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/474546/1245469/loglevel.js

  1. // ==UserScript==
  2.  
  3. // #region Info
  4.  
  5. // @namespace https://openuserjs.org/users/93Akkord
  6. // @exclude *
  7. // @author Michael Barros (https://openuserjs.org/users/93Akkord)
  8. // @icon data:image/png;base64,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
  9.  
  10. // #endregion Info
  11.  
  12. // ==UserLibrary==
  13.  
  14. // @name loglevel
  15. // @description loglevel bundled with loglevel-plugin-prefix
  16. // @copyright 2022+, Michael Barros (https://openuserjs.org/users/93Akkord)
  17. // @license CC-BY-NC-SA-4.0; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
  18. // @license GPL-3.0-or-later; https://www.gnu.org/licenses/gpl-3.0.txt
  19. // @version 0.0.4
  20.  
  21. // ==/UserScript==
  22.  
  23. // ==/UserLibrary==
  24.  
  25. // ==OpenUserJS==
  26.  
  27. // @author 93Akkord
  28.  
  29. // ==/OpenUserJS==
  30.  
  31. /**
  32. *
  33. *
  34. * @returns {Window}
  35. */
  36. function getWindow() {
  37. return window.GM_info && GM_info.script.grant.includes('unsafeWindow') ? unsafeWindow : window;
  38. }
  39.  
  40. // #region loglevel
  41.  
  42. /**
  43. * Minified by jsDelivr using Terser v5.9.0.
  44. * Original file: /npm/loglevel@1.8.0/lib/loglevel.js
  45. *
  46. * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
  47. */
  48. !function(e,o){"use strict";"function"==typeof define&&define.amd?define(o):"object"==typeof module&&module.exports?module.exports=o():e.log=o()}(this,(function(){"use strict";var e=function(){},o="undefined",t=typeof window!==o&&typeof window.navigator!==o&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function l(e,o){var t=e[o];if("function"==typeof t.bind)return t.bind(e);try{return Function.prototype.bind.call(t,e)}catch(o){return function(){return Function.prototype.apply.apply(t,[e,arguments])}}}function i(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function r(n){return"debug"===n&&(n="log"),typeof console!==o&&("trace"===n&&t?i:void 0!==console[n]?l(console,n):void 0!==console.log?l(console,"log"):e)}function c(o,t){for(var l=0;l<n.length;l++){var i=n[l];this[i]=l<o?e:this.methodFactory(i,o,t)}this.log=this.debug}function a(e,t,n){return function(){typeof console!==o&&(c.call(this,t,n),this[e].apply(this,arguments))}}function u(e,o,t){return r(e)||a.apply(this,arguments)}function s(e,t,l){var i,r=this;t=null==t?"WARN":t;var a="loglevel";function s(){var e;if(typeof window!==o&&a){try{e=window.localStorage[a]}catch(e){}if(typeof e===o)try{var t=window.document.cookie,n=t.indexOf(encodeURIComponent(a)+"=");-1!==n&&(e=/^([^;]+)/.exec(t.slice(n))[1])}catch(e){}return void 0===r.levels[e]&&(e=void 0),e}}"string"==typeof e?a+=":"+e:"symbol"==typeof e&&(a=void 0),r.name=e,r.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},r.methodFactory=l||u,r.getLevel=function(){return i},r.setLevel=function(t,l){if("string"==typeof t&&void 0!==r.levels[t.toUpperCase()]&&(t=r.levels[t.toUpperCase()]),!("number"==typeof t&&t>=0&&t<=r.levels.SILENT))throw"log.setLevel() called with invalid level: "+t;if(i=t,!1!==l&&function(e){var t=(n[e]||"silent").toUpperCase();if(typeof window!==o&&a){try{return void(window.localStorage[a]=t)}catch(e){}try{window.document.cookie=encodeURIComponent(a)+"="+t+";"}catch(e){}}}(t),c.call(r,t,e),typeof console===o&&t<r.levels.SILENT)return"No console available for logging"},r.setDefaultLevel=function(e){t=e,s()||r.setLevel(e,!1)},r.resetLevel=function(){r.setLevel(t,!1),function(){if(typeof window!==o&&a){try{return void window.localStorage.removeItem(a)}catch(e){}try{window.document.cookie=encodeURIComponent(a)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}}()},r.enableAll=function(e){r.setLevel(r.levels.TRACE,e)},r.disableAll=function(e){r.setLevel(r.levels.SILENT,e)};var f=s();null==f&&(f=t),r.setLevel(f,!1)}var f=new s,p={};f.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var o=p[e];return o||(o=p[e]=new s(e,f.getLevel(),f.methodFactory)),o};var d=typeof window!==o?window.log:void 0;return f.noConflict=function(){return typeof window!==o&&window.log===f&&(window.log=d),f},f.getLoggers=function(){return p},f.default=f,f}));
  49. //# sourceMappingURL=/sm/dbe3b9b5ef3004a41b919a0a34b0105caac42fc07383936e32c9f3d3758f212d.map
  50.  
  51. // #endregion loglevel
  52.  
  53. // #region loglevel-plugin-prefix
  54.  
  55. (function (root, factory) {
  56. root.prefix = factory(root);
  57. })(this, function (root) {
  58. let merge = function (target) {
  59. let i = 1;
  60. let length = arguments.length;
  61. let key;
  62.  
  63. for (; i < length; i++) {
  64. for (key in arguments[i]) {
  65. if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {
  66. target[key] = arguments[i][key];
  67. }
  68. }
  69. }
  70.  
  71. return target;
  72. };
  73.  
  74. let defaults = {
  75. template: '[%t] %l:',
  76. levelFormatter: function (level) {
  77. return level.toUpperCase();
  78. },
  79. nameFormatter: function (name) {
  80. return name || 'root';
  81. },
  82. timestampFormatter: function (date) {
  83. return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, '$1');
  84. },
  85. format: undefined,
  86. };
  87.  
  88. let loglevel;
  89. let configs = {};
  90.  
  91. let reg = function (rootLogger) {
  92. if (!rootLogger || !rootLogger.getLogger) {
  93. throw new TypeError('Argument is not a root logger');
  94. }
  95.  
  96. loglevel = rootLogger;
  97. };
  98.  
  99. let apply = function (logger, config) {
  100. if (!logger || !logger.setLevel) {
  101. throw new TypeError('Argument is not a logger');
  102. }
  103.  
  104. /* eslint-disable vars-on-top */
  105. let originalFactory = logger.methodFactory;
  106. let name = logger.name || '';
  107. let parent = configs[name] || configs[''] || defaults;
  108. /* eslint-enable vars-on-top */
  109.  
  110. function methodFactory(methodName, logLevel, loggerName) {
  111. let originalMethod = originalFactory(methodName, logLevel, loggerName);
  112. let options = configs[loggerName] || configs[''];
  113.  
  114. let hasTimestamp = options.template.indexOf('%t') !== -1;
  115. let hasLevel = options.template.indexOf('%l') !== -1;
  116. let hasName = options.template.indexOf('%n') !== -1;
  117.  
  118. return (function () {
  119. let content = '';
  120.  
  121. let length = arguments.length;
  122. let args = Array(length);
  123. let key = 0;
  124.  
  125. for (; key < length; key++) {
  126. args[key] = arguments[key];
  127. }
  128.  
  129. // skip the root method for child loggers to prevent duplicate logic
  130. if (name || !configs[loggerName]) {
  131. /* eslint-disable vars-on-top */
  132. let timestamp = options.timestampFormatter(new Date());
  133. let level = options.levelFormatter(methodName);
  134. let lname = options.nameFormatter(loggerName);
  135. /* eslint-enable vars-on-top */
  136.  
  137. if (options.format) {
  138. content += options.format(level, lname, timestamp);
  139. } else {
  140. content += options.template;
  141.  
  142. if (hasTimestamp) {
  143. content = content.replace(/%t/, timestamp);
  144. }
  145.  
  146. if (hasLevel) content = content.replace(/%l/, level);
  147. if (hasName) content = content.replace(/%n/, lname);
  148. }
  149.  
  150. if (args.length && typeof args[0] === 'string') {
  151. // concat prefix with first argument to support string substitutions
  152. args[0] = content + ' ' + args[0];
  153. } else {
  154. args.unshift(content);
  155. }
  156. }
  157.  
  158. return getWindow().console[methodName].bind(getWindow().console, ...args);
  159.  
  160. // originalMethod.apply(undefined, args);
  161. })();
  162. }
  163.  
  164. if (!configs[name]) {
  165. logger.methodFactory = methodFactory;
  166. }
  167.  
  168. // for remove inherited format option if template option preset
  169. config = config || {};
  170.  
  171. if (config.template) config.format = undefined;
  172.  
  173. configs[name] = merge({}, parent, config);
  174.  
  175. logger.setLevel(logger.getLevel());
  176.  
  177. if (!loglevel) {
  178. logger.warn('It is necessary to call the function reg() of loglevel-plugin-prefix before calling apply. From the next release, it will throw an error. See more: https://github.com/kutuluk/loglevel-plugin-prefix/blob/master/README.md');
  179. }
  180.  
  181. return logger;
  182. };
  183.  
  184. let api = {
  185. reg: reg,
  186. apply: apply,
  187. };
  188.  
  189. let save;
  190.  
  191. if (root) {
  192. save = root.prefix;
  193.  
  194. api.noConflict = function () {
  195. if (root.prefix === api) {
  196. root.prefix = save;
  197. }
  198. return api;
  199. };
  200. }
  201.  
  202. return api;
  203. });
  204.  
  205. // #endregion loglevel-plugin-prefix
  206.  
  207. // #region chalk
  208.  
  209. // http-url:https://unpkg.com/chalk@5.2.0/source/vendor/ansi-styles/index.js
  210. var ANSI_BACKGROUND_OFFSET = 10;
  211. var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
  212. var wrapAnsi256 = (offset = 0) => (code) => `\x1B[${38 + offset};5;${code}m`;
  213. var wrapAnsi16m = (offset = 0) => (red, green, blue) => `\x1B[${38 + offset};2;${red};${green};${blue}m`;
  214. var styles = {
  215. modifier: {
  216. reset: [0, 0],
  217. // 21 isn't widely supported and 22 does the same thing
  218. bold: [1, 22],
  219. dim: [2, 22],
  220. italic: [3, 23],
  221. underline: [4, 24],
  222. overline: [53, 55],
  223. inverse: [7, 27],
  224. hidden: [8, 28],
  225. strikethrough: [9, 29]
  226. },
  227. color: {
  228. black: [30, 39],
  229. red: [31, 39],
  230. green: [32, 39],
  231. yellow: [33, 39],
  232. blue: [34, 39],
  233. magenta: [35, 39],
  234. cyan: [36, 39],
  235. white: [37, 39],
  236. // Bright color
  237. blackBright: [90, 39],
  238. gray: [90, 39],
  239. // Alias of `blackBright`
  240. grey: [90, 39],
  241. // Alias of `blackBright`
  242. redBright: [91, 39],
  243. greenBright: [92, 39],
  244. yellowBright: [93, 39],
  245. blueBright: [94, 39],
  246. magentaBright: [95, 39],
  247. cyanBright: [96, 39],
  248. whiteBright: [97, 39]
  249. },
  250. bgColor: {
  251. bgBlack: [40, 49],
  252. bgRed: [41, 49],
  253. bgGreen: [42, 49],
  254. bgYellow: [43, 49],
  255. bgBlue: [44, 49],
  256. bgMagenta: [45, 49],
  257. bgCyan: [46, 49],
  258. bgWhite: [47, 49],
  259. // Bright color
  260. bgBlackBright: [100, 49],
  261. bgGray: [100, 49],
  262. // Alias of `bgBlackBright`
  263. bgGrey: [100, 49],
  264. // Alias of `bgBlackBright`
  265. bgRedBright: [101, 49],
  266. bgGreenBright: [102, 49],
  267. bgYellowBright: [103, 49],
  268. bgBlueBright: [104, 49],
  269. bgMagentaBright: [105, 49],
  270. bgCyanBright: [106, 49],
  271. bgWhiteBright: [107, 49]
  272. }
  273. };
  274. var modifierNames = Object.keys(styles.modifier);
  275. var foregroundColorNames = Object.keys(styles.color);
  276. var backgroundColorNames = Object.keys(styles.bgColor);
  277. var colorNames = [...foregroundColorNames, ...backgroundColorNames];
  278. function assembleStyles() {
  279. const codes = /* @__PURE__ */ new Map();
  280. for (const [groupName, group] of Object.entries(styles)) {
  281. for (const [styleName, style] of Object.entries(group)) {
  282. styles[styleName] = {
  283. open: `\x1B[${style[0]}m`,
  284. close: `\x1B[${style[1]}m`
  285. };
  286. group[styleName] = styles[styleName];
  287. codes.set(style[0], style[1]);
  288. }
  289. Object.defineProperty(styles, groupName, {
  290. value: group,
  291. enumerable: false
  292. });
  293. }
  294. Object.defineProperty(styles, "codes", {
  295. value: codes,
  296. enumerable: false
  297. });
  298. styles.color.close = "\x1B[39m";
  299. styles.bgColor.close = "\x1B[49m";
  300. styles.color.ansi = wrapAnsi16();
  301. styles.color.ansi256 = wrapAnsi256();
  302. styles.color.ansi16m = wrapAnsi16m();
  303. styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
  304. styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
  305. styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
  306. Object.defineProperties(styles, {
  307. rgbToAnsi256: {
  308. value(red, green, blue) {
  309. if (red === green && green === blue) {
  310. if (red < 8) {
  311. return 16;
  312. }
  313. if (red > 248) {
  314. return 231;
  315. }
  316. return Math.round((red - 8) / 247 * 24) + 232;
  317. }
  318. return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
  319. },
  320. enumerable: false
  321. },
  322. hexToRgb: {
  323. value(hex) {
  324. const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
  325. if (!matches) {
  326. return [0, 0, 0];
  327. }
  328. let [colorString] = matches;
  329. if (colorString.length === 3) {
  330. colorString = [...colorString].map((character) => character + character).join("");
  331. }
  332. const integer = Number.parseInt(colorString, 16);
  333. return [
  334. /* eslint-disable no-bitwise */
  335. integer >> 16 & 255,
  336. integer >> 8 & 255,
  337. integer & 255
  338. /* eslint-enable no-bitwise */
  339. ];
  340. },
  341. enumerable: false
  342. },
  343. hexToAnsi256: {
  344. value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)),
  345. enumerable: false
  346. },
  347. ansi256ToAnsi: {
  348. value(code) {
  349. if (code < 8) {
  350. return 30 + code;
  351. }
  352. if (code < 16) {
  353. return 90 + (code - 8);
  354. }
  355. let red;
  356. let green;
  357. let blue;
  358. if (code >= 232) {
  359. red = ((code - 232) * 10 + 8) / 255;
  360. green = red;
  361. blue = red;
  362. } else {
  363. code -= 16;
  364. const remainder = code % 36;
  365. red = Math.floor(code / 36) / 5;
  366. green = Math.floor(remainder / 6) / 5;
  367. blue = remainder % 6 / 5;
  368. }
  369. const value = Math.max(red, green, blue) * 2;
  370. if (value === 0) {
  371. return 30;
  372. }
  373. let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
  374. if (value === 2) {
  375. result += 60;
  376. }
  377. return result;
  378. },
  379. enumerable: false
  380. },
  381. rgbToAnsi: {
  382. value: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),
  383. enumerable: false
  384. },
  385. hexToAnsi: {
  386. value: (hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),
  387. enumerable: false
  388. }
  389. });
  390. return styles;
  391. }
  392. var ansiStyles = assembleStyles();
  393. var ansi_styles_default = ansiStyles;
  394.  
  395. // http-url:https://unpkg.com/chalk@5.2.0/source/vendor/supports-color/browser.js
  396. var level = (() => {
  397. if (navigator.userAgentData) {
  398. const brand = navigator.userAgentData.brands.find(({ brand: brand2 }) => brand2 === "Chromium");
  399. if (brand && brand.version > 93) {
  400. return 3;
  401. }
  402. }
  403. if (/\b(Chrome|Chromium)\//.test(navigator.userAgent)) {
  404. return 1;
  405. }
  406. return 0;
  407. })();
  408. var colorSupport = level !== 0 && {
  409. level,
  410. hasBasic: true,
  411. has256: level >= 2,
  412. has16m: level >= 3
  413. };
  414. var supportsColor = {
  415. stdout: colorSupport,
  416. stderr: colorSupport
  417. };
  418. var browser_default = supportsColor;
  419.  
  420. // http-url:https://unpkg.com/chalk@5.2.0/source/utilities.js
  421. function stringReplaceAll(string, substring, replacer) {
  422. let index = string.indexOf(substring);
  423. if (index === -1) {
  424. return string;
  425. }
  426. const substringLength = substring.length;
  427. let endIndex = 0;
  428. let returnValue = "";
  429. do {
  430. returnValue += string.slice(endIndex, index) + substring + replacer;
  431. endIndex = index + substringLength;
  432. index = string.indexOf(substring, endIndex);
  433. } while (index !== -1);
  434. returnValue += string.slice(endIndex);
  435. return returnValue;
  436. }
  437. function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
  438. let endIndex = 0;
  439. let returnValue = "";
  440. do {
  441. const gotCR = string[index - 1] === "\r";
  442. returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
  443. endIndex = index + 1;
  444. index = string.indexOf("\n", endIndex);
  445. } while (index !== -1);
  446. returnValue += string.slice(endIndex);
  447. return returnValue;
  448. }
  449.  
  450. // http-url:https://unpkg.com/chalk@5.2.0/source/index.js
  451. var { stdout: stdoutColor, stderr: stderrColor } = browser_default;
  452. var GENERATOR = Symbol("GENERATOR");
  453. var STYLER = Symbol("STYLER");
  454. var IS_EMPTY = Symbol("IS_EMPTY");
  455. var levelMapping = [
  456. "ansi",
  457. "ansi",
  458. "ansi256",
  459. "ansi16m"
  460. ];
  461. var styles2 = /* @__PURE__ */ Object.create(null);
  462. var applyOptions = (object, options = {}) => {
  463. if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {
  464. throw new Error("The `level` option should be an integer from 0 to 3");
  465. }
  466. const colorLevel = stdoutColor ? stdoutColor.level : 0;
  467. object.level = options.level === void 0 ? colorLevel : options.level;
  468. };
  469. var Chalk = class {
  470. constructor(options) {
  471. return chalkFactory(options);
  472. }
  473. };
  474. var chalkFactory = (options) => {
  475. const chalk2 = (...strings) => strings.join(" ");
  476. applyOptions(chalk2, options);
  477. Object.setPrototypeOf(chalk2, createChalk.prototype);
  478. return chalk2;
  479. };
  480. function createChalk(options) {
  481. return chalkFactory(options);
  482. }
  483. Object.setPrototypeOf(createChalk.prototype, Function.prototype);
  484. for (const [styleName, style] of Object.entries(ansi_styles_default)) {
  485. styles2[styleName] = {
  486. get() {
  487. const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
  488. Object.defineProperty(this, styleName, { value: builder });
  489. return builder;
  490. }
  491. };
  492. }
  493. styles2.visible = {
  494. get() {
  495. const builder = createBuilder(this, this[STYLER], true);
  496. Object.defineProperty(this, "visible", { value: builder });
  497. return builder;
  498. }
  499. };
  500. var getModelAnsi = (model, level2, type, ...arguments_) => {
  501. if (model === "rgb") {
  502. if (level2 === "ansi16m") {
  503. return ansi_styles_default[type].ansi16m(...arguments_);
  504. }
  505. if (level2 === "ansi256") {
  506. return ansi_styles_default[type].ansi256(ansi_styles_default.rgbToAnsi256(...arguments_));
  507. }
  508. return ansi_styles_default[type].ansi(ansi_styles_default.rgbToAnsi(...arguments_));
  509. }
  510. if (model === "hex") {
  511. return getModelAnsi("rgb", level2, type, ...ansi_styles_default.hexToRgb(...arguments_));
  512. }
  513. return ansi_styles_default[type][model](...arguments_);
  514. };
  515. var usedModels = ["rgb", "hex", "ansi256"];
  516. for (const model of usedModels) {
  517. styles2[model] = {
  518. get() {
  519. const { level: level2 } = this;
  520. return function(...arguments_) {
  521. const styler = createStyler(getModelAnsi(model, levelMapping[level2], "color", ...arguments_), ansi_styles_default.color.close, this[STYLER]);
  522. return createBuilder(this, styler, this[IS_EMPTY]);
  523. };
  524. }
  525. };
  526. const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
  527. styles2[bgModel] = {
  528. get() {
  529. const { level: level2 } = this;
  530. return function(...arguments_) {
  531. const styler = createStyler(getModelAnsi(model, levelMapping[level2], "bgColor", ...arguments_), ansi_styles_default.bgColor.close, this[STYLER]);
  532. return createBuilder(this, styler, this[IS_EMPTY]);
  533. };
  534. }
  535. };
  536. }
  537. var proto = Object.defineProperties(() => {
  538. }, {
  539. ...styles2,
  540. level: {
  541. enumerable: true,
  542. get() {
  543. return this[GENERATOR].level;
  544. },
  545. set(level2) {
  546. this[GENERATOR].level = level2;
  547. }
  548. }
  549. });
  550. var createStyler = (open, close, parent) => {
  551. let openAll;
  552. let closeAll;
  553. if (parent === void 0) {
  554. openAll = open;
  555. closeAll = close;
  556. } else {
  557. openAll = parent.openAll + open;
  558. closeAll = close + parent.closeAll;
  559. }
  560. return {
  561. open,
  562. close,
  563. openAll,
  564. closeAll,
  565. parent
  566. };
  567. };
  568. var createBuilder = (self, _styler, _isEmpty) => {
  569. const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
  570. Object.setPrototypeOf(builder, proto);
  571. builder[GENERATOR] = self;
  572. builder[STYLER] = _styler;
  573. builder[IS_EMPTY] = _isEmpty;
  574. return builder;
  575. };
  576. var applyStyle = (self, string) => {
  577. if (self.level <= 0 || !string) {
  578. return self[IS_EMPTY] ? "" : string;
  579. }
  580. let styler = self[STYLER];
  581. if (styler === void 0) {
  582. return string;
  583. }
  584. const { openAll, closeAll } = styler;
  585. if (string.includes("\x1B")) {
  586. while (styler !== void 0) {
  587. string = stringReplaceAll(string, styler.close, styler.open);
  588. styler = styler.parent;
  589. }
  590. }
  591. const lfIndex = string.indexOf("\n");
  592. if (lfIndex !== -1) {
  593. string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
  594. }
  595. return openAll + string + closeAll;
  596. };
  597. Object.defineProperties(createChalk.prototype, styles2);
  598. var chalk = createChalk();
  599. var chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });
  600. var source_default = chalk;
  601.  
  602. // /input.tsx
  603. function getWindow() {
  604. return globalThis.GM_info && GM_info.script.grant.includes("unsafeWindow") ? unsafeWindow : globalThis;
  605. }
  606. getWindow().chalk = source_default;
  607.  
  608. // #endregion chalk
  609.  
  610. /**
  611. *
  612. *
  613. * @author Michael Barros <michaelcbarros@gmail.com>
  614. * @param {string} name
  615. * @param {{logLevel: log.LogLevelDesc, tag: string}} logLevel
  616. * @return {log.Logger}
  617. */
  618. function getLogger(name, { logLevel, tag }) {
  619. prefix.reg(log);
  620.  
  621. const colors = {
  622. TRACE: '220;86;220',
  623. DEBUG: '86;86;220',
  624. INFO: '134;134;221',
  625. WARN: '220;220;86',
  626. ERROR: '220;86;86',
  627. };
  628.  
  629. /** @type {prefix.LoglevelPluginPrefixOptions} */
  630. let options = {
  631. levelFormatter: function (level) {
  632. return level.toUpperCase();
  633. },
  634. nameFormatter: function (name) {
  635. return name || 'root';
  636. },
  637. timestampFormatter: function (date) {
  638. return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, '$1');
  639. },
  640. format: function (level, name, timestamp) {
  641. let _timestamp = `\x1B[90m[${timestamp}]\x1B[m`;
  642. let _level = `\x1B[38;2;${colors[level.toUpperCase()]}m${level.toUpperCase()}\x1B[m`;
  643. let _name = `\x1B[38;2;38;177;38m${tag ? `[${tag}-` : '['}${name}]\x1B[m`;
  644. let _format = `${_timestamp} ${_level} ${_name}:`;
  645. return _format;
  646. },
  647. };
  648.  
  649. const logger = log.getLogger(name);
  650.  
  651. prefix.apply(logger, options);
  652.  
  653. logger.setLevel(logLevel || 'WARN');
  654.  
  655. return logger;
  656. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址