@visulima/pail 4.0.0-alpha.5 → 4.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/LICENSE.md +6 -6
- package/README.md +323 -0
- package/dist/error.d.ts +104 -0
- package/dist/error.js +76 -0
- package/dist/index.browser.d.ts +2 -0
- package/dist/index.browser.js +2 -1
- package/dist/index.server.d.ts +2 -0
- package/dist/index.server.js +6 -4
- package/dist/interactive/index.js +1 -1
- package/dist/middleware/elysia.d.ts +71 -0
- package/dist/middleware/elysia.js +70 -0
- package/dist/middleware/express.d.ts +86 -0
- package/dist/middleware/express.js +29 -0
- package/dist/middleware/fastify.d.ts +81 -0
- package/dist/middleware/fastify.js +46 -0
- package/dist/middleware/hono.d.ts +85 -0
- package/dist/middleware/hono.js +33 -0
- package/dist/middleware/next/handler.d.ts +36 -0
- package/dist/middleware/next/handler.js +53 -0
- package/dist/middleware/next/middleware.d.ts +59 -0
- package/dist/middleware/next/storage.d.ts +14 -0
- package/dist/middleware/shared/create-middleware-logger.d.ts +82 -0
- package/dist/middleware/shared/headers.d.ts +14 -0
- package/dist/middleware/shared/routes.d.ts +30 -0
- package/dist/middleware/shared/storage.d.ts +29 -0
- package/dist/middleware/sveltekit.d.ts +123 -0
- package/dist/middleware/sveltekit.js +43 -0
- package/dist/packem_shared/{AbstractJsonReporter-DWRpTtGw.js → AbstractJsonReporter-CGKHS8_M.js} +103 -21
- package/dist/packem_shared/{AbstractJsonReporter-BaZ33PlE.js → AbstractJsonReporter-DDjDkciI.js} +103 -21
- package/dist/packem_shared/{InteractiveManager-CbE7d1kY.js → InteractiveManager-Cd6A14ZK.js} +1 -1
- package/dist/packem_shared/{JsonReporter-BV5lMnJX.js → JsonReporter-B3XX8GHN.js} +1 -1
- package/dist/packem_shared/{JsonReporter-BRw4skd5.js → JsonReporter-p_BXg6Sj.js} +1 -1
- package/dist/packem_shared/{PrettyReporter-DLQtmATi.js → PrettyReporter-CvBn-hxP.js} +5 -4
- package/dist/packem_shared/{Spinner-B9JUdsbY.js → Spinner-DIdVcfWq.js} +34 -1
- package/dist/packem_shared/{abstract-pretty-reporter-DckLMlGF.js → abstract-pretty-reporter-jU8WL_6c.js} +121 -15
- package/dist/packem_shared/createPailError-B11aRfrT.js +76 -0
- package/dist/packem_shared/headers-Cp4uLtr4.js +123 -0
- package/dist/packem_shared/{index-EZ_WSQZS.js → index-frijFf5m.js} +120 -14
- package/dist/packem_shared/pailMiddleware-Ci88geIF.js +24 -0
- package/dist/packem_shared/storage-D0vqz8OX.js +36 -0
- package/dist/packem_shared/useLogger-D0rU3lcX.js +33 -0
- package/dist/processor/environment-processor.d.ts +124 -0
- package/dist/processor/environment-processor.js +78 -0
- package/dist/processor/message-formatter-processor.d.ts +1 -2
- package/dist/processor/sampling-processor.d.ts +111 -0
- package/dist/processor/sampling-processor.js +59 -0
- package/dist/reporter/file/json-file-reporter.js +1 -1
- package/dist/reporter/http/abstract-http-reporter.js +1 -1
- package/dist/reporter/http/http-reporter.edge-light.js +103 -21
- package/dist/reporter/json/index.browser.js +2 -2
- package/dist/reporter/json/index.js +2 -2
- package/dist/reporter/pretty/index.js +1 -1
- package/dist/reporter/simple/simple-reporter.server.js +4 -3
- package/dist/spinner.js +34 -1
- package/dist/wide-event.d.ts +300 -0
- package/dist/wide-event.js +281 -0
- package/package.json +68 -4
package/dist/packem_shared/{AbstractJsonReporter-BaZ33PlE.js → AbstractJsonReporter-DDjDkciI.js}
RENAMED
|
@@ -12,7 +12,7 @@ const ErrorProto = Object.create(
|
|
|
12
12
|
{},
|
|
13
13
|
{
|
|
14
14
|
cause: {
|
|
15
|
-
enumerable:
|
|
15
|
+
enumerable: false,
|
|
16
16
|
value: void 0,
|
|
17
17
|
writable: true
|
|
18
18
|
},
|
|
@@ -22,32 +22,55 @@ const ErrorProto = Object.create(
|
|
|
22
22
|
writable: true
|
|
23
23
|
},
|
|
24
24
|
errors: {
|
|
25
|
-
enumerable:
|
|
25
|
+
enumerable: false,
|
|
26
26
|
value: void 0,
|
|
27
27
|
writable: true
|
|
28
28
|
},
|
|
29
29
|
message: {
|
|
30
|
-
enumerable:
|
|
30
|
+
enumerable: false,
|
|
31
31
|
value: void 0,
|
|
32
32
|
writable: true
|
|
33
33
|
},
|
|
34
34
|
name: {
|
|
35
|
-
enumerable:
|
|
35
|
+
enumerable: false,
|
|
36
36
|
value: void 0,
|
|
37
37
|
writable: true
|
|
38
38
|
},
|
|
39
39
|
stack: {
|
|
40
|
-
enumerable:
|
|
40
|
+
enumerable: false,
|
|
41
41
|
value: void 0,
|
|
42
42
|
writable: true
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
);
|
|
46
46
|
const toJsonWasCalled = /* @__PURE__ */ new WeakSet();
|
|
47
|
+
const makePropertiesEnumerable = (object) => {
|
|
48
|
+
if (!object || typeof object !== "object") {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const props = Object.getOwnPropertyNames(object);
|
|
52
|
+
for (const prop of props) {
|
|
53
|
+
const descriptor = Object.getOwnPropertyDescriptor(object, prop);
|
|
54
|
+
if (descriptor) {
|
|
55
|
+
if (!descriptor.enumerable) {
|
|
56
|
+
Object.defineProperty(object, prop, {
|
|
57
|
+
...descriptor,
|
|
58
|
+
enumerable: true
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (descriptor.value && typeof descriptor.value === "object" && !Array.isArray(descriptor.value) && (Object.getPrototypeOf(descriptor.value) === Object.prototype || Object.getPrototypeOf(descriptor.value) === null)) {
|
|
62
|
+
makePropertiesEnumerable(descriptor.value);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
47
67
|
const toJSON = (from) => {
|
|
48
68
|
toJsonWasCalled.add(from);
|
|
49
69
|
const json = from.toJSON();
|
|
50
70
|
toJsonWasCalled.delete(from);
|
|
71
|
+
if (json && typeof json === "object" && Object.isExtensible(json)) {
|
|
72
|
+
makePropertiesEnumerable(json);
|
|
73
|
+
}
|
|
51
74
|
return json;
|
|
52
75
|
};
|
|
53
76
|
const serializeValue = (value, seen, depth, options) => {
|
|
@@ -58,7 +81,7 @@ const serializeValue = (value, seen, depth, options) => {
|
|
|
58
81
|
return "[object Stream]";
|
|
59
82
|
}
|
|
60
83
|
if (value instanceof Error) {
|
|
61
|
-
if (seen.
|
|
84
|
+
if (seen.has(value)) {
|
|
62
85
|
return "[Circular]";
|
|
63
86
|
}
|
|
64
87
|
depth += 1;
|
|
@@ -73,11 +96,14 @@ const serializeValue = (value, seen, depth, options) => {
|
|
|
73
96
|
if (typeof value === "function") {
|
|
74
97
|
return `[Function: ${value.name || "anonymous"}]`;
|
|
75
98
|
}
|
|
99
|
+
if (typeof value === "bigint") {
|
|
100
|
+
return `${value}n`;
|
|
101
|
+
}
|
|
76
102
|
if (isPlainObject(value)) {
|
|
77
|
-
depth
|
|
78
|
-
if (options.maxDepth && depth >= options.maxDepth) {
|
|
103
|
+
if (options.maxDepth !== void 0 && options.maxDepth !== Number.POSITIVE_INFINITY && depth + 1 >= options.maxDepth) {
|
|
79
104
|
return {};
|
|
80
105
|
}
|
|
106
|
+
depth += 1;
|
|
81
107
|
const plainObject = {};
|
|
82
108
|
for (const key in value) {
|
|
83
109
|
plainObject[key] = serializeValue(value[key], seen, depth, options);
|
|
@@ -91,7 +117,7 @@ const serializeValue = (value, seen, depth, options) => {
|
|
|
91
117
|
}
|
|
92
118
|
};
|
|
93
119
|
const _serialize = (error, options, seen, depth) => {
|
|
94
|
-
seen.
|
|
120
|
+
seen.add(error);
|
|
95
121
|
if (options.maxDepth === 0) {
|
|
96
122
|
return {};
|
|
97
123
|
}
|
|
@@ -99,31 +125,87 @@ const _serialize = (error, options, seen, depth) => {
|
|
|
99
125
|
return toJSON(error);
|
|
100
126
|
}
|
|
101
127
|
const protoError = Object.create(ErrorProto);
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
128
|
+
Object.defineProperty(protoError, "name", {
|
|
129
|
+
configurable: true,
|
|
130
|
+
enumerable: true,
|
|
131
|
+
value: Object.prototype.toString.call(error.constructor) === "[object Function]" ? error.constructor.name : error.name,
|
|
132
|
+
writable: true
|
|
133
|
+
});
|
|
134
|
+
Object.defineProperty(protoError, "message", {
|
|
135
|
+
configurable: true,
|
|
136
|
+
enumerable: true,
|
|
137
|
+
value: error.message,
|
|
138
|
+
writable: true
|
|
139
|
+
});
|
|
140
|
+
Object.defineProperty(protoError, "stack", {
|
|
141
|
+
configurable: true,
|
|
142
|
+
enumerable: true,
|
|
143
|
+
value: error.stack,
|
|
144
|
+
writable: true
|
|
145
|
+
});
|
|
105
146
|
if (Array.isArray(error.errors)) {
|
|
106
147
|
const aggregateErrors = [];
|
|
107
148
|
for (const aggregateError of error.errors) {
|
|
108
149
|
if (!(aggregateError instanceof Error)) {
|
|
109
150
|
throw new TypeError("All errors in the 'errors' property must be instances of Error");
|
|
110
151
|
}
|
|
111
|
-
if (seen.
|
|
112
|
-
protoError
|
|
152
|
+
if (seen.has(aggregateError)) {
|
|
153
|
+
Object.defineProperty(protoError, "errors", {
|
|
154
|
+
configurable: true,
|
|
155
|
+
enumerable: true,
|
|
156
|
+
value: [],
|
|
157
|
+
writable: true
|
|
158
|
+
});
|
|
113
159
|
return protoError;
|
|
114
160
|
}
|
|
115
161
|
aggregateErrors.push(_serialize(aggregateError, options, seen, depth));
|
|
116
162
|
}
|
|
117
|
-
protoError
|
|
163
|
+
Object.defineProperty(protoError, "errors", {
|
|
164
|
+
configurable: true,
|
|
165
|
+
enumerable: true,
|
|
166
|
+
value: aggregateErrors,
|
|
167
|
+
writable: true
|
|
168
|
+
});
|
|
118
169
|
}
|
|
119
|
-
if (error.cause
|
|
120
|
-
|
|
170
|
+
if (error.cause !== void 0 && error.cause !== null) {
|
|
171
|
+
if (error.cause instanceof Error) {
|
|
172
|
+
if (seen.has(error.cause)) {
|
|
173
|
+
Object.defineProperty(protoError, "cause", {
|
|
174
|
+
configurable: true,
|
|
175
|
+
enumerable: true,
|
|
176
|
+
value: "[Circular]",
|
|
177
|
+
writable: true
|
|
178
|
+
});
|
|
179
|
+
} else {
|
|
180
|
+
Object.defineProperty(protoError, "cause", {
|
|
181
|
+
configurable: true,
|
|
182
|
+
enumerable: true,
|
|
183
|
+
value: _serialize(error.cause, options, seen, depth),
|
|
184
|
+
writable: true
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
} else {
|
|
188
|
+
const serializedCause = serializeValue(error.cause, seen, depth, options);
|
|
189
|
+
Object.defineProperty(protoError, "cause", {
|
|
190
|
+
configurable: true,
|
|
191
|
+
enumerable: true,
|
|
192
|
+
value: serializedCause,
|
|
193
|
+
writable: true
|
|
194
|
+
});
|
|
195
|
+
}
|
|
121
196
|
}
|
|
122
197
|
for (const key in error) {
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
protoError[key] = serializeValue(value, seen, depth, options);
|
|
198
|
+
if (key === "name" || key === "message" || key === "stack" || key === "cause" || key === "errors") {
|
|
199
|
+
continue;
|
|
126
200
|
}
|
|
201
|
+
const value = error[key];
|
|
202
|
+
const serializedValue = serializeValue(value, seen, depth, options);
|
|
203
|
+
Object.defineProperty(protoError, key, {
|
|
204
|
+
configurable: true,
|
|
205
|
+
enumerable: true,
|
|
206
|
+
value: serializedValue,
|
|
207
|
+
writable: true
|
|
208
|
+
});
|
|
127
209
|
}
|
|
128
210
|
if (Array.isArray(options.exclude) && options.exclude.length > 0) {
|
|
129
211
|
for (const key of options.exclude) {
|
|
@@ -142,7 +224,7 @@ const serialize = (error, options = {}) => _serialize(
|
|
|
142
224
|
maxDepth: options.maxDepth ?? Number.POSITIVE_INFINITY,
|
|
143
225
|
useToJSON: options.useToJSON ?? false
|
|
144
226
|
},
|
|
145
|
-
|
|
227
|
+
/* @__PURE__ */ new Set(),
|
|
146
228
|
0
|
|
147
229
|
);
|
|
148
230
|
|
|
@@ -9,7 +9,7 @@ const {
|
|
|
9
9
|
stderr
|
|
10
10
|
} = __cjs_getProcess;
|
|
11
11
|
import { w as writeStream } from './write-stream-BG8fhcs3.js';
|
|
12
|
-
import { AbstractJsonReporter } from './AbstractJsonReporter-
|
|
12
|
+
import { AbstractJsonReporter } from './AbstractJsonReporter-CGKHS8_M.js';
|
|
13
13
|
|
|
14
14
|
class JsonReporter extends AbstractJsonReporter {
|
|
15
15
|
/** Standard output stream */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AbstractJsonReporter } from './AbstractJsonReporter-
|
|
1
|
+
import { AbstractJsonReporter } from './AbstractJsonReporter-DDjDkciI.js';
|
|
2
2
|
import { w as writeConsoleLogBasedOnLevel } from './write-console-log-based-on-level-DBmRYXpj.js';
|
|
3
3
|
|
|
4
4
|
class JsonReporter extends AbstractJsonReporter {
|
|
@@ -21,8 +21,8 @@ const {
|
|
|
21
21
|
stdout,
|
|
22
22
|
stderr
|
|
23
23
|
} = __cjs_getProcess;
|
|
24
|
-
import colorize, { grey, green, cyan, red, yellow, bold, magenta, underline, greenBright,
|
|
25
|
-
import { t as terminalSize, g as getStringWidth, w as wordWrap, W as WrapMode } from './index-
|
|
24
|
+
import colorize, { grey, green, cyan, red, yellow, bold, magenta, underline, greenBright, bgGrey, white } from '@visulima/colorize';
|
|
25
|
+
import { t as terminalSize, g as getStringWidth, w as wordWrap, W as WrapMode } from './index-frijFf5m.js';
|
|
26
26
|
import { L as LOG_TYPES, E as EMPTY_SYMBOL } from './constants-B1RjD_ps.js';
|
|
27
27
|
import { w as writeStream } from './write-stream-BG8fhcs3.js';
|
|
28
28
|
const {
|
|
@@ -34,7 +34,7 @@ const _process = globalThis.process || /* @__PURE__ */ Object.create(null);
|
|
|
34
34
|
const processShims = {
|
|
35
35
|
versions: {}
|
|
36
36
|
};
|
|
37
|
-
const process$1 = new Proxy(_process, {
|
|
37
|
+
const process$1 = /* @__PURE__ */ new Proxy(_process, {
|
|
38
38
|
get(target, property) {
|
|
39
39
|
if (property in target) {
|
|
40
40
|
return target[property];
|
|
@@ -1252,7 +1252,8 @@ class AbstractPrettyReporter {
|
|
|
1252
1252
|
}
|
|
1253
1253
|
}
|
|
1254
1254
|
|
|
1255
|
-
const
|
|
1255
|
+
const PAIL_DIST_REGEX = /[\\/]pail[\\/]dist/;
|
|
1256
|
+
const pailFileFilter = (line) => !PAIL_DIST_REGEX.test(line);
|
|
1256
1257
|
class PrettyReporter extends AbstractPrettyReporter {
|
|
1257
1258
|
#stdout;
|
|
1258
1259
|
#stderr;
|
|
@@ -1663,6 +1663,38 @@ var dwarfFortress = {
|
|
|
1663
1663
|
" ██████£££ "
|
|
1664
1664
|
]
|
|
1665
1665
|
};
|
|
1666
|
+
var fish = {
|
|
1667
|
+
interval: 80,
|
|
1668
|
+
frames: [
|
|
1669
|
+
"~~~~~~~~~~~~~~~~~~~~",
|
|
1670
|
+
"> ~~~~~~~~~~~~~~~~~~",
|
|
1671
|
+
"º> ~~~~~~~~~~~~~~~~~",
|
|
1672
|
+
"(º> ~~~~~~~~~~~~~~~~",
|
|
1673
|
+
"((º> ~~~~~~~~~~~~~~~",
|
|
1674
|
+
"<((º> ~~~~~~~~~~~~~~",
|
|
1675
|
+
"><((º> ~~~~~~~~~~~~~",
|
|
1676
|
+
" ><((º> ~~~~~~~~~~~~",
|
|
1677
|
+
"~ ><((º> ~~~~~~~~~~~",
|
|
1678
|
+
"~~ <>((º> ~~~~~~~~~~",
|
|
1679
|
+
"~~~ ><((º> ~~~~~~~~~",
|
|
1680
|
+
"~~~~ <>((º> ~~~~~~~~",
|
|
1681
|
+
"~~~~~ ><((º> ~~~~~~~",
|
|
1682
|
+
"~~~~~~ <>((º> ~~~~~~",
|
|
1683
|
+
"~~~~~~~ ><((º> ~~~~~",
|
|
1684
|
+
"~~~~~~~~ <>((º> ~~~~",
|
|
1685
|
+
"~~~~~~~~~ ><((º> ~~~",
|
|
1686
|
+
"~~~~~~~~~~ <>((º> ~~",
|
|
1687
|
+
"~~~~~~~~~~~ ><((º> ~",
|
|
1688
|
+
"~~~~~~~~~~~~ <>((º> ",
|
|
1689
|
+
"~~~~~~~~~~~~~ ><((º>",
|
|
1690
|
+
"~~~~~~~~~~~~~~ <>((º",
|
|
1691
|
+
"~~~~~~~~~~~~~~~ ><((",
|
|
1692
|
+
"~~~~~~~~~~~~~~~~ <>(",
|
|
1693
|
+
"~~~~~~~~~~~~~~~~~ ><",
|
|
1694
|
+
"~~~~~~~~~~~~~~~~~~ <",
|
|
1695
|
+
"~~~~~~~~~~~~~~~~~~~~"
|
|
1696
|
+
]
|
|
1697
|
+
};
|
|
1666
1698
|
const spinners = {
|
|
1667
1699
|
dots: dots,
|
|
1668
1700
|
dots2: dots2,
|
|
@@ -1752,7 +1784,8 @@ const spinners = {
|
|
|
1752
1784
|
orangeBluePulse: orangeBluePulse,
|
|
1753
1785
|
timeTravel: timeTravel,
|
|
1754
1786
|
aesthetic: aesthetic,
|
|
1755
|
-
dwarfFortress: dwarfFortress
|
|
1787
|
+
dwarfFortress: dwarfFortress,
|
|
1788
|
+
fish: fish
|
|
1756
1789
|
};
|
|
1757
1790
|
|
|
1758
1791
|
const DEFAULT_ICONS = {
|
|
@@ -83,25 +83,104 @@ const RE_ANSI = /[\u001B\u009B](?:[[()#;?]{0,10}(?:\d{1,4}(?:;\d{0,4})*)?[0-9A-O
|
|
|
83
83
|
const RE_CONTROL = /[\u0000-\u0008\n-\u001F\u007F-\u009F]{1,1000}/y;
|
|
84
84
|
const RE_EMOJI = emojiRegex();
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
86
|
+
const ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
|
|
87
|
+
const fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
|
|
88
|
+
const halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];
|
|
89
|
+
const narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];
|
|
90
|
+
const wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
|
|
91
|
+
const isInRange = (ranges, codePoint) => {
|
|
92
|
+
let low = 0;
|
|
93
|
+
let high = Math.floor(ranges.length / 2) - 1;
|
|
94
|
+
while (low <= high) {
|
|
95
|
+
const mid = Math.floor((low + high) / 2);
|
|
96
|
+
const i = mid * 2;
|
|
97
|
+
if (codePoint < ranges[i]) {
|
|
98
|
+
high = mid - 1;
|
|
99
|
+
} else if (codePoint > ranges[i + 1]) {
|
|
100
|
+
low = mid + 1;
|
|
101
|
+
} else {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return false;
|
|
106
|
+
};
|
|
107
|
+
const minimumAmbiguousCodePoint = ambiguousRanges[0];
|
|
108
|
+
const maximumAmbiguousCodePoint = ambiguousRanges.at(-1);
|
|
109
|
+
const minimumFullWidthCodePoint = fullwidthRanges[0];
|
|
110
|
+
const maximumFullWidthCodePoint = fullwidthRanges.at(-1);
|
|
111
|
+
const minimumHalfWidthCodePoint = halfwidthRanges[0];
|
|
112
|
+
const maximumHalfWidthCodePoint = halfwidthRanges.at(-1);
|
|
113
|
+
const minimumNarrowCodePoint = narrowRanges[0];
|
|
114
|
+
const maximumNarrowCodePoint = narrowRanges.at(-1);
|
|
115
|
+
const minimumWideCodePoint = wideRanges[0];
|
|
116
|
+
const maximumWideCodePoint = wideRanges.at(-1);
|
|
117
|
+
const commonCjkCodePoint = 19968;
|
|
118
|
+
const [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);
|
|
119
|
+
function findWideFastPathRange(ranges) {
|
|
120
|
+
let fastPathStart = ranges[0];
|
|
121
|
+
let fastPathEnd = ranges[1];
|
|
122
|
+
for (let index = 0; index < ranges.length; index += 2) {
|
|
123
|
+
const start = ranges[index];
|
|
124
|
+
const end = ranges[index + 1];
|
|
125
|
+
if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
|
|
126
|
+
return [start, end];
|
|
127
|
+
}
|
|
128
|
+
if (end - start > fastPathEnd - fastPathStart) {
|
|
129
|
+
fastPathStart = start;
|
|
130
|
+
fastPathEnd = end;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return [fastPathStart, fastPathEnd];
|
|
94
134
|
}
|
|
95
|
-
|
|
96
|
-
if (
|
|
97
|
-
|
|
98
|
-
|
|
135
|
+
const isAmbiguous = (codePoint) => {
|
|
136
|
+
if (codePoint < minimumAmbiguousCodePoint || codePoint > maximumAmbiguousCodePoint) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
return isInRange(ambiguousRanges, codePoint);
|
|
140
|
+
};
|
|
141
|
+
const isFullWidth = (codePoint) => {
|
|
142
|
+
if (codePoint < minimumFullWidthCodePoint || codePoint > maximumFullWidthCodePoint) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
return isInRange(fullwidthRanges, codePoint);
|
|
146
|
+
};
|
|
147
|
+
const isHalfWidth = (codePoint) => {
|
|
148
|
+
if (codePoint < minimumHalfWidthCodePoint || codePoint > maximumHalfWidthCodePoint) {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
return isInRange(halfwidthRanges, codePoint);
|
|
152
|
+
};
|
|
153
|
+
const isNarrow = (codePoint) => {
|
|
154
|
+
if (codePoint < minimumNarrowCodePoint || codePoint > maximumNarrowCodePoint) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
return isInRange(narrowRanges, codePoint);
|
|
158
|
+
};
|
|
159
|
+
const isWide = (codePoint) => {
|
|
160
|
+
if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
if (codePoint < minimumWideCodePoint || codePoint > maximumWideCodePoint) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
return isInRange(wideRanges, codePoint);
|
|
167
|
+
};
|
|
168
|
+
function getCategory(codePoint) {
|
|
169
|
+
if (isAmbiguous(codePoint)) {
|
|
170
|
+
return "ambiguous";
|
|
171
|
+
}
|
|
172
|
+
if (isFullWidth(codePoint)) {
|
|
173
|
+
return "fullwidth";
|
|
174
|
+
}
|
|
175
|
+
if (isHalfWidth(codePoint)) {
|
|
99
176
|
return "halfwidth";
|
|
100
177
|
}
|
|
101
|
-
if (
|
|
178
|
+
if (isNarrow(codePoint)) {
|
|
102
179
|
return "narrow";
|
|
103
180
|
}
|
|
104
|
-
if (isWide(
|
|
181
|
+
if (isWide(codePoint)) {
|
|
182
|
+
return "wide";
|
|
183
|
+
}
|
|
105
184
|
return "neutral";
|
|
106
185
|
}
|
|
107
186
|
function validate(codePoint) {
|
|
@@ -1096,6 +1175,30 @@ const createIfNotDefault = (maybeColumns, maybeRows) => {
|
|
|
1096
1175
|
}
|
|
1097
1176
|
return { columns, rows };
|
|
1098
1177
|
};
|
|
1178
|
+
const isForegroundProcess = () => {
|
|
1179
|
+
if (process$2.platform !== "linux") {
|
|
1180
|
+
return true;
|
|
1181
|
+
}
|
|
1182
|
+
try {
|
|
1183
|
+
const statContents = fs.readFileSync("/proc/self/stat", "utf8");
|
|
1184
|
+
const closingParenthesisIndex = statContents.lastIndexOf(") ");
|
|
1185
|
+
if (closingParenthesisIndex === -1) {
|
|
1186
|
+
return false;
|
|
1187
|
+
}
|
|
1188
|
+
const statFields = statContents.slice(closingParenthesisIndex + 2).trim().split(/\s+/);
|
|
1189
|
+
const processGroupId = Number.parseInt(statFields[2], 10);
|
|
1190
|
+
const foregroundProcessGroupId = Number.parseInt(statFields[5], 10);
|
|
1191
|
+
if (Number.isNaN(processGroupId) || Number.isNaN(foregroundProcessGroupId)) {
|
|
1192
|
+
return false;
|
|
1193
|
+
}
|
|
1194
|
+
if (foregroundProcessGroupId <= 0) {
|
|
1195
|
+
return false;
|
|
1196
|
+
}
|
|
1197
|
+
return processGroupId === foregroundProcessGroupId;
|
|
1198
|
+
} catch {
|
|
1199
|
+
return false;
|
|
1200
|
+
}
|
|
1201
|
+
};
|
|
1099
1202
|
function terminalSize() {
|
|
1100
1203
|
const { env, stdout, stderr } = process$2;
|
|
1101
1204
|
if (stdout?.columns && stdout?.rows) {
|
|
@@ -1139,6 +1242,9 @@ const tput = () => {
|
|
|
1139
1242
|
};
|
|
1140
1243
|
const resize = () => {
|
|
1141
1244
|
try {
|
|
1245
|
+
if (!isForegroundProcess()) {
|
|
1246
|
+
return;
|
|
1247
|
+
}
|
|
1142
1248
|
const size = exec("resize", ["-u"]).match(/\d+/g);
|
|
1143
1249
|
if (size.length === 2) {
|
|
1144
1250
|
return createIfNotDefault(size[0], size[1]);
|
|
@@ -1843,7 +1949,7 @@ const _process = globalThis.process || /* @__PURE__ */ Object.create(null);
|
|
|
1843
1949
|
const processShims = {
|
|
1844
1950
|
versions: {}
|
|
1845
1951
|
};
|
|
1846
|
-
const process$1 = new Proxy(_process, {
|
|
1952
|
+
const process$1 = /* @__PURE__ */ new Proxy(_process, {
|
|
1847
1953
|
get(target, property) {
|
|
1848
1954
|
if (property in target) {
|
|
1849
1955
|
return target[property];
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
class PailError extends Error {
|
|
2
|
+
/** HTTP status code (defaults to 500) */
|
|
3
|
+
status;
|
|
4
|
+
/** Explanation of what caused the failure */
|
|
5
|
+
why;
|
|
6
|
+
/** Suggested resolution steps */
|
|
7
|
+
fix;
|
|
8
|
+
/** Link to relevant documentation */
|
|
9
|
+
link;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
const resolvedOptions = typeof options === "string" ? { message: options } : options;
|
|
12
|
+
super(resolvedOptions.message, resolvedOptions.cause === void 0 ? void 0 : { cause: resolvedOptions.cause });
|
|
13
|
+
this.name = "PailError";
|
|
14
|
+
this.status = resolvedOptions.status ?? 500;
|
|
15
|
+
this.why = resolvedOptions.why;
|
|
16
|
+
this.fix = resolvedOptions.fix;
|
|
17
|
+
this.link = resolvedOptions.link;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Converts the error to a JSON-serializable object.
|
|
21
|
+
*
|
|
22
|
+
* Includes all self-documenting fields in the output for structured logging.
|
|
23
|
+
* @returns A plain object representation of the error
|
|
24
|
+
*/
|
|
25
|
+
toJSON() {
|
|
26
|
+
const json = {
|
|
27
|
+
message: this.message,
|
|
28
|
+
name: this.name,
|
|
29
|
+
status: this.status
|
|
30
|
+
};
|
|
31
|
+
if (this.why) {
|
|
32
|
+
json.why = this.why;
|
|
33
|
+
}
|
|
34
|
+
if (this.fix) {
|
|
35
|
+
json.fix = this.fix;
|
|
36
|
+
}
|
|
37
|
+
if (this.link) {
|
|
38
|
+
json.link = this.link;
|
|
39
|
+
}
|
|
40
|
+
if (this.stack) {
|
|
41
|
+
json.stack = this.stack;
|
|
42
|
+
}
|
|
43
|
+
if (this.cause !== void 0) {
|
|
44
|
+
json.cause = this.cause instanceof Error ? { message: this.cause.message, name: this.cause.name, stack: this.cause.stack } : this.cause;
|
|
45
|
+
}
|
|
46
|
+
return json;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns a formatted string representation including self-documenting fields.
|
|
50
|
+
* @returns Formatted error string with why/fix/link context
|
|
51
|
+
*/
|
|
52
|
+
toString() {
|
|
53
|
+
let output = `${this.name} [${this.status}]: ${this.message}`;
|
|
54
|
+
if (this.why) {
|
|
55
|
+
output += `
|
|
56
|
+
Why: ${this.why}`;
|
|
57
|
+
}
|
|
58
|
+
if (this.fix) {
|
|
59
|
+
output += `
|
|
60
|
+
Fix: ${this.fix}`;
|
|
61
|
+
}
|
|
62
|
+
if (this.link) {
|
|
63
|
+
output += `
|
|
64
|
+
Link: ${this.link}`;
|
|
65
|
+
}
|
|
66
|
+
if (this.cause !== void 0) {
|
|
67
|
+
const causeMessage = this.cause instanceof Error ? this.cause.message : String(this.cause);
|
|
68
|
+
output += `
|
|
69
|
+
Cause: ${causeMessage}`;
|
|
70
|
+
}
|
|
71
|
+
return output;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const createPailError = (options) => new PailError(options);
|
|
75
|
+
|
|
76
|
+
export { PailError, createPailError };
|