@visulima/error-handler 1.0.2 → 1.0.4
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 +21 -0
- package/LICENSE.md +13 -5
- package/README.md +24 -18
- package/dist/error-handler/html-error-handler.d.ts +4 -4
- package/dist/error-handler/html-error-handler.js +7 -35
- package/dist/error-handler/json-error-handler.d.ts +3 -3
- package/dist/error-handler/json-error-handler.js +1 -31
- package/dist/error-handler/jsonapi-error-handler.d.ts +1 -1
- package/dist/error-handler/jsonapi-error-handler.js +1 -46
- package/dist/error-handler/jsonp-error-handler.d.ts +3 -3
- package/dist/error-handler/jsonp-error-handler.js +1 -36
- package/dist/error-handler/problem-error-handler.d.ts +1 -1
- package/dist/error-handler/problem-error-handler.js +1 -53
- package/dist/error-handler/text-error-handler.d.ts +3 -3
- package/dist/error-handler/text-error-handler.js +2 -27
- package/dist/error-handler/xml-error-handler.d.ts +8 -8
- package/dist/error-handler/xml-error-handler.js +1 -45
- package/dist/handler/cli-handler.d.ts +2 -2
- package/dist/handler/cli-handler.js +2 -172
- package/dist/handler/http/fetch-handler.d.ts +2 -2
- package/dist/handler/http/fetch-handler.js +1 -267
- package/dist/handler/http/node-handler.d.ts +4 -4
- package/dist/handler/http/node-handler.js +1 -17
- package/dist/index.d.ts +6 -6
- package/dist/index.js +1 -8
- package/dist/packem_shared/add-status-code-to-response-BE6paXjR.js +1 -0
- package/dist/packem_shared/cliHandler-B3-YFZRV.js +1 -0
- package/dist/packem_shared/createNegotiatedErrorHandler-BLks0_Ak.js +1 -0
- package/dist/packem_shared/send-json-Cedv8-Bt.js +1 -0
- package/dist/packem_shared/set-error-headers-DT9rVGtW.js +1 -0
- package/dist/packem_shared/{types.d-DLy8CCca.d.ts → types.d-BQZBUb3b.d.ts} +1 -4
- package/package.json +3 -3
- package/dist/packem_shared/add-status-code-to-response-DdfxTQsK.js +0 -17
- package/dist/packem_shared/createNegotiatedErrorHandler-Cd7yj67Z.js +0 -52
- package/dist/packem_shared/send-json-o-t1rNfw.js +0 -8
- package/dist/packem_shared/set-error-headers-B6ZeX5k4.js +0 -10
|
@@ -1,45 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { toXML } from 'jstoxml';
|
|
3
|
-
import { a as addStatusCodeToResponse } from '../packem_shared/add-status-code-to-response-DdfxTQsK.js';
|
|
4
|
-
import { s as setErrorHeaders } from '../packem_shared/set-error-headers-B6ZeX5k4.js';
|
|
5
|
-
|
|
6
|
-
var __defProp = Object.defineProperty;
|
|
7
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
-
const xmlErrorHandler = /* @__PURE__ */ __name((options = {}) => {
|
|
9
|
-
return async (error, request, response) => {
|
|
10
|
-
addStatusCodeToResponse(response, error);
|
|
11
|
-
setErrorHeaders(response, error);
|
|
12
|
-
const statusCode = response.statusCode;
|
|
13
|
-
const reasonPhrase = getReasonPhrase(statusCode) || "An error occurred";
|
|
14
|
-
let payload;
|
|
15
|
-
if (options.formatter) {
|
|
16
|
-
payload = await options.formatter({ error, request, response, reasonPhrase, statusCode });
|
|
17
|
-
} else {
|
|
18
|
-
const expose = error.expose;
|
|
19
|
-
payload = {
|
|
20
|
-
error: {
|
|
21
|
-
statusCode,
|
|
22
|
-
// eslint-disable-next-line perfectionist/sort-objects
|
|
23
|
-
name: reasonPhrase,
|
|
24
|
-
// eslint-disable-next-line perfectionist/sort-objects
|
|
25
|
-
message: error.message || reasonPhrase,
|
|
26
|
-
...expose ? { stack: error.stack } : {}
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
const xml = toXML(payload, {
|
|
31
|
-
header: options.toXml?.header ?? options.xmlHeader ?? true,
|
|
32
|
-
indent: options.toXml?.indent ?? " ",
|
|
33
|
-
...options.toXml?.attributeReplacements ? { attributeReplacements: options.toXml.attributeReplacements } : {},
|
|
34
|
-
...options.toXml?.attributeFilter ? { attributeFilter: options.toXml.attributeFilter } : {},
|
|
35
|
-
...options.toXml?.attributeExplicitTrue !== void 0 ? { attributeExplicitTrue: options.toXml.attributeExplicitTrue } : {},
|
|
36
|
-
...options.toXml?.contentMap ? { contentMap: options.toXml.contentMap } : {},
|
|
37
|
-
...options.toXml?.contentReplacements ? { contentReplacements: options.toXml.contentReplacements } : {},
|
|
38
|
-
...options.toXml?.selfCloseTags !== void 0 ? { selfCloseTags: options.toXml.selfCloseTags } : {}
|
|
39
|
-
});
|
|
40
|
-
response.setHeader("content-type", "application/xml; charset=utf-8");
|
|
41
|
-
response.end(xml);
|
|
42
|
-
};
|
|
43
|
-
}, "xmlErrorHandler");
|
|
44
|
-
|
|
45
|
-
export { xmlErrorHandler };
|
|
1
|
+
var c=Object.defineProperty;var l=(t,e)=>c(t,"name",{value:e,configurable:!0});import{getReasonPhrase as p}from"http-status-codes";import{toXML as u}from"jstoxml";import{a as d}from"../packem_shared/add-status-code-to-response-BE6paXjR.js";import{a as X}from"../packem_shared/set-error-headers-DT9rVGtW.js";var f=Object.defineProperty,b=l((t,e)=>f(t,"name",{value:e,configurable:!0}),"l");const h=b((t={})=>async(e,n,o)=>{d(o,e),X(o,e);const{statusCode:r}=o,a=p(r)||"An error occurred";let s;if(t.formatter)s=await t.formatter({error:e,reasonPhrase:a,request:n,response:o,statusCode:r});else{const{expose:i}=e;s={error:{statusCode:r,name:a,message:e.message||a,...i?{stack:e.stack}:{}}}}const m=u(s,{header:t.toXml?.header??t.xmlHeader??!0,indent:t.toXml?.indent??" ",...t.toXml?.attributeReplacements?{attributeReplacements:t.toXml.attributeReplacements}:{},...t.toXml?.attributeFilter?{attributeFilter:t.toXml.attributeFilter}:{},...t.toXml?.attributeExplicitTrue===void 0?{}:{attributeExplicitTrue:t.toXml.attributeExplicitTrue},...t.toXml?.contentMap?{contentMap:t.toXml.contentMap}:{},...t.toXml?.contentReplacements?{contentReplacements:t.toXml.contentReplacements}:{},...t.toXml?.selfCloseTags===void 0?{}:{selfCloseTags:t.toXml.selfCloseTags}});o.setHeader("content-type","application/xml; charset=utf-8"),o.end(m)},"xmlErrorHandler");export{h as xmlErrorHandler};
|
|
@@ -23,8 +23,8 @@ type BaseCliOptions = {
|
|
|
23
23
|
type CliHandlerOptions = BaseCliOptions & {
|
|
24
24
|
logger?: CliLogger;
|
|
25
25
|
};
|
|
26
|
+
declare const terminalOutput: (error: Error, options?: CliHandlerOptions) => Promise<void>;
|
|
26
27
|
|
|
27
28
|
declare const ansiHandler: (error: Error, options?: BaseCliOptions) => Promise<string>;
|
|
28
|
-
declare const cliHandler: (error: Error, options?: CliHandlerOptions) => Promise<void>;
|
|
29
29
|
|
|
30
|
-
export { type BaseCliOptions, type CliHandlerOptions, ansiHandler, cliHandler };
|
|
30
|
+
export { type BaseCliOptions, type CliHandlerOptions, ansiHandler, terminalOutput as cliHandler };
|
|
@@ -1,173 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { boxen } from '@visulima/boxen';
|
|
3
|
-
import { renderError } from '@visulima/error/error';
|
|
4
|
-
import { readFile } from 'node:fs/promises';
|
|
5
|
-
import { fileURLToPath } from 'node:url';
|
|
6
|
-
import { ruleBasedFinder, errorHintFinder } from '@visulima/error/solution';
|
|
1
|
+
var o=Object.defineProperty;var a=(r,e)=>o(r,"name",{value:e,configurable:!0});import{buildOutput as i}from"../packem_shared/cliHandler-B3-YFZRV.js";import{terminalOutput as f}from"../packem_shared/cliHandler-B3-YFZRV.js";var u=Object.defineProperty,l=a((r,e)=>u(r,"name",{value:e,configurable:!0}),"o");const d=l(async(r,e={})=>{const{errorAnsi:t,solutionBox:n}=await i(r,e);return n===void 0?t:`${t}
|
|
7
2
|
|
|
8
|
-
|
|
9
|
-
var __name$3 = (target, value) => __defProp$3(target, "name", { value, configurable: true });
|
|
10
|
-
const ALTERNATIVE_JS_EXTS = ["cjs", "mjs"];
|
|
11
|
-
const ALTERNATIVE_MD_EXTS = ["mdoc"];
|
|
12
|
-
const findLanguageBasedOnExtension = /* @__PURE__ */ __name$3((file) => {
|
|
13
|
-
const cleaned = file.split("?")[0] ?? file;
|
|
14
|
-
const extension = cleaned.split(".").pop()?.toLowerCase();
|
|
15
|
-
if (!extension) {
|
|
16
|
-
return "javascript";
|
|
17
|
-
}
|
|
18
|
-
if (ALTERNATIVE_JS_EXTS.includes(extension)) {
|
|
19
|
-
return "javascript";
|
|
20
|
-
}
|
|
21
|
-
if (ALTERNATIVE_MD_EXTS.includes(extension)) {
|
|
22
|
-
return "markdown";
|
|
23
|
-
}
|
|
24
|
-
switch (extension) {
|
|
25
|
-
case "js": {
|
|
26
|
-
return "javascript";
|
|
27
|
-
}
|
|
28
|
-
case "json": {
|
|
29
|
-
return "json";
|
|
30
|
-
}
|
|
31
|
-
case "json5": {
|
|
32
|
-
return "json5";
|
|
33
|
-
}
|
|
34
|
-
case "jsonc": {
|
|
35
|
-
return "jsonc";
|
|
36
|
-
}
|
|
37
|
-
case "jsx": {
|
|
38
|
-
return "jsx";
|
|
39
|
-
}
|
|
40
|
-
case "sql": {
|
|
41
|
-
return "sql";
|
|
42
|
-
}
|
|
43
|
-
case "ts": {
|
|
44
|
-
return "typescript";
|
|
45
|
-
}
|
|
46
|
-
case "tsx": {
|
|
47
|
-
return "tsx";
|
|
48
|
-
}
|
|
49
|
-
case "xml": {
|
|
50
|
-
return "xml";
|
|
51
|
-
}
|
|
52
|
-
case "md": {
|
|
53
|
-
return "markdown";
|
|
54
|
-
}
|
|
55
|
-
case "mdx": {
|
|
56
|
-
return "mdx";
|
|
57
|
-
}
|
|
58
|
-
default: {
|
|
59
|
-
return "javascript";
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}, "findLanguageBasedOnExtension");
|
|
63
|
-
|
|
64
|
-
var __defProp$2 = Object.defineProperty;
|
|
65
|
-
var __name$2 = (target, value) => __defProp$2(target, "name", { value, configurable: true });
|
|
66
|
-
const cache = /* @__PURE__ */ new Map();
|
|
67
|
-
const getFileSource = /* @__PURE__ */ __name$2(async (file) => {
|
|
68
|
-
if (!/^(?:http|https|file|data):/.test(file)) {
|
|
69
|
-
return void 0;
|
|
70
|
-
}
|
|
71
|
-
if (cache.has(file)) {
|
|
72
|
-
return cache.get(file);
|
|
73
|
-
}
|
|
74
|
-
if (file.startsWith("file:")) {
|
|
75
|
-
try {
|
|
76
|
-
const path = fileURLToPath(file);
|
|
77
|
-
const source = await readFile(path, "utf8");
|
|
78
|
-
cache.set(file, source);
|
|
79
|
-
return source;
|
|
80
|
-
} catch (error) {
|
|
81
|
-
console.log(error);
|
|
82
|
-
return void 0;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
try {
|
|
86
|
-
const response = await fetch(file);
|
|
87
|
-
if (!response.ok) {
|
|
88
|
-
return void 0;
|
|
89
|
-
}
|
|
90
|
-
const source = await response.text();
|
|
91
|
-
cache.set(file, source);
|
|
92
|
-
return source;
|
|
93
|
-
} catch (error) {
|
|
94
|
-
console.log(error);
|
|
95
|
-
return void 0;
|
|
96
|
-
}
|
|
97
|
-
}, "getFileSource");
|
|
98
|
-
|
|
99
|
-
var __defProp$1 = Object.defineProperty;
|
|
100
|
-
var __name$1 = (target, value) => __defProp$1(target, "name", { value, configurable: true });
|
|
101
|
-
const sanitizeTitle = /* @__PURE__ */ __name$1((title) => title.replace(/^\s*#+\s*/, "").trim(), "sanitizeTitle");
|
|
102
|
-
const runSolutionFinders = /* @__PURE__ */ __name$1(async (error, solutionFinders, debug = false) => {
|
|
103
|
-
const candidates = [...solutionFinders, ruleBasedFinder, errorHintFinder];
|
|
104
|
-
const firstTrace = parseStacktrace(error, { frameLimit: 1 })[0] ?? {};
|
|
105
|
-
for await (const handler of candidates.sort((a, b) => a.priority - b.priority)) {
|
|
106
|
-
const { handle, name } = handler;
|
|
107
|
-
if (debug) {
|
|
108
|
-
console.debug(`Running solution finder: ${name}`);
|
|
109
|
-
}
|
|
110
|
-
if (typeof handle !== "function") {
|
|
111
|
-
continue;
|
|
112
|
-
}
|
|
113
|
-
const hint = await handle(error, {
|
|
114
|
-
file: firstTrace.file ?? "",
|
|
115
|
-
language: findLanguageBasedOnExtension(firstTrace.file ?? ""),
|
|
116
|
-
line: firstTrace.line ?? 0,
|
|
117
|
-
snippet: firstTrace.file ? await getFileSource(firstTrace.file) : ""
|
|
118
|
-
});
|
|
119
|
-
if (hint) {
|
|
120
|
-
return hint;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return void 0;
|
|
124
|
-
}, "runSolutionFinders");
|
|
125
|
-
const buildOutput = /* @__PURE__ */ __name$1(async (error, options) => {
|
|
126
|
-
const { solutionFinders = [], solutionTitle, color, debug = false, ...renderOptions } = options;
|
|
127
|
-
const errorAnsi = renderError(error, {
|
|
128
|
-
...renderOptions,
|
|
129
|
-
...color?.codeFrame
|
|
130
|
-
});
|
|
131
|
-
const hint = await runSolutionFinders(error, solutionFinders, debug);
|
|
132
|
-
if (!hint) {
|
|
133
|
-
return { errorAnsi, solutionBox: void 0 };
|
|
134
|
-
}
|
|
135
|
-
const header = sanitizeTitle(hint.header ?? solutionTitle ?? "A possible solution to this error");
|
|
136
|
-
const solutionBox = boxen(hint.body, {
|
|
137
|
-
borderStyle: "round",
|
|
138
|
-
padding: { top: 1, right: 2, bottom: 1, left: 2 },
|
|
139
|
-
margin: { top: 0, right: 0, bottom: 0, left: 0 },
|
|
140
|
-
headerText: `💡 ${header}`,
|
|
141
|
-
headerAlignment: "left",
|
|
142
|
-
textAlignment: "left",
|
|
143
|
-
...color?.boxen
|
|
144
|
-
});
|
|
145
|
-
return {
|
|
146
|
-
errorAnsi,
|
|
147
|
-
solutionBox
|
|
148
|
-
};
|
|
149
|
-
}, "buildOutput");
|
|
150
|
-
const terminalOutput = /* @__PURE__ */ __name$1(async (error, options = {}) => {
|
|
151
|
-
const { logger = console, ...rest } = options;
|
|
152
|
-
const { errorAnsi, solutionBox } = await buildOutput(error, rest);
|
|
153
|
-
logger.error(errorAnsi);
|
|
154
|
-
if (solutionBox) {
|
|
155
|
-
logger.log("");
|
|
156
|
-
logger.log(solutionBox);
|
|
157
|
-
}
|
|
158
|
-
}, "terminalOutput");
|
|
159
|
-
|
|
160
|
-
var __defProp = Object.defineProperty;
|
|
161
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
162
|
-
const ansiHandler = /* @__PURE__ */ __name(async (error, options = {}) => {
|
|
163
|
-
const { errorAnsi, solutionBox } = await buildOutput(error, options);
|
|
164
|
-
if (solutionBox === void 0) {
|
|
165
|
-
return errorAnsi;
|
|
166
|
-
}
|
|
167
|
-
return `${errorAnsi}
|
|
168
|
-
|
|
169
|
-
${solutionBox}`;
|
|
170
|
-
}, "ansiHandler");
|
|
171
|
-
const cliHandler = terminalOutput;
|
|
172
|
-
|
|
173
|
-
export { ansiHandler, cliHandler };
|
|
3
|
+
${n}`},"ansiHandler");export{d as ansiHandler,f as cliHandler};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { HtmlErrorHandlerOptions } from '../../error-handler/html-error-handler.js';
|
|
2
|
-
import { F as FetchErrorHandlers } from '../../packem_shared/types.d-
|
|
2
|
+
import { F as FetchErrorHandlers } from '../../packem_shared/types.d-BQZBUb3b.js';
|
|
3
3
|
import 'node:http';
|
|
4
4
|
|
|
5
5
|
declare const fetchHandler: (error: Error, options?: HtmlErrorHandlerOptions & {
|
|
6
|
-
showTrace?: boolean;
|
|
7
6
|
extraHandlers?: FetchErrorHandlers;
|
|
8
7
|
onError?: (error: Error, request: Request) => void | Promise<void>;
|
|
8
|
+
showTrace?: boolean;
|
|
9
9
|
}) => Promise<(request: Request) => Promise<Response>>;
|
|
10
10
|
|
|
11
11
|
export { fetchHandler as default };
|
|
@@ -1,267 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import jsonapiErrorHandler from '../../error-handler/jsonapi-error-handler.js';
|
|
3
|
-
import problemErrorHandler from '../../error-handler/problem-error-handler.js';
|
|
4
|
-
import { textErrorHandler } from '../../error-handler/text-error-handler.js';
|
|
5
|
-
import { jsonErrorHandler } from '../../error-handler/json-error-handler.js';
|
|
6
|
-
import { jsonpErrorHandler } from '../../error-handler/jsonp-error-handler.js';
|
|
7
|
-
import { xmlErrorHandler } from '../../error-handler/xml-error-handler.js';
|
|
8
|
-
|
|
9
|
-
var __defProp$2 = Object.defineProperty;
|
|
10
|
-
var __name$2 = (target, value) => __defProp$2(target, "name", { value, configurable: true });
|
|
11
|
-
class MockServerResponse {
|
|
12
|
-
static {
|
|
13
|
-
__name$2(this, "MockServerResponse");
|
|
14
|
-
}
|
|
15
|
-
statusCode = 200;
|
|
16
|
-
statusMessage = "";
|
|
17
|
-
headers = {};
|
|
18
|
-
headersSent = false;
|
|
19
|
-
writable = true;
|
|
20
|
-
finished = false;
|
|
21
|
-
writableEnded = false;
|
|
22
|
-
writableFinished = false;
|
|
23
|
-
writableHighWaterMark = 16384;
|
|
24
|
-
writableLength = 0;
|
|
25
|
-
destroyed = false;
|
|
26
|
-
writableCorked = 0;
|
|
27
|
-
readable = false;
|
|
28
|
-
readableHighWaterMark = 16384;
|
|
29
|
-
readableLength = 0;
|
|
30
|
-
errored = null;
|
|
31
|
-
closed = false;
|
|
32
|
-
readableAborted = false;
|
|
33
|
-
readableDidRead = false;
|
|
34
|
-
readableEncoding = null;
|
|
35
|
-
readableEnded = false;
|
|
36
|
-
readableFlowing = null;
|
|
37
|
-
_events;
|
|
38
|
-
_eventsCount = 0;
|
|
39
|
-
_maxListeners;
|
|
40
|
-
body = "";
|
|
41
|
-
setHeader(name, value) {
|
|
42
|
-
this.headers[name.toLowerCase()] = value;
|
|
43
|
-
return this;
|
|
44
|
-
}
|
|
45
|
-
getHeader(name) {
|
|
46
|
-
return this.headers[name.toLowerCase()];
|
|
47
|
-
}
|
|
48
|
-
getHeaders() {
|
|
49
|
-
return { ...this.headers };
|
|
50
|
-
}
|
|
51
|
-
getHeaderNames() {
|
|
52
|
-
return Object.keys(this.headers);
|
|
53
|
-
}
|
|
54
|
-
hasHeader(name) {
|
|
55
|
-
return name.toLowerCase() in this.headers;
|
|
56
|
-
}
|
|
57
|
-
removeHeader(name) {
|
|
58
|
-
delete this.headers[name.toLowerCase()];
|
|
59
|
-
return this;
|
|
60
|
-
}
|
|
61
|
-
writeHead(statusCode, statusMessage, headers) {
|
|
62
|
-
this.statusCode = statusCode;
|
|
63
|
-
if (typeof statusMessage === "string") {
|
|
64
|
-
this.statusMessage = statusMessage;
|
|
65
|
-
}
|
|
66
|
-
if (typeof statusMessage === "object") {
|
|
67
|
-
headers = statusMessage;
|
|
68
|
-
}
|
|
69
|
-
if (headers) {
|
|
70
|
-
Object.assign(this.headers, headers);
|
|
71
|
-
}
|
|
72
|
-
return this;
|
|
73
|
-
}
|
|
74
|
-
write(chunk) {
|
|
75
|
-
this.body += chunk.toString();
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
end(data, encoding, cb) {
|
|
79
|
-
if (data) {
|
|
80
|
-
this.body += data.toString();
|
|
81
|
-
}
|
|
82
|
-
this.finished = true;
|
|
83
|
-
return this;
|
|
84
|
-
}
|
|
85
|
-
flushHeaders() {
|
|
86
|
-
this.headersSent = true;
|
|
87
|
-
}
|
|
88
|
-
// Stub methods for interface compliance
|
|
89
|
-
addListener = /* @__PURE__ */ __name$2(() => this, "addListener");
|
|
90
|
-
on = /* @__PURE__ */ __name$2(() => this, "on");
|
|
91
|
-
once = /* @__PURE__ */ __name$2(() => this, "once");
|
|
92
|
-
removeListener = /* @__PURE__ */ __name$2(() => this, "removeListener");
|
|
93
|
-
off = /* @__PURE__ */ __name$2(() => this, "off");
|
|
94
|
-
removeAllListeners = /* @__PURE__ */ __name$2(() => this, "removeAllListeners");
|
|
95
|
-
setMaxListeners = /* @__PURE__ */ __name$2(() => this, "setMaxListeners");
|
|
96
|
-
getMaxListeners = /* @__PURE__ */ __name$2(() => 10, "getMaxListeners");
|
|
97
|
-
listeners = /* @__PURE__ */ __name$2(() => [], "listeners");
|
|
98
|
-
rawListeners = /* @__PURE__ */ __name$2(() => [], "rawListeners");
|
|
99
|
-
emit = /* @__PURE__ */ __name$2(() => false, "emit");
|
|
100
|
-
eventNames = /* @__PURE__ */ __name$2(() => [], "eventNames");
|
|
101
|
-
listenerCount = /* @__PURE__ */ __name$2(() => 0, "listenerCount");
|
|
102
|
-
prependListener = /* @__PURE__ */ __name$2(() => this, "prependListener");
|
|
103
|
-
prependOnceListener = /* @__PURE__ */ __name$2(() => this, "prependOnceListener");
|
|
104
|
-
// Additional methods
|
|
105
|
-
cork = /* @__PURE__ */ __name$2(() => {
|
|
106
|
-
}, "cork");
|
|
107
|
-
uncork = /* @__PURE__ */ __name$2(() => {
|
|
108
|
-
}, "uncork");
|
|
109
|
-
destroy = /* @__PURE__ */ __name$2(() => this, "destroy");
|
|
110
|
-
read = /* @__PURE__ */ __name$2(() => null, "read");
|
|
111
|
-
setEncoding = /* @__PURE__ */ __name$2(() => this, "setEncoding");
|
|
112
|
-
pause = /* @__PURE__ */ __name$2(() => this, "pause");
|
|
113
|
-
resume = /* @__PURE__ */ __name$2(() => this, "resume");
|
|
114
|
-
isPaused = /* @__PURE__ */ __name$2(() => false, "isPaused");
|
|
115
|
-
destroySoon = /* @__PURE__ */ __name$2(() => this, "destroySoon");
|
|
116
|
-
pipe = /* @__PURE__ */ __name$2(() => ({}), "pipe");
|
|
117
|
-
unpipe = /* @__PURE__ */ __name$2(() => this, "unpipe");
|
|
118
|
-
unshift = /* @__PURE__ */ __name$2(() => {
|
|
119
|
-
}, "unshift");
|
|
120
|
-
wrap = /* @__PURE__ */ __name$2(() => this, "wrap");
|
|
121
|
-
setTimeout = /* @__PURE__ */ __name$2(() => this, "setTimeout");
|
|
122
|
-
assignSocket = /* @__PURE__ */ __name$2(() => {
|
|
123
|
-
}, "assignSocket");
|
|
124
|
-
detachSocket = /* @__PURE__ */ __name$2(() => {
|
|
125
|
-
}, "detachSocket");
|
|
126
|
-
writeContinue = /* @__PURE__ */ __name$2(() => {
|
|
127
|
-
}, "writeContinue");
|
|
128
|
-
writeEarlyHints = /* @__PURE__ */ __name$2(() => {
|
|
129
|
-
}, "writeEarlyHints");
|
|
130
|
-
sendDate = true;
|
|
131
|
-
strictContentLength = false;
|
|
132
|
-
chunkedEncoding = false;
|
|
133
|
-
shouldKeepAlive = true;
|
|
134
|
-
useChunkedEncodingByDefault = true;
|
|
135
|
-
_hasBody = true;
|
|
136
|
-
_trailer = "";
|
|
137
|
-
connection = null;
|
|
138
|
-
socket = null;
|
|
139
|
-
}
|
|
140
|
-
const fetchHtmlErrorHandler = /* @__PURE__ */ __name$2((options = {}) => {
|
|
141
|
-
const nodeHandler = htmlErrorHandler(options);
|
|
142
|
-
return async (error, request) => {
|
|
143
|
-
const mockReq = {
|
|
144
|
-
url: request.url,
|
|
145
|
-
method: request.method,
|
|
146
|
-
headers: Object.fromEntries(Array.from(request.headers.entries()))
|
|
147
|
-
};
|
|
148
|
-
const mockRes = new MockServerResponse();
|
|
149
|
-
await nodeHandler(error, mockReq, mockRes);
|
|
150
|
-
const contentType = mockRes.getHeader("content-type") || "text/html; charset=utf-8";
|
|
151
|
-
return new Response(mockRes.body, {
|
|
152
|
-
status: mockRes.statusCode,
|
|
153
|
-
headers: {
|
|
154
|
-
"content-type": contentType,
|
|
155
|
-
...mockRes.headers
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
};
|
|
159
|
-
}, "fetchHtmlErrorHandler");
|
|
160
|
-
|
|
161
|
-
var __defProp$1 = Object.defineProperty;
|
|
162
|
-
var __name$1 = (target, value) => __defProp$1(target, "name", { value, configurable: true });
|
|
163
|
-
const negotiateContentType = /* @__PURE__ */ __name$1((acceptHeader) => {
|
|
164
|
-
if (!acceptHeader) return "text/html";
|
|
165
|
-
const accept = acceptHeader.toLowerCase();
|
|
166
|
-
if (accept.includes("text/html")) return "text/html";
|
|
167
|
-
if (accept.includes("application/vnd.api+json")) return "application/vnd.api+json";
|
|
168
|
-
if (accept.includes("application/problem+json")) return "application/problem+json";
|
|
169
|
-
if (accept.includes("application/json")) return "application/json";
|
|
170
|
-
if (accept.includes("text/plain")) return "text/plain";
|
|
171
|
-
if (accept.includes("application/javascript") || accept.includes("text/javascript")) return "application/javascript";
|
|
172
|
-
if (accept.includes("application/xml") || accept.includes("text/xml")) return "application/xml";
|
|
173
|
-
return "text/html";
|
|
174
|
-
}, "negotiateContentType");
|
|
175
|
-
const adaptErrorHandlerToFetch = /* @__PURE__ */ __name$1((nodeHandler) => {
|
|
176
|
-
return async (error, request) => {
|
|
177
|
-
const mockReq = {
|
|
178
|
-
url: request.url,
|
|
179
|
-
method: request.method,
|
|
180
|
-
headers: Object.fromEntries(request.headers.entries())
|
|
181
|
-
};
|
|
182
|
-
const mockRes = {
|
|
183
|
-
statusCode: 200,
|
|
184
|
-
headers: {},
|
|
185
|
-
_body: "",
|
|
186
|
-
setHeader(name, value) {
|
|
187
|
-
this.headers[name.toLowerCase()] = value;
|
|
188
|
-
},
|
|
189
|
-
getHeader(name) {
|
|
190
|
-
return this.headers[name.toLowerCase()];
|
|
191
|
-
},
|
|
192
|
-
getHeaders() {
|
|
193
|
-
return { ...this.headers };
|
|
194
|
-
},
|
|
195
|
-
writeHead(statusCode) {
|
|
196
|
-
this.statusCode = statusCode;
|
|
197
|
-
},
|
|
198
|
-
write(chunk) {
|
|
199
|
-
this._body += chunk.toString();
|
|
200
|
-
},
|
|
201
|
-
end(data) {
|
|
202
|
-
if (data) {
|
|
203
|
-
this._body += data.toString();
|
|
204
|
-
}
|
|
205
|
-
},
|
|
206
|
-
flushHeaders() {
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
|
-
await nodeHandler(error, mockReq, mockRes);
|
|
210
|
-
const headers = {};
|
|
211
|
-
for (const [key, value] of Object.entries(mockRes.headers)) {
|
|
212
|
-
if (Array.isArray(value)) {
|
|
213
|
-
headers[key] = value.join(", ");
|
|
214
|
-
} else {
|
|
215
|
-
headers[key] = String(value);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return new Response(mockRes._body, {
|
|
219
|
-
status: mockRes.statusCode,
|
|
220
|
-
headers
|
|
221
|
-
});
|
|
222
|
-
};
|
|
223
|
-
}, "adaptErrorHandlerToFetch");
|
|
224
|
-
const createFetchNegotiatedErrorHandler = /* @__PURE__ */ __name$1((errorHandlers, showTrace, defaultHtmlHandler) => async (error, request) => {
|
|
225
|
-
const accept = request.headers.get("accept");
|
|
226
|
-
const chosenType = negotiateContentType(accept);
|
|
227
|
-
let fetchErrorHandler = defaultHtmlHandler || adaptErrorHandlerToFetch(problemErrorHandler);
|
|
228
|
-
if (chosenType === "text/html" && defaultHtmlHandler) {
|
|
229
|
-
fetchErrorHandler = defaultHtmlHandler;
|
|
230
|
-
} else if (chosenType === "application/vnd.api+json") {
|
|
231
|
-
fetchErrorHandler = adaptErrorHandlerToFetch(jsonapiErrorHandler);
|
|
232
|
-
} else if (chosenType === "application/problem+json") {
|
|
233
|
-
fetchErrorHandler = adaptErrorHandlerToFetch(problemErrorHandler);
|
|
234
|
-
} else if (chosenType === "application/json") {
|
|
235
|
-
fetchErrorHandler = adaptErrorHandlerToFetch(jsonErrorHandler());
|
|
236
|
-
} else if (chosenType === "text/plain") {
|
|
237
|
-
fetchErrorHandler = adaptErrorHandlerToFetch(textErrorHandler());
|
|
238
|
-
} else if (chosenType === "application/javascript") {
|
|
239
|
-
fetchErrorHandler = adaptErrorHandlerToFetch(jsonpErrorHandler());
|
|
240
|
-
} else if (chosenType === "application/xml") {
|
|
241
|
-
fetchErrorHandler = adaptErrorHandlerToFetch(xmlErrorHandler());
|
|
242
|
-
}
|
|
243
|
-
for (const { handler, regex } of errorHandlers) {
|
|
244
|
-
const headerStr = accept ?? "";
|
|
245
|
-
if (regex.test(headerStr)) {
|
|
246
|
-
fetchErrorHandler = handler;
|
|
247
|
-
break;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
error.expose = showTrace;
|
|
251
|
-
return fetchErrorHandler(error, request);
|
|
252
|
-
}, "createFetchNegotiatedErrorHandler");
|
|
253
|
-
|
|
254
|
-
var __defProp = Object.defineProperty;
|
|
255
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
256
|
-
const fetchHandler = /* @__PURE__ */ __name(async (error, options = {}) => {
|
|
257
|
-
const defaultHtml = fetchHtmlErrorHandler(options);
|
|
258
|
-
const negotiated = createFetchNegotiatedErrorHandler(options.extraHandlers ?? [], options.showTrace ?? true, defaultHtml);
|
|
259
|
-
return async (request) => {
|
|
260
|
-
if (options?.onError) {
|
|
261
|
-
await options.onError(error, request);
|
|
262
|
-
}
|
|
263
|
-
return negotiated(error, request);
|
|
264
|
-
};
|
|
265
|
-
}, "fetchHandler");
|
|
266
|
-
|
|
267
|
-
export { fetchHandler as default };
|
|
1
|
+
var b=Object.defineProperty;var c=(r,e)=>b(r,"name",{value:e,configurable:!0});import{jsonErrorHandler as g}from"../../error-handler/json-error-handler.js";import w from"../../error-handler/jsonapi-error-handler.js";import{jsonpErrorHandler as y}from"../../error-handler/jsonp-error-handler.js";import u from"../../error-handler/problem-error-handler.js";import{textErrorHandler as H}from"../../error-handler/text-error-handler.js";import{xmlErrorHandler as v}from"../../error-handler/xml-error-handler.js";import{htmlErrorHandler as L}from"../../error-handler/html-error-handler.js";var j=Object.defineProperty,h=c((r,e)=>j(r,"name",{value:e,configurable:!0}),"a$1");class x{static{c(this,"j")}static{h(this,"MockServerResponse")}statusCode=200;headers={};_body="";setHeader(e,s){this.headers[e.toLowerCase()]=s}getHeader(e){return this.headers[e.toLowerCase()]}getHeaders(){return{...this.headers}}writeHead(e){this.statusCode=e}write(e){this._body+=e.toString()}end(e){e&&(this._body+=e.toString())}flushHeaders(){}}const k=h(r=>{if(!r)return"text/html";const e=r.toLowerCase();return e.includes("text/html")?"text/html":e.includes("application/vnd.api+json")?"application/vnd.api+json":e.includes("application/problem+json")?"application/problem+json":e.includes("application/json")?"application/json":e.includes("text/plain")?"text/plain":e.includes("application/javascript")||e.includes("text/javascript")?"application/javascript":e.includes("application/xml")||e.includes("text/xml")?"application/xml":"text/html"},"negotiateContentType"),d=h(r=>async(e,s)=>{const a={headers:Object.fromEntries(s.headers.entries()),method:s.method,url:s.url},i=new x;await r(e,a,i);const o={};for(const[l,n]of Object.entries(i.headers))o[l]=Array.isArray(n)?n.join(", "):String(n);return new Response(i._body,{headers:o,status:i.statusCode})},"adaptErrorHandlerToFetch"),C=h((r,e,s)=>async(a,i)=>{const o=i.headers.get("accept"),l=k(o);let n=s||d(u);if(l==="text/html"&&s)n=s;else switch(l){case"application/javascript":{n=d(y());break}case"application/json":{n=d(g());break}case"application/problem+json":{n=d(u);break}case"application/vnd.api+json":{n=d(w);break}case"application/xml":{n=d(v());break}case"text/plain":{n=d(H());break}}for(const{handler:p,regex:m}of r){const f=o??"";if(m.test(f)){n=p;break}}return a.expose=e,n(a,i)},"createFetchNegotiatedErrorHandler");var E=Object.defineProperty,t=c((r,e)=>E(r,"name",{value:e,configurable:!0}),"e");class S{static{c(this,"b")}static{t(this,"MockServerResponse")}statusCode=200;statusMessage="";headers={};headersSent=!1;writable=!0;finished=!1;writableEnded=!1;writableFinished=!1;writableHighWaterMark=16384;writableLength=0;destroyed=!1;writableCorked=0;readable=!1;readableHighWaterMark=16384;readableLength=0;errored=null;closed=!1;readableAborted=!1;readableDidRead=!1;readableEncoding=null;readableEnded=!1;readableFlowing=null;_events;_eventsCount=0;_maxListeners;body="";sendDate=!0;strictContentLength=!1;chunkedEncoding=!1;shouldKeepAlive=!0;useChunkedEncodingByDefault=!0;_hasBody=!0;_trailer="";connection=null;socket=null;setHeader(e,s){return this.headers[e.toLowerCase()]=s,this}getHeader(e){return this.headers[e.toLowerCase()]}getHeaders(){return{...this.headers}}getHeaderNames(){return Object.keys(this.headers)}hasHeader(e){return e.toLowerCase()in this.headers}removeHeader(e){return delete this.headers[e.toLowerCase()],this}writeHead(e,s,a){return this.statusCode=e,typeof s=="string"&&(this.statusMessage=s),typeof s=="object"&&(a=s),a&&Object.assign(this.headers,a),this}write(e){return this.body+=e.toString(),!0}end(e,s,a){return e&&(this.body+=e.toString()),this.finished=!0,this}flushHeaders(){this.headersSent=!0}addListener=t(()=>this,"addListener");on=t(()=>this,"on");once=t(()=>this,"once");removeListener=t(()=>this,"removeListener");off=t(()=>this,"off");removeAllListeners=t(()=>this,"removeAllListeners");setMaxListeners=t(()=>this,"setMaxListeners");getMaxListeners=t(()=>10,"getMaxListeners");listeners=t(()=>[],"listeners");rawListeners=t(()=>[],"rawListeners");emit=t(()=>!1,"emit");eventNames=t(()=>[],"eventNames");listenerCount=t(()=>0,"listenerCount");prependListener=t(()=>this,"prependListener");prependOnceListener=t(()=>this,"prependOnceListener");cork=t(()=>{},"cork");uncork=t(()=>{},"uncork");destroy=t(()=>this,"destroy");read=t(()=>null,"read");setEncoding=t(()=>this,"setEncoding");pause=t(()=>this,"pause");resume=t(()=>this,"resume");isPaused=t(()=>!1,"isPaused");destroySoon=t(()=>this,"destroySoon");pipe=t(()=>({}),"pipe");unpipe=t(()=>this,"unpipe");unshift=t(()=>{},"unshift");wrap=t(()=>this,"wrap");setTimeout=t(()=>this,"setTimeout");assignSocket=t(()=>{},"assignSocket");detachSocket=t(()=>{},"detachSocket");writeContinue=t(()=>{},"writeContinue");writeEarlyHints=t(()=>{},"writeEarlyHints")}const M=t((r={})=>{const e=L(r);return async(s,a)=>{const i={headers:Object.fromEntries(a.headers.entries()),method:a.method,url:a.url},o=new S;await e(s,i,o);const l=o.getHeader("content-type")||"text/html; charset=utf-8";return new Response(o.body,{headers:{"content-type":l,...o.headers},status:o.statusCode})}},"fetchHtmlErrorHandler");var O=Object.defineProperty,_=c((r,e)=>O(r,"name",{value:e,configurable:!0}),"t");const B=_(async(r,e={})=>{const s=M(e),a=C(e.extraHandlers??[],e.showTrace??!0,s);return async i=>(e?.onError&&await e.onError(r,i),a(r,i))},"fetchHandler");export{B as default};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
2
|
import { HtmlErrorHandlerOptions } from '../../error-handler/html-error-handler.js';
|
|
3
|
-
import { E as ErrorHandlers } from '../../packem_shared/types.d-
|
|
3
|
+
import { E as ErrorHandlers } from '../../packem_shared/types.d-BQZBUb3b.js';
|
|
4
4
|
|
|
5
|
-
declare const
|
|
6
|
-
showTrace?: boolean;
|
|
5
|
+
declare const nodeHandler: (error: Error, options?: HtmlErrorHandlerOptions & {
|
|
7
6
|
extraHandlers?: ErrorHandlers;
|
|
8
7
|
onError?: (error: Error, request: IncomingMessage, response: ServerResponse) => void | Promise<void>;
|
|
8
|
+
showTrace?: boolean;
|
|
9
9
|
}) => Promise<(request: IncomingMessage, response: ServerResponse) => Promise<void>>;
|
|
10
10
|
|
|
11
|
-
export {
|
|
11
|
+
export { nodeHandler as default };
|
|
@@ -1,17 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import createNegotiatedErrorHandler from '../../packem_shared/createNegotiatedErrorHandler-Cd7yj67Z.js';
|
|
3
|
-
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
|
-
const httpHandler = /* @__PURE__ */ __name(async (error, options = {}) => {
|
|
7
|
-
const defaultHtml = htmlErrorHandler(options);
|
|
8
|
-
const negotiated = createNegotiatedErrorHandler(options.extraHandlers ?? [], options.showTrace ?? true, defaultHtml);
|
|
9
|
-
return async (request, response) => {
|
|
10
|
-
if (options?.onError) {
|
|
11
|
-
await options.onError(error, request, response);
|
|
12
|
-
}
|
|
13
|
-
await negotiated(error, request, response);
|
|
14
|
-
};
|
|
15
|
-
}, "httpHandler");
|
|
16
|
-
|
|
17
|
-
export { httpHandler as default };
|
|
1
|
+
var s=Object.defineProperty;var o=(a,r)=>s(a,"name",{value:r,configurable:!0});import c from"../../packem_shared/createNegotiatedErrorHandler-BLks0_Ak.js";import{htmlErrorHandler as m}from"../../error-handler/html-error-handler.js";var d=Object.defineProperty,i=o((a,r)=>d(a,"name",{value:r,configurable:!0}),"s");const v=i(async(a,r={})=>{const n=m(r),l=c(r.extraHandlers??[],r.showTrace??!0,n);return async(e,t)=>{r?.onError&&await r.onError(a,e,t),await l(a,e,t)}},"nodeHandler");export{v as default};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { default as jsonapiErrorHandler } from './error-handler/jsonapi-error-handler.js';
|
|
2
|
-
export { default as problemErrorHandler } from './error-handler/problem-error-handler.js';
|
|
3
|
-
export { HtmlErrorHandlerOptions, htmlErrorHandler } from './error-handler/html-error-handler.js';
|
|
4
1
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
5
|
-
import { E as ErrorHandlers, a as ErrorHandler } from './packem_shared/types.d-
|
|
6
|
-
export { A as ApiFormat } from './packem_shared/types.d-
|
|
7
|
-
export {
|
|
2
|
+
import { E as ErrorHandlers, a as ErrorHandler } from './packem_shared/types.d-BQZBUb3b.js';
|
|
3
|
+
export { A as ApiFormat } from './packem_shared/types.d-BQZBUb3b.js';
|
|
4
|
+
export { HtmlErrorHandlerOptions, htmlErrorHandler } from './error-handler/html-error-handler.js';
|
|
8
5
|
export { JsonErrorBody, JsonErrorFormatter, JsonErrorHandlerOptions, jsonErrorHandler } from './error-handler/json-error-handler.js';
|
|
6
|
+
export { default as jsonapiErrorHandler } from './error-handler/jsonapi-error-handler.js';
|
|
9
7
|
export { JsonpErrorBody, JsonpErrorFormatter, JsonpErrorHandlerOptions, jsonpErrorHandler } from './error-handler/jsonp-error-handler.js';
|
|
8
|
+
export { default as problemErrorHandler } from './error-handler/problem-error-handler.js';
|
|
9
|
+
export { TextErrorFormatter, TextErrorHandlerOptions, textErrorHandler } from './error-handler/text-error-handler.js';
|
|
10
10
|
export { ToXmlOptions, XmlErrorBody, XmlErrorFormatter, XmlErrorHandlerOptions, xmlErrorHandler } from './error-handler/xml-error-handler.js';
|
|
11
11
|
|
|
12
12
|
declare const createNegotiatedErrorHandler: <Request extends IncomingMessage, Response extends ServerResponse>(errorHandlers: ErrorHandlers, showTrace: boolean, defaultHtmlHandler?: ErrorHandler) => (error: Error, request: Request, response: Response) => Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { default as problemErrorHandler } from './error-handler/problem-error-handler.js';
|
|
3
|
-
export { htmlErrorHandler } from './error-handler/html-error-handler.js';
|
|
4
|
-
export { default as createNegotiatedErrorHandler } from './packem_shared/createNegotiatedErrorHandler-Cd7yj67Z.js';
|
|
5
|
-
export { textErrorHandler } from './error-handler/text-error-handler.js';
|
|
6
|
-
export { jsonErrorHandler } from './error-handler/json-error-handler.js';
|
|
7
|
-
export { jsonpErrorHandler } from './error-handler/jsonp-error-handler.js';
|
|
8
|
-
export { xmlErrorHandler } from './error-handler/xml-error-handler.js';
|
|
1
|
+
import{default as e}from"./packem_shared/createNegotiatedErrorHandler-BLks0_Ak.js";import{htmlErrorHandler as t}from"./error-handler/html-error-handler.js";import{jsonErrorHandler as d}from"./error-handler/json-error-handler.js";import{default as m}from"./error-handler/jsonapi-error-handler.js";import{jsonpErrorHandler as p}from"./error-handler/jsonp-error-handler.js";import{default as E}from"./error-handler/problem-error-handler.js";import{textErrorHandler as s}from"./error-handler/text-error-handler.js";import{xmlErrorHandler as u}from"./error-handler/xml-error-handler.js";export{e as createNegotiatedErrorHandler,t as htmlErrorHandler,d as jsonErrorHandler,m as jsonapiErrorHandler,p as jsonpErrorHandler,E as problemErrorHandler,s as textErrorHandler,u as xmlErrorHandler};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var r=Object.defineProperty;var o=(e,s)=>r(e,"name",{value:s,configurable:!0});import{StatusCodes as u}from"http-status-codes";var d=Object.defineProperty,n=o((e,s)=>d(e,"name",{value:s,configurable:!0}),"s");const i=n((e,s)=>{const a=s,t=Number(a.statusCode??a.status);if(Number.isInteger(t)&&t>=400&&t<=599){e.statusCode=t;return}e.statusCode<400&&(e.statusCode=u.INTERNAL_SERVER_ERROR)},"addStatusCodeToResponse");export{i as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var m=Object.defineProperty;var u=(e,r)=>m(e,"name",{value:r,configurable:!0});import{parseStacktrace as g}from"@visulima/error/stacktrace";import{boxen as x}from"@visulima/boxen";import{renderError as b}from"@visulima/error/error";import{readFile as j}from"node:fs/promises";import{fileURLToPath as h}from"node:url";import{ruleBasedFinder as y,errorHintFinder as v}from"@visulima/error/solution";var w=Object.defineProperty,O=u((e,r)=>w(e,"name",{value:r,configurable:!0}),"r");const F=["cjs","mjs"],A=["mdoc"],B=O(e=>{const r=(e.split("?")[0]??e).split(".").pop()?.toLowerCase();if(!r||F.includes(r))return"javascript";if(A.includes(r))return"markdown";switch(r){case"js":return"javascript";case"json":return"json";case"json5":return"json5";case"jsonc":return"jsonc";case"jsx":return"jsx";case"sql":return"sql";case"ts":return"typescript";case"tsx":return"tsx";case"xml":return"xml";case"md":return"markdown";case"mdx":return"mdx";default:return"javascript"}},"findLanguageBasedOnExtension");var k=Object.defineProperty,L=u((e,r)=>k(e,"name",{value:r,configurable:!0}),"o");const c=new Map,P=L(async e=>{if(/^(?:http|https|file|data):/.test(e)){if(c.has(e))return c.get(e);if(e.startsWith("file:"))try{const r=h(e),t=await j(r,"utf8");return c.set(e,t),t}catch(r){console.log(r);return}try{const r=await fetch(e);if(!r.ok)return;const t=await r.text();return c.set(e,t),t}catch(r){console.log(r);return}}},"getFileSource");var S=Object.defineProperty,f=u((e,r)=>S(e,"name",{value:r,configurable:!0}),"d");const T=f(e=>e.replace(/^\s*#+\s*/,"").trim(),"sanitizeTitle"),$=f(async(e,r,t=!1)=>{const l=[...r,y,v],n=g(e,{frameLimit:1})[0]??{};for await(const o of l.sort((i,s)=>i.priority-s.priority)){const{handle:i,name:s}=o;if(t&&console.debug(`Running solution finder: ${s}`),typeof i!="function")continue;const a=await i(e,{file:n.file??"",language:B(n.file??""),line:n.line??0,snippet:n.file?await P(n.file):""});if(a)return a}},"runSolutionFinders"),q=f(async(e,r)=>{const{solutionFinders:t=[],solutionTitle:l,color:n,debug:o=!1,...i}=r,s=b(e,{...i,...n?.codeFrame}),a=await $(e,t,o);if(!a)return{errorAnsi:s,solutionBox:void 0};const d=T(a.header??l??"A possible solution to this error"),p=x(a.body,{borderStyle:"round",padding:{top:1,right:2,bottom:1,left:2},margin:{top:0,right:0,bottom:0,left:0},headerText:`💡 ${d}`,headerAlignment:"left",textAlignment:"left",...n?.boxen});return{errorAnsi:s,solutionBox:p}},"buildOutput"),W=f(async(e,r={})=>{const{logger:t=console,...l}=r,{errorAnsi:n,solutionBox:o}=await q(e,l);t.error(n),o&&(t.log(""),t.log(o))},"terminalOutput");export{q as buildOutput,W as terminalOutput};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var j=Object.defineProperty;var c=(r,e)=>j(r,"name",{value:e,configurable:!0});import{Accepts as d}from"@tinyhttp/accepts";import{jsonErrorHandler as b}from"../error-handler/json-error-handler.js";import v from"../error-handler/jsonapi-error-handler.js";import{jsonpErrorHandler as k}from"../error-handler/jsonp-error-handler.js";import l from"../error-handler/problem-error-handler.js";import{textErrorHandler as E}from"../error-handler/text-error-handler.js";import{xmlErrorHandler as h}from"../error-handler/xml-error-handler.js";var y=Object.defineProperty,H=c((r,e)=>y(r,"name",{value:e,configurable:!0}),"i");const q=H((r,e,t)=>async(p,o,s)=>{const n=new d(o).type(["text/html","application/vnd.api+json","application/problem+json","application/json","text/plain","application/javascript","text/javascript","application/xml","text/xml"]);let a=t||l;if(n==="text/html"&&t)a=t;else switch(n){case"application/javascript":case"text/javascript":{a=k();break}case"application/json":{a=b();break}case"application/problem+json":{a=l;break}case"application/vnd.api+json":{a=v;break}case"application/xml":case"text/xml":{a=h();break}case"text/plain":{a=E();break}}for(const{handler:m,regex:x}of r){const i=o.headers.accept??"",f=Array.isArray(i)?i.join(","):i;if(x.test(f)){a=m;break}}p.expose=e,await a(p,o,s)},"createNegotiatedErrorHandler");export{q as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var s=Object.defineProperty;var t=(e,n)=>s(e,"name",{value:n,configurable:!0});var a=Object.defineProperty,o=t((e,n)=>a(e,"name",{value:n,configurable:!0}),"t");const i=o((e,n,r="application/json; charset=utf-8")=>{e.setHeader("content-type",r),e.end(JSON.stringify(n))},"sendJson");export{i as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var c=Object.defineProperty;var o=(e,r)=>c(e,"name",{value:r,configurable:!0});var n=Object.defineProperty,s=o((e,r)=>n(e,"name",{value:r,configurable:!0}),"o");const b=s((e,r)=>{const a=r.headers??{};Object.keys(a).forEach(t=>{e.setHeader(t,a[t])})},"setErrorHeaders");export{b as a};
|
|
@@ -6,10 +6,7 @@ type ErrorHandler = <Request extends IncomingMessage, Response extends ServerRes
|
|
|
6
6
|
response: Response,
|
|
7
7
|
) => Promise<void> | void;
|
|
8
8
|
|
|
9
|
-
type FetchErrorHandler = (
|
|
10
|
-
error: unknown,
|
|
11
|
-
request: Request,
|
|
12
|
-
) => Promise<Response> | Response;
|
|
9
|
+
type FetchErrorHandler = (error: unknown, request: Request) => Promise<Response>;
|
|
13
10
|
|
|
14
11
|
type ErrorHandlers = {
|
|
15
12
|
handler: ErrorHandler;
|