UNPKG

@neodx/log

Version:

A lightweight universal logging framework

924 lines (923 loc) 45 kB
import { hostname as D } from 'node:os'; import { c as u, D as F } from './create-logger-factory-BmydF_vP.mjs'; import { i as C, g as e, a as E, h as t, t as r, j as n, T as B, l as o, v as a, m as i, e as l, k as s, r as A, c as c } from './read-arguments-CPC3VkQ4.mjs'; import { readFileSync as f, existsSync as g, createWriteStream as d } from 'node:fs'; import { colors as m } from '@neodx/colors'; import { resolve as p, relative as h } from 'pathe'; import { serializeJSON as b, printf as y } from '../utils/index.mjs'; let $ = D => D.reduce((D, u) => D + u, 0), v = (D, u) => { var F; return (F = (D, F) => !u.includes(F)), Object.fromEntries(e(D).filter(([D, u]) => F(u, D))); }, x = (D, u) => Object.fromEntries(Object.entries(D).filter(([D]) => u.includes(D))), w = (D, u, F = '...') => (D.length <= u ? D : D.slice(0, u - F.length) + F), T = D => { if (!D.headersSent) return 'unknown status'; let { statusCode: u, statusMessage: F } = D; return `${u} ${F}`; }, j = (D, u, F = ' ') => `${u.bold(D.method?.toUpperCase() ?? 'GET')}${F}${u.underline(u.gray(w(S(D).split('?')?.shift() ?? '', 50)))}`, M = D => { let u = D >= 100; return (u ? D / 1e3 : D) .toLocaleString('en', { style: 'unit', unit: u ? 'second' : 'millisecond', unitDisplay: 'narrow', maximumFractionDigits: 1 }) .padEnd(4); }, S = ({ originalUrl: D, path: u, url: F }) => D || ('string' == typeof u ? u : F?.path ?? F), O = () => { let D = 0; return function () { return (D = D >= N ? 0 : D + 1); }; }, k = Symbol('HTTP_LOG_START_TIME'), _ = Symbol('raw'), N = 2147483647, L = (D = 0) => u => `\u001B[${u + D}m`, I = (D = 0) => u => `\u001B[${38 + D};5;${u}m`, P = (D = 0) => (u, F, C) => `\u001B[${38 + D};2;${u};${F};${C}m`, R = { modifier: { reset: [0, 0], bold: [1, 22], dim: [2, 22], italic: [3, 23], underline: [4, 24], overline: [53, 55], inverse: [7, 27], hidden: [8, 28], strikethrough: [9, 29] }, color: { black: [30, 39], red: [31, 39], green: [32, 39], yellow: [33, 39], blue: [34, 39], magenta: [35, 39], cyan: [36, 39], white: [37, 39], blackBright: [90, 39], gray: [90, 39], grey: [90, 39], redBright: [91, 39], greenBright: [92, 39], yellowBright: [93, 39], blueBright: [94, 39], magentaBright: [95, 39], cyanBright: [96, 39], whiteBright: [97, 39] }, bgColor: { bgBlack: [40, 49], bgRed: [41, 49], bgGreen: [42, 49], bgYellow: [43, 49], bgBlue: [44, 49], bgMagenta: [45, 49], bgCyan: [46, 49], bgWhite: [47, 49], bgBlackBright: [100, 49], bgGray: [100, 49], bgGrey: [100, 49], bgRedBright: [101, 49], bgGreenBright: [102, 49], bgYellowBright: [103, 49], bgBlueBright: [104, 49], bgMagentaBright: [105, 49], bgCyanBright: [106, 49], bgWhiteBright: [107, 49] } }, W = (function () { let D = new Map(); for (let [u, F] of Object.entries(R)) { for (let [u, C] of Object.entries(F)) (R[u] = { open: `\u001B[${C[0]}m`, close: `\u001B[${C[1]}m` }), (F[u] = R[u]), D.set(C[0], C[1]); Object.defineProperty(R, u, { value: F, enumerable: !1 }); } return ( Object.defineProperty(R, 'codes', { value: D, enumerable: !1 }), (R.color.close = '\x1b[39m'), (R.bgColor.close = '\x1b[49m'), (R.color.ansi = L()), (R.color.ansi256 = I()), (R.color.ansi16m = P()), (R.bgColor.ansi = L(10)), (R.bgColor.ansi256 = I(10)), (R.bgColor.ansi16m = P(10)), Object.defineProperties(R, { rgbToAnsi256: { value: (D, u, F) => D === u && u === F ? D < 8 ? 16 : D > 248 ? 231 : Math.round(((D - 8) / 247) * 24) + 232 : 16 + 36 * Math.round((D / 255) * 5) + 6 * Math.round((u / 255) * 5) + Math.round((F / 255) * 5), enumerable: !1 }, hexToRgb: { value: D => { let u = /[a-f\d]{6}|[a-f\d]{3}/i.exec(D.toString(16)); if (!u) return [0, 0, 0]; let [F] = u; 3 === F.length && (F = [...F].map(D => D + D).join('')); let C = Number.parseInt(F, 16); return [(C >> 16) & 255, (C >> 8) & 255, 255 & C]; }, enumerable: !1 }, hexToAnsi256: { value: D => R.rgbToAnsi256(...R.hexToRgb(D)), enumerable: !1 }, ansi256ToAnsi: { value: D => { let u, F, C; if (D < 8) return 30 + D; if (D < 16) return 90 + (D - 8); if (D >= 232) (F = u = ((D - 232) * 10 + 8) / 255), (C = u); else { let e = (D -= 16) % 36; (u = Math.floor(D / 36) / 5), (F = Math.floor(e / 6) / 5), (C = (e % 6) / 5); } let e = 2 * Math.max(u, F, C); if (0 === e) return 30; let E = 30 + ((Math.round(C) << 2) | (Math.round(F) << 1) | Math.round(u)); return 2 === e && (E += 60), E; }, enumerable: !1 }, rgbToAnsi: { value: (D, u, F) => R.ansi256ToAnsi(R.rgbToAnsi256(D, u, F)), enumerable: !1 }, hexToAnsi: { value: D => R.ansi256ToAnsi(R.hexToAnsi256(D)), enumerable: !1 } }), R ); })(), G = /^[\uD800-\uDBFF][\uDC00-\uDFFF]$/, H = ['\x1b', '›'], z = D => `${H[0]}[${D}m`, U = (D, u, F) => { let C = []; for (let F of (D = [...D])) { let e = F; F.includes(';') && (F = F.split(';')[0][0] + '0'); let E = W.codes.get(Number.parseInt(F, 10)); if (E) { let F = D.indexOf(E.toString()); -1 === F ? C.push(z(u ? E : e)) : D.splice(F, 1); } else if (u) { C.push(z(0)); break; } else C.push(z(e)); } if (u && ((C = C.filter((D, u) => C.indexOf(D) === u)), void 0 !== F)) { let D = z(W.codes.get(Number.parseInt(F, 10))); C = C.reduce((u, F) => (F === D ? [F, ...u] : [...u, F]), []); } return C.join(''); }; function Y(D, u, F) { let C; let e = [...D], E = [], t = 'number' == typeof F ? F : e.length, r = !1, n = 0, B = ''; for (let [a, i] of e.entries()) { var o; let e = !1; if (H.includes(i)) { let u = /\d[^m]*/.exec(D.slice(a, a + 18)); (C = u && u.length > 0 ? u[0] : void 0), n < t && ((r = !0), void 0 !== C && E.push(C)); } else r && 'm' === i && ((r = !1), (e = !0)); if ( (!r && !e && n++, !G.test(i) && Number.isInteger((o = i.codePointAt())) && o >= 4352 && (o <= 4447 || 9001 === o || 9002 === o || (11904 <= o && o <= 12871 && 12351 !== o) || (12880 <= o && o <= 19903) || (19968 <= o && o <= 42182) || (43360 <= o && o <= 43388) || (44032 <= o && o <= 55203) || (63744 <= o && o <= 64255) || (65040 <= o && o <= 65049) || (65072 <= o && o <= 65131) || (65281 <= o && o <= 65376) || (65504 <= o && o <= 65510) || (110592 <= o && o <= 110593) || (127488 <= o && o <= 127569) || (131072 <= o && o <= 262141)) && (n++, 'number' != typeof F && t++), n > u && n <= t) ) B += i; else if (n !== u || r || void 0 === C) { if (n >= t) { B += U(E, !0, C); break; } } else B = U(E); } return B; } let Z = (function ({ onlyFirst: D = !1 } = {}) { return RegExp( '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))', D ? void 0 : 'g' ); })(); function q(D) { return D && D.__esModule && Object.prototype.hasOwnProperty.call(D, 'default') ? D.default : D; } var V = { exports: {} }; !(function (D) { var u = {}; function F(D) { return D.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || []; } (D.exports = u), (u.eastAsianWidth = function (D) { var u = D.charCodeAt(0), F = 2 == D.length ? D.charCodeAt(1) : 0, C = u; return (55296 <= u && u <= 56319 && 56320 <= F && F <= 57343 && ((u &= 1023), (F &= 1023), (C = ((u << 10) | F) + 65536)), 12288 == C || (65281 <= C && C <= 65376) || (65504 <= C && C <= 65510)) ? 'F' : 8361 == C || (65377 <= C && C <= 65470) || (65474 <= C && C <= 65479) || (65482 <= C && C <= 65487) || (65490 <= C && C <= 65495) || (65498 <= C && C <= 65500) || (65512 <= C && C <= 65518) ? 'H' : (4352 <= C && C <= 4447) || (4515 <= C && C <= 4519) || (4602 <= C && C <= 4607) || (9001 <= C && C <= 9002) || (11904 <= C && C <= 11929) || (11931 <= C && C <= 12019) || (12032 <= C && C <= 12245) || (12272 <= C && C <= 12283) || (12289 <= C && C <= 12350) || (12353 <= C && C <= 12438) || (12441 <= C && C <= 12543) || (12549 <= C && C <= 12589) || (12593 <= C && C <= 12686) || (12688 <= C && C <= 12730) || (12736 <= C && C <= 12771) || (12784 <= C && C <= 12830) || (12832 <= C && C <= 12871) || (12880 <= C && C <= 13054) || (13056 <= C && C <= 19903) || (19968 <= C && C <= 42124) || (42128 <= C && C <= 42182) || (43360 <= C && C <= 43388) || (44032 <= C && C <= 55203) || (55216 <= C && C <= 55238) || (55243 <= C && C <= 55291) || (63744 <= C && C <= 64255) || (65040 <= C && C <= 65049) || (65072 <= C && C <= 65106) || (65108 <= C && C <= 65126) || (65128 <= C && C <= 65131) || (110592 <= C && C <= 110593) || (127488 <= C && C <= 127490) || (127504 <= C && C <= 127546) || (127552 <= C && C <= 127560) || (127568 <= C && C <= 127569) || (131072 <= C && C <= 194367) || (177984 <= C && C <= 196605) || (196608 <= C && C <= 262141) ? 'W' : (32 <= C && C <= 126) || (162 <= C && C <= 163) || (165 <= C && C <= 166) || 172 == C || 175 == C || (10214 <= C && C <= 10221) || (10629 <= C && C <= 10630) ? 'Na' : 161 == C || 164 == C || (167 <= C && C <= 168) || 170 == C || (173 <= C && C <= 174) || (176 <= C && C <= 180) || (182 <= C && C <= 186) || (188 <= C && C <= 191) || 198 == C || 208 == C || (215 <= C && C <= 216) || (222 <= C && C <= 225) || 230 == C || (232 <= C && C <= 234) || (236 <= C && C <= 237) || 240 == C || (242 <= C && C <= 243) || (247 <= C && C <= 250) || 252 == C || 254 == C || 257 == C || 273 == C || 275 == C || 283 == C || (294 <= C && C <= 295) || 299 == C || (305 <= C && C <= 307) || 312 == C || (319 <= C && C <= 322) || 324 == C || (328 <= C && C <= 331) || 333 == C || (338 <= C && C <= 339) || (358 <= C && C <= 359) || 363 == C || 462 == C || 464 == C || 466 == C || 468 == C || 470 == C || 472 == C || 474 == C || 476 == C || 593 == C || 609 == C || 708 == C || 711 == C || (713 <= C && C <= 715) || 717 == C || 720 == C || (728 <= C && C <= 731) || 733 == C || 735 == C || (768 <= C && C <= 879) || (913 <= C && C <= 929) || (931 <= C && C <= 937) || (945 <= C && C <= 961) || (963 <= C && C <= 969) || 1025 == C || (1040 <= C && C <= 1103) || 1105 == C || 8208 == C || (8211 <= C && C <= 8214) || (8216 <= C && C <= 8217) || (8220 <= C && C <= 8221) || (8224 <= C && C <= 8226) || (8228 <= C && C <= 8231) || 8240 == C || (8242 <= C && C <= 8243) || 8245 == C || 8251 == C || 8254 == C || 8308 == C || 8319 == C || (8321 <= C && C <= 8324) || 8364 == C || 8451 == C || 8453 == C || 8457 == C || 8467 == C || 8470 == C || (8481 <= C && C <= 8482) || 8486 == C || 8491 == C || (8531 <= C && C <= 8532) || (8539 <= C && C <= 8542) || (8544 <= C && C <= 8555) || (8560 <= C && C <= 8569) || 8585 == C || (8592 <= C && C <= 8601) || (8632 <= C && C <= 8633) || 8658 == C || 8660 == C || 8679 == C || 8704 == C || (8706 <= C && C <= 8707) || (8711 <= C && C <= 8712) || 8715 == C || 8719 == C || 8721 == C || 8725 == C || 8730 == C || (8733 <= C && C <= 8736) || 8739 == C || 8741 == C || (8743 <= C && C <= 8748) || 8750 == C || (8756 <= C && C <= 8759) || (8764 <= C && C <= 8765) || 8776 == C || 8780 == C || 8786 == C || (8800 <= C && C <= 8801) || (8804 <= C && C <= 8807) || (8810 <= C && C <= 8811) || (8814 <= C && C <= 8815) || (8834 <= C && C <= 8835) || (8838 <= C && C <= 8839) || 8853 == C || 8857 == C || 8869 == C || 8895 == C || 8978 == C || (9312 <= C && C <= 9449) || (9451 <= C && C <= 9547) || (9552 <= C && C <= 9587) || (9600 <= C && C <= 9615) || (9618 <= C && C <= 9621) || (9632 <= C && C <= 9633) || (9635 <= C && C <= 9641) || (9650 <= C && C <= 9651) || (9654 <= C && C <= 9655) || (9660 <= C && C <= 9661) || (9664 <= C && C <= 9665) || (9670 <= C && C <= 9672) || 9675 == C || (9678 <= C && C <= 9681) || (9698 <= C && C <= 9701) || 9711 == C || (9733 <= C && C <= 9734) || 9737 == C || (9742 <= C && C <= 9743) || (9748 <= C && C <= 9749) || 9756 == C || 9758 == C || 9792 == C || 9794 == C || (9824 <= C && C <= 9825) || (9827 <= C && C <= 9829) || (9831 <= C && C <= 9834) || (9836 <= C && C <= 9837) || 9839 == C || (9886 <= C && C <= 9887) || (9918 <= C && C <= 9919) || (9924 <= C && C <= 9933) || (9935 <= C && C <= 9953) || 9955 == C || (9960 <= C && C <= 9983) || 10045 == C || 10071 == C || (10102 <= C && C <= 10111) || (11093 <= C && C <= 11097) || (12872 <= C && C <= 12879) || (57344 <= C && C <= 63743) || (65024 <= C && C <= 65039) || 65533 == C || (127232 <= C && C <= 127242) || (127248 <= C && C <= 127277) || (127280 <= C && C <= 127337) || (127344 <= C && C <= 127386) || (917760 <= C && C <= 917999) || (983040 <= C && C <= 1048573) || (1048576 <= C && C <= 1114109) ? 'A' : 'N'; }), (u.characterLength = function (D) { var u = this.eastAsianWidth(D); return 'F' == u || 'W' == u || 'A' == u ? 2 : 1; }), (u.length = function (D) { for (var u = F(D), C = 0, e = 0; e < u.length; e++) C += this.characterLength(u[e]); return C; }), (u.slice = function (D, C, e) { (textLen = u.length(D)), (e = e || 1), (C = C || 0) < 0 && (C = textLen + C), e < 0 && (e = textLen + e); for (var E = '', t = 0, r = F(D), n = 0; n < r.length; n++) { var B = r[n], o = u.length(B); if (t >= C - (2 == o ? 1 : 0)) { if (t + o <= e) E += B; else break; } t += o; } return E; }); })(V); var J = q(V.exports), K = q(function () { return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; }); function Q(D, u = {}) { if ( 'string' != typeof D || 0 === D.length || ((u = { ambiguousIsNarrow: !0, ...u }), 0 === (D = (function (D) { if ('string' != typeof D) throw TypeError(`Expected a \`string\`, got \`${typeof D}\``); return D.replace(Z, ''); })(D)).length) ) return 0; D = D.replace(K(), ' '); let F = u.ambiguousIsNarrow ? 1 : 2, C = 0; for (let u of D) { let D = u.codePointAt(0); if (!(D <= 31) && (!(D >= 127) || !(D <= 159)) && (!(D >= 768) || !(D <= 879))) switch (J.eastAsianWidth(u)) { case 'F': case 'W': C += 2; break; case 'A': C += F; break; default: C += 1; } } return C; } function X(D, u, F) { if (' ' === D.charAt(u)) return u; for (let C = 1; C <= 3; C++) if (F) { if (' ' === D.charAt(u + C)) return u + C; } else if (' ' === D.charAt(u - C)) return u - C; return u; } let DD = { enter: '', longArrowRight: '', pointerSmall: '', pointerSmallDouble: '»' }, Du = process.stdout.columns || 80, DF = D => (/\r\n/.test(D) ? 2 : 1), DC = /\r?\n/; function De({ colors: D = m, indent: u = 0, columnNumber: F, lineNumber: e, source: E, overscan: t = 2 }) { let r = DF(E), n = (function (D, u, F) { let e = D.split(DC); if (u > e.length) return D.length; let E = DF(D); return ( $( (function (D, u = C) { return Array.from({ length: D }, (D, F) => u(F)); })(u - 1, D => e[D].length + E) ) + F ); })(E, e, F), B = E.split(DC), o = $(B.slice(0, e).map(D => D.length + r)), a = Math.max(0, e - 1 - t), i = B.slice(a, e + t); if (0 === i.length || i.some(DE)) return ''; let l = (u, F) => Dt(F) + D.red('^'.repeat(Math.max(1, u.length - F))), s = (u = '') => D.gray(`${u.padStart(3, ' ')}| `); return i .flatMap((F, C) => { let E = a + C + 1, t = E === e, r = t ? D.yellowBright : D.yellow; return [ (function (D, u, F) { let { position: C, space: e, preferTruncationOnSpace: E } = (F = { position: 'end', preferTruncationOnSpace: !1, truncationCharacter: '', ...F }), { truncationCharacter: t } = F; if ('string' != typeof D) throw TypeError(`Expected \`input\` to be a string, got ${typeof D}`); if ('number' != typeof u) throw TypeError(`Expected \`columns\` to be a number, got ${typeof u}`); if (u < 1) return ''; if (1 === u) return t; let r = Q(D); if (r <= u) return D; if ('start' === C) { if (E) { let F = X(D, r - u + 1, !0); return t + Y(D, F, r).trim(); } return !0 === e && (t += ' '), t + Y(D, r - u + Q(t), r); } if ('middle' === C) { !0 === e && (t = ` ${t} `); let F = Math.floor(u / 2); if (E) { let C = X(D, F), e = X(D, r - (u - F) + 1, !0); return Y(D, 0, C) + t + Y(D, e, r).trim(); } return Y(D, 0, F) + t + Y(D, r - (u - F) + Q(t), r); } if ('end' === C) { if (E) { let F = X(D, u - 1); return Y(D, 0, F) + t; } return !0 === e && (t = ` ${t}`), Y(D, 0, u - Q(t)) + t; } throw Error( `Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${C}` ); })(s(String(E)) + r(F.replace(/\t/g, ' ')), Du - u), t && s() + l(F, n - (o - F.length)) ]; }) .filter(Boolean) .map(D => (u ? Dt(u) + D : D)) .join('\n'); } let DE = D => D.length > 240, Dt = D => ' '.repeat(D); function Dr(D) { if (!(D instanceof Error)) return D; let u = { name: D.name, stack: D.stack, message: D.message, ...(Dn(D) ?? {}) }; return D.cause instanceof Error && (u.cause = Dr(D.cause)), u; } function Dn(D) { let u = v(Object.fromEntries(Object.entries(D)), DB); return E(u) ? null : u; } let DB = ['stack', 'cause', 'name', 'message'], Do = (D, u = Dl) => D.split('\n') .map(Da) .filter(D => null !== D && u(D)); function Da(D) { var u; let F = D.trim(); F.includes('(eval ') && (F = F.replace(/eval code/g, 'eval').replace(/(\(eval at [^()]*)|(,.*$)/g, '')); let C = F.replace(/^\s+/, '') .replace(/\(eval code/g, '(') .replace(/^.*?\s+/, ''), e = C.match(/ (\(.+\)$)/); e && (C = C.replace(e[0], '')); let [E, r, n] = (u = e ? e[1] : C).includes(':') ? Di.exec(u.replace(/^\(|\)$/g, ''))?.slice(1, 4) ?? [u] : [u], B = (e && C) || '', o = E && ['eval', '<anonymous>'].includes(E) ? void 0 : E; return o && r && n ? (B.startsWith('async ') && (B = B.slice(6)), o.startsWith('file://') && (o = o.slice(7)), { file: p(o), line: t(r), column: t(n), method: B }) : null; } let Di = /(.+?)(?::(\d+))?(?::(\d+))?$/, Dl = D => !D.file.match('node:internal'); function Ds(D, u = {}) { let { cwd: F = process.cwd(), indent: C = 0, codeFrame: e = !0, fullStack: E = !1, stringify: t = D => b(D, 2), filterStack: n, colors: o = m } = u, a = e ? DA(e) : null, i = Dc(D), l = Do(i.stack || '', E ? B : n), s = Dn(i), A = r(a?.(l) ?? []), c = (D = C) => (D ? ' '.repeat(D) : ''), g = l.flatMap(D => { let { file: u, column: e, line: E, method: t } = D, r = A.includes(D), n = r ? o.cyan : o.gray, B = h(F, u); return [ n( `${c()} ${o.dim(r ? DD.pointerSmallDouble : DD.pointerSmall)} ${[t, `${c()}${B}:${o.dim(`${E}:${e}`)}`].filter(Boolean).join(' ')}` ), r && o.yellow( De({ lineNumber: E, columnNumber: e, source: f(u, 'utf-8'), indent: C + 3, colors: o }) ) ]; }); return ( s && g.push( `${c()}${o.red(`${DD.longArrowRight} serialized error properties:`)}`, `${o.gray( t(s) .split(DC) .map(D => `${c()}${D}`) .slice(1, -1) .join('\n') )}` ), i.cause && 'object' == typeof i.cause && 'name' in i.cause && ((i.cause.name = `${DD.enter} caused by ${i.cause.name}`), g.push(' ', Ds(i.cause, { ...u, indent: C + 2, codeFrame: !1 }))), [o.red(`${c()}${o.bold(i.name || 'Unknown Error')}: ${i.message}`), ...g] .filter(Boolean) .join('\n') ); } let DA = D => ('function' == typeof D ? D : D => D.find(D => g(D.file))), Dc = D => { if (!D) return x(Error('unknown error'), ['message', 'stack']); if (n(D)) { let u = String(D); return { message: u.split(/\n/g)[0], stack: u }; } return D; }; function Df(D, u) { if (!u) return D; let F = {}; for (let [C, e] of Object.entries(D)) F[C] = o(u, C) ? u[C](e) : e; return F; } let Dg = { req: function (D) { let { id: u, info: F, query: C, method: e, params: E, headers: t, [_]: r } = D, n = F || D.socket; return { id: 'function' == typeof u ? u() : u ?? F?.id, url: S(D), query: C, params: E, method: e, headers: t, remotePort: n?.remotePort, remoteAddress: n?.remoteAddress, [_]: r || D }; }, res: function (D) { return { statusCode: D.headersSent ? D.statusCode : null, headers: D.getHeaders(), [_]: D }; }, err: Dr }; function Dd(D, u) { return Dm({ target: d(D), ...u }); } function Dm({ target: D = process.stdout, dateKey: u = 'time', errorKey: F = 'err', messageKey: C = 'msg', serializers: e = Dg, levelValueKey: E = 'level' } = {}) { let t = 'writable' in D ? D.write.bind(D) : D; return function ({ msg: D, error: r, meta: n, level: B, name: o, date: a, __: { levels: i } }) { t( b( Object.assign( { [E]: i[B], [u]: a.getTime(), [F]: r && Dr(r), [C]: D }, o && { name: o }, Df(n, e) ) ) + '\n' ); }; } function Dp({ log: D = console.log, logError: u = console.error, colors: F = m, displayMs: e = !1, serializers: E = Dg, displayTime: t = !0, displayLevel: r = !0, prettyErrors: n = !0, levelColors: B = Dv, levelBadges: A = D$ } = {}) { let c = (D, u) => (D && o(D, u) ? D[u] : null), f = A ? Math.max(...a(A).map(D => String(D).length)) : 0, g = { colors: F, ...(i(n) ? n : {}) }; return function (o) { let { name: a, date: i, msg: d, meta: m, error: p, level: h, __: { levels: y, originalLevel: $ } } = o, x = n ? null : p?.name, w = n && d === p?.message ? null : d, T = Db(y), j = (x ?? $.toLowerCase()).padEnd(1), M = c(A, $), S = c(B, $) ?? c(B, h), O = S ? F[S] : C, k = v(m, ['pid', 'hostname']), _ = Dh([M?.padEnd(f), j]), N = Dh([a && F.gray(`[${a.split(':').join(Dy)}]`), r && O(_.padEnd(T + f))]), L = !l(s(k)), I = e ? Dw : DT, P = Dh([t && F.gray(I.format(i)), N, w, L && b(Df(k, E), 2)]); if (p) { let [D, ...C] = p.stack?.toString().split('\n') ?? []; if (n) { let D = p instanceof Error ? '\n' : ''; w || L ? u(P, '\n', Ds(p, g), D) : u(P, Ds(p, g), D); } else u(P, F.gray(C.map(D => D.replace(/^/, '\n')).join(''))); } else D(P); }; } let Dh = D => D.filter(Boolean).join(' '), Db = (function (D, { cache: u = new Map() } = {}) { return F => (u.has(F) || u.set(F, D(F)), u.get(F)); })(D => Math.max(...Object.keys(D).map(D => D.length)), { cache: new WeakMap() }), Dy = ` ${DD.pointerSmall} `, D$ = { info: '', done: '', warn: '', error: '', debug: '' }, Dv = { info: 'cyanBright', warn: 'yellowBright', done: 'greenBright', debug: 'blueBright', error: 'red', verbose: 'bold' }; (Dp.defaultBadges = D$), (Dp.defaultColors = Dv); let Dx = { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: !1 }, Dw = new Intl.DateTimeFormat('en-US', { ...Dx, fractionalSecondDigits: 3 }), DT = new Intl.DateTimeFormat('en-US', { ...Dx }), Dj = { pid: process.pid, hostname: D() }, DM = u({ defaultParams: { ...F, meta: Dj, target: 'production' === process.env.NODE_ENV ? Dm() : Dp() }, formatMessage: y, readArguments: A }), DS = c(DM); export { k as H, Dj as N, O as a, M as b, DM as c, T as d, Dd as e, j as f, DS as g, De as h, Ds as i, Dm as j, Dp as p }; //# sourceMappingURL=index-DFam5V4O.mjs.map