@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.
Files changed (58) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE.md +6 -6
  3. package/README.md +323 -0
  4. package/dist/error.d.ts +104 -0
  5. package/dist/error.js +76 -0
  6. package/dist/index.browser.d.ts +2 -0
  7. package/dist/index.browser.js +2 -1
  8. package/dist/index.server.d.ts +2 -0
  9. package/dist/index.server.js +6 -4
  10. package/dist/interactive/index.js +1 -1
  11. package/dist/middleware/elysia.d.ts +71 -0
  12. package/dist/middleware/elysia.js +70 -0
  13. package/dist/middleware/express.d.ts +86 -0
  14. package/dist/middleware/express.js +29 -0
  15. package/dist/middleware/fastify.d.ts +81 -0
  16. package/dist/middleware/fastify.js +46 -0
  17. package/dist/middleware/hono.d.ts +85 -0
  18. package/dist/middleware/hono.js +33 -0
  19. package/dist/middleware/next/handler.d.ts +36 -0
  20. package/dist/middleware/next/handler.js +53 -0
  21. package/dist/middleware/next/middleware.d.ts +59 -0
  22. package/dist/middleware/next/storage.d.ts +14 -0
  23. package/dist/middleware/shared/create-middleware-logger.d.ts +82 -0
  24. package/dist/middleware/shared/headers.d.ts +14 -0
  25. package/dist/middleware/shared/routes.d.ts +30 -0
  26. package/dist/middleware/shared/storage.d.ts +29 -0
  27. package/dist/middleware/sveltekit.d.ts +123 -0
  28. package/dist/middleware/sveltekit.js +43 -0
  29. package/dist/packem_shared/{AbstractJsonReporter-DWRpTtGw.js → AbstractJsonReporter-CGKHS8_M.js} +103 -21
  30. package/dist/packem_shared/{AbstractJsonReporter-BaZ33PlE.js → AbstractJsonReporter-DDjDkciI.js} +103 -21
  31. package/dist/packem_shared/{InteractiveManager-CbE7d1kY.js → InteractiveManager-Cd6A14ZK.js} +1 -1
  32. package/dist/packem_shared/{JsonReporter-BV5lMnJX.js → JsonReporter-B3XX8GHN.js} +1 -1
  33. package/dist/packem_shared/{JsonReporter-BRw4skd5.js → JsonReporter-p_BXg6Sj.js} +1 -1
  34. package/dist/packem_shared/{PrettyReporter-DLQtmATi.js → PrettyReporter-CvBn-hxP.js} +5 -4
  35. package/dist/packem_shared/{Spinner-B9JUdsbY.js → Spinner-DIdVcfWq.js} +34 -1
  36. package/dist/packem_shared/{abstract-pretty-reporter-DckLMlGF.js → abstract-pretty-reporter-jU8WL_6c.js} +121 -15
  37. package/dist/packem_shared/createPailError-B11aRfrT.js +76 -0
  38. package/dist/packem_shared/headers-Cp4uLtr4.js +123 -0
  39. package/dist/packem_shared/{index-EZ_WSQZS.js → index-frijFf5m.js} +120 -14
  40. package/dist/packem_shared/pailMiddleware-Ci88geIF.js +24 -0
  41. package/dist/packem_shared/storage-D0vqz8OX.js +36 -0
  42. package/dist/packem_shared/useLogger-D0rU3lcX.js +33 -0
  43. package/dist/processor/environment-processor.d.ts +124 -0
  44. package/dist/processor/environment-processor.js +78 -0
  45. package/dist/processor/message-formatter-processor.d.ts +1 -2
  46. package/dist/processor/sampling-processor.d.ts +111 -0
  47. package/dist/processor/sampling-processor.js +59 -0
  48. package/dist/reporter/file/json-file-reporter.js +1 -1
  49. package/dist/reporter/http/abstract-http-reporter.js +1 -1
  50. package/dist/reporter/http/http-reporter.edge-light.js +103 -21
  51. package/dist/reporter/json/index.browser.js +2 -2
  52. package/dist/reporter/json/index.js +2 -2
  53. package/dist/reporter/pretty/index.js +1 -1
  54. package/dist/reporter/simple/simple-reporter.server.js +4 -3
  55. package/dist/spinner.js +34 -1
  56. package/dist/wide-event.d.ts +300 -0
  57. package/dist/wide-event.js +281 -0
  58. package/package.json +68 -4
@@ -12,7 +12,7 @@ const ErrorProto = Object.create(
12
12
  {},
13
13
  {
14
14
  cause: {
15
- enumerable: true,
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: true,
25
+ enumerable: false,
26
26
  value: void 0,
27
27
  writable: true
28
28
  },
29
29
  message: {
30
- enumerable: true,
30
+ enumerable: false,
31
31
  value: void 0,
32
32
  writable: true
33
33
  },
34
34
  name: {
35
- enumerable: true,
35
+ enumerable: false,
36
36
  value: void 0,
37
37
  writable: true
38
38
  },
39
39
  stack: {
40
- enumerable: true,
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.includes(value)) {
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 += 1;
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.push(error);
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
- protoError.name = Object.prototype.toString.call(error.constructor) === "[object Function]" ? error.constructor.name : error.name;
103
- protoError.message = error.message;
104
- protoError.stack = error.stack;
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.includes(aggregateError)) {
112
- protoError.errors = [];
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.errors = aggregateErrors;
163
+ Object.defineProperty(protoError, "errors", {
164
+ configurable: true,
165
+ enumerable: true,
166
+ value: aggregateErrors,
167
+ writable: true
168
+ });
118
169
  }
119
- if (error.cause instanceof Error && !seen.includes(error.cause)) {
120
- protoError.cause = _serialize(error.cause, options, seen, depth);
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 (protoError[key] === void 0) {
124
- const value = error[key];
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
 
@@ -1,4 +1,4 @@
1
- import { t as terminalSize, w as wordWrap, W as WrapMode } from './index-EZ_WSQZS.js';
1
+ import { t as terminalSize, w as wordWrap, W as WrapMode } from './index-frijFf5m.js';
2
2
 
3
3
  class InteractiveManager {
4
4
  #stream;
@@ -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-DWRpTtGw.js';
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-BaZ33PlE.js';
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, white, bgGrey } from '@visulima/colorize';
25
- import { t as terminalSize, g as getStringWidth, w as wordWrap, W as WrapMode } from './index-EZ_WSQZS.js';
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 pailFileFilter = (line) => !/[\\/]pail[\\/]dist/.test(line);
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
- function isAmbiguous(x) {
87
- return x === 161 || x === 164 || x === 167 || x === 168 || x === 170 || x === 173 || x === 174 || x >= 176 && x <= 180 || x >= 182 && x <= 186 || x >= 188 && x <= 191 || x === 198 || x === 208 || x === 215 || x === 216 || x >= 222 && x <= 225 || x === 230 || x >= 232 && x <= 234 || x === 236 || x === 237 || x === 240 || x === 242 || x === 243 || x >= 247 && x <= 250 || x === 252 || x === 254 || x === 257 || x === 273 || x === 275 || x === 283 || x === 294 || x === 295 || x === 299 || x >= 305 && x <= 307 || x === 312 || x >= 319 && x <= 322 || x === 324 || x >= 328 && x <= 331 || x === 333 || x === 338 || x === 339 || x === 358 || x === 359 || x === 363 || x === 462 || x === 464 || x === 466 || x === 468 || x === 470 || x === 472 || x === 474 || x === 476 || x === 593 || x === 609 || x === 708 || x === 711 || x >= 713 && x <= 715 || x === 717 || x === 720 || x >= 728 && x <= 731 || x === 733 || x === 735 || x >= 768 && x <= 879 || x >= 913 && x <= 929 || x >= 931 && x <= 937 || x >= 945 && x <= 961 || x >= 963 && x <= 969 || x === 1025 || x >= 1040 && x <= 1103 || x === 1105 || x === 8208 || x >= 8211 && x <= 8214 || x === 8216 || x === 8217 || x === 8220 || x === 8221 || x >= 8224 && x <= 8226 || x >= 8228 && x <= 8231 || x === 8240 || x === 8242 || x === 8243 || x === 8245 || x === 8251 || x === 8254 || x === 8308 || x === 8319 || x >= 8321 && x <= 8324 || x === 8364 || x === 8451 || x === 8453 || x === 8457 || x === 8467 || x === 8470 || x === 8481 || x === 8482 || x === 8486 || x === 8491 || x === 8531 || x === 8532 || x >= 8539 && x <= 8542 || x >= 8544 && x <= 8555 || x >= 8560 && x <= 8569 || x === 8585 || x >= 8592 && x <= 8601 || x === 8632 || x === 8633 || x === 8658 || x === 8660 || x === 8679 || x === 8704 || x === 8706 || x === 8707 || x === 8711 || x === 8712 || x === 8715 || x === 8719 || x === 8721 || x === 8725 || x === 8730 || x >= 8733 && x <= 8736 || x === 8739 || x === 8741 || x >= 8743 && x <= 8748 || x === 8750 || x >= 8756 && x <= 8759 || x === 8764 || x === 8765 || x === 8776 || x === 8780 || x === 8786 || x === 8800 || x === 8801 || x >= 8804 && x <= 8807 || x === 8810 || x === 8811 || x === 8814 || x === 8815 || x === 8834 || x === 8835 || x === 8838 || x === 8839 || x === 8853 || x === 8857 || x === 8869 || x === 8895 || x === 8978 || x >= 9312 && x <= 9449 || x >= 9451 && x <= 9547 || x >= 9552 && x <= 9587 || x >= 9600 && x <= 9615 || x >= 9618 && x <= 9621 || x === 9632 || x === 9633 || x >= 9635 && x <= 9641 || x === 9650 || x === 9651 || x === 9654 || x === 9655 || x === 9660 || x === 9661 || x === 9664 || x === 9665 || x >= 9670 && x <= 9672 || x === 9675 || x >= 9678 && x <= 9681 || x >= 9698 && x <= 9701 || x === 9711 || x === 9733 || x === 9734 || x === 9737 || x === 9742 || x === 9743 || x === 9756 || x === 9758 || x === 9792 || x === 9794 || x === 9824 || x === 9825 || x >= 9827 && x <= 9829 || x >= 9831 && x <= 9834 || x === 9836 || x === 9837 || x === 9839 || x === 9886 || x === 9887 || x === 9919 || x >= 9926 && x <= 9933 || x >= 9935 && x <= 9939 || x >= 9941 && x <= 9953 || x === 9955 || x === 9960 || x === 9961 || x >= 9963 && x <= 9969 || x === 9972 || x >= 9974 && x <= 9977 || x === 9979 || x === 9980 || x === 9982 || x === 9983 || x === 10045 || x >= 10102 && x <= 10111 || x >= 11094 && x <= 11097 || x >= 12872 && x <= 12879 || x >= 57344 && x <= 63743 || x >= 65024 && x <= 65039 || x === 65533 || x >= 127232 && x <= 127242 || x >= 127248 && x <= 127277 || x >= 127280 && x <= 127337 || x >= 127344 && x <= 127373 || x === 127375 || x === 127376 || x >= 127387 && x <= 127404 || x >= 917760 && x <= 917999 || x >= 983040 && x <= 1048573 || x >= 1048576 && x <= 1114109;
88
- }
89
- function isFullWidth(x) {
90
- return x === 12288 || x >= 65281 && x <= 65376 || x >= 65504 && x <= 65510;
91
- }
92
- function isWide(x) {
93
- return x >= 4352 && x <= 4447 || x === 8986 || x === 8987 || x === 9001 || x === 9002 || x >= 9193 && x <= 9196 || x === 9200 || x === 9203 || x === 9725 || x === 9726 || x === 9748 || x === 9749 || x >= 9776 && x <= 9783 || x >= 9800 && x <= 9811 || x === 9855 || x >= 9866 && x <= 9871 || x === 9875 || x === 9889 || x === 9898 || x === 9899 || x === 9917 || x === 9918 || x === 9924 || x === 9925 || x === 9934 || x === 9940 || x === 9962 || x === 9970 || x === 9971 || x === 9973 || x === 9978 || x === 9981 || x === 9989 || x === 9994 || x === 9995 || x === 10024 || x === 10060 || x === 10062 || x >= 10067 && x <= 10069 || x === 10071 || x >= 10133 && x <= 10135 || x === 10160 || x === 10175 || x === 11035 || x === 11036 || x === 11088 || x === 11093 || x >= 11904 && x <= 11929 || x >= 11931 && x <= 12019 || x >= 12032 && x <= 12245 || x >= 12272 && x <= 12287 || x >= 12289 && x <= 12350 || x >= 12353 && x <= 12438 || x >= 12441 && x <= 12543 || x >= 12549 && x <= 12591 || x >= 12593 && x <= 12686 || x >= 12688 && x <= 12773 || x >= 12783 && x <= 12830 || x >= 12832 && x <= 12871 || x >= 12880 && x <= 42124 || x >= 42128 && x <= 42182 || x >= 43360 && x <= 43388 || x >= 44032 && x <= 55203 || x >= 63744 && x <= 64255 || x >= 65040 && x <= 65049 || x >= 65072 && x <= 65106 || x >= 65108 && x <= 65126 || x >= 65128 && x <= 65131 || x >= 94176 && x <= 94180 || x >= 94192 && x <= 94198 || x >= 94208 && x <= 101589 || x >= 101631 && x <= 101662 || x >= 101760 && x <= 101874 || x >= 110576 && x <= 110579 || x >= 110581 && x <= 110587 || x === 110589 || x === 110590 || x >= 110592 && x <= 110882 || x === 110898 || x >= 110928 && x <= 110930 || x === 110933 || x >= 110948 && x <= 110951 || x >= 110960 && x <= 111355 || x >= 119552 && x <= 119638 || x >= 119648 && x <= 119670 || x === 126980 || x === 127183 || x === 127374 || x >= 127377 && x <= 127386 || x >= 127488 && x <= 127490 || x >= 127504 && x <= 127547 || x >= 127552 && x <= 127560 || x === 127568 || x === 127569 || x >= 127584 && x <= 127589 || x >= 127744 && x <= 127776 || x >= 127789 && x <= 127797 || x >= 127799 && x <= 127868 || x >= 127870 && x <= 127891 || x >= 127904 && x <= 127946 || x >= 127951 && x <= 127955 || x >= 127968 && x <= 127984 || x === 127988 || x >= 127992 && x <= 128062 || x === 128064 || x >= 128066 && x <= 128252 || x >= 128255 && x <= 128317 || x >= 128331 && x <= 128334 || x >= 128336 && x <= 128359 || x === 128378 || x === 128405 || x === 128406 || x === 128420 || x >= 128507 && x <= 128591 || x >= 128640 && x <= 128709 || x === 128716 || x >= 128720 && x <= 128722 || x >= 128725 && x <= 128728 || x >= 128732 && x <= 128735 || x === 128747 || x === 128748 || x >= 128756 && x <= 128764 || x >= 128992 && x <= 129003 || x === 129008 || x >= 129292 && x <= 129338 || x >= 129340 && x <= 129349 || x >= 129351 && x <= 129535 || x >= 129648 && x <= 129660 || x >= 129664 && x <= 129674 || x >= 129678 && x <= 129734 || x === 129736 || x >= 129741 && x <= 129756 || x >= 129759 && x <= 129770 || x >= 129775 && x <= 129784 || x >= 131072 && x <= 196605 || x >= 196608 && x <= 262141;
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
- function getCategory(x) {
96
- if (isAmbiguous(x)) return "ambiguous";
97
- if (isFullWidth(x)) return "fullwidth";
98
- if (x === 8361 || x >= 65377 && x <= 65470 || x >= 65474 && x <= 65479 || x >= 65482 && x <= 65487 || x >= 65490 && x <= 65495 || x >= 65498 && x <= 65500 || x >= 65512 && x <= 65518) {
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 (x >= 32 && x <= 126 || x === 162 || x === 163 || x === 165 || x === 166 || x === 172 || x === 175 || x >= 10214 && x <= 10221 || x === 10629 || x === 10630) {
178
+ if (isNarrow(codePoint)) {
102
179
  return "narrow";
103
180
  }
104
- if (isWide(x)) return "wide";
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 };