@parcel/diagnostic 2.11.0 → 2.13.0
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/diagnostic.d.ts +4 -0
- package/lib/diagnostic.js +13 -18
- package/package.json +4 -3
- package/src/diagnostic.js +10 -1
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
@@ -34,7 +34,7 @@ function _jsonSourcemap() {
|
|
34
34
|
};
|
35
35
|
return data;
|
36
36
|
}
|
37
|
-
function _interopRequireDefault(
|
37
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
38
38
|
/** These positions are 1-based (so <code>1</code> is the first line/column) */
|
39
39
|
/**
|
40
40
|
* Note: A tab character is always counted as a single character
|
@@ -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, ...
|
@@ -54,7 +55,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
54
55
|
/** Normalize the given value into a diagnostic. */
|
55
56
|
function anyToDiagnostic(input) {
|
56
57
|
if (Array.isArray(input)) {
|
57
|
-
return input;
|
58
|
+
return input.flatMap(e => anyToDiagnostic(e));
|
58
59
|
} else if (input instanceof ThrowableDiagnostic) {
|
59
60
|
return input.diagnostics;
|
60
61
|
} else if (input instanceof Error) {
|
@@ -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.
|
3
|
+
"version": "2.13.0",
|
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": "a53f8f3ba1025c7ea8653e9719e0a61ef9717079"
|
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...
|
@@ -105,7 +114,7 @@ export type Diagnostifiable =
|
|
105
114
|
/** Normalize the given value into a diagnostic. */
|
106
115
|
export function anyToDiagnostic(input: Diagnostifiable): Array<Diagnostic> {
|
107
116
|
if (Array.isArray(input)) {
|
108
|
-
return input;
|
117
|
+
return input.flatMap(e => anyToDiagnostic(e));
|
109
118
|
} else if (input instanceof ThrowableDiagnostic) {
|
110
119
|
return input.diagnostics;
|
111
120
|
} else if (input instanceof Error) {
|