@parcel/diagnostic 2.0.0-dev.1528 → 2.0.0-dev.1557
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/diagnostic.d.ts +4 -0
- package/lib/diagnostic.js +11 -16
- package/package.json +4 -3
- package/src/diagnostic.js +9 -0
package/lib/diagnostic.d.ts
CHANGED
|
@@ -37,6 +37,8 @@ export type DiagnosticCodeFrame = {
|
|
|
37
37
|
language?: string;
|
|
38
38
|
codeHighlights: Array<DiagnosticCodeHighlight>;
|
|
39
39
|
};
|
|
40
|
+
/** A JSON object (as in "map") */
|
|
41
|
+
type JSONObject = Record<string, any>;
|
|
40
42
|
/**
|
|
41
43
|
* A style agnostic way of emitting errors, warnings and info.
|
|
42
44
|
* Reporters are responsible for rendering the message, codeframes, hints, ...
|
|
@@ -58,6 +60,8 @@ export type Diagnostic = {
|
|
|
58
60
|
skipFormatting?: boolean;
|
|
59
61
|
/** A URL to documentation to learn more about the diagnostic. */
|
|
60
62
|
documentationURL?: string;
|
|
63
|
+
/** Diagnostic specific metadata (optional) */
|
|
64
|
+
meta?: JSONObject;
|
|
61
65
|
};
|
|
62
66
|
export interface PrintableError extends Error {
|
|
63
67
|
fileName?: string;
|
package/lib/diagnostic.js
CHANGED
|
@@ -45,6 +45,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
45
45
|
* A code frame is a visualization of a piece of code with a certain amount of
|
|
46
46
|
* code highlights that point to certain chunk(s) inside the code.
|
|
47
47
|
*/
|
|
48
|
+
/** A JSON object (as in "map") */
|
|
48
49
|
/**
|
|
49
50
|
* A style agnostic way of emitting errors, warnings and info.
|
|
50
51
|
* Reporters are responsible for rendering the message, codeframes, hints, ...
|
|
@@ -72,28 +73,24 @@ function anyToDiagnostic(input) {
|
|
|
72
73
|
|
|
73
74
|
/** Normalize the given error into a diagnostic. */
|
|
74
75
|
function errorToDiagnostic(error, defaultValues) {
|
|
75
|
-
var _defaultValues$origin2, _ref4, _error$highlightedCod;
|
|
76
76
|
let codeFrames = undefined;
|
|
77
77
|
if (typeof error === 'string') {
|
|
78
|
-
var _defaultValues$origin;
|
|
79
78
|
return [{
|
|
80
|
-
origin: (
|
|
79
|
+
origin: (defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.origin) ?? 'Error',
|
|
81
80
|
message: escapeMarkdown(error)
|
|
82
81
|
}];
|
|
83
82
|
}
|
|
84
83
|
if (error instanceof ThrowableDiagnostic) {
|
|
85
84
|
return error.diagnostics.map(d => {
|
|
86
|
-
var _ref, _d$origin;
|
|
87
85
|
return {
|
|
88
86
|
...d,
|
|
89
|
-
origin:
|
|
87
|
+
origin: d.origin ?? (defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.origin) ?? 'unknown'
|
|
90
88
|
};
|
|
91
89
|
});
|
|
92
90
|
}
|
|
93
91
|
if (error.loc && error.source != null) {
|
|
94
|
-
var _ref2, _ref3, _error$filePath;
|
|
95
92
|
codeFrames = [{
|
|
96
|
-
filePath:
|
|
93
|
+
filePath: error.filePath ?? error.fileName ?? (defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.filePath) ?? undefined,
|
|
97
94
|
code: error.source,
|
|
98
95
|
codeHighlights: [{
|
|
99
96
|
start: {
|
|
@@ -108,10 +105,10 @@ function errorToDiagnostic(error, defaultValues) {
|
|
|
108
105
|
}];
|
|
109
106
|
}
|
|
110
107
|
return [{
|
|
111
|
-
origin: (
|
|
108
|
+
origin: (defaultValues === null || defaultValues === void 0 ? void 0 : defaultValues.origin) ?? 'Error',
|
|
112
109
|
message: escapeMarkdown(error.message),
|
|
113
110
|
name: error.name,
|
|
114
|
-
stack: codeFrames == null ?
|
|
111
|
+
stack: codeFrames == null ? error.highlightedCodeFrame ?? error.codeFrame ?? error.stack : undefined,
|
|
115
112
|
codeFrames
|
|
116
113
|
}];
|
|
117
114
|
}
|
|
@@ -121,15 +118,14 @@ function errorToDiagnostic(error, defaultValues) {
|
|
|
121
118
|
*/
|
|
122
119
|
class ThrowableDiagnostic extends Error {
|
|
123
120
|
constructor(opts) {
|
|
124
|
-
var _diagnostics$0$stack, _diagnostics$0$name;
|
|
125
121
|
let diagnostics = Array.isArray(opts.diagnostic) ? opts.diagnostic : [opts.diagnostic];
|
|
126
122
|
|
|
127
123
|
// Construct error from diagnostics
|
|
128
124
|
super(diagnostics[0].message);
|
|
129
125
|
// @ts-ignore
|
|
130
|
-
this.stack =
|
|
126
|
+
this.stack = diagnostics[0].stack ?? super.stack;
|
|
131
127
|
// @ts-ignore
|
|
132
|
-
this.name =
|
|
128
|
+
this.name = diagnostics[0].name ?? super.name;
|
|
133
129
|
this.diagnostics = diagnostics;
|
|
134
130
|
}
|
|
135
131
|
}
|
|
@@ -251,15 +247,14 @@ function md(strings, ...params) {
|
|
|
251
247
|
let param = params[i];
|
|
252
248
|
if (Array.isArray(param)) {
|
|
253
249
|
for (let j = 0; j < param.length; j++) {
|
|
254
|
-
var _param$j
|
|
255
|
-
result.push((
|
|
250
|
+
var _param$j;
|
|
251
|
+
result.push(((_param$j = param[j]) === null || _param$j === void 0 ? void 0 : _param$j[mdVerbatim]) ?? escapeMarkdown(`${param[j]}`));
|
|
256
252
|
if (j < param.length - 1) {
|
|
257
253
|
result.push(', ');
|
|
258
254
|
}
|
|
259
255
|
}
|
|
260
256
|
} else {
|
|
261
|
-
|
|
262
|
-
result.push((_param$mdVerbatim = param === null || param === void 0 ? void 0 : param[mdVerbatim]) !== null && _param$mdVerbatim !== void 0 ? _param$mdVerbatim : escapeMarkdown(`${param}`));
|
|
257
|
+
result.push((param === null || param === void 0 ? void 0 : param[mdVerbatim]) ?? escapeMarkdown(`${param}`));
|
|
263
258
|
}
|
|
264
259
|
}
|
|
265
260
|
return result.join('') + strings[strings.length - 1];
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parcel/diagnostic",
|
|
3
|
-
"version": "2.0.0-dev.
|
|
3
|
+
"version": "2.0.0-dev.1557+e87c13686",
|
|
4
|
+
"description": "Types and utilities for printing source-code located errors, warning and information messages.",
|
|
4
5
|
"license": "MIT",
|
|
5
6
|
"publishConfig": {
|
|
6
7
|
"access": "public"
|
|
@@ -17,7 +18,7 @@
|
|
|
17
18
|
"source": "src/diagnostic.js",
|
|
18
19
|
"types": "lib/diagnostic.d.ts",
|
|
19
20
|
"engines": {
|
|
20
|
-
"node": ">=
|
|
21
|
+
"node": ">= 16.0.0"
|
|
21
22
|
},
|
|
22
23
|
"scripts": {
|
|
23
24
|
"build-ts": "flow-to-ts src/*.js --write && tsc --emitDeclarationOnly --declaration --esModuleInterop src/*.ts && mkdir -p lib && mv src/*.d.ts lib/. && rm src/*.ts",
|
|
@@ -27,5 +28,5 @@
|
|
|
27
28
|
"@mischnic/json-sourcemap": "^0.1.0",
|
|
28
29
|
"nullthrows": "^1.1.1"
|
|
29
30
|
},
|
|
30
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "e87c13686e8fa4ad96cc61c19d9e4fcf9c372f2e"
|
|
31
32
|
}
|
package/src/diagnostic.js
CHANGED
|
@@ -46,6 +46,12 @@ export type DiagnosticCodeFrame = {|
|
|
|
46
46
|
codeHighlights: Array<DiagnosticCodeHighlight>,
|
|
47
47
|
|};
|
|
48
48
|
|
|
49
|
+
/** A JSON object (as in "map") */
|
|
50
|
+
type JSONObject = {
|
|
51
|
+
// $FlowFixMe
|
|
52
|
+
[key: string]: any,
|
|
53
|
+
};
|
|
54
|
+
|
|
49
55
|
/**
|
|
50
56
|
* A style agnostic way of emitting errors, warnings and info.
|
|
51
57
|
* Reporters are responsible for rendering the message, codeframes, hints, ...
|
|
@@ -72,6 +78,9 @@ export type Diagnostic = {|
|
|
|
72
78
|
|
|
73
79
|
/** A URL to documentation to learn more about the diagnostic. */
|
|
74
80
|
documentationURL?: string,
|
|
81
|
+
|
|
82
|
+
/** Diagnostic specific metadata (optional) */
|
|
83
|
+
meta?: JSONObject,
|
|
75
84
|
|};
|
|
76
85
|
|
|
77
86
|
// This type should represent all error formats Parcel can encounter...
|