@neodx/log
Version:
A lightweight universal logging framework
924 lines (923 loc) • 45 kB
JavaScript
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