@visulima/error 2.0.0 → 3.0.1

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 (37) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +30 -1
  3. package/dist/{chunk-26F4MLO2.js → chunk-57YC2IM6.js} +2 -2
  4. package/dist/chunk-57YC2IM6.js.map +1 -0
  5. package/dist/{chunk-5DWOFJMB.js → chunk-7OT5SHJH.js} +1 -1
  6. package/dist/chunk-7OT5SHJH.js.map +1 -0
  7. package/dist/{chunk-7Q3PPTBP.js → chunk-GQSCBKA6.js} +1 -1
  8. package/dist/chunk-ONFIDS3C.js +13 -0
  9. package/dist/chunk-ONFIDS3C.js.map +1 -0
  10. package/dist/chunk-YOONH3EZ.js +8 -0
  11. package/dist/chunk-YOONH3EZ.js.map +1 -0
  12. package/dist/code-frame/index.d.ts +22 -3
  13. package/dist/code-frame/index.js +2 -2
  14. package/dist/error/index.d.ts +31 -0
  15. package/dist/error/index.js +4 -0
  16. package/dist/index.d.ts +4 -5
  17. package/dist/index.js +5 -5
  18. package/dist/{sourcemap.js → sourcemap/index.js} +3 -3
  19. package/dist/stacktrace/index.d.ts +16 -0
  20. package/dist/stacktrace/index.js +4 -0
  21. package/package.json +17 -15
  22. package/dist/chunk-26F4MLO2.js.map +0 -1
  23. package/dist/chunk-5DWOFJMB.js.map +0 -1
  24. package/dist/chunk-F52HEHA7.js +0 -13
  25. package/dist/chunk-F52HEHA7.js.map +0 -1
  26. package/dist/chunk-X3TE67TZ.js +0 -7
  27. package/dist/chunk-X3TE67TZ.js.map +0 -1
  28. package/dist/error.d.ts +0 -17
  29. package/dist/error.js +0 -4
  30. package/dist/stacktrace.d.ts +0 -7
  31. package/dist/stacktrace.js +0 -4
  32. package/dist/types-4e2de6f5.d.ts +0 -64
  33. /package/dist/{chunk-7Q3PPTBP.js.map → chunk-GQSCBKA6.js.map} +0 -0
  34. /package/dist/{error.js.map → error/index.js.map} +0 -0
  35. /package/dist/{sourcemap.d.ts → sourcemap/index.d.ts} +0 -0
  36. /package/dist/{sourcemap.js.map → sourcemap/index.js.map} +0 -0
  37. /package/dist/{stacktrace.js.map → stacktrace/index.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,28 @@
1
+ ## @visulima/error [3.0.1](https://github.com/visulima/visulima/compare/@visulima/error@3.0.0...@visulima/error@3.0.1) (2023-12-06)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * fixed possible deep nesting of error cause in getErrorCauses ([350ddba](https://github.com/visulima/visulima/commit/350ddbaf2b8120a0815f1673fc1582ca7946847d))
7
+
8
+ ## @visulima/error [3.0.0](https://github.com/visulima/visulima/compare/@visulima/error@2.0.0...@visulima/error@3.0.0) (2023-12-06)
9
+
10
+
11
+ ### ⚠ BREAKING CHANGES
12
+
13
+ * removed ErrorWithMetadata, fixed wrong Trace on error namespace
14
+ Signed-off-by: prisis <d.bannert@anolilab.de>
15
+
16
+ ### Features
17
+
18
+ * added new getErrorCauses helper ([e94d9ee](https://github.com/visulima/visulima/commit/e94d9ee34d6fa0f93d853a227e9b31bab4aacdab))
19
+
20
+
21
+
22
+ ### Dependencies
23
+
24
+ * **@visulima/nextra-theme-docs:** upgraded to 4.0.11
25
+
1
26
  ## @visulima/error [2.0.0](https://github.com/visulima/visulima/compare/@visulima/error@1.1.1...@visulima/error@2.0.0) (2023-12-04)
2
27
 
3
28
 
package/README.md CHANGED
@@ -66,7 +66,36 @@ error.hint = "My error hint";
66
66
  throw error;
67
67
  ```
68
68
 
69
- ### Pretty code frame
69
+ ### Get all causes in a error
70
+
71
+ ```ts
72
+ import { getErrorCauses } from "@visulima/error";
73
+
74
+ const error = new Error("My error message");
75
+ const error2 = new Error("Nested Error");
76
+
77
+ error.cause = error2;
78
+
79
+ // The getErrorCauses function will return an array of all causes in the error in the order they occurred.
80
+ const causes = getErrorCauses(error);
81
+
82
+ console.log(causes);
83
+
84
+ // [
85
+ // {
86
+ // message: "My error message",
87
+ // name: "Error",
88
+ // stack: "Error: My error message\n at Object.<anonymous> (/visulima/packages/error/src/index.ts:2:16)",
89
+ // },
90
+ // {
91
+ // message: "Nested Error",
92
+ // name: "Error",
93
+ // stack: "Error: Nested Error\n at Object.<anonymous> (/visulima/packages/error/src/index.ts:3:16)",
94
+ // },
95
+ // ];
96
+ ```
97
+
98
+ ## Pretty Code Frame
70
99
 
71
100
  ```ts
72
101
  import { codeFrame } from "@visulima/error";
@@ -1,6 +1,6 @@
1
- var o=(s,...e)=>{process.env.DEBUG&&String(process.env.DEBUG)==="true"&&console.debug(`error:parse-stacktrace: ${s}`,...e);},f="<unknown>",y=/^.*?\s*at\s(?:(.+?\)(?:\s\[.+\])?|\(?.*?)\s?\((?:address\sat\s)?)?(?:async\s)?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,v=/\((\S+)\),\s(<[^>]+>)?:(\d+)?:(\d+)?\)?/,T=/(.*?):(\d+):(\d+)(\s<-\s(.+):(\d+):(\d+))?/,$=/^\s*in\s(?:([^\\/]+(?:\s\[as\s\S+\])?)\s\(?)?\(at?\s?(.*?):(\d+)(?::(\d+))?\)?\s*$/,N=/in\s(.*)\s\(at\s(.+)\)\sat/,x=/^(?:.*@)?(.*):(\d+):(\d+)$/,b=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. \/=]+)(?::(\d+))?(?::(\d+))?\s*$/i,O=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,R=/(\S[^\s[]*\[.*\]|.*?)@(.*):(\d+):(\d+)/,l=/\(error: (.*)\)/,p=(s,e)=>{let n=s.includes("safari-extension"),t=s.includes("safari-web-extension");return n||t?[s.includes("@")?s.split("@")[0]:f,n?`safari-extension:${e}`:`safari-web-extension:${e}`]:[s,e]},m=(s,e)=>{let n=T.exec(e);n&&(s.file=n[1],s.line=+n[2],s.column=+n[3]);},S=s=>{let e=N.exec(s);if(e){o(`parse nested node error stack line: "${s}"`,`found: ${JSON.stringify(e)}`);let t=e[2].split(":");return {column:t[2]?+t[2]:void 0,file:t[0],line:t[1]?+t[1]:void 0,methodName:e[1]||f,raw:s,type:void 0}}let n=$.exec(s);if(n){o(`parse node error stack line: "${s}"`,`found: ${JSON.stringify(n)}`);let t={column:n[4]?+n[4]:void 0,file:n[2]?n[2].replace(/at\s/,""):void 0,line:n[3]?+n[3]:void 0,methodName:n[1]||f,raw:s,type:s.startsWith("internal")?"internal":void 0};return m(t,`${n[2]}:${n[3]}:${n[4]}`),t}},_=s=>{let e=y.exec(s);if(e){o(`parse chrome error stack line: "${s}"`,`found: ${JSON.stringify(e)}`);let n=e[2]&&e[2].startsWith("native"),t=e[2]&&e[2].startsWith("eval")||e[1]&&e[1].startsWith("eval"),r;if(t){let i=v.exec(s);if(i){let c=/(\S+):(\d+):(\d+)|(\S+):(\d+)$/.exec(i[1]);c?(e[2]=c[4]??c[1],e[3]=c[5]??c[2],e[4]=c[3]):i[2]&&(e[2]=i[1]),i[2]&&(r={column:i[4]?+i[4]:void 0,file:i[2],line:i[3]?+i[3]:void 0,methodName:"eval",raw:s,type:"eval"});}}let[a,u]=p(e[1]?e[1].replace(/^Anonymous function$/,"<anonymous>"):f,e[2]),d={column:e[4]?+e[4]:void 0,evalOrigin:r,file:u,line:e[3]?+e[3]:void 0,methodName:a,raw:s,type:t?"eval":n?"native":void 0};return m(d,`${u}:${e[3]}:${e[4]}`),d}},h=(s,e)=>{let n=b.exec(s);if(n){o(`parse gecko error stack line: "${s}"`,`found: ${JSON.stringify(n)}`);let t=n[3]?.includes(" > eval"),r=t&&n[3]&&O.exec(n[3]),a;t&&r&&(n[3]=r[1],a={column:n[5]?+n[5]:void 0,file:n[3],line:n[4]?+n[4]:void 0,methodName:"eval",raw:s,type:"eval"},n[4]=r[2]);let[u,d]=p(n[1]?n[1].replace(/^Anonymous function$/,"<anonymous>"):f,n[3]),i;(e?.type==="safari"||!t&&e?.type==="firefox")&&e.column?i=e.column:!t&&n[5]&&(i=+n[5]);let c;return (e?.type==="safari"||!t&&e?.type==="firefox")&&e.line?c=e.line:n[4]&&(c=+n[4]),{column:i,evalOrigin:a,file:d,line:c,methodName:u,raw:s,type:t?"eval":d.includes("[native code]")?"native":void 0}}},G=(s,e)=>{let n=R.exec(s);if(!(n?n[2].includes(" > eval"):!1)&&n)return o(`parse firefox error stack line: "${s}"`,`found: ${JSON.stringify(n)}`),{column:n[4]?+n[4]:e?.column??void 0,file:n[2],line:n[3]?+n[3]:e?.line??void 0,methodName:n[1]||f,raw:s,type:void 0}},w=s=>{let e=x.exec(s);if(e)return o(`parse react android native error stack line: "${s}"`,`found: ${JSON.stringify(e)}`),{column:e[3]?+e[3]:void 0,file:e[1],line:e[2]?+e[2]:void 0,methodName:f,raw:s,type:void 0}},k=(s,e={})=>{let{frameLimit:n=50}=e,t=(s.stacktrace??s.stack??"").split(`
1
+ var o=(s,...e)=>{process.env.DEBUG&&String(process.env.DEBUG)==="true"&&console.debug(`error:parse-stacktrace: ${s}`,...e);},f="<unknown>",y=/^.*?\s*at\s(?:(.+?\)(?:\s\[.+\])?|\(?.*?)\s?\((?:address\sat\s)?)?(?:async\s)?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,T=/\((\S+)\),\s(<[^>]+>)?:(\d+)?:(\d+)?\)?/,v=/(.*?):(\d+):(\d+)(\s<-\s(.+):(\d+):(\d+))?/,$=/^\s*in\s(?:([^\\/]+(?:\s\[as\s\S+\])?)\s\(?)?\(at?\s?(.*?):(\d+)(?::(\d+))?\)?\s*$/,N=/in\s(.*)\s\(at\s(.+)\)\sat/,x=/^(?:.*@)?(.*):(\d+):(\d+)$/,b=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. \/=]+)(?::(\d+))?(?::(\d+))?\s*$/i,O=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,R=/(\S[^\s[]*\[.*\]|.*?)@(.*):(\d+):(\d+)/,l=/\(error: (.*)\)/,p=(s,e)=>{let n=s.includes("safari-extension"),t=s.includes("safari-web-extension");return n||t?[s.includes("@")?s.split("@")[0]:f,n?`safari-extension:${e}`:`safari-web-extension:${e}`]:[s,e]},m=(s,e)=>{let n=v.exec(e);n&&(s.file=n[1],s.line=+n[2],s.column=+n[3]);},S=s=>{let e=N.exec(s);if(e){o(`parse nested node error stack line: "${s}"`,`found: ${JSON.stringify(e)}`);let t=e[2].split(":");return {column:t[2]?+t[2]:void 0,file:t[0],line:t[1]?+t[1]:void 0,methodName:e[1]||f,raw:s,type:void 0}}let n=$.exec(s);if(n){o(`parse node error stack line: "${s}"`,`found: ${JSON.stringify(n)}`);let t={column:n[4]?+n[4]:void 0,file:n[2]?n[2].replace(/at\s/,""):void 0,line:n[3]?+n[3]:void 0,methodName:n[1]||f,raw:s,type:s.startsWith("internal")?"internal":void 0};return m(t,`${n[2]}:${n[3]}:${n[4]}`),t}},_=s=>{let e=y.exec(s);if(e){o(`parse chrome error stack line: "${s}"`,`found: ${JSON.stringify(e)}`);let n=e[2]&&e[2].startsWith("native"),t=e[2]&&e[2].startsWith("eval")||e[1]&&e[1].startsWith("eval"),r;if(t){let i=T.exec(s);if(i){let c=/(\S+):(\d+):(\d+)|(\S+):(\d+)$/.exec(i[1]);c?(e[2]=c[4]??c[1],e[3]=c[5]??c[2],e[4]=c[3]):i[2]&&(e[2]=i[1]),i[2]&&(r={column:i[4]?+i[4]:void 0,file:i[2],line:i[3]?+i[3]:void 0,methodName:"eval",raw:s,type:"eval"});}}let[a,u]=p(e[1]?e[1].replace(/^Anonymous function$/,"<anonymous>"):f,e[2]),d={column:e[4]?+e[4]:void 0,evalOrigin:r,file:u,line:e[3]?+e[3]:void 0,methodName:a,raw:s,type:t?"eval":n?"native":void 0};return m(d,`${u}:${e[3]}:${e[4]}`),d}},h=(s,e)=>{let n=b.exec(s);if(n){o(`parse gecko error stack line: "${s}"`,`found: ${JSON.stringify(n)}`);let t=n[3]?.includes(" > eval"),r=t&&n[3]&&O.exec(n[3]),a;t&&r&&(n[3]=r[1],a={column:n[5]?+n[5]:void 0,file:n[3],line:n[4]?+n[4]:void 0,methodName:"eval",raw:s,type:"eval"},n[4]=r[2]);let[u,d]=p(n[1]?n[1].replace(/^Anonymous function$/,"<anonymous>"):f,n[3]),i;(e?.type==="safari"||!t&&e?.type==="firefox")&&e.column?i=e.column:!t&&n[5]&&(i=+n[5]);let c;return (e?.type==="safari"||!t&&e?.type==="firefox")&&e.line?c=e.line:n[4]&&(c=+n[4]),{column:i,evalOrigin:a,file:d,line:c,methodName:u,raw:s,type:t?"eval":d.includes("[native code]")?"native":void 0}}},G=(s,e)=>{let n=R.exec(s);if(!(n?n[2].includes(" > eval"):!1)&&n)return o(`parse firefox error stack line: "${s}"`,`found: ${JSON.stringify(n)}`),{column:n[4]?+n[4]:e?.column??void 0,file:n[2],line:n[3]?+n[3]:e?.line??void 0,methodName:n[1]||f,raw:s,type:void 0}},w=s=>{let e=x.exec(s);if(e)return o(`parse react android native error stack line: "${s}"`,`found: ${JSON.stringify(e)}`),{column:e[3]?+e[3]:void 0,file:e[1],line:e[2]?+e[2]:void 0,methodName:f,raw:s,type:void 0}},k=(s,e={})=>{let{frameLimit:n=50}=e,t=(s.stacktrace??s.stack??"").split(`
2
2
  `).map(r=>(l.test(r)?r.replace(l,"$1"):r).replace(/^\s+|\s+$/g,"")).filter(r=>!/\S*Error: /.test(r)&&r!=="eval code");return t.length>n&&(t=t.slice(0,n)),t.reduce((r,a,u)=>{if(!a||a.length>1024)return r;let d;if(/^\s*in\s.*/.test(a))d=S(a);else if(/^.*?\s*at\s.*/.test(a))d=_(a);else if(/^.*?\s*@.*|\[native code\]/.test(a)){let i;u===0&&(s.columnNumber||s.lineNumber?i={column:s.columnNumber,line:s.lineNumber,type:"firefox"}:(s.line||s.column)&&(i={column:s.column,line:s.line,type:"safari"})),d=G(a,i)||h(a,i);}else d=w(a);return d?r.push(d):o(`parse error stack line: "${a}"`,"not parser found"),r},[])},A=k;
3
3
 
4
4
  export { A as a };
5
5
  //# sourceMappingURL=out.js.map
6
- //# sourceMappingURL=chunk-26F4MLO2.js.map
6
+ //# sourceMappingURL=chunk-57YC2IM6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/stacktrace/parse-stacktrace.ts"],"names":["debugLog","message","arguments_","UNKNOWN_FUNCTION","CHROMIUM_REGEX","CHROMIUM_EVAL_REGEX","CHROMIUM_MAPPED","NODE_REGEX","NODE_NESTED_REGEX","REACT_ANDROID_NATIVE_REGEX","GECKO_REGEX","GECKO_EVAL_REGEX","FIREFOX_REGEX","WEBPACK_ERROR_REGEXP","extractSafariExtensionDetails","methodName","url","isSafariExtension","isSafariWebExtension","parseMapped","trace","maybeMapped","match","parseNode","line","nestedNode","split","node","parseChromium","parts","isNative","isEval","evalOrigin","subMatch","file","parseGecko","topFrameMeta","column","lineNumber","parseFirefox","parseReactAndroidNative","parse","error","options","frameLimit","lines","stack","currentIndex","parseResult","parse_stacktrace_default"],"mappings":"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","sourcesContent":["import type { Trace, TraceType } from \"./types\";\n\ntype TopFrameMeta = {\n column?: number;\n line?: number;\n type: \"firefox\" | \"safari\";\n};\n\nconst debugLog = (message: string, ...arguments_: unknown[]): void => {\n if (process.env[\"DEBUG\"] && String(process.env[\"DEBUG\"]) === \"true\") {\n // eslint-disable-next-line no-console\n console.debug(`error:parse-stacktrace: ${message}`, ...arguments_);\n }\n};\n\nconst UNKNOWN_FUNCTION = \"<unknown>\";\n\n// at <SomeFramework>\n// at <SomeFramework>:123:39\n// -----------------\n// at about:blank:1:7\n// at index.js:23\n// >= Chrome 99\n// at /projects/foo.test.js:689:1 <- /projects/foo.test.js:10:1\n// -----------------\n// at bar (<anonymous>:1:19 <- <anonymous>:2:3)\n// -----------------\n// at foo.bar(bob) (foo.bar.js:123:39)\n// at foo.bar(bob) (foo.bar.js:123:39 <- original.js:123:34)\n// -----------------\n// >= Chrome 88\n// spy() at Component.Foo [as constructor] (original.js:123:34)\n// spy() at Component.Foo [as constructor] (foo.bar.js:123:39 <- original.js:123:34)\n// -----------------\n// at Module.load (internal/modules/cjs/loader.js:641:32)\n// -----------------\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst CHROMIUM_REGEX =\n // eslint-disable-next-line security/detect-unsafe-regex,regexp/no-super-linear-backtracking\n /^.*?\\s*at\\s(?:(.+?\\)(?:\\s\\[.+\\])?|\\(?.*?)\\s?\\((?:address\\sat\\s)?)?(?:async\\s)?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// eslint-disable-next-line security/detect-unsafe-regex\nconst CHROMIUM_EVAL_REGEX = /\\((\\S+)\\),\\s(<[^>]+>)?:(\\d+)?:(\\d+)?\\)?/;\n// foo.bar.js:123:39\n// foo.bar.js:123:39 <- original.js:123:34\n// eslint-disable-next-line security/detect-unsafe-regex,regexp/no-unused-capturing-group\nconst CHROMIUM_MAPPED = /(.*?):(\\d+):(\\d+)(\\s<-\\s(.+):(\\d+):(\\d+))?/;\n\n// in AppProviders (at App.tsx:28)\n// eslint-disable-next-line security/detect-unsafe-regex\nconst NODE_REGEX = /^\\s*in\\s(?:([^\\\\/]+(?:\\s\\[as\\s\\S+\\])?)\\s\\(?)?\\(at?\\s?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/;\nconst NODE_NESTED_REGEX = /in\\s(.*)\\s\\(at\\s(.+)\\)\\sat/;\n\n// eslint-disable-next-line security/detect-unsafe-regex,regexp/no-super-linear-backtracking\nconst REACT_ANDROID_NATIVE_REGEX = /^(?:.*@)?(.*):(\\d+):(\\d+)$/;\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\n// eslint-disable-next-line regexp/no-super-linear-backtracking,security/detect-unsafe-regex,regexp/no-optional-assertion,regexp/no-trivially-nested-quantifier,regexp/no-useless-escape,no-useless-escape,regexp/optimal-quantifier-concatenation\nconst GECKO_REGEX = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. \\/=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n// eslint-disable-next-line security/detect-unsafe-regex\nconst GECKO_EVAL_REGEX = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\n// @http://localhost:8080/file.js:33:9\n// foo@debugger eval code:1:27\n// obj[\"@fn\"]@Scratchpad/1:10:29\n// eslint-disable-next-line regexp/no-super-linear-backtracking\nconst FIREFOX_REGEX = /(\\S[^\\s[]*\\[.*\\]|.*?)@(.*):(\\d+):(\\d+)/;\n\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (methodName: string, url: string): [string, string] => {\n const isSafariExtension = methodName.includes(\"safari-extension\");\n const isSafariWebExtension = methodName.includes(\"safari-web-extension\");\n\n return isSafariExtension || isSafariWebExtension\n ? [\n methodName.includes(\"@\") ? (methodName.split(\"@\")[0] as string) : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${url}` : `safari-web-extension:${url}`,\n ]\n : [methodName, url];\n};\n\nconst parseMapped = (trace: Trace, maybeMapped: string) => {\n const match = CHROMIUM_MAPPED.exec(maybeMapped);\n\n if (match) {\n // eslint-disable-next-line no-param-reassign,prefer-destructuring\n trace.file = match[1];\n // eslint-disable-next-line no-param-reassign\n trace.line = +(<string>match[2]);\n // eslint-disable-next-line no-param-reassign\n trace.column = +(<string>match[3]);\n }\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parseNode = (line: string): Trace | undefined => {\n const nestedNode = NODE_NESTED_REGEX.exec(line);\n\n if (nestedNode) {\n debugLog(`parse nested node error stack line: \"${line}\"`, `found: ${JSON.stringify(nestedNode)}`);\n\n const split = (nestedNode[2] as string).split(\":\");\n\n return {\n column: split[2] ? +split[2] : undefined,\n file: split[0],\n line: split[1] ? +split[1] : undefined,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n methodName: nestedNode[1] || UNKNOWN_FUNCTION,\n raw: line,\n type: undefined,\n };\n }\n\n const node = NODE_REGEX.exec(line);\n\n if (node) {\n debugLog(`parse node error stack line: \"${line}\"`, `found: ${JSON.stringify(node)}`);\n\n const trace = {\n column: node[4] ? +node[4] : undefined,\n file: node[2] ? node[2].replace(/at\\s/, \"\") : undefined,\n line: node[3] ? +node[3] : undefined,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n methodName: node[1] || UNKNOWN_FUNCTION,\n raw: line,\n type: line.startsWith(\"internal\") ? (\"internal\" as TraceType) : undefined,\n };\n\n parseMapped(trace, `${node[2]}:${node[3]}:${node[4]}`);\n\n return trace;\n }\n\n return undefined;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parseChromium = (line: string): Trace | undefined => {\n const parts = CHROMIUM_REGEX.exec(line) as (string | undefined)[] | null;\n\n if (parts) {\n debugLog(`parse chrome error stack line: \"${line}\"`, `found: ${JSON.stringify(parts)}`);\n\n const isNative = parts[2] && parts[2].startsWith(\"native\"); // start of line\n const isEval = (parts[2] && parts[2].startsWith(\"eval\")) || (parts[1] && parts[1].startsWith(\"eval\")); // start of line\n\n let evalOrigin: Trace | undefined;\n\n if (isEval) {\n const subMatch = CHROMIUM_EVAL_REGEX.exec(line);\n\n if (subMatch) {\n // can be index.js:123:39 or index.js:123 or index.js\n const split = /(\\S+):(\\d+):(\\d+)|(\\S+):(\\d+)$/.exec(subMatch[1] as string);\n\n if (split) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = split[4] ?? split[1]; // url\n parts[3] = split[5] ?? split[2]; // line\n // eslint-disable-next-line prefer-destructuring\n parts[4] = split[3]; // column\n } else if (subMatch[2]) {\n // eslint-disable-next-line prefer-destructuring\n parts[2] = subMatch[1];\n }\n\n if (subMatch[2]) {\n evalOrigin = {\n column: subMatch[4] ? +subMatch[4] : undefined,\n file: subMatch[2],\n line: subMatch[3] ? +subMatch[3] : undefined,\n methodName: \"eval\",\n raw: line,\n type: \"eval\" as TraceType,\n };\n }\n }\n }\n\n const [methodName, file] = extractSafariExtensionDetails(\n // Normalize IE's 'Anonymous function'\n parts[1] ? parts[1].replace(/^Anonymous function$/, \"<anonymous>\") : UNKNOWN_FUNCTION,\n parts[2] as string,\n );\n\n const trace = {\n column: parts[4] ? +parts[4] : undefined,\n evalOrigin,\n file,\n line: parts[3] ? +parts[3] : undefined,\n // Normalize IE's 'Anonymous function'\n methodName,\n raw: line,\n type: (isEval ? \"eval\" : isNative ? \"native\" : undefined) as TraceType,\n };\n\n parseMapped(trace, `${file}:${parts[3]}:${parts[4]}`);\n\n return trace;\n }\n\n return undefined;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parseGecko = (line: string, topFrameMeta?: TopFrameMeta): Trace | undefined => {\n const parts = GECKO_REGEX.exec(line);\n\n if (parts) {\n debugLog(`parse gecko error stack line: \"${line}\"`, `found: ${JSON.stringify(parts)}`);\n\n const isEval = parts[3]?.includes(\" > eval\");\n const subMatch = isEval && parts[3] && GECKO_EVAL_REGEX.exec(parts[3]);\n\n let evalOrigin: Trace | undefined;\n\n if (isEval && subMatch) {\n // overwrite file\n parts[3] = <string>subMatch[1];\n\n evalOrigin = {\n column: parts[5] ? +parts[5] : undefined,\n file: parts[3],\n line: parts[4] ? +parts[4] : undefined,\n methodName: \"eval\",\n raw: line,\n type: \"eval\" as TraceType,\n };\n\n // overwrite line\n parts[4] = <string>subMatch[2];\n }\n\n const [methodName, file] = extractSafariExtensionDetails(\n // Normalize IE's 'Anonymous function'\n parts[1] ? parts[1].replace(/^Anonymous function$/, \"<anonymous>\") : UNKNOWN_FUNCTION,\n parts[3] as string,\n );\n\n let column: number | undefined; // no column when eval\n\n if ((topFrameMeta?.type === \"safari\" || (!isEval && topFrameMeta?.type === \"firefox\")) && topFrameMeta.column) {\n column = topFrameMeta.column;\n } else if (!isEval && parts[5]) {\n column = +parts[5];\n }\n\n let lineNumber: number | undefined; // no line when eval\n\n if ((topFrameMeta?.type === \"safari\" || (!isEval && topFrameMeta?.type === \"firefox\")) && topFrameMeta.line) {\n lineNumber = topFrameMeta.line;\n } else if (parts[4]) {\n lineNumber = +parts[4];\n }\n\n return {\n column,\n evalOrigin,\n file,\n line: lineNumber,\n methodName,\n raw: line,\n type: isEval ? \"eval\" : file.includes(\"[native code]\") ? \"native\" : undefined,\n };\n }\n\n return undefined;\n};\n\nconst parseFirefox = (line: string, topFrameMeta?: TopFrameMeta): Trace | undefined => {\n const parts = FIREFOX_REGEX.exec(line);\n\n const isEval = parts ? (parts[2] as string).includes(\" > eval\") : false;\n\n if (!isEval && parts) {\n debugLog(`parse firefox error stack line: \"${line}\"`, `found: ${JSON.stringify(parts)}`);\n\n return {\n column: parts[4] ? +parts[4] : topFrameMeta?.column ?? undefined,\n file: parts[2],\n line: parts[3] ? +parts[3] : topFrameMeta?.line ?? undefined,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n methodName: parts[1] || UNKNOWN_FUNCTION,\n raw: line,\n type: undefined,\n };\n }\n\n return undefined;\n};\n\nconst parseReactAndroidNative = (line: string): Trace | undefined => {\n const parts = REACT_ANDROID_NATIVE_REGEX.exec(line);\n\n if (parts) {\n debugLog(`parse react android native error stack line: \"${line}\"`, `found: ${JSON.stringify(parts)}`);\n\n return {\n column: parts[3] ? +parts[3] : undefined,\n file: parts[1],\n line: parts[2] ? +parts[2] : undefined,\n methodName: UNKNOWN_FUNCTION,\n raw: line,\n type: undefined,\n };\n }\n\n return undefined;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parse = (error: Error, options: Partial<{ frameLimit: number }> = {}): Trace[] => {\n const { frameLimit = 50 } = options;\n\n // @ts-expect-error missing stacktrace property\n let lines = (error.stacktrace ?? error.stack ?? \"\")\n .split(\"\\n\")\n .map((line: string): string => {\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, \"$1\") : line;\n\n // eslint-disable-next-line unicorn/prefer-string-replace-all\n return cleanedLine.replace(/^\\s+|\\s+$/g, \"\");\n })\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n // Skip eval code without more context\n .filter((line: string): boolean => !/\\S*Error: /.test(line) && line !== \"eval code\");\n\n if (lines.length > frameLimit) {\n lines = lines.slice(0, frameLimit);\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce,@typescript-eslint/no-unsafe-return\n return lines.reduce((stack: Trace[], line: string, currentIndex: number): Trace[] => {\n if (!line) {\n return stack;\n }\n\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n return stack;\n }\n\n let parseResult: Trace | undefined;\n\n if (/^\\s*in\\s.*/.test(line)) {\n parseResult = parseNode(line);\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n } else if (/^.*?\\s*at\\s.*/.test(line)) {\n parseResult = parseChromium(line);\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n } else if (/^.*?\\s*@.*|\\[native code\\]/.test(line)) {\n let topFrameMeta: TopFrameMeta | undefined;\n\n if (currentIndex === 0) {\n // @ts-expect-error columnNumber and lineNumber property only exists on Firefox\n if (error.columnNumber || error.lineNumber) {\n topFrameMeta = {\n // @ts-expect-error columnNumber and columnNumber property only exists on Firefox\n column: error.columnNumber,\n // @ts-expect-error columnNumber and lineNumber property only exists on Firefox\n line: error.lineNumber,\n type: \"firefox\",\n };\n // @ts-expect-error line and column property only exists on safari\n } else if (error.line || error.column) {\n topFrameMeta = {\n // @ts-expect-error column property only exists on safari\n column: error.column,\n // @ts-expect-error line property only exists on safari\n line: error.line,\n type: \"safari\",\n };\n }\n }\n\n parseResult =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n parseFirefox(line, topFrameMeta) || parseGecko(line, topFrameMeta);\n } else {\n parseResult = parseReactAndroidNative(line);\n }\n\n if (parseResult) {\n stack.push(parseResult);\n } else {\n debugLog(`parse error stack line: \"${line}\"`, \"not parser found\");\n }\n\n return stack;\n }, []);\n};\n\nexport default parse;\n"]}
@@ -7,4 +7,4 @@ ${n}`),n};
7
7
 
8
8
  export { q as a };
9
9
  //# sourceMappingURL=out.js.map
10
- //# sourceMappingURL=chunk-5DWOFJMB.js.map
10
+ //# sourceMappingURL=chunk-7OT5SHJH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/util/normalize-lf.ts","../src/util/process.ts","../src/code-frame/get-marker-lines.ts","../src/code-frame/index.ts"],"names":["normalizeLF","code","normalize_lf_default","_process","processShims","process","target","property","process_default","getMarkerLines","loc","source","linesAbove","linesBelow","startLoc","endLoc","startLine","startColumn","endLine","endColumn","start","end","lineDiff","markerLines","index","lineNumber","sourceLength","get_marker_lines_default","POINTER","codeFrame","options","config","value","hasColumns","lines","ln","numberMaxWidth","colorizeGutter","colorizeMarker","colorizeMessage","frame","line","number","hasMarker","paddedNumber","lastMarkerLine","gutter","markerLine","markerSpacing","numberOfMarkers"],"mappings":"AAAA,IAAMA,EAAeC,GAAyBA,EAAK,WAAW,qBAAsB;AAAA,CAAI,EAEjFC,EAAQF,ECGf,IAAMG,EAAY,WAAW,SAAW,OAAO,OAAO,IAAI,EAEpDC,EAAiC,CACnC,SAAU,CAAC,CACf,EAEMC,EAAU,IAAI,MAAeF,EAAU,CACzC,IAAIG,EAAQC,EAAyB,CACjC,GAAIA,KAAYD,EAEZ,OAAOA,EAAOC,CAAQ,EAG1B,GAAIA,KAAYH,EAEZ,OAAOA,EAAaG,CAAQ,CAIpC,CACJ,CAAC,EAEMC,EAAQH,ECVf,IAAMI,EAAiB,CACnBC,EACAC,EACAC,EACAC,IAMC,CACD,IAAMC,EAA8B,CAChC,OAAQ,EAER,KAAM,GACN,GAAGJ,EAAI,KACX,EACMK,EAA4B,CAC9B,GAAGD,EACH,GAAGJ,EAAI,GACX,EACMM,EAAYF,EAAS,KACrBG,EAAcH,EAAS,OACvBI,EAAUH,EAAO,KACjBI,EAAYJ,EAAO,OAErBK,EAAQ,KAAK,IAAIJ,GAAaJ,EAAa,GAAI,CAAC,EAChDS,EAAM,KAAK,IAAIV,EAAO,OAAQO,EAAUL,CAAU,EAElDG,IAAc,KACdI,EAAQ,GAGRF,IAAY,KACZG,EAAMV,EAAO,QAGjB,IAAMW,EAAWJ,EAAUF,EACrBO,EAA2B,CAAC,EAElC,GAAID,EAEA,QAASE,EAAQ,EAAGA,GAASF,EAAUE,IAAS,CAC5C,IAAMC,EAAaD,EAAQR,EAE3B,GAAI,CAACC,EAEDM,EAAYE,CAAU,EAAI,WACnBD,IAAU,EAAG,CACpB,IAAME,EAAef,EAAOc,EAAa,CAAC,GAAG,OAG7CF,EAAYE,CAAU,EAAI,CAACR,GAAcS,GAAgB,GAAKT,EAAc,CAAC,CACjF,SAAWO,IAAUF,EAEjBC,EAAYE,CAAU,EAAI,CAAC,EAAGN,CAAS,MACpC,CACH,IAAMO,EAAef,EAAOc,EAAaD,CAAK,GAAG,OAGjDD,EAAYE,CAAU,EAAI,CAAC,EAAGC,CAAY,CAC9C,CACJ,MACOT,IAAgBE,EAEvBI,EAAYP,CAAS,EAAIC,EAAc,CAACA,EAAa,CAAC,EAAI,GAG1DM,EAAYP,CAAS,EAAI,CAACC,GAAcE,GAAa,IAAMF,GAAe,EAAE,EAGhF,MAAO,CAAE,IAAAI,EAAK,YAAAE,EAAa,MAAAH,CAAM,CACrC,EAEOO,EAAQlB,EC5Ef,IAAMmB,EAAUpB,EAAQ,WAAa,SAAW,CAACA,EAAQ,KAAM,WAAgB,IAAM,SAGxEqB,EAAY,CACrBlB,EACAD,EACAoB,EAAqC,CAAC,IAE7B,CAET,IAAMC,EAAS,CACX,MAAO,CACH,OAASC,GAAkBA,EAC3B,OAASA,GAAkBA,EAC3B,QAAUA,GAAkBA,EAC5B,GAAGF,EAAQ,KACf,EACA,WAAY,EACZ,WAAY,EACZ,WAAY,GACZ,gBAAiB,GACjB,GAAGA,CACP,EAGMG,EAAavB,EAAI,OAAS,OAAOA,EAAI,MAAM,QAAW,SAEtDwB,EAAQhC,EAAYS,CAAM,EAC3B,MAAM;AAAA,CAAI,EACV,IAAKwB,GAAOA,EAAG,WAAW,IAAM,MAAM,CAAC,EAEtC,CAAE,IAAAd,EAAK,YAAAE,EAAa,MAAAH,CAAM,EAAIO,EAAejB,EAAKwB,EAAOH,EAAO,WAAYA,EAAO,UAAU,EAE7FK,EAAiB,OAAOf,CAAG,EAAE,OAE7B,CACF,OAAQgB,EACR,OAAQC,EACR,QAASC,CACb,EAAIR,EAAO,MAMPS,EAAQN,EACP,MAAMd,EAAOC,CAAG,EAChB,IAAI,CAACoB,EAAMjB,IAAU,CAClB,IAAMkB,EAAStB,EAAQ,EAAII,EAErBmB,EAAYpB,EAAYmB,CAAM,EAC9BE,EAAe,IAAIF,CAAM,GAAG,MAAM,CAACN,CAAc,EACjDS,EAAiB,CAACtB,EAAYmB,EAAS,CAAC,EAExCI,EAAS,IAAIF,CAAY,GAAGb,EAAO,WAAa,KAAO,EAAE,GAE/D,GAAIY,EAAW,CACX,IAAII,EAAa,GAEjB,GAAI,MAAM,QAAQJ,CAAS,EAAG,CAC1B,IAAMK,EAAgBP,EAAK,WAAW,SAAU,GAAG,EAAE,MAAM,EAAG,KAAK,IAAKE,EAAU,CAAC,EAAe,EAAG,CAAC,CAAC,EAEjGM,EAAkBN,EAAU,CAAC,GAAK,EAExCI,EAAa,CAAC;AAAA,GAAOV,EAAeS,EAAO,WAAW,MAAO,GAAG,CAAC,EAAG,IAAKE,EAAeV,EAAe,GAAG,EAAE,OAAOW,CAAe,CAAC,EAAE,KACjI,EACJ,EAEIJ,GAAkBd,EAAO,UACzBgB,GAAc,IAAIR,EAAgBR,EAAO,OAAO,CAAC,GAEzD,CAEA,MAAO,CAACO,EAAeV,CAAO,EAAGS,EAAeS,CAAM,EAAGL,EAAK,OAAS,EAAI,IAAIA,CAAI,GAAK,GAAIM,CAAU,EAAE,KAAK,EAAE,CACnH,CAEA,MAAO,IAAIV,EAAeS,CAAM,CAAC,GAAGL,EAAK,OAAS,EAAI,IAAIA,CAAI,GAAK,EAAE,EACzE,CAAC,EACA,KAAK;AAAA,CAAI,EAEd,OAAIV,EAAO,SAAW,CAACE,IACnBO,EAAQ,GAAG,IAAI,OAAOJ,EAAiB,CAAC,CAAC,GAAGL,EAAO,OAAO;AAAA,EAAKS,CAAK,IAGjEA,CACX","sourcesContent":["const normalizeLF = (code: string): string => code.replaceAll(/\\r\\n|\\r(?!\\n)|\\n/gu, \"\\n\");\n\nexport default normalizeLF;\n","interface Process extends Partial<Omit<typeof globalThis.process, \"versions\">> {\n versions: Record<string, string>;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-unnecessary-condition,no-underscore-dangle\nconst _process = (globalThis.process || Object.create(null)) as unknown as Process;\n\nconst processShims: Partial<Process> = {\n versions: {},\n};\n\nconst process = new Proxy<Process>(_process, {\n get(target, property: keyof Process) {\n if (property in target) {\n // eslint-disable-next-line security/detect-object-injection\n return target[property];\n }\n\n if (property in processShims) {\n // eslint-disable-next-line security/detect-object-injection\n return processShims[property];\n }\n\n return undefined;\n },\n});\n\nexport default process;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a copy of the codeFrame function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L68-L143\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\n/**\n * Extract what lines should be marked and highlighted.\n */\nimport type { CodeFrameLocation, CodeFrameNodeLocation } from \"./types\";\n\ntype MarkerLines = Record<number, true | [number | undefined, number | undefined]>;\n\nconst getMarkerLines = (\n loc: CodeFrameNodeLocation,\n source: string[],\n linesAbove: number,\n linesBelow: number,\n): {\n end: number;\n markerLines: MarkerLines;\n start: number;\n // eslint-disable-next-line sonarjs/cognitive-complexity\n} => {\n const startLoc: CodeFrameLocation = {\n column: 0,\n // @ts-expect-error Can be overwritten\n line: -1,\n ...loc.start,\n };\n const endLoc: CodeFrameLocation = {\n ...startLoc,\n ...loc.end,\n };\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (let index = 0; index <= lineDiff; index++) {\n const lineNumber = index + startLine;\n\n if (!startColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = true;\n } else if (index === 0) {\n const sourceLength = source[lineNumber - 1]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [startColumn, (sourceLength ?? 0) - startColumn + 1];\n } else if (index === lineDiff) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - index]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else if (startColumn === endColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = startColumn ? [startColumn, 0] : true;\n } else {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = [startColumn, (endColumn ?? 0) - (startColumn ?? 0)];\n }\n\n return { end, markerLines, start };\n};\n\nexport default getMarkerLines;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a modified copy of the codeFrameColumns function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L145-L217\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\nimport normalizeLF from \"../util/normalize-lf\";\nimport process from \"../util/process\";\nimport getMarkerLines from \"./get-marker-lines\";\nimport type { CodeFrameNodeLocation, CodeFrameOptions, ColorizeMethod } from \"./types\";\n\nconst POINTER = process.platform === \"win32\" && !process.env?.[\"WT_SESSION\"] ? \">\" : \"❯\";\n\n/** Generate a code frame from string and an error location */\nexport const codeFrame = (\n source: string,\n loc: CodeFrameNodeLocation,\n options: Partial<CodeFrameOptions> = {},\n // eslint-disable-next-line sonarjs/cognitive-complexity\n): string => {\n // grab 2 lines before, and 3 lines after focused line\n const config = {\n color: {\n gutter: (value: string) => value,\n marker: (value: string) => value,\n message: (value: string) => value,\n ...options.color,\n },\n linesAbove: 2,\n linesBelow: 3,\n showGutter: true,\n showLineNumbers: true,\n ...options,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const lines = normalizeLF(source)\n .split(\"\\n\")\n .map((ln) => ln.replaceAll(\"\\t\", \" \"));\n\n const { end, markerLines, start } = getMarkerLines(loc, lines, config.linesAbove, config.linesBelow);\n\n const numberMaxWidth = String(end).length;\n\n const {\n gutter: colorizeGutter,\n marker: colorizeMarker,\n message: colorizeMessage,\n } = config.color as {\n gutter: ColorizeMethod;\n marker: ColorizeMethod;\n message: ColorizeMethod;\n };\n\n let frame = lines\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n // eslint-disable-next-line security/detect-object-injection\n const hasMarker = markerLines[number];\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const lastMarkerLine = !markerLines[number + 1];\n\n const gutter = ` ${paddedNumber}${config.showGutter ? ` |` : \"\"}`;\n\n if (hasMarker) {\n let markerLine = \"\";\n\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.replaceAll(/[^\\t]/g, \" \").slice(0, Math.max((hasMarker[0] as number) - 1, 0));\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\"\\n \", colorizeGutter(gutter.replaceAll(/\\d/g, \" \")), \" \", markerSpacing, colorizeMarker(\"^\").repeat(numberOfMarkers)].join(\n \"\",\n );\n\n if (lastMarkerLine && config.message) {\n markerLine += ` ${colorizeMessage(config.message)}`;\n }\n }\n\n return [colorizeMarker(POINTER), colorizeGutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n }\n\n return ` ${colorizeGutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n })\n .join(\"\\n\");\n\n if (config.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${config.message}\\n${frame}`;\n }\n\n return frame;\n};\n\nexport type { CodeFrameNodeLocation, CodeFrameOptions, ColorizeMethod } from \"./types\";\n"]}
@@ -2,4 +2,4 @@ var d=Object.defineProperty;var e=(b,a,c)=>a in b?d(b,a,{enumerable:!0,configura
2
2
 
3
3
  export { f as a };
4
4
  //# sourceMappingURL=out.js.map
5
- //# sourceMappingURL=chunk-7Q3PPTBP.js.map
5
+ //# sourceMappingURL=chunk-GQSCBKA6.js.map
@@ -0,0 +1,13 @@
1
+ import { readFileSync } from 'fs';
2
+ import { dirname, resolve } from 'path';
3
+ import { AnyMap } from '@jridgewell/trace-mapping';
4
+ export { generatedPositionFor as b, originalPositionFor as c, sourceContentFor as d, traceSegment as e } from '@jridgewell/trace-mapping';
5
+
6
+ var l=/^data:application\/json[^,]+base64,/,f=/\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+)[ \t]*$|\/\*[@#][ \t]+sourceMappingURL=([^*]+?)[ \t]*\*\/[ \t]*$/,c=e=>l.test(e),m=(e,n)=>{let o=e.split(/\r?\n/),t=null;for(let r=o.length-1;r>=0&&!t;r--)t=f.exec(o[r]);if(t)return c(t[1])?t[1]:resolve(n,t[1])},M=e=>{let n=e.slice(e.indexOf(",")+1);return Buffer.from(n,"base64").toString()},y=e=>{let n;try{n=readFileSync(e,{encoding:"utf8"});}catch(r){throw r.message=`Error reading sourcemap for file "${e}":
7
+ ${r.message}`,r}let o=m(n,dirname(e));if(!o)return;let t;if(c(o))t=M(o);else try{t=readFileSync(o,{encoding:"utf8"});}catch(r){throw r.message=`Error reading sourcemap for file "${e}":
8
+ ${r.message}`,r}try{return new AnyMap(t,o)}catch(r){throw r.message=`Error parsing sourcemap for file "${e}":
9
+ ${r.message}`,r}},p=y;
10
+
11
+ export { p as a };
12
+ //# sourceMappingURL=out.js.map
13
+ //# sourceMappingURL=chunk-ONFIDS3C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sourcemap/load-source-map.ts","../src/sourcemap/sourcemap.ts"],"names":["readFileSync","dirname","resolve","AnyMap","INLINE_SOURCEMAP_REGEX","SOURCEMAP_REGEX","isInlineMap","url","resolveSourceMapUrl","sourceFile","sourcePath","lines","sourceMapUrl","index","decodeInlineMap","data","rawData","loadSourceMap","filename","sourceMapContent","error","traceMapContent","load_source_map_default","generatedPositionFor","originalPositionFor","sourceContentFor","traceSegment"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,KAC7B,OAAS,WAAAC,EAAS,WAAAC,MAAe,OAGjC,OAAS,UAAAC,MAAc,4BAEvB,IAAMC,EAAyB,sCAEzBC,EAAkB,4GAElBC,EAAeC,GAAyBH,EAAuB,KAAKG,CAAG,EAEvEC,EAAsB,CAACC,EAAoBC,IAA2C,CACxF,IAAMC,EAAQF,EAAW,MAAM,OAAO,EAElCG,EAAe,KAGnB,QAASC,EAAQF,EAAM,OAAS,EAAGE,GAAS,GAAK,CAACD,EAAcC,IAE5DD,EAAeP,EAAgB,KAAKM,EAAME,CAAK,CAAW,EAG9D,GAAKD,EAIL,OAAON,EAAYM,EAAa,CAAC,CAAW,EAAKA,EAAa,CAAC,EAAgBV,EAAQQ,EAAYE,EAAa,CAAC,CAAW,CAChI,EAEME,EAAmBC,GAAiB,CACtC,IAAMC,EAAUD,EAAK,MAAMA,EAAK,QAAQ,GAAG,EAAI,CAAC,EAEhD,OAAO,OAAO,KAAKC,EAAS,QAAQ,EAAE,SAAS,CACnD,EAEMC,EAAiBC,GAA2C,CAC9D,IAAIC,EAEJ,GAAI,CAEAA,EAAmBnB,EAAakB,EAAU,CAAE,SAAU,MAAO,CAAC,CAElE,OAASE,EAAY,CACjB,MAAAA,EAAM,QAAU,qCAAqCF,CAAQ;AAAA,EAAOE,EAAM,OAAO,GAE3EA,CACV,CAEA,IAAMR,EAAeJ,EAAoBW,EAAkBlB,EAAQiB,CAAQ,CAAC,EAE5E,GAAI,CAACN,EACD,OAGJ,IAAIS,EAGJ,GAAIf,EAAYM,CAAY,EACxBS,EAAkBP,EAAgBF,CAAY,MAE9C,IAAI,CAGAS,EAAkBrB,EAAaY,EAAc,CAAE,SAAU,MAAO,CAAC,CAErE,OAASQ,EAAY,CACjB,MAAAA,EAAM,QAAU,qCAAqCF,CAAQ;AAAA,EAAOE,EAAM,OAAO,GAE3EA,CACV,CAGJ,GAAI,CACA,OAAO,IAAIjB,EAAOkB,EAAiBT,CAAY,CAEnD,OAASQ,EAAY,CACjB,MAAAA,EAAM,QAAU,qCAAqCF,CAAQ;AAAA,EAAOE,EAAM,OAAO,GAE3EA,CACV,CACJ,EAEOE,EAAQL,ECjFf,OAAS,wBAAAM,EAAsB,uBAAAC,EAAqB,oBAAAC,EAAkB,gBAAAC,MAAoB","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { dirname, resolve } from \"node:path\";\n\nimport type { TraceMap } from \"@jridgewell/trace-mapping\";\nimport { AnyMap } from \"@jridgewell/trace-mapping\";\n\nconst INLINE_SOURCEMAP_REGEX = /^data:application\\/json[^,]+base64,/;\n// eslint-disable-next-line regexp/no-unused-capturing-group,regexp/no-super-linear-backtracking\nconst SOURCEMAP_REGEX = /\\/\\/[@#][ \\t]+sourceMappingURL=([^\\s'\"]+)[ \\t]*$|\\/\\*[@#][ \\t]+sourceMappingURL=([^*]+?)[ \\t]*\\*\\/[ \\t]*$/;\n\nconst isInlineMap = (url: string): boolean => INLINE_SOURCEMAP_REGEX.test(url);\n\nconst resolveSourceMapUrl = (sourceFile: string, sourcePath: string): string | undefined => {\n const lines = sourceFile.split(/\\r?\\n/);\n\n let sourceMapUrl = null;\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = lines.length - 1; index >= 0 && !sourceMapUrl; index--) {\n // eslint-disable-next-line security/detect-object-injection\n sourceMapUrl = SOURCEMAP_REGEX.exec(lines[index] as string);\n }\n\n if (!sourceMapUrl) {\n return undefined;\n }\n\n return isInlineMap(sourceMapUrl[1] as string) ? (sourceMapUrl[1] as string) : (resolve(sourcePath, sourceMapUrl[1] as string) as string);\n};\n\nconst decodeInlineMap = (data: string) => {\n const rawData = data.slice(data.indexOf(\",\") + 1);\n\n return Buffer.from(rawData, \"base64\").toString();\n};\n\nconst loadSourceMap = (filename: string): TraceMap | undefined => {\n let sourceMapContent: string | undefined;\n\n try {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n sourceMapContent = readFileSync(filename, { encoding: \"utf8\" });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n error.message = `Error reading sourcemap for file \"${filename}\":\\n${error.message}`;\n\n throw error;\n }\n\n const sourceMapUrl = resolveSourceMapUrl(sourceMapContent, dirname(filename));\n\n if (!sourceMapUrl) {\n return undefined;\n }\n\n let traceMapContent: string | undefined;\n\n // If it's an inline map, decode it and pass it through the same consumer factory\n if (isInlineMap(sourceMapUrl)) {\n traceMapContent = decodeInlineMap(sourceMapUrl);\n } else {\n try {\n // Load actual source map from given path\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n traceMapContent = readFileSync(sourceMapUrl, { encoding: \"utf8\" });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n error.message = `Error reading sourcemap for file \"${filename}\":\\n${error.message}`;\n\n throw error;\n }\n }\n\n try {\n return new AnyMap(traceMapContent, sourceMapUrl);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n error.message = `Error parsing sourcemap for file \"${filename}\":\\n${error.message}`;\n\n throw error;\n }\n};\n\nexport default loadSourceMap;\n","export { default as loadSourceMap } from \"./load-source-map\";\nexport type { TraceMap } from \"@jridgewell/trace-mapping\";\nexport { generatedPositionFor, originalPositionFor, sourceContentFor, traceSegment } from \"@jridgewell/trace-mapping\";\n"]}
@@ -0,0 +1,8 @@
1
+ import { a } from './chunk-GQSCBKA6.js';
2
+ import { inspect } from 'util';
3
+
4
+ var d=i=>{let s=new Set,r=[],t=i;for(;t;){if(s.has(t)){console.error(`Circular reference detected in error causes: ${inspect(i)}`);break}if(r.push(t),s.add(t),!t.cause)break;t=t.cause;}return r},f=d;var b=i=>i instanceof Error&&i.type==="VisulimaError",o=class extends Error{constructor(r,...t){super(...t);a(this,"loc");a(this,"title");a(this,"hint");a(this,"type","VisulimaError");let{hint:u,location:l,message:n,name:p,stack:E,title:m}=r;this.title=m,this.name=p,n&&(this.message=n),this.stack=E??this.stack,this.loc=l,this.hint=u,Error.captureStackTrace(this,this.constructor);}setLocation(r){this.loc=r;}setName(r){this.name=r;}setMessage(r){this.message=r;}setHint(r){this.hint=r;}};
5
+
6
+ export { f as a, b, o as c };
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=chunk-YOONH3EZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/error/get-error-causes.ts","../src/error/visulima-error.ts"],"names":["inspect","getErrorCauses","error","seen","causes","currentError","get_error_causes_default","isVisulimaError","VisulimaError","properties","parameters","__publicField","hint","location","message","name","stack","title"],"mappings":"wCAAA,OAAS,WAAAA,MAAe,OAQxB,IAAMC,EAAuDC,GAAkB,CAC3E,IAAMC,EAAO,IAAI,IACXC,EAAS,CAAC,EAGZC,EAAwBH,EAG5B,KAAOG,GAAc,CAEjB,GAAIF,EAAK,IAAIE,CAAY,EAAG,CAExB,QAAQ,MAAM,gDAAgDL,EAAQE,CAAK,CAAC,EAAE,EAE9E,KACJ,CAKA,GAHAE,EAAO,KAAKC,CAAY,EACxBF,EAAK,IAAIE,CAAY,EAEjB,CAACA,EAAa,MACd,MAGJA,EAAeA,EAAa,KAChC,CAEA,OAAOD,CACX,EAEOE,EAAQL,ECpCR,IAAMM,EAAmBL,GAA2CA,aAAiB,OAAUA,EAAwB,OAAS,gBAE1HM,EAAN,cAA4B,KAAM,CAa9B,YAAYC,KAAgCC,EAAiB,CAEhE,MAAM,GAAGA,CAAU,EAdvBC,EAAA,KAAO,OAEPA,EAAA,KAAO,SAKPA,EAAA,KAAO,QAEPA,EAAA,KAAO,OAAO,iBAOV,GAAM,CAAE,KAAAC,EAAM,SAAAC,EAAU,QAAAC,EAAS,KAAAC,EAAM,MAAAC,EAAO,MAAAC,CAAM,EAAIR,EACxD,KAAK,MAAQQ,EACb,KAAK,KAAOF,EAERD,IACA,KAAK,QAAUA,GAInB,KAAK,MAAQE,GAAU,KAAK,MAC5B,KAAK,IAAMH,EACX,KAAK,KAAOD,EAEZ,MAAM,kBAAkB,KAAM,KAAK,WAAW,CAClD,CAEO,YAAYC,EAA+B,CAC9C,KAAK,IAAMA,CACf,CAEO,QAAQE,EAAoB,CAC/B,KAAK,KAAOA,CAChB,CAEO,WAAWD,EAAuB,CACrC,KAAK,QAAUA,CACnB,CAEO,QAAQF,EAAuB,CAClC,KAAK,KAAOA,CAChB,CACJ","sourcesContent":["import { inspect } from \"node:util\";\n\nimport type { VisulimaError } from \"./visulima-error\";\n\n/**\n * Will return an array of all causes in the error in the order they occurred.\n */\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nconst getErrorCauses = <E = Error | VisulimaError | unknown>(error: E): E[] => {\n const seen = new Set();\n const causes = [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-redundant-type-constituents\n let currentError: E | any = error;\n\n // eslint-disable-next-line no-loops/no-loops\n while (currentError) {\n // Check for circular reference\n if (seen.has(currentError)) {\n // eslint-disable-next-line no-console\n console.error(`Circular reference detected in error causes: ${inspect(error)}`);\n\n break;\n }\n\n causes.push(currentError);\n seen.add(currentError);\n\n if (!currentError.cause) {\n break;\n }\n\n currentError = currentError.cause;\n }\n\n return causes as E[];\n};\n\nexport default getErrorCauses;\n","import type { ErrorHint, ErrorLocation, ErrorProperties } from \"./types\";\n\nexport const isVisulimaError = (error: unknown): error is VisulimaError => error instanceof Error && (error as VisulimaError).type === \"VisulimaError\";\n\nexport class VisulimaError extends Error {\n public loc: ErrorLocation | undefined;\n\n public title: string | undefined;\n\n /**\n * A message that explains to the user how they can fix the error.\n */\n public hint: ErrorHint | undefined;\n\n public type = \"VisulimaError\";\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\n public constructor(properties: ErrorProperties, ...parameters: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n super(...parameters);\n\n const { hint, location, message, name, stack, title } = properties;\n this.title = title;\n this.name = name;\n\n if (message) {\n this.message = message;\n }\n\n // Only set this if we actually have a stack passed, otherwise uses Error's\n this.stack = stack ?? (this.stack as string);\n this.loc = location;\n this.hint = hint;\n\n Error.captureStackTrace(this, this.constructor);\n }\n\n public setLocation(location: ErrorLocation): void {\n this.loc = location;\n }\n\n public setName(name: string): void {\n this.name = name;\n }\n\n public setMessage(message: string): void {\n this.message = message;\n }\n\n public setHint(hint: ErrorHint): void {\n this.hint = hint;\n }\n}\n"]}
@@ -1,6 +1,25 @@
1
- import { C as CodeFrameNodeLocation, a as CodeFrameOptions } from '../types-4e2de6f5.js';
2
- export { b as ColorizeMethod } from '../types-4e2de6f5.js';
1
+ type CodeFrameLocation = {
2
+ column?: number;
3
+ line: number;
4
+ };
5
+ type CodeFrameNodeLocation = {
6
+ end?: CodeFrameLocation;
7
+ start: CodeFrameLocation;
8
+ };
9
+ type ColorizeMethod = (value: string) => string;
10
+ type CodeFrameOptions = {
11
+ color?: Partial<{
12
+ gutter: ColorizeMethod;
13
+ marker: ColorizeMethod;
14
+ message: ColorizeMethod;
15
+ }>;
16
+ linesAbove?: number;
17
+ linesBelow?: number;
18
+ message?: string;
19
+ showGutter?: boolean;
20
+ showLineNumbers?: boolean;
21
+ };
3
22
 
4
23
  declare const codeFrame: (source: string, loc: CodeFrameNodeLocation, options?: Partial<CodeFrameOptions>) => string;
5
24
 
6
- export { CodeFrameNodeLocation, CodeFrameOptions, codeFrame };
25
+ export { type CodeFrameNodeLocation, type CodeFrameOptions, type ColorizeMethod, codeFrame };
@@ -1,4 +1,4 @@
1
- export { a as codeFrame } from '../chunk-5DWOFJMB.js';
2
- import '../chunk-7Q3PPTBP.js';
1
+ export { a as codeFrame } from '../chunk-7OT5SHJH.js';
2
+ import '../chunk-GQSCBKA6.js';
3
3
  //# sourceMappingURL=out.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,31 @@
1
+ declare const getErrorCauses: <E = unknown>(error: E) => E[];
2
+
3
+ interface ErrorProperties {
4
+ hint?: ErrorHint;
5
+ location?: ErrorLocation;
6
+ message?: string;
7
+ name: string;
8
+ stack?: string;
9
+ title?: string;
10
+ }
11
+ interface ErrorLocation {
12
+ column?: number;
13
+ file?: string;
14
+ line?: number;
15
+ }
16
+ type ErrorHint = string[] | string;
17
+
18
+ declare const isVisulimaError: (error: unknown) => error is VisulimaError;
19
+ declare class VisulimaError extends Error {
20
+ loc: ErrorLocation | undefined;
21
+ title: string | undefined;
22
+ hint: ErrorHint | undefined;
23
+ type: string;
24
+ constructor(properties: ErrorProperties, ...parameters: any);
25
+ setLocation(location: ErrorLocation): void;
26
+ setName(name: string): void;
27
+ setMessage(message: string): void;
28
+ setHint(hint: ErrorHint): void;
29
+ }
30
+
31
+ export { type ErrorHint, type ErrorLocation, type ErrorProperties, VisulimaError, getErrorCauses, isVisulimaError };
@@ -0,0 +1,4 @@
1
+ export { c as VisulimaError, a as getErrorCauses, b as isVisulimaError } from '../chunk-YOONH3EZ.js';
2
+ import '../chunk-GQSCBKA6.js';
3
+ //# sourceMappingURL=out.js.map
4
+ //# sourceMappingURL=index.js.map
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- export { codeFrame } from './code-frame/index.js';
2
- export { C as CodeFrameNodeLocation, a as CodeFrameOptions, b as ColorizeMethod, E as ErrorLocation, c as ErrorProperties, d as ErrorWithMetadata, T as Trace } from './types-4e2de6f5.js';
3
- export { VisulimaError, isVisulimaError } from './error.js';
4
- export { loadSourceMap } from './sourcemap.js';
1
+ export { CodeFrameNodeLocation, CodeFrameOptions, ColorizeMethod, codeFrame } from './code-frame/index.js';
2
+ export { ErrorHint, ErrorLocation, ErrorProperties, VisulimaError, getErrorCauses, isVisulimaError } from './error/index.js';
3
+ export { loadSourceMap } from './sourcemap/index.js';
5
4
  export { TraceMap, generatedPositionFor, originalPositionFor, sourceContentFor, traceSegment } from '@jridgewell/trace-mapping';
6
- export { parseStacktrace } from './stacktrace.js';
5
+ export { Trace, TraceType, parseStacktrace } from './stacktrace/index.js';
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- export { a as codeFrame } from './chunk-5DWOFJMB.js';
2
- export { b as VisulimaError, a as isVisulimaError } from './chunk-X3TE67TZ.js';
3
- export { a as parseStacktrace } from './chunk-26F4MLO2.js';
4
- export { b as generatedPositionFor, a as loadSourceMap, c as originalPositionFor, d as sourceContentFor, e as traceSegment } from './chunk-F52HEHA7.js';
5
- import './chunk-7Q3PPTBP.js';
1
+ export { a as codeFrame } from './chunk-7OT5SHJH.js';
2
+ export { c as VisulimaError, a as getErrorCauses, b as isVisulimaError } from './chunk-YOONH3EZ.js';
3
+ export { b as generatedPositionFor, a as loadSourceMap, c as originalPositionFor, d as sourceContentFor, e as traceSegment } from './chunk-ONFIDS3C.js';
4
+ export { a as parseStacktrace } from './chunk-57YC2IM6.js';
5
+ import './chunk-GQSCBKA6.js';
6
6
  //# sourceMappingURL=out.js.map
7
7
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { b as generatedPositionFor, a as loadSourceMap, c as originalPositionFor, d as sourceContentFor, e as traceSegment } from './chunk-F52HEHA7.js';
2
- import './chunk-7Q3PPTBP.js';
1
+ export { b as generatedPositionFor, a as loadSourceMap, c as originalPositionFor, d as sourceContentFor, e as traceSegment } from '../chunk-ONFIDS3C.js';
2
+ import '../chunk-GQSCBKA6.js';
3
3
  //# sourceMappingURL=out.js.map
4
- //# sourceMappingURL=sourcemap.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,16 @@
1
+ type TraceType = "eval" | "internal" | "native" | undefined;
2
+ interface Trace {
3
+ column: number | undefined;
4
+ evalOrigin?: Trace | undefined;
5
+ file: string | undefined;
6
+ line: number | undefined;
7
+ methodName: string | undefined;
8
+ raw: string;
9
+ type?: TraceType | undefined;
10
+ }
11
+
12
+ declare const parse: (error: Error, options?: Partial<{
13
+ frameLimit: number;
14
+ }>) => Trace[];
15
+
16
+ export { type Trace, type TraceType, parse as parseStacktrace };
@@ -0,0 +1,4 @@
1
+ export { a as parseStacktrace } from '../chunk-57YC2IM6.js';
2
+ import '../chunk-GQSCBKA6.js';
3
+ //# sourceMappingURL=out.js.map
4
+ //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/error",
3
- "version": "2.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Error with more than just a message, stacktrace parsing and sourcemap loading.",
5
5
  "keywords": [
6
6
  "visulima",
@@ -55,20 +55,20 @@
55
55
  },
56
56
  "./error": {
57
57
  "import": {
58
- "types": "./dist/error.d.ts",
59
- "default": "./dist/error.js"
58
+ "types": "./dist/error/index.d.ts",
59
+ "default": "./dist/error/index.js"
60
60
  }
61
61
  },
62
62
  "./sourcemap": {
63
63
  "import": {
64
- "types": "./dist/sourcemap.d.ts",
65
- "default": "./dist/sourcemap.js"
64
+ "types": "./dist/sourcemap/index.d.ts",
65
+ "default": "./dist/sourcemap/index.js"
66
66
  }
67
67
  },
68
68
  "./stacktrace": {
69
69
  "import": {
70
- "types": "./dist/stacktrace.d.ts",
71
- "default": "./dist/stacktrace.js"
70
+ "types": "./dist/stacktrace/index.d.ts",
71
+ "default": "./dist/stacktrace/index.js"
72
72
  }
73
73
  },
74
74
  "./package.json": "./package.json"
@@ -84,7 +84,6 @@
84
84
  "build": "rimraf dist && cross-env NODE_ENV=development tsup",
85
85
  "build:prod": "rimraf dist && cross-env NODE_ENV=production tsup",
86
86
  "clean": "rimraf node_modules dist .eslintcache",
87
- "coverage": "vitest run --coverage",
88
87
  "dev": "pnpm run build --watch",
89
88
  "lint:eslint": "eslint . --ext js,cjs,mjs,jsx,ts,tsx,json,yaml,yml,md,mdx --max-warnings=0 --config .eslintrc.cjs",
90
89
  "lint:eslint:fix": "eslint . --ext js,cjs,mjs,jsx,ts,tsx,json,yaml,yml,md,mdx --max-warnings=0 --config .eslintrc.cjs --fix",
@@ -93,6 +92,8 @@
93
92
  "lint:prettier:fix": "prettier --config=.prettierrc.cjs --write .",
94
93
  "lint:types": "tsc --noEmit --project tsconfig.json",
95
94
  "test": "vitest run",
95
+ "test:coverage": "vitest run --coverage",
96
+ "test:ui": "vitest --ui --coverage.enabled=true",
96
97
  "test:watch": "vitest"
97
98
  },
98
99
  "dependencies": {
@@ -112,8 +113,9 @@
112
113
  "@total-typescript/ts-reset": "^0.5.1",
113
114
  "@types/command-line-args": "^5.2.3",
114
115
  "@types/node": "18.18.5",
115
- "@visulima/nextra-theme-docs": "4.0.10",
116
- "@vitest/coverage-v8": "^0.34.6",
116
+ "@visulima/nextra-theme-docs": "4.0.11",
117
+ "@vitest/coverage-v8": "^1.0.1",
118
+ "@vitest/ui": "^1.0.1",
117
119
  "cross-env": "^7.0.3",
118
120
  "eslint": "^8.55.0",
119
121
  "eslint-plugin-deprecation": "^2.0.0",
@@ -123,11 +125,11 @@
123
125
  "eslint-plugin-vitest-globals": "^1.4.0",
124
126
  "prettier": "^3.1.0",
125
127
  "rimraf": "^5.0.5",
126
- "semantic-release": "^22.0.8",
128
+ "semantic-release": "^22.0.10",
127
129
  "sort-package-json": "^2.6.0",
128
130
  "tsup": "^8.0.1",
129
131
  "typescript": "^5.3.2",
130
- "vitest": "^0.34.6"
132
+ "vitest": "^1.0.1"
131
133
  },
132
134
  "engines": {
133
135
  "node": ">=18.* <=21.*"
@@ -152,8 +154,8 @@
152
154
  "sources": [
153
155
  "src/index.ts",
154
156
  "src/code-frame/index.ts",
155
- "src/error.ts",
156
- "src/stacktrace.ts",
157
- "src/sourcemap.ts"
157
+ "src/error/index.ts",
158
+ "src/sourcemap/index.ts",
159
+ "src/stacktrace/index.ts"
158
160
  ]
159
161
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/parse-stacktrace.ts"],"names":["debugLog","message","arguments_","UNKNOWN_FUNCTION","CHROMIUM_REGEX","CHROMIUM_EVAL_REGEX","CHROMIUM_MAPPED","NODE_REGEX","NODE_NESTED_REGEX","REACT_ANDROID_NATIVE_REGEX","GECKO_REGEX","GECKO_EVAL_REGEX","FIREFOX_REGEX","WEBPACK_ERROR_REGEXP","extractSafariExtensionDetails","methodName","url","isSafariExtension","isSafariWebExtension","parseMapped","trace","maybeMapped","match","parseNode","line","nestedNode","split","node","parseChromium","parts","isNative","isEval","evalOrigin","subMatch","file","parseGecko","topFrameMeta","column","lineNumber","parseFirefox","parseReactAndroidNative","parse","error","options","frameLimit","lines","stack","currentIndex","parseResult","parse_stacktrace_default"],"mappings":"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","sourcesContent":["import type { Trace, TraceType } from \"./types\";\n\ntype TopFrameMeta = {\n column?: number;\n line?: number;\n type: \"firefox\" | \"safari\";\n};\n\nconst debugLog = (message: string, ...arguments_: unknown[]): void => {\n if (process.env[\"DEBUG\"] && String(process.env[\"DEBUG\"]) === \"true\") {\n // eslint-disable-next-line no-console\n console.debug(`error:parse-stacktrace: ${message}`, ...arguments_);\n }\n};\n\nconst UNKNOWN_FUNCTION = \"<unknown>\";\n\n// at <SomeFramework>\n// at <SomeFramework>:123:39\n// -----------------\n// at about:blank:1:7\n// at index.js:23\n// >= Chrome 99\n// at /projects/foo.test.js:689:1 <- /projects/foo.test.js:10:1\n// -----------------\n// at bar (<anonymous>:1:19 <- <anonymous>:2:3)\n// -----------------\n// at foo.bar(bob) (foo.bar.js:123:39)\n// at foo.bar(bob) (foo.bar.js:123:39 <- original.js:123:34)\n// -----------------\n// >= Chrome 88\n// spy() at Component.Foo [as constructor] (original.js:123:34)\n// spy() at Component.Foo [as constructor] (foo.bar.js:123:39 <- original.js:123:34)\n// -----------------\n// at Module.load (internal/modules/cjs/loader.js:641:32)\n// -----------------\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst CHROMIUM_REGEX =\n // eslint-disable-next-line security/detect-unsafe-regex,regexp/no-super-linear-backtracking\n /^.*?\\s*at\\s(?:(.+?\\)(?:\\s\\[.+\\])?|\\(?.*?)\\s?\\((?:address\\sat\\s)?)?(?:async\\s)?((?:<anonymous>|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// eslint-disable-next-line security/detect-unsafe-regex\nconst CHROMIUM_EVAL_REGEX = /\\((\\S+)\\),\\s(<[^>]+>)?:(\\d+)?:(\\d+)?\\)?/;\n// foo.bar.js:123:39\n// foo.bar.js:123:39 <- original.js:123:34\n// eslint-disable-next-line security/detect-unsafe-regex,regexp/no-unused-capturing-group\nconst CHROMIUM_MAPPED = /(.*?):(\\d+):(\\d+)(\\s<-\\s(.+):(\\d+):(\\d+))?/;\n\n// in AppProviders (at App.tsx:28)\n// eslint-disable-next-line security/detect-unsafe-regex\nconst NODE_REGEX = /^\\s*in\\s(?:([^\\\\/]+(?:\\s\\[as\\s\\S+\\])?)\\s\\(?)?\\(at?\\s?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/;\nconst NODE_NESTED_REGEX = /in\\s(.*)\\s\\(at\\s(.+)\\)\\sat/;\n\n// eslint-disable-next-line security/detect-unsafe-regex,regexp/no-super-linear-backtracking\nconst REACT_ANDROID_NATIVE_REGEX = /^(?:.*@)?(.*):(\\d+):(\\d+)$/;\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\n// eslint-disable-next-line regexp/no-super-linear-backtracking,security/detect-unsafe-regex,regexp/no-optional-assertion,regexp/no-trivially-nested-quantifier,regexp/no-useless-escape,no-useless-escape,regexp/optimal-quantifier-concatenation\nconst GECKO_REGEX = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. \\/=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n// eslint-disable-next-line security/detect-unsafe-regex\nconst GECKO_EVAL_REGEX = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\n// @http://localhost:8080/file.js:33:9\n// foo@debugger eval code:1:27\n// obj[\"@fn\"]@Scratchpad/1:10:29\n// eslint-disable-next-line regexp/no-super-linear-backtracking\nconst FIREFOX_REGEX = /(\\S[^\\s[]*\\[.*\\]|.*?)@(.*):(\\d+):(\\d+)/;\n\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (methodName: string, url: string): [string, string] => {\n const isSafariExtension = methodName.includes(\"safari-extension\");\n const isSafariWebExtension = methodName.includes(\"safari-web-extension\");\n\n return isSafariExtension || isSafariWebExtension\n ? [\n methodName.includes(\"@\") ? (methodName.split(\"@\")[0] as string) : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${url}` : `safari-web-extension:${url}`,\n ]\n : [methodName, url];\n};\n\nconst parseMapped = (trace: Trace, maybeMapped: string) => {\n const match = CHROMIUM_MAPPED.exec(maybeMapped);\n\n if (match) {\n // eslint-disable-next-line no-param-reassign,prefer-destructuring\n trace.file = match[1];\n // eslint-disable-next-line no-param-reassign\n trace.line = +(<string>match[2]);\n // eslint-disable-next-line no-param-reassign\n trace.column = +(<string>match[3]);\n }\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parseNode = (line: string): Trace | undefined => {\n const nestedNode = NODE_NESTED_REGEX.exec(line);\n\n if (nestedNode) {\n debugLog(`parse nested node error stack line: \"${line}\"`, `found: ${JSON.stringify(nestedNode)}`);\n\n const split = (nestedNode[2] as string).split(\":\");\n\n return {\n column: split[2] ? +split[2] : undefined,\n file: split[0],\n line: split[1] ? +split[1] : undefined,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n methodName: nestedNode[1] || UNKNOWN_FUNCTION,\n raw: line,\n type: undefined,\n };\n }\n\n const node = NODE_REGEX.exec(line);\n\n if (node) {\n debugLog(`parse node error stack line: \"${line}\"`, `found: ${JSON.stringify(node)}`);\n\n const trace = {\n column: node[4] ? +node[4] : undefined,\n file: node[2] ? node[2].replace(/at\\s/, \"\") : undefined,\n line: node[3] ? +node[3] : undefined,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n methodName: node[1] || UNKNOWN_FUNCTION,\n raw: line,\n type: line.startsWith(\"internal\") ? (\"internal\" as TraceType) : undefined,\n };\n\n parseMapped(trace, `${node[2]}:${node[3]}:${node[4]}`);\n\n return trace;\n }\n\n return undefined;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parseChromium = (line: string): Trace | undefined => {\n const parts = CHROMIUM_REGEX.exec(line) as (string | undefined)[] | null;\n\n if (parts) {\n debugLog(`parse chrome error stack line: \"${line}\"`, `found: ${JSON.stringify(parts)}`);\n\n const isNative = parts[2] && parts[2].startsWith(\"native\"); // start of line\n const isEval = (parts[2] && parts[2].startsWith(\"eval\")) || (parts[1] && parts[1].startsWith(\"eval\")); // start of line\n\n let evalOrigin: Trace | undefined;\n\n if (isEval) {\n const subMatch = CHROMIUM_EVAL_REGEX.exec(line);\n\n if (subMatch) {\n // can be index.js:123:39 or index.js:123 or index.js\n const split = /(\\S+):(\\d+):(\\d+)|(\\S+):(\\d+)$/.exec(subMatch[1] as string);\n\n if (split) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = split[4] ?? split[1]; // url\n parts[3] = split[5] ?? split[2]; // line\n // eslint-disable-next-line prefer-destructuring\n parts[4] = split[3]; // column\n } else if (subMatch[2]) {\n // eslint-disable-next-line prefer-destructuring\n parts[2] = subMatch[1];\n }\n\n if (subMatch[2]) {\n evalOrigin = {\n column: subMatch[4] ? +subMatch[4] : undefined,\n file: subMatch[2],\n line: subMatch[3] ? +subMatch[3] : undefined,\n methodName: \"eval\",\n raw: line,\n type: \"eval\" as TraceType,\n };\n }\n }\n }\n\n const [methodName, file] = extractSafariExtensionDetails(\n // Normalize IE's 'Anonymous function'\n parts[1] ? parts[1].replace(/^Anonymous function$/, \"<anonymous>\") : UNKNOWN_FUNCTION,\n parts[2] as string,\n );\n\n const trace = {\n column: parts[4] ? +parts[4] : undefined,\n evalOrigin,\n file,\n line: parts[3] ? +parts[3] : undefined,\n // Normalize IE's 'Anonymous function'\n methodName,\n raw: line,\n type: (isEval ? \"eval\" : isNative ? \"native\" : undefined) as TraceType,\n };\n\n parseMapped(trace, `${file}:${parts[3]}:${parts[4]}`);\n\n return trace;\n }\n\n return undefined;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parseGecko = (line: string, topFrameMeta?: TopFrameMeta): Trace | undefined => {\n const parts = GECKO_REGEX.exec(line);\n\n if (parts) {\n debugLog(`parse gecko error stack line: \"${line}\"`, `found: ${JSON.stringify(parts)}`);\n\n const isEval = parts[3]?.includes(\" > eval\");\n const subMatch = isEval && parts[3] && GECKO_EVAL_REGEX.exec(parts[3]);\n\n let evalOrigin: Trace | undefined;\n\n if (isEval && subMatch) {\n // overwrite file\n parts[3] = <string>subMatch[1];\n\n evalOrigin = {\n column: parts[5] ? +parts[5] : undefined,\n file: parts[3],\n line: parts[4] ? +parts[4] : undefined,\n methodName: \"eval\",\n raw: line,\n type: \"eval\" as TraceType,\n };\n\n // overwrite line\n parts[4] = <string>subMatch[2];\n }\n\n const [methodName, file] = extractSafariExtensionDetails(\n // Normalize IE's 'Anonymous function'\n parts[1] ? parts[1].replace(/^Anonymous function$/, \"<anonymous>\") : UNKNOWN_FUNCTION,\n parts[3] as string,\n );\n\n let column: number | undefined; // no column when eval\n\n if ((topFrameMeta?.type === \"safari\" || (!isEval && topFrameMeta?.type === \"firefox\")) && topFrameMeta.column) {\n column = topFrameMeta.column;\n } else if (!isEval && parts[5]) {\n column = +parts[5];\n }\n\n let lineNumber: number | undefined; // no line when eval\n\n if ((topFrameMeta?.type === \"safari\" || (!isEval && topFrameMeta?.type === \"firefox\")) && topFrameMeta.line) {\n lineNumber = topFrameMeta.line;\n } else if (parts[4]) {\n lineNumber = +parts[4];\n }\n\n return {\n column,\n evalOrigin,\n file,\n line: lineNumber,\n methodName,\n raw: line,\n type: isEval ? \"eval\" : file.includes(\"[native code]\") ? \"native\" : undefined,\n };\n }\n\n return undefined;\n};\n\nconst parseFirefox = (line: string, topFrameMeta?: TopFrameMeta): Trace | undefined => {\n const parts = FIREFOX_REGEX.exec(line);\n\n const isEval = parts ? (parts[2] as string).includes(\" > eval\") : false;\n\n if (!isEval && parts) {\n debugLog(`parse firefox error stack line: \"${line}\"`, `found: ${JSON.stringify(parts)}`);\n\n return {\n column: parts[4] ? +parts[4] : topFrameMeta?.column ?? undefined,\n file: parts[2],\n line: parts[3] ? +parts[3] : topFrameMeta?.line ?? undefined,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n methodName: parts[1] || UNKNOWN_FUNCTION,\n raw: line,\n type: undefined,\n };\n }\n\n return undefined;\n};\n\nconst parseReactAndroidNative = (line: string): Trace | undefined => {\n const parts = REACT_ANDROID_NATIVE_REGEX.exec(line);\n\n if (parts) {\n debugLog(`parse react android native error stack line: \"${line}\"`, `found: ${JSON.stringify(parts)}`);\n\n return {\n column: parts[3] ? +parts[3] : undefined,\n file: parts[1],\n line: parts[2] ? +parts[2] : undefined,\n methodName: UNKNOWN_FUNCTION,\n raw: line,\n type: undefined,\n };\n }\n\n return undefined;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst parse = (error: Error, options: Partial<{ frameLimit: number }> = {}): Trace[] => {\n const { frameLimit = 50 } = options;\n\n // @ts-expect-error missing stacktrace property\n let lines = (error.stacktrace ?? error.stack ?? \"\")\n .split(\"\\n\")\n .map((line: string): string => {\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, \"$1\") : line;\n\n // eslint-disable-next-line unicorn/prefer-string-replace-all\n return cleanedLine.replace(/^\\s+|\\s+$/g, \"\");\n })\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n // Skip eval code without more context\n .filter((line: string): boolean => !/\\S*Error: /.test(line) && line !== \"eval code\");\n\n if (lines.length > frameLimit) {\n lines = lines.slice(0, frameLimit);\n }\n\n // eslint-disable-next-line unicorn/no-array-reduce,@typescript-eslint/no-unsafe-return\n return lines.reduce((stack: Trace[], line: string, currentIndex: number): Trace[] => {\n if (!line) {\n return stack;\n }\n\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n return stack;\n }\n\n let parseResult: Trace | undefined;\n\n if (/^\\s*in\\s.*/.test(line)) {\n parseResult = parseNode(line);\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n } else if (/^.*?\\s*at\\s.*/.test(line)) {\n parseResult = parseChromium(line);\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n } else if (/^.*?\\s*@.*|\\[native code\\]/.test(line)) {\n let topFrameMeta: TopFrameMeta | undefined;\n\n if (currentIndex === 0) {\n // @ts-expect-error columnNumber and lineNumber property only exists on Firefox\n if (error.columnNumber || error.lineNumber) {\n topFrameMeta = {\n // @ts-expect-error columnNumber and columnNumber property only exists on Firefox\n column: error.columnNumber,\n // @ts-expect-error columnNumber and lineNumber property only exists on Firefox\n line: error.lineNumber,\n type: \"firefox\",\n };\n // @ts-expect-error line and column property only exists on safari\n } else if (error.line || error.column) {\n topFrameMeta = {\n // @ts-expect-error column property only exists on safari\n column: error.column,\n // @ts-expect-error line property only exists on safari\n line: error.line,\n type: \"safari\",\n };\n }\n }\n\n parseResult =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n parseFirefox(line, topFrameMeta) || parseGecko(line, topFrameMeta);\n } else {\n parseResult = parseReactAndroidNative(line);\n }\n\n if (parseResult) {\n stack.push(parseResult);\n } else {\n debugLog(`parse error stack line: \"${line}\"`, \"not parser found\");\n }\n\n return stack;\n }, []);\n};\n\nexport default parse;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/util/normalize-lf.ts","../src/util/process.ts","../src/code-frame/get-marker-lines.ts","../src/code-frame/index.ts"],"names":["normalizeLF","code","normalize_lf_default","_process","processShims","process","target","property","process_default","getMarkerLines","loc","source","linesAbove","linesBelow","startLoc","endLoc","startLine","startColumn","endLine","endColumn","start","end","lineDiff","markerLines","index","lineNumber","sourceLength","get_marker_lines_default","POINTER","codeFrame","options","config","value","hasColumns","lines","ln","numberMaxWidth","colorizeGutter","colorizeMarker","colorizeMessage","frame","line","number","hasMarker","paddedNumber","lastMarkerLine","gutter","markerLine","markerSpacing","numberOfMarkers"],"mappings":"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","sourcesContent":["const normalizeLF = (code: string): string => code.replaceAll(/\\r\\n|\\r(?!\\n)|\\n/gu, \"\\n\");\n\nexport default normalizeLF;\n","interface Process extends Partial<Omit<typeof globalThis.process, \"versions\">> {\n versions: Record<string, string>;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-unnecessary-condition,no-underscore-dangle\nconst _process = (globalThis.process || Object.create(null)) as unknown as Process;\n\nconst processShims: Partial<Process> = {\n versions: {},\n};\n\nconst process = new Proxy<Process>(_process, {\n get(target, property: keyof Process) {\n if (property in target) {\n // eslint-disable-next-line security/detect-object-injection\n return target[property];\n }\n\n if (property in processShims) {\n // eslint-disable-next-line security/detect-object-injection\n return processShims[property];\n }\n\n return undefined;\n },\n});\n\nexport default process;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a copy of the codeFrame function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L68-L143\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\n/**\n * Extract what lines should be marked and highlighted.\n */\nimport type { CodeFrameLocation, CodeFrameNodeLocation } from \"../types\";\n\ntype MarkerLines = Record<number, true | [number | undefined, number | undefined]>;\n\nconst getMarkerLines = (\n loc: CodeFrameNodeLocation,\n source: string[],\n linesAbove: number,\n linesBelow: number,\n): {\n end: number;\n markerLines: MarkerLines;\n start: number;\n // eslint-disable-next-line sonarjs/cognitive-complexity\n} => {\n const startLoc: CodeFrameLocation = {\n column: 0,\n // @ts-expect-error Can be overwritten\n line: -1,\n ...loc.start,\n };\n const endLoc: CodeFrameLocation = {\n ...startLoc,\n ...loc.end,\n };\n const startLine = startLoc.line;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (let index = 0; index <= lineDiff; index++) {\n const lineNumber = index + startLine;\n\n if (!startColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = true;\n } else if (index === 0) {\n const sourceLength = source[lineNumber - 1]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [startColumn, (sourceLength ?? 0) - startColumn + 1];\n } else if (index === lineDiff) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - index]?.length;\n\n // eslint-disable-next-line security/detect-object-injection\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else if (startColumn === endColumn) {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = startColumn ? [startColumn, 0] : true;\n } else {\n // eslint-disable-next-line security/detect-object-injection\n markerLines[startLine] = [startColumn, (endColumn ?? 0) - (startColumn ?? 0)];\n }\n\n return { end, markerLines, start };\n};\n\nexport default getMarkerLines;\n","// eslint-disable-next-line no-secrets/no-secrets\n/**\n * This is a modified copy of the codeFrameColumns function from Babel\n * @see https://github.com/babel/babel/blob/85e649203b61b7c908eb04c05511a0d35f893e8e/packages/babel-code-frame/src/index.ts#L145-L217\n *\n * MIT License\n *\n * Copyright (c) 2014-present Sebastian McKenzie and other contributors\n */\n\nimport type { CodeFrameNodeLocation, CodeFrameOptions, ColorizeMethod } from \"../types\";\nimport normalizeLF from \"../util/normalize-lf\";\nimport process from \"../util/process\";\nimport getMarkerLines from \"./get-marker-lines\";\n\nconst POINTER = process.platform === \"win32\" && !process.env?.[\"WT_SESSION\"] ? \">\" : \"❯\";\n\n/** Generate a code frame from string and an error location */\nexport const codeFrame = (\n source: string,\n loc: CodeFrameNodeLocation,\n options: Partial<CodeFrameOptions> = {},\n // eslint-disable-next-line sonarjs/cognitive-complexity\n): string => {\n // grab 2 lines before, and 3 lines after focused line\n const config = {\n color: {\n gutter: (value: string) => value,\n marker: (value: string) => value,\n message: (value: string) => value,\n ...options.color,\n },\n linesAbove: 2,\n linesBelow: 3,\n showGutter: true,\n showLineNumbers: true,\n ...options,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const lines = normalizeLF(source)\n .split(\"\\n\")\n .map((ln) => ln.replaceAll(\"\\t\", \" \"));\n\n const { end, markerLines, start } = getMarkerLines(loc, lines, config.linesAbove, config.linesBelow);\n\n const numberMaxWidth = String(end).length;\n\n const {\n gutter: colorizeGutter,\n marker: colorizeMarker,\n message: colorizeMessage,\n } = config.color as {\n gutter: ColorizeMethod;\n marker: ColorizeMethod;\n message: ColorizeMethod;\n };\n\n let frame = lines\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n // eslint-disable-next-line security/detect-object-injection\n const hasMarker = markerLines[number];\n const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n const lastMarkerLine = !markerLines[number + 1];\n\n const gutter = ` ${paddedNumber}${config.showGutter ? ` |` : \"\"}`;\n\n if (hasMarker) {\n let markerLine = \"\";\n\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.replaceAll(/[^\\t]/g, \" \").slice(0, Math.max((hasMarker[0] as number) - 1, 0));\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\"\\n \", colorizeGutter(gutter.replaceAll(/\\d/g, \" \")), \" \", markerSpacing, colorizeMarker(\"^\").repeat(numberOfMarkers)].join(\n \"\",\n );\n\n if (lastMarkerLine && config.message) {\n markerLine += ` ${colorizeMessage(config.message)}`;\n }\n }\n\n return [colorizeMarker(POINTER), colorizeGutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n }\n\n return ` ${colorizeGutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n })\n .join(\"\\n\");\n\n if (config.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${config.message}\\n${frame}`;\n }\n\n return frame;\n};\n\nexport type { CodeFrameNodeLocation, CodeFrameOptions, ColorizeMethod } from \"../types\";\n"]}
@@ -1,13 +0,0 @@
1
- import { readFileSync } from 'fs';
2
- import { dirname, resolve } from 'path';
3
- import { AnyMap } from '@jridgewell/trace-mapping';
4
- export { generatedPositionFor as b, originalPositionFor as c, sourceContentFor as d, traceSegment as e } from '@jridgewell/trace-mapping';
5
-
6
- var l=/^data:application\/json[^,]+base64,/,u=/\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+)[ \t]*$|\/\*[@#][ \t]+sourceMappingURL=([^*]+?)[ \t]*\*\/[ \t]*$/,a=e=>l.test(e),f=(e,o)=>{let t=e.split(/\r?\n/),n=null;for(let r=t.length-1;r>=0&&!n;r--)n=u.exec(t[r]);if(n)return a(n[1])?n[1]:resolve(o,n[1])},m=e=>{let o=e.slice(e.indexOf(",")+1);return Buffer.from(o,"base64").toString()},M=e=>{let o;try{o=readFileSync(e,{encoding:"utf8"});}catch(r){throw r.message=`Error reading sourcemap for file "${e}":
7
- ${r.message}`,r}let t=f(o,dirname(e));if(!t)return;let n;if(a(t))n=m(t);else try{n=readFileSync(t,{encoding:"utf8"});}catch(r){throw r.message=`Error reading sourcemap for file "${e}":
8
- ${r.message}`,r}try{return new AnyMap(n,t)}catch(r){throw r.message=`Error parsing sourcemap for file "${e}":
9
- ${r.message}`,r}},y=M;
10
-
11
- export { y as a };
12
- //# sourceMappingURL=out.js.map
13
- //# sourceMappingURL=chunk-F52HEHA7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/load-source-map.ts","../src/sourcemap.ts"],"names":["readFileSync","dirname","resolve","AnyMap","INLINE_SOURCEMAP_REGEX","SOURCEMAP_REGEX","isInlineMap","url","resolveSourceMapUrl","sourceFile","sourcePath","lines","sourceMapUrl","index","decodeInlineMap","data","rawData","loadSourceMap","filename","sourceMapContent","error","traceMapContent","load_source_map_default","generatedPositionFor","originalPositionFor","sourceContentFor","traceSegment"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,KAC7B,OAAS,WAAAC,EAAS,WAAAC,MAAe,OAGjC,OAAS,UAAAC,MAAc,4BAEvB,IAAMC,EAAyB,sCAEzBC,EAAkB,4GAElBC,EAAeC,GAAyBH,EAAuB,KAAKG,CAAG,EAEvEC,EAAsB,CAACC,EAAoBC,IAA2C,CACxF,IAAMC,EAAQF,EAAW,MAAM,OAAO,EAElCG,EAAe,KAGnB,QAASC,EAAQF,EAAM,OAAS,EAAGE,GAAS,GAAK,CAACD,EAAcC,IAE5DD,EAAeP,EAAgB,KAAKM,EAAME,CAAK,CAAW,EAG9D,GAAKD,EAIL,OAAON,EAAYM,EAAa,CAAC,CAAW,EAAKA,EAAa,CAAC,EAAgBV,EAAQQ,EAAYE,EAAa,CAAC,CAAW,CAChI,EAEME,EAAmBC,GAAiB,CACtC,IAAMC,EAAUD,EAAK,MAAMA,EAAK,QAAQ,GAAG,EAAI,CAAC,EAEhD,OAAO,OAAO,KAAKC,EAAS,QAAQ,EAAE,SAAS,CACnD,EAEMC,EAAiBC,GAA2C,CAC9D,IAAIC,EAEJ,GAAI,CAEAA,EAAmBnB,EAAakB,EAAU,CAAE,SAAU,MAAO,CAAC,CAElE,OAASE,EAAY,CACjB,MAAAA,EAAM,QAAU,qCAAqCF,CAAQ;AAAA,EAAOE,EAAM,OAAO,GAE3EA,CACV,CAEA,IAAMR,EAAeJ,EAAoBW,EAAkBlB,EAAQiB,CAAQ,CAAC,EAE5E,GAAI,CAACN,EACD,OAGJ,IAAIS,EAGJ,GAAIf,EAAYM,CAAY,EACxBS,EAAkBP,EAAgBF,CAAY,MAE9C,IAAI,CAGAS,EAAkBrB,EAAaY,EAAc,CAAE,SAAU,MAAO,CAAC,CAErE,OAASQ,EAAY,CACjB,MAAAA,EAAM,QAAU,qCAAqCF,CAAQ;AAAA,EAAOE,EAAM,OAAO,GAE3EA,CACV,CAGJ,GAAI,CACA,OAAO,IAAIjB,EAAOkB,EAAiBT,CAAY,CAEnD,OAASQ,EAAY,CACjB,MAAAA,EAAM,QAAU,qCAAqCF,CAAQ;AAAA,EAAOE,EAAM,OAAO,GAE3EA,CACV,CACJ,EAEOE,EAAQL,ECjFf,OAAS,wBAAAM,EAAsB,uBAAAC,EAAqB,oBAAAC,EAAkB,gBAAAC,MAAoB","sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { dirname, resolve } from \"node:path\";\n\nimport type { TraceMap } from \"@jridgewell/trace-mapping\";\nimport { AnyMap } from \"@jridgewell/trace-mapping\";\n\nconst INLINE_SOURCEMAP_REGEX = /^data:application\\/json[^,]+base64,/;\n// eslint-disable-next-line regexp/no-unused-capturing-group,regexp/no-super-linear-backtracking\nconst SOURCEMAP_REGEX = /\\/\\/[@#][ \\t]+sourceMappingURL=([^\\s'\"]+)[ \\t]*$|\\/\\*[@#][ \\t]+sourceMappingURL=([^*]+?)[ \\t]*\\*\\/[ \\t]*$/;\n\nconst isInlineMap = (url: string): boolean => INLINE_SOURCEMAP_REGEX.test(url);\n\nconst resolveSourceMapUrl = (sourceFile: string, sourcePath: string): string | undefined => {\n const lines = sourceFile.split(/\\r?\\n/);\n\n let sourceMapUrl = null;\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = lines.length - 1; index >= 0 && !sourceMapUrl; index--) {\n // eslint-disable-next-line security/detect-object-injection\n sourceMapUrl = SOURCEMAP_REGEX.exec(lines[index] as string);\n }\n\n if (!sourceMapUrl) {\n return undefined;\n }\n\n return isInlineMap(sourceMapUrl[1] as string) ? (sourceMapUrl[1] as string) : (resolve(sourcePath, sourceMapUrl[1] as string) as string);\n};\n\nconst decodeInlineMap = (data: string) => {\n const rawData = data.slice(data.indexOf(\",\") + 1);\n\n return Buffer.from(rawData, \"base64\").toString();\n};\n\nconst loadSourceMap = (filename: string): TraceMap | undefined => {\n let sourceMapContent: string | undefined;\n\n try {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n sourceMapContent = readFileSync(filename, { encoding: \"utf8\" });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n error.message = `Error reading sourcemap for file \"${filename}\":\\n${error.message}`;\n\n throw error;\n }\n\n const sourceMapUrl = resolveSourceMapUrl(sourceMapContent, dirname(filename));\n\n if (!sourceMapUrl) {\n return undefined;\n }\n\n let traceMapContent: string | undefined;\n\n // If it's an inline map, decode it and pass it through the same consumer factory\n if (isInlineMap(sourceMapUrl)) {\n traceMapContent = decodeInlineMap(sourceMapUrl);\n } else {\n try {\n // Load actual source map from given path\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n traceMapContent = readFileSync(sourceMapUrl, { encoding: \"utf8\" });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n error.message = `Error reading sourcemap for file \"${filename}\":\\n${error.message}`;\n\n throw error;\n }\n }\n\n try {\n return new AnyMap(traceMapContent, sourceMapUrl);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n error.message = `Error parsing sourcemap for file \"${filename}\":\\n${error.message}`;\n\n throw error;\n }\n};\n\nexport default loadSourceMap;\n","export { default as loadSourceMap } from \"./load-source-map\";\nexport type { TraceMap } from \"@jridgewell/trace-mapping\";\nexport { generatedPositionFor, originalPositionFor, sourceContentFor, traceSegment } from \"@jridgewell/trace-mapping\";\n"]}
@@ -1,7 +0,0 @@
1
- import { a } from './chunk-7Q3PPTBP.js';
2
-
3
- var m=t=>t instanceof Error&&t.type==="VisulimaError",s=class extends Error{constructor(r,...e){super(...e);a(this,"loc");a(this,"title");a(this,"hint");a(this,"type","VisulimaError");let{hint:n,location:a$1,message:o,name:c,stack:p,title:l}=r;this.title=l,this.name=c,o&&(this.message=o),this.stack=p??this.stack,this.loc=a$1,this.hint=n,Error.captureStackTrace(this,this.constructor);}setLocation(r){this.loc=r;}setName(r){this.name=r;}setMessage(r){this.message=r;}setHint(r){this.hint=r;}};
4
-
5
- export { m as a, s as b };
6
- //# sourceMappingURL=out.js.map
7
- //# sourceMappingURL=chunk-X3TE67TZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/visulima-error.ts"],"names":["isVisulimaError","error","VisulimaError","properties","parameters","__publicField","hint","location","message","name","stack","title"],"mappings":"wCAEO,IAAMA,EAAmBC,GAA2CA,aAAiB,OAAUA,EAAwB,OAAS,gBAE1HC,EAAN,cAA4B,KAAM,CAa9B,YAAYC,KAAgCC,EAAiB,CAEhE,MAAM,GAAGA,CAAU,EAdvBC,EAAA,KAAO,OAEPA,EAAA,KAAO,SAKPA,EAAA,KAAO,QAEPA,EAAA,KAAO,OAAO,iBAOV,GAAM,CAAE,KAAAC,EAAM,SAAAC,EAAU,QAAAC,EAAS,KAAAC,EAAM,MAAAC,EAAO,MAAAC,CAAM,EAAIR,EACxD,KAAK,MAAQQ,EACb,KAAK,KAAOF,EAERD,IACA,KAAK,QAAUA,GAInB,KAAK,MAAQE,GAAU,KAAK,MAC5B,KAAK,IAAMH,EACX,KAAK,KAAOD,EAEZ,MAAM,kBAAkB,KAAM,KAAK,WAAW,CAClD,CAEO,YAAYC,EAA+B,CAC9C,KAAK,IAAMA,CACf,CAEO,QAAQE,EAAoB,CAC/B,KAAK,KAAOA,CAChB,CAEO,WAAWD,EAAuB,CACrC,KAAK,QAAUA,CACnB,CAEO,QAAQF,EAA+B,CAC1C,KAAK,KAAOA,CAChB,CACJ","sourcesContent":["import type { ErrorLocation, ErrorProperties } from \"./types\";\n\nexport const isVisulimaError = (error: unknown): error is VisulimaError => error instanceof Error && (error as VisulimaError).type === \"VisulimaError\";\n\nexport class VisulimaError extends Error {\n public loc: ErrorLocation | undefined;\n\n public title: string | undefined;\n\n /**\n * A message that explains to the user how they can fix the error.\n */\n public hint: string[] | string | undefined;\n\n public type = \"VisulimaError\";\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any\n public constructor(properties: ErrorProperties, ...parameters: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n super(...parameters);\n\n const { hint, location, message, name, stack, title } = properties;\n this.title = title;\n this.name = name;\n\n if (message) {\n this.message = message;\n }\n\n // Only set this if we actually have a stack passed, otherwise uses Error's\n this.stack = stack ?? (this.stack as string);\n this.loc = location;\n this.hint = hint;\n\n Error.captureStackTrace(this, this.constructor);\n }\n\n public setLocation(location: ErrorLocation): void {\n this.loc = location;\n }\n\n public setName(name: string): void {\n this.name = name;\n }\n\n public setMessage(message: string): void {\n this.message = message;\n }\n\n public setHint(hint: string[] | string): void {\n this.hint = hint;\n }\n}\n"]}
package/dist/error.d.ts DELETED
@@ -1,17 +0,0 @@
1
- import { E as ErrorLocation, c as ErrorProperties } from './types-4e2de6f5.js';
2
- export { d as ErrorWithMetadata, T as Trace } from './types-4e2de6f5.js';
3
-
4
- declare const isVisulimaError: (error: unknown) => error is VisulimaError;
5
- declare class VisulimaError extends Error {
6
- loc: ErrorLocation | undefined;
7
- title: string | undefined;
8
- hint: string[] | string | undefined;
9
- type: string;
10
- constructor(properties: ErrorProperties, ...parameters: any);
11
- setLocation(location: ErrorLocation): void;
12
- setName(name: string): void;
13
- setMessage(message: string): void;
14
- setHint(hint: string[] | string): void;
15
- }
16
-
17
- export { ErrorLocation, ErrorProperties, VisulimaError, isVisulimaError };
package/dist/error.js DELETED
@@ -1,4 +0,0 @@
1
- export { b as VisulimaError, a as isVisulimaError } from './chunk-X3TE67TZ.js';
2
- import './chunk-7Q3PPTBP.js';
3
- //# sourceMappingURL=out.js.map
4
- //# sourceMappingURL=error.js.map
@@ -1,7 +0,0 @@
1
- import { T as Trace } from './types-4e2de6f5.js';
2
-
3
- declare const parse: (error: Error, options?: Partial<{
4
- frameLimit: number;
5
- }>) => Trace[];
6
-
7
- export { parse as parseStacktrace };
@@ -1,4 +0,0 @@
1
- export { a as parseStacktrace } from './chunk-26F4MLO2.js';
2
- import './chunk-7Q3PPTBP.js';
3
- //# sourceMappingURL=out.js.map
4
- //# sourceMappingURL=stacktrace.js.map
@@ -1,64 +0,0 @@
1
- interface ErrorProperties {
2
- hint?: string;
3
- location?: ErrorLocation;
4
- message?: string;
5
- name: string;
6
- stack?: string;
7
- title?: string;
8
- }
9
- interface ErrorLocation {
10
- column?: number;
11
- file?: string;
12
- line?: number;
13
- }
14
- interface ErrorWithMetadata<Type = NonNullable<unknown> & string> {
15
- [name: string]: any;
16
- cause?: any;
17
- frame?: string;
18
- fullCode?: string;
19
- hint?: string;
20
- id?: string;
21
- loc?: {
22
- column?: number;
23
- file?: string;
24
- line?: number;
25
- };
26
- message: string;
27
- name: string;
28
- stack: string;
29
- title?: string;
30
- type?: Type | "VisulimaError";
31
- }
32
- type CodeFrameLocation = {
33
- column?: number;
34
- line: number;
35
- };
36
- type CodeFrameNodeLocation = {
37
- end?: CodeFrameLocation;
38
- start: CodeFrameLocation;
39
- };
40
- type ColorizeMethod = (value: string) => string;
41
- type CodeFrameOptions = {
42
- color?: Partial<{
43
- gutter: ColorizeMethod;
44
- marker: ColorizeMethod;
45
- message: ColorizeMethod;
46
- }>;
47
- linesAbove?: number;
48
- linesBelow?: number;
49
- message?: string;
50
- showGutter?: boolean;
51
- showLineNumbers?: boolean;
52
- };
53
- type TraceType = "eval" | "internal" | "native" | undefined;
54
- interface Trace {
55
- column: number | undefined;
56
- evalOrigin?: Trace | undefined;
57
- file: string | undefined;
58
- line: number | undefined;
59
- methodName: string | undefined;
60
- raw: string;
61
- type?: TraceType | undefined;
62
- }
63
-
64
- export { CodeFrameNodeLocation as C, ErrorLocation as E, Trace as T, CodeFrameOptions as a, ColorizeMethod as b, ErrorProperties as c, ErrorWithMetadata as d };
File without changes
File without changes