@parcel/diagnostic 2.12.0 → 2.13.0
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 +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) {
|