@jsenv/core 39.1.2 → 39.2.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/dist/jsenv_core.js +195 -120
- package/package.json +17 -17
- package/src/kitchen/errors.js +135 -68
- package/src/kitchen/kitchen.js +11 -6
- package/src/kitchen/url_graph/references.js +45 -39
- package/src/plugins/inlining/jsenv_plugin_inlining_into_html.js +2 -2
- package/src/plugins/reference_analysis/html/jsenv_plugin_html_reference_analysis.js +2 -5
package/dist/jsenv_core.js
CHANGED
|
@@ -11558,6 +11558,7 @@ const createDependencies = (ownerUrlInfo) => {
|
|
|
11558
11558
|
isOriginalPosition,
|
|
11559
11559
|
specifierLine,
|
|
11560
11560
|
specifierColumn,
|
|
11561
|
+
content,
|
|
11561
11562
|
...rest
|
|
11562
11563
|
}) => {
|
|
11563
11564
|
const parentUrl = isOriginalPosition
|
|
@@ -11578,6 +11579,7 @@ const createDependencies = (ownerUrlInfo) => {
|
|
|
11578
11579
|
specifierLine,
|
|
11579
11580
|
specifierColumn,
|
|
11580
11581
|
isInline: true,
|
|
11582
|
+
content,
|
|
11581
11583
|
...rest,
|
|
11582
11584
|
});
|
|
11583
11585
|
return reference;
|
|
@@ -11905,6 +11907,12 @@ const createReference = ({
|
|
|
11905
11907
|
ownerUrlInfo = reference.ownerUrlInfo,
|
|
11906
11908
|
...props
|
|
11907
11909
|
}) => {
|
|
11910
|
+
const content =
|
|
11911
|
+
ownerUrlInfo === undefined
|
|
11912
|
+
? isOriginalPosition
|
|
11913
|
+
? reference.ownerUrlInfo.originalContent
|
|
11914
|
+
: reference.ownerUrlInfo.content
|
|
11915
|
+
: ownerUrlInfo.content;
|
|
11908
11916
|
const trace = traceFromUrlSite({
|
|
11909
11917
|
url:
|
|
11910
11918
|
ownerUrlInfo === undefined
|
|
@@ -11912,12 +11920,7 @@ const createReference = ({
|
|
|
11912
11920
|
? reference.ownerUrlInfo.url
|
|
11913
11921
|
: reference.ownerUrlInfo.generatedUrl
|
|
11914
11922
|
: reference.ownerUrlInfo.url,
|
|
11915
|
-
content
|
|
11916
|
-
ownerUrlInfo === undefined
|
|
11917
|
-
? isOriginalPosition
|
|
11918
|
-
? reference.ownerUrlInfo.originalContent
|
|
11919
|
-
: reference.ownerUrlInfo.content
|
|
11920
|
-
: ownerUrlInfo.content,
|
|
11923
|
+
content,
|
|
11921
11924
|
line,
|
|
11922
11925
|
column,
|
|
11923
11926
|
});
|
|
@@ -12114,14 +12117,15 @@ const applyDependencyRemovalEffects = (reference) => {
|
|
|
12114
12117
|
};
|
|
12115
12118
|
|
|
12116
12119
|
const traceFromUrlSite = (urlSite) => {
|
|
12120
|
+
const codeFrame = urlSite.content
|
|
12121
|
+
? generateContentFrame({
|
|
12122
|
+
content: urlSite.content,
|
|
12123
|
+
line: urlSite.line,
|
|
12124
|
+
column: urlSite.column,
|
|
12125
|
+
})
|
|
12126
|
+
: "";
|
|
12117
12127
|
return {
|
|
12118
|
-
codeFrame
|
|
12119
|
-
? generateContentFrame({
|
|
12120
|
-
content: urlSite.content,
|
|
12121
|
-
line: urlSite.line,
|
|
12122
|
-
column: urlSite.column,
|
|
12123
|
-
})
|
|
12124
|
-
: "",
|
|
12128
|
+
codeFrame,
|
|
12125
12129
|
message: stringifyUrlSite(urlSite),
|
|
12126
12130
|
url: urlSite.url,
|
|
12127
12131
|
line: urlSite.line,
|
|
@@ -12131,7 +12135,7 @@ const traceFromUrlSite = (urlSite) => {
|
|
|
12131
12135
|
|
|
12132
12136
|
const adjustUrlSite = (urlInfo, { url, line, column }) => {
|
|
12133
12137
|
const isOriginal = url === urlInfo.url;
|
|
12134
|
-
const adjust = (
|
|
12138
|
+
const adjust = (urlInfo, urlSite) => {
|
|
12135
12139
|
if (!urlSite.isOriginal) {
|
|
12136
12140
|
return urlSite;
|
|
12137
12141
|
}
|
|
@@ -12140,33 +12144,35 @@ const adjustUrlSite = (urlInfo, { url, line, column }) => {
|
|
|
12140
12144
|
return urlSite;
|
|
12141
12145
|
}
|
|
12142
12146
|
const parentUrlInfo = urlInfo.graph.getUrlInfo(inlineUrlSite.url);
|
|
12143
|
-
|
|
12144
|
-
|
|
12145
|
-
|
|
12146
|
-
|
|
12147
|
-
|
|
12148
|
-
|
|
12149
|
-
|
|
12150
|
-
|
|
12151
|
-
|
|
12152
|
-
|
|
12153
|
-
|
|
12154
|
-
|
|
12155
|
-
|
|
12156
|
-
|
|
12157
|
-
|
|
12158
|
-
|
|
12159
|
-
|
|
12160
|
-
|
|
12161
|
-
{
|
|
12162
|
-
isOriginal,
|
|
12163
|
-
url,
|
|
12164
|
-
content: isOriginal ? urlInfo.originalContent : urlInfo.content,
|
|
12147
|
+
line =
|
|
12148
|
+
inlineUrlSite.line === undefined
|
|
12149
|
+
? urlSite.line
|
|
12150
|
+
: inlineUrlSite.line + urlSite.line;
|
|
12151
|
+
// we remove 1 to the line because imagine the following html:
|
|
12152
|
+
// <style>body { color: red; }</style>
|
|
12153
|
+
// -> content starts same line as <style> (same for <script>)
|
|
12154
|
+
if (urlInfo.content[0] === "\n") {
|
|
12155
|
+
line = line - 1;
|
|
12156
|
+
}
|
|
12157
|
+
column =
|
|
12158
|
+
inlineUrlSite.column === undefined
|
|
12159
|
+
? urlSite.column
|
|
12160
|
+
: inlineUrlSite.column + urlSite.column;
|
|
12161
|
+
return adjust(parentUrlInfo, {
|
|
12162
|
+
isOriginal: true,
|
|
12163
|
+
url: inlineUrlSite.url,
|
|
12164
|
+
content: inlineUrlSite.content,
|
|
12165
12165
|
line,
|
|
12166
12166
|
column,
|
|
12167
|
-
}
|
|
12168
|
-
|
|
12169
|
-
|
|
12167
|
+
});
|
|
12168
|
+
};
|
|
12169
|
+
return adjust(urlInfo, {
|
|
12170
|
+
isOriginal,
|
|
12171
|
+
url,
|
|
12172
|
+
content: isOriginal ? urlInfo.originalContent : urlInfo.content,
|
|
12173
|
+
line,
|
|
12174
|
+
column,
|
|
12175
|
+
});
|
|
12170
12176
|
};
|
|
12171
12177
|
|
|
12172
12178
|
const getRedirectedReferenceProps = (reference, url) => {
|
|
@@ -13686,13 +13692,16 @@ const createResolveUrlError = ({
|
|
|
13686
13692
|
...details
|
|
13687
13693
|
}) => {
|
|
13688
13694
|
const resolveError = new Error(
|
|
13689
|
-
createDetailedMessage$1(
|
|
13690
|
-
|
|
13691
|
-
|
|
13692
|
-
|
|
13693
|
-
|
|
13694
|
-
|
|
13695
|
-
|
|
13695
|
+
createDetailedMessage$1(
|
|
13696
|
+
`Failed to resolve url reference
|
|
13697
|
+
${reference.trace.message}
|
|
13698
|
+
${reason}`,
|
|
13699
|
+
{
|
|
13700
|
+
...detailsFromFirstReference(reference),
|
|
13701
|
+
...details,
|
|
13702
|
+
...detailsFromPluginController(pluginController),
|
|
13703
|
+
},
|
|
13704
|
+
),
|
|
13696
13705
|
);
|
|
13697
13706
|
resolveError.name = "RESOLVE_URL_ERROR";
|
|
13698
13707
|
resolveError.code = code;
|
|
@@ -13727,14 +13736,18 @@ const createFetchUrlContentError = ({
|
|
|
13727
13736
|
reason,
|
|
13728
13737
|
...details
|
|
13729
13738
|
}) => {
|
|
13739
|
+
const reference = urlInfo.firstReference;
|
|
13730
13740
|
const fetchError = new Error(
|
|
13731
|
-
createDetailedMessage$1(
|
|
13732
|
-
|
|
13733
|
-
|
|
13734
|
-
|
|
13735
|
-
|
|
13736
|
-
|
|
13737
|
-
|
|
13741
|
+
createDetailedMessage$1(
|
|
13742
|
+
`Failed to fetch url content
|
|
13743
|
+
${reference.trace.message}
|
|
13744
|
+
${reason}`,
|
|
13745
|
+
{
|
|
13746
|
+
...detailsFromFirstReference(reference),
|
|
13747
|
+
...details,
|
|
13748
|
+
...detailsFromPluginController(pluginController),
|
|
13749
|
+
},
|
|
13750
|
+
),
|
|
13738
13751
|
);
|
|
13739
13752
|
fetchError.name = "FETCH_URL_CONTENT_ERROR";
|
|
13740
13753
|
fetchError.code = code;
|
|
@@ -13743,7 +13756,7 @@ const createFetchUrlContentError = ({
|
|
|
13743
13756
|
if (code === "PARSE_ERROR") {
|
|
13744
13757
|
fetchError.trace = error.trace;
|
|
13745
13758
|
} else {
|
|
13746
|
-
fetchError.trace =
|
|
13759
|
+
fetchError.trace = reference.trace;
|
|
13747
13760
|
}
|
|
13748
13761
|
fetchError.asResponse = error.asResponse;
|
|
13749
13762
|
return fetchError;
|
|
@@ -13792,73 +13805,101 @@ const createTransformUrlContentError = ({
|
|
|
13792
13805
|
urlInfo,
|
|
13793
13806
|
error,
|
|
13794
13807
|
}) => {
|
|
13808
|
+
if (error.code === "MODULE_NOT_FOUND") {
|
|
13809
|
+
return error;
|
|
13810
|
+
}
|
|
13795
13811
|
if (error.code === "DIRECTORY_REFERENCE_NOT_ALLOWED") {
|
|
13796
13812
|
return error;
|
|
13797
13813
|
}
|
|
13814
|
+
if (error.code === "PARSE_ERROR") {
|
|
13815
|
+
const reference = urlInfo.firstReference;
|
|
13816
|
+
let trace = reference.trace;
|
|
13817
|
+
let line = error.line;
|
|
13818
|
+
let column = error.column;
|
|
13819
|
+
if (urlInfo.isInline) {
|
|
13820
|
+
line = trace.line + line;
|
|
13821
|
+
line = line - 1;
|
|
13822
|
+
trace = {
|
|
13823
|
+
...trace,
|
|
13824
|
+
line,
|
|
13825
|
+
column,
|
|
13826
|
+
codeFrame: generateContentFrame({
|
|
13827
|
+
line,
|
|
13828
|
+
column,
|
|
13829
|
+
content: urlInfo.inlineUrlSite.content,
|
|
13830
|
+
}),
|
|
13831
|
+
message: stringifyUrlSite({
|
|
13832
|
+
url: urlInfo.inlineUrlSite.url,
|
|
13833
|
+
line,
|
|
13834
|
+
column,
|
|
13835
|
+
content: urlInfo.inlineUrlSite.content,
|
|
13836
|
+
}),
|
|
13837
|
+
};
|
|
13838
|
+
} else {
|
|
13839
|
+
trace = {
|
|
13840
|
+
url: urlInfo.url,
|
|
13841
|
+
line,
|
|
13842
|
+
column: error.column,
|
|
13843
|
+
codeFrame: generateContentFrame({
|
|
13844
|
+
line,
|
|
13845
|
+
column: error.column,
|
|
13846
|
+
content: urlInfo.content,
|
|
13847
|
+
}),
|
|
13848
|
+
message: stringifyUrlSite({
|
|
13849
|
+
url: urlInfo.url,
|
|
13850
|
+
line,
|
|
13851
|
+
column: error.column,
|
|
13852
|
+
content: urlInfo.content,
|
|
13853
|
+
}),
|
|
13854
|
+
};
|
|
13855
|
+
}
|
|
13856
|
+
const transformError = new Error(
|
|
13857
|
+
createDetailedMessage$1(
|
|
13858
|
+
`parse error on "${urlInfo.type}"
|
|
13859
|
+
${trace.message}
|
|
13860
|
+
${error.message}`,
|
|
13861
|
+
{
|
|
13862
|
+
"first reference": `${reference.trace.url}:${reference.trace.line}:${reference.trace.column}`,
|
|
13863
|
+
...detailsFromFirstReference(reference),
|
|
13864
|
+
...detailsFromPluginController(pluginController),
|
|
13865
|
+
},
|
|
13866
|
+
),
|
|
13867
|
+
);
|
|
13868
|
+
transformError.cause = error;
|
|
13869
|
+
transformError.name = "TRANSFORM_URL_CONTENT_ERROR";
|
|
13870
|
+
transformError.code = "PARSE_ERROR";
|
|
13871
|
+
transformError.stack = error.stack;
|
|
13872
|
+
transformError.reason = error.message;
|
|
13873
|
+
transformError.trace = trace;
|
|
13874
|
+
transformError.asResponse = error.asResponse;
|
|
13875
|
+
return transformError;
|
|
13876
|
+
}
|
|
13798
13877
|
const createFailedToTransformError = ({
|
|
13799
13878
|
code = error.code || "TRANSFORM_URL_CONTENT_ERROR",
|
|
13800
13879
|
reason,
|
|
13801
13880
|
...details
|
|
13802
13881
|
}) => {
|
|
13882
|
+
const reference = urlInfo.firstReference;
|
|
13883
|
+
let trace = reference.trace;
|
|
13803
13884
|
const transformError = new Error(
|
|
13804
13885
|
createDetailedMessage$1(
|
|
13805
|
-
`"transformUrlContent" error on "${urlInfo.type}"
|
|
13886
|
+
`"transformUrlContent" error on "${urlInfo.type}"
|
|
13887
|
+
${trace.message}
|
|
13888
|
+
${reason}`,
|
|
13806
13889
|
{
|
|
13807
|
-
|
|
13890
|
+
...detailsFromFirstReference(reference),
|
|
13808
13891
|
...details,
|
|
13809
|
-
"url": urlInfo.url,
|
|
13810
|
-
"url reference trace": urlInfo.firstReference.trace.message,
|
|
13811
13892
|
...detailsFromPluginController(pluginController),
|
|
13812
13893
|
},
|
|
13813
13894
|
),
|
|
13814
13895
|
);
|
|
13896
|
+
transformError.cause = error;
|
|
13815
13897
|
transformError.name = "TRANSFORM_URL_CONTENT_ERROR";
|
|
13816
13898
|
transformError.code = code;
|
|
13817
13899
|
transformError.reason = reason;
|
|
13818
13900
|
transformError.stack = error.stack;
|
|
13819
13901
|
transformError.url = urlInfo.url;
|
|
13820
|
-
transformError.trace =
|
|
13821
|
-
if (code === "PARSE_ERROR") {
|
|
13822
|
-
transformError.reason = `parse error on ${urlInfo.type}`;
|
|
13823
|
-
transformError.cause = error;
|
|
13824
|
-
let line = error.line;
|
|
13825
|
-
if (urlInfo.type === "js_module") {
|
|
13826
|
-
line = line - 1;
|
|
13827
|
-
}
|
|
13828
|
-
if (urlInfo.isInline) {
|
|
13829
|
-
transformError.trace.line = urlInfo.firstReference.trace.line + line;
|
|
13830
|
-
transformError.trace.column =
|
|
13831
|
-
urlInfo.firstReference.trace.column + error.column;
|
|
13832
|
-
transformError.trace.codeFrame = generateContentFrame({
|
|
13833
|
-
line: transformError.trace.line,
|
|
13834
|
-
column: transformError.trace.column,
|
|
13835
|
-
content: urlInfo.inlineUrlSite.content,
|
|
13836
|
-
});
|
|
13837
|
-
transformError.trace.message = stringifyUrlSite({
|
|
13838
|
-
url: urlInfo.inlineUrlSite.url,
|
|
13839
|
-
line: transformError.trace.line,
|
|
13840
|
-
column: transformError.trace.column,
|
|
13841
|
-
content: urlInfo.inlineUrlSite.content,
|
|
13842
|
-
});
|
|
13843
|
-
} else {
|
|
13844
|
-
transformError.trace = {
|
|
13845
|
-
url: urlInfo.url,
|
|
13846
|
-
line,
|
|
13847
|
-
column: error.column,
|
|
13848
|
-
codeFrame: generateContentFrame({
|
|
13849
|
-
line,
|
|
13850
|
-
column: error.column,
|
|
13851
|
-
content: urlInfo.content,
|
|
13852
|
-
}),
|
|
13853
|
-
message: stringifyUrlSite({
|
|
13854
|
-
url: urlInfo.url,
|
|
13855
|
-
line,
|
|
13856
|
-
column: error.column,
|
|
13857
|
-
content: urlInfo.content,
|
|
13858
|
-
}),
|
|
13859
|
-
};
|
|
13860
|
-
}
|
|
13861
|
-
}
|
|
13902
|
+
transformError.trace = trace;
|
|
13862
13903
|
transformError.asResponse = error.asResponse;
|
|
13863
13904
|
return transformError;
|
|
13864
13905
|
};
|
|
@@ -13870,17 +13911,20 @@ const createTransformUrlContentError = ({
|
|
|
13870
13911
|
|
|
13871
13912
|
const createFinalizeUrlContentError = ({
|
|
13872
13913
|
pluginController,
|
|
13873
|
-
|
|
13874
13914
|
urlInfo,
|
|
13875
13915
|
error,
|
|
13876
13916
|
}) => {
|
|
13917
|
+
const reference = urlInfo.firstReference;
|
|
13877
13918
|
const finalizeError = new Error(
|
|
13878
|
-
createDetailedMessage$1(
|
|
13879
|
-
|
|
13880
|
-
|
|
13881
|
-
|
|
13882
|
-
|
|
13883
|
-
|
|
13919
|
+
createDetailedMessage$1(
|
|
13920
|
+
`"finalizeUrlContent" error on "${urlInfo.type}"
|
|
13921
|
+
${reference.trace.message}`,
|
|
13922
|
+
{
|
|
13923
|
+
...detailsFromFirstReference(reference),
|
|
13924
|
+
...detailsFromValueThrown(error),
|
|
13925
|
+
...detailsFromPluginController(pluginController),
|
|
13926
|
+
},
|
|
13927
|
+
),
|
|
13884
13928
|
);
|
|
13885
13929
|
if (error && error instanceof Error) {
|
|
13886
13930
|
finalizeError.cause = error;
|
|
@@ -13891,6 +13935,23 @@ const createFinalizeUrlContentError = ({
|
|
|
13891
13935
|
return finalizeError;
|
|
13892
13936
|
};
|
|
13893
13937
|
|
|
13938
|
+
const detailsFromFirstReference = (reference) => {
|
|
13939
|
+
const referenceInProject = getFirstReferenceInProject(reference);
|
|
13940
|
+
if (referenceInProject === reference) {
|
|
13941
|
+
return {};
|
|
13942
|
+
}
|
|
13943
|
+
return {
|
|
13944
|
+
"first reference in project": `${referenceInProject.trace.url}:${referenceInProject.trace.line}:${referenceInProject.trace.column}`,
|
|
13945
|
+
};
|
|
13946
|
+
};
|
|
13947
|
+
const getFirstReferenceInProject = (reference) => {
|
|
13948
|
+
const ownerUrlInfo = reference.ownerUrlInfo;
|
|
13949
|
+
if (!ownerUrlInfo.url.includes("/node_modules/")) {
|
|
13950
|
+
return reference;
|
|
13951
|
+
}
|
|
13952
|
+
return getFirstReferenceInProject(ownerUrlInfo.firstReference);
|
|
13953
|
+
};
|
|
13954
|
+
|
|
13894
13955
|
const detailsFromPluginController = (pluginController) => {
|
|
13895
13956
|
const currentPlugin = pluginController.getCurrentPlugin();
|
|
13896
13957
|
if (!currentPlugin) {
|
|
@@ -13901,6 +13962,18 @@ const detailsFromPluginController = (pluginController) => {
|
|
|
13901
13962
|
|
|
13902
13963
|
const detailsFromValueThrown = (valueThrownByPlugin) => {
|
|
13903
13964
|
if (valueThrownByPlugin && valueThrownByPlugin instanceof Error) {
|
|
13965
|
+
if (
|
|
13966
|
+
valueThrownByPlugin.code === "PARSE_ERROR" ||
|
|
13967
|
+
valueThrownByPlugin.code === "MODULE_NOT_FOUND" ||
|
|
13968
|
+
valueThrownByPlugin.name === "RESOLVE_URL_ERROR" ||
|
|
13969
|
+
valueThrownByPlugin.name === "FETCH_URL_CONTENT_ERROR" ||
|
|
13970
|
+
valueThrownByPlugin.name === "TRANSFORM_URL_CONTENT_ERROR" ||
|
|
13971
|
+
valueThrownByPlugin.name === "FINALIZE_URL_CONTENT_ERROR"
|
|
13972
|
+
) {
|
|
13973
|
+
return {
|
|
13974
|
+
"error message": valueThrownByPlugin.message,
|
|
13975
|
+
};
|
|
13976
|
+
}
|
|
13904
13977
|
return {
|
|
13905
13978
|
"error stack": valueThrownByPlugin.stack,
|
|
13906
13979
|
};
|
|
@@ -14520,16 +14593,21 @@ ${ANSI.color(normalizedReturnValue, ANSI.YELLOW)}
|
|
|
14520
14593
|
e.code !== "DIRECTORY_REFERENCE_NOT_ALLOWED" &&
|
|
14521
14594
|
errorOnInlineContentCanSkipThrow(urlInfo)
|
|
14522
14595
|
) {
|
|
14523
|
-
const errorInfo =
|
|
14524
|
-
e.code === "PARSE_ERROR" && e.cause
|
|
14525
|
-
? `${e.cause.reasonCode}\n${e.trace?.message}`
|
|
14526
|
-
: e.stack;
|
|
14527
14596
|
// When something like <style> or <script> contains syntax error
|
|
14528
14597
|
// the HTML in itself it still valid
|
|
14529
14598
|
// keep the syntax error and continue with the HTML
|
|
14599
|
+
if (e.code === "PARSE_ERROR") {
|
|
14600
|
+
logger.error(`parse error on "${urlInfo.type}"
|
|
14601
|
+
${e.trace?.message}
|
|
14602
|
+
${e.reason}
|
|
14603
|
+
--- declared in ---
|
|
14604
|
+
${urlInfo.firstReference.trace.message}`);
|
|
14605
|
+
return;
|
|
14606
|
+
}
|
|
14530
14607
|
logger.error(
|
|
14531
|
-
`Error while cooking ${urlInfo.type}
|
|
14532
|
-
${
|
|
14608
|
+
`Error while cooking ${urlInfo.type}
|
|
14609
|
+
${urlInfo.firstReference.trace.message}
|
|
14610
|
+
${e.stack}`,
|
|
14533
14611
|
);
|
|
14534
14612
|
return;
|
|
14535
14613
|
}
|
|
@@ -16101,10 +16179,7 @@ const jsenvPluginHtmlReferenceAnalysis = ({
|
|
|
16101
16179
|
type,
|
|
16102
16180
|
expectedType,
|
|
16103
16181
|
isOriginalPosition: isOriginal,
|
|
16104
|
-
|
|
16105
|
-
// <style>body { color: red; }</style>
|
|
16106
|
-
// -> content starts same line as <style> (same for <script>)
|
|
16107
|
-
specifierLine: line - 1,
|
|
16182
|
+
specifierLine: line,
|
|
16108
16183
|
specifierColumn: column,
|
|
16109
16184
|
specifier: inlineContentUrl,
|
|
16110
16185
|
contentType,
|
|
@@ -16223,7 +16298,7 @@ const jsenvPluginHtmlReferenceAnalysis = ({
|
|
|
16223
16298
|
},
|
|
16224
16299
|
);
|
|
16225
16300
|
const importmapReferenceInlined = importmapReference.inline({
|
|
16226
|
-
line
|
|
16301
|
+
line,
|
|
16227
16302
|
column,
|
|
16228
16303
|
isOriginal,
|
|
16229
16304
|
specifier: importmapInlineUrl,
|
|
@@ -18777,7 +18852,7 @@ const jsenvPluginInliningIntoHtml = () => {
|
|
|
18777
18852
|
url: linkReference.url,
|
|
18778
18853
|
});
|
|
18779
18854
|
const linkReferenceInlined = linkReference.inline({
|
|
18780
|
-
line
|
|
18855
|
+
line,
|
|
18781
18856
|
column,
|
|
18782
18857
|
isOriginal,
|
|
18783
18858
|
specifier: linkInlineUrl,
|
|
@@ -18829,7 +18904,7 @@ const jsenvPluginInliningIntoHtml = () => {
|
|
|
18829
18904
|
url: scriptReference.url,
|
|
18830
18905
|
});
|
|
18831
18906
|
const scriptReferenceInlined = scriptReference.inline({
|
|
18832
|
-
line
|
|
18907
|
+
line,
|
|
18833
18908
|
column,
|
|
18834
18909
|
isOriginal,
|
|
18835
18910
|
specifier: scriptInlineUrl,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsenv/core",
|
|
3
|
-
"version": "39.
|
|
3
|
+
"version": "39.2.0",
|
|
4
4
|
"description": "Tool to develop, test and build js projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -44,21 +44,21 @@
|
|
|
44
44
|
],
|
|
45
45
|
"scripts": {
|
|
46
46
|
"eslint": "npx eslint . --ext=.js,.mjs,.cjs,.html",
|
|
47
|
-
"dev": "node --conditions=development ./scripts/dev/dev.mjs",
|
|
48
47
|
"test": "node --conditions=development ./scripts/test/test.mjs",
|
|
49
|
-
"test:workspace": "npm run test --workspaces --if-present -- --workspace",
|
|
50
|
-
"test:ci": "CI=1 npm run test",
|
|
51
|
-
"test:workspace:ci": "CI=1 npm run test:workspace",
|
|
52
|
-
"test:only_dev_server_errors": "node --conditions=development ./tests/dev_server/errors/dev_errors_snapshots.test.mjs",
|
|
53
48
|
"build": "node --conditions=development ./scripts/build/build.mjs",
|
|
54
|
-
"
|
|
55
|
-
"build
|
|
56
|
-
"monorepo:upgrade_versions": "node ./scripts/monorepo/upgrade_external_versions.mjs",
|
|
49
|
+
"workspace:test": "npm run test --workspaces --if-present -- --workspace",
|
|
50
|
+
"workspace:build": "npm run build --workspaces --if-present --conditions=developement",
|
|
57
51
|
"monorepo:sync_packages_versions": "node ./scripts/monorepo/sync_packages_versions.mjs",
|
|
58
52
|
"monorepo:publish": "node ./scripts/monorepo/publish_packages.mjs",
|
|
53
|
+
"monorepo:upgrade_versions": "node ./scripts/monorepo/upgrade_external_versions.mjs",
|
|
59
54
|
"monorepo:node_modules_clear": "npx @jsenv/snapshot clear **/node_modules/",
|
|
55
|
+
"build:file_size": "node ./scripts/build/build_file_size.mjs --log",
|
|
60
56
|
"performances": "node --expose-gc ./scripts/performance/generate_performance_report.mjs --log --once",
|
|
61
57
|
"prettier": "prettier --write .",
|
|
58
|
+
"test:ci": "CI=1 npm run test",
|
|
59
|
+
"test:only_dev_server_errors": "node --conditions=development ./tests/dev_server/errors/dev_errors_snapshots.test.mjs",
|
|
60
|
+
"workspace:test:ci": "CI=1 npm run test:workspace",
|
|
61
|
+
"dev": "node --conditions=development ./scripts/dev/dev.mjs",
|
|
62
62
|
"certificate:install": "node ./scripts/dev/install_certificate_authority.mjs",
|
|
63
63
|
"prepublishOnly": "npm run build"
|
|
64
64
|
},
|
|
@@ -73,8 +73,8 @@
|
|
|
73
73
|
"@jsenv/js-module-fallback": "1.3.23",
|
|
74
74
|
"@jsenv/node-esm-resolution": "1.0.2",
|
|
75
75
|
"@jsenv/plugin-bundling": "2.6.16",
|
|
76
|
-
"@jsenv/plugin-minification": "1.5.
|
|
77
|
-
"@jsenv/plugin-supervisor": "1.5.
|
|
76
|
+
"@jsenv/plugin-minification": "1.5.5",
|
|
77
|
+
"@jsenv/plugin-supervisor": "1.5.3",
|
|
78
78
|
"@jsenv/plugin-transpilation": "1.4.6",
|
|
79
79
|
"@jsenv/runtime-compat": "1.3.0",
|
|
80
80
|
"@jsenv/server": "15.2.13",
|
|
@@ -98,18 +98,18 @@
|
|
|
98
98
|
"@jsenv/plugin-as-js-classic": "./packages/related/plugin-as-js-classic/",
|
|
99
99
|
"@jsenv/snapshot": "./packages/independent/snapshot/",
|
|
100
100
|
"@jsenv/test": "./packages/related/test/",
|
|
101
|
-
"@playwright/browser-chromium": "1.45.
|
|
102
|
-
"@playwright/browser-firefox": "1.45.
|
|
103
|
-
"@playwright/browser-webkit": "1.45.
|
|
101
|
+
"@playwright/browser-chromium": "1.45.2",
|
|
102
|
+
"@playwright/browser-firefox": "1.45.2",
|
|
103
|
+
"@playwright/browser-webkit": "1.45.2",
|
|
104
104
|
"babel-plugin-transform-async-to-promises": "0.8.18",
|
|
105
105
|
"eslint": "8.56.0",
|
|
106
106
|
"eslint-plugin-html": "8.1.1",
|
|
107
107
|
"eslint-plugin-import": "2.29.1",
|
|
108
|
-
"eslint-plugin-react": "7.34.
|
|
108
|
+
"eslint-plugin-react": "7.34.4",
|
|
109
109
|
"eslint-plugin-regexp": "2.6.0",
|
|
110
110
|
"marked": "13.0.2",
|
|
111
111
|
"open": "10.1.0",
|
|
112
|
-
"playwright": "1.45.
|
|
113
|
-
"prettier": "3.3.
|
|
112
|
+
"playwright": "1.45.2",
|
|
113
|
+
"prettier": "3.3.3"
|
|
114
114
|
}
|
|
115
115
|
}
|
package/src/kitchen/errors.js
CHANGED
|
@@ -13,13 +13,16 @@ export const createResolveUrlError = ({
|
|
|
13
13
|
...details
|
|
14
14
|
}) => {
|
|
15
15
|
const resolveError = new Error(
|
|
16
|
-
createDetailedMessage(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
createDetailedMessage(
|
|
17
|
+
`Failed to resolve url reference
|
|
18
|
+
${reference.trace.message}
|
|
19
|
+
${reason}`,
|
|
20
|
+
{
|
|
21
|
+
...detailsFromFirstReference(reference),
|
|
22
|
+
...details,
|
|
23
|
+
...detailsFromPluginController(pluginController),
|
|
24
|
+
},
|
|
25
|
+
),
|
|
23
26
|
);
|
|
24
27
|
resolveError.name = "RESOLVE_URL_ERROR";
|
|
25
28
|
resolveError.code = code;
|
|
@@ -54,14 +57,18 @@ export const createFetchUrlContentError = ({
|
|
|
54
57
|
reason,
|
|
55
58
|
...details
|
|
56
59
|
}) => {
|
|
60
|
+
const reference = urlInfo.firstReference;
|
|
57
61
|
const fetchError = new Error(
|
|
58
|
-
createDetailedMessage(
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
createDetailedMessage(
|
|
63
|
+
`Failed to fetch url content
|
|
64
|
+
${reference.trace.message}
|
|
65
|
+
${reason}`,
|
|
66
|
+
{
|
|
67
|
+
...detailsFromFirstReference(reference),
|
|
68
|
+
...details,
|
|
69
|
+
...detailsFromPluginController(pluginController),
|
|
70
|
+
},
|
|
71
|
+
),
|
|
65
72
|
);
|
|
66
73
|
fetchError.name = "FETCH_URL_CONTENT_ERROR";
|
|
67
74
|
fetchError.code = code;
|
|
@@ -70,7 +77,7 @@ export const createFetchUrlContentError = ({
|
|
|
70
77
|
if (code === "PARSE_ERROR") {
|
|
71
78
|
fetchError.trace = error.trace;
|
|
72
79
|
} else {
|
|
73
|
-
fetchError.trace =
|
|
80
|
+
fetchError.trace = reference.trace;
|
|
74
81
|
}
|
|
75
82
|
fetchError.asResponse = error.asResponse;
|
|
76
83
|
return fetchError;
|
|
@@ -119,73 +126,101 @@ export const createTransformUrlContentError = ({
|
|
|
119
126
|
urlInfo,
|
|
120
127
|
error,
|
|
121
128
|
}) => {
|
|
129
|
+
if (error.code === "MODULE_NOT_FOUND") {
|
|
130
|
+
return error;
|
|
131
|
+
}
|
|
122
132
|
if (error.code === "DIRECTORY_REFERENCE_NOT_ALLOWED") {
|
|
123
133
|
return error;
|
|
124
134
|
}
|
|
135
|
+
if (error.code === "PARSE_ERROR") {
|
|
136
|
+
const reference = urlInfo.firstReference;
|
|
137
|
+
let trace = reference.trace;
|
|
138
|
+
let line = error.line;
|
|
139
|
+
let column = error.column;
|
|
140
|
+
if (urlInfo.isInline) {
|
|
141
|
+
line = trace.line + line;
|
|
142
|
+
line = line - 1;
|
|
143
|
+
trace = {
|
|
144
|
+
...trace,
|
|
145
|
+
line,
|
|
146
|
+
column,
|
|
147
|
+
codeFrame: generateContentFrame({
|
|
148
|
+
line,
|
|
149
|
+
column,
|
|
150
|
+
content: urlInfo.inlineUrlSite.content,
|
|
151
|
+
}),
|
|
152
|
+
message: stringifyUrlSite({
|
|
153
|
+
url: urlInfo.inlineUrlSite.url,
|
|
154
|
+
line,
|
|
155
|
+
column,
|
|
156
|
+
content: urlInfo.inlineUrlSite.content,
|
|
157
|
+
}),
|
|
158
|
+
};
|
|
159
|
+
} else {
|
|
160
|
+
trace = {
|
|
161
|
+
url: urlInfo.url,
|
|
162
|
+
line,
|
|
163
|
+
column: error.column,
|
|
164
|
+
codeFrame: generateContentFrame({
|
|
165
|
+
line,
|
|
166
|
+
column: error.column,
|
|
167
|
+
content: urlInfo.content,
|
|
168
|
+
}),
|
|
169
|
+
message: stringifyUrlSite({
|
|
170
|
+
url: urlInfo.url,
|
|
171
|
+
line,
|
|
172
|
+
column: error.column,
|
|
173
|
+
content: urlInfo.content,
|
|
174
|
+
}),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
const transformError = new Error(
|
|
178
|
+
createDetailedMessage(
|
|
179
|
+
`parse error on "${urlInfo.type}"
|
|
180
|
+
${trace.message}
|
|
181
|
+
${error.message}`,
|
|
182
|
+
{
|
|
183
|
+
"first reference": `${reference.trace.url}:${reference.trace.line}:${reference.trace.column}`,
|
|
184
|
+
...detailsFromFirstReference(reference),
|
|
185
|
+
...detailsFromPluginController(pluginController),
|
|
186
|
+
},
|
|
187
|
+
),
|
|
188
|
+
);
|
|
189
|
+
transformError.cause = error;
|
|
190
|
+
transformError.name = "TRANSFORM_URL_CONTENT_ERROR";
|
|
191
|
+
transformError.code = "PARSE_ERROR";
|
|
192
|
+
transformError.stack = error.stack;
|
|
193
|
+
transformError.reason = error.message;
|
|
194
|
+
transformError.trace = trace;
|
|
195
|
+
transformError.asResponse = error.asResponse;
|
|
196
|
+
return transformError;
|
|
197
|
+
}
|
|
125
198
|
const createFailedToTransformError = ({
|
|
126
199
|
code = error.code || "TRANSFORM_URL_CONTENT_ERROR",
|
|
127
200
|
reason,
|
|
128
201
|
...details
|
|
129
202
|
}) => {
|
|
203
|
+
const reference = urlInfo.firstReference;
|
|
204
|
+
let trace = reference.trace;
|
|
130
205
|
const transformError = new Error(
|
|
131
206
|
createDetailedMessage(
|
|
132
|
-
`"transformUrlContent" error on "${urlInfo.type}"
|
|
207
|
+
`"transformUrlContent" error on "${urlInfo.type}"
|
|
208
|
+
${trace.message}
|
|
209
|
+
${reason}`,
|
|
133
210
|
{
|
|
134
|
-
|
|
211
|
+
...detailsFromFirstReference(reference),
|
|
135
212
|
...details,
|
|
136
|
-
"url": urlInfo.url,
|
|
137
|
-
"url reference trace": urlInfo.firstReference.trace.message,
|
|
138
213
|
...detailsFromPluginController(pluginController),
|
|
139
214
|
},
|
|
140
215
|
),
|
|
141
216
|
);
|
|
217
|
+
transformError.cause = error;
|
|
142
218
|
transformError.name = "TRANSFORM_URL_CONTENT_ERROR";
|
|
143
219
|
transformError.code = code;
|
|
144
220
|
transformError.reason = reason;
|
|
145
221
|
transformError.stack = error.stack;
|
|
146
222
|
transformError.url = urlInfo.url;
|
|
147
|
-
transformError.trace =
|
|
148
|
-
if (code === "PARSE_ERROR") {
|
|
149
|
-
transformError.reason = `parse error on ${urlInfo.type}`;
|
|
150
|
-
transformError.cause = error;
|
|
151
|
-
let line = error.line;
|
|
152
|
-
if (urlInfo.type === "js_module") {
|
|
153
|
-
line = line - 1;
|
|
154
|
-
}
|
|
155
|
-
if (urlInfo.isInline) {
|
|
156
|
-
transformError.trace.line = urlInfo.firstReference.trace.line + line;
|
|
157
|
-
transformError.trace.column =
|
|
158
|
-
urlInfo.firstReference.trace.column + error.column;
|
|
159
|
-
transformError.trace.codeFrame = generateContentFrame({
|
|
160
|
-
line: transformError.trace.line,
|
|
161
|
-
column: transformError.trace.column,
|
|
162
|
-
content: urlInfo.inlineUrlSite.content,
|
|
163
|
-
});
|
|
164
|
-
transformError.trace.message = stringifyUrlSite({
|
|
165
|
-
url: urlInfo.inlineUrlSite.url,
|
|
166
|
-
line: transformError.trace.line,
|
|
167
|
-
column: transformError.trace.column,
|
|
168
|
-
content: urlInfo.inlineUrlSite.content,
|
|
169
|
-
});
|
|
170
|
-
} else {
|
|
171
|
-
transformError.trace = {
|
|
172
|
-
url: urlInfo.url,
|
|
173
|
-
line,
|
|
174
|
-
column: error.column,
|
|
175
|
-
codeFrame: generateContentFrame({
|
|
176
|
-
line,
|
|
177
|
-
column: error.column,
|
|
178
|
-
content: urlInfo.content,
|
|
179
|
-
}),
|
|
180
|
-
message: stringifyUrlSite({
|
|
181
|
-
url: urlInfo.url,
|
|
182
|
-
line,
|
|
183
|
-
column: error.column,
|
|
184
|
-
content: urlInfo.content,
|
|
185
|
-
}),
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
}
|
|
223
|
+
transformError.trace = trace;
|
|
189
224
|
transformError.asResponse = error.asResponse;
|
|
190
225
|
return transformError;
|
|
191
226
|
};
|
|
@@ -197,17 +232,20 @@ export const createTransformUrlContentError = ({
|
|
|
197
232
|
|
|
198
233
|
export const createFinalizeUrlContentError = ({
|
|
199
234
|
pluginController,
|
|
200
|
-
|
|
201
235
|
urlInfo,
|
|
202
236
|
error,
|
|
203
237
|
}) => {
|
|
238
|
+
const reference = urlInfo.firstReference;
|
|
204
239
|
const finalizeError = new Error(
|
|
205
|
-
createDetailedMessage(
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
240
|
+
createDetailedMessage(
|
|
241
|
+
`"finalizeUrlContent" error on "${urlInfo.type}"
|
|
242
|
+
${reference.trace.message}`,
|
|
243
|
+
{
|
|
244
|
+
...detailsFromFirstReference(reference),
|
|
245
|
+
...detailsFromValueThrown(error),
|
|
246
|
+
...detailsFromPluginController(pluginController),
|
|
247
|
+
},
|
|
248
|
+
),
|
|
211
249
|
);
|
|
212
250
|
if (error && error instanceof Error) {
|
|
213
251
|
finalizeError.cause = error;
|
|
@@ -218,6 +256,23 @@ export const createFinalizeUrlContentError = ({
|
|
|
218
256
|
return finalizeError;
|
|
219
257
|
};
|
|
220
258
|
|
|
259
|
+
const detailsFromFirstReference = (reference) => {
|
|
260
|
+
const referenceInProject = getFirstReferenceInProject(reference);
|
|
261
|
+
if (referenceInProject === reference) {
|
|
262
|
+
return {};
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
"first reference in project": `${referenceInProject.trace.url}:${referenceInProject.trace.line}:${referenceInProject.trace.column}`,
|
|
266
|
+
};
|
|
267
|
+
};
|
|
268
|
+
const getFirstReferenceInProject = (reference) => {
|
|
269
|
+
const ownerUrlInfo = reference.ownerUrlInfo;
|
|
270
|
+
if (!ownerUrlInfo.url.includes("/node_modules/")) {
|
|
271
|
+
return reference;
|
|
272
|
+
}
|
|
273
|
+
return getFirstReferenceInProject(ownerUrlInfo.firstReference);
|
|
274
|
+
};
|
|
275
|
+
|
|
221
276
|
const detailsFromPluginController = (pluginController) => {
|
|
222
277
|
const currentPlugin = pluginController.getCurrentPlugin();
|
|
223
278
|
if (!currentPlugin) {
|
|
@@ -228,6 +283,18 @@ const detailsFromPluginController = (pluginController) => {
|
|
|
228
283
|
|
|
229
284
|
const detailsFromValueThrown = (valueThrownByPlugin) => {
|
|
230
285
|
if (valueThrownByPlugin && valueThrownByPlugin instanceof Error) {
|
|
286
|
+
if (
|
|
287
|
+
valueThrownByPlugin.code === "PARSE_ERROR" ||
|
|
288
|
+
valueThrownByPlugin.code === "MODULE_NOT_FOUND" ||
|
|
289
|
+
valueThrownByPlugin.name === "RESOLVE_URL_ERROR" ||
|
|
290
|
+
valueThrownByPlugin.name === "FETCH_URL_CONTENT_ERROR" ||
|
|
291
|
+
valueThrownByPlugin.name === "TRANSFORM_URL_CONTENT_ERROR" ||
|
|
292
|
+
valueThrownByPlugin.name === "FINALIZE_URL_CONTENT_ERROR"
|
|
293
|
+
) {
|
|
294
|
+
return {
|
|
295
|
+
"error message": valueThrownByPlugin.message,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
231
298
|
return {
|
|
232
299
|
"error stack": valueThrownByPlugin.stack,
|
|
233
300
|
};
|
package/src/kitchen/kitchen.js
CHANGED
|
@@ -487,16 +487,21 @@ ${ANSI.color(normalizedReturnValue, ANSI.YELLOW)}
|
|
|
487
487
|
e.code !== "DIRECTORY_REFERENCE_NOT_ALLOWED" &&
|
|
488
488
|
errorOnInlineContentCanSkipThrow(urlInfo)
|
|
489
489
|
) {
|
|
490
|
-
const errorInfo =
|
|
491
|
-
e.code === "PARSE_ERROR" && e.cause
|
|
492
|
-
? `${e.cause.reasonCode}\n${e.trace?.message}`
|
|
493
|
-
: e.stack;
|
|
494
490
|
// When something like <style> or <script> contains syntax error
|
|
495
491
|
// the HTML in itself it still valid
|
|
496
492
|
// keep the syntax error and continue with the HTML
|
|
493
|
+
if (e.code === "PARSE_ERROR") {
|
|
494
|
+
logger.error(`parse error on "${urlInfo.type}"
|
|
495
|
+
${e.trace?.message}
|
|
496
|
+
${e.reason}
|
|
497
|
+
--- declared in ---
|
|
498
|
+
${urlInfo.firstReference.trace.message}`);
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
497
501
|
logger.error(
|
|
498
|
-
`Error while cooking ${urlInfo.type}
|
|
499
|
-
${
|
|
502
|
+
`Error while cooking ${urlInfo.type}
|
|
503
|
+
${urlInfo.firstReference.trace.message}
|
|
504
|
+
${e.stack}`,
|
|
500
505
|
);
|
|
501
506
|
return;
|
|
502
507
|
}
|
|
@@ -64,6 +64,7 @@ export const createDependencies = (ownerUrlInfo) => {
|
|
|
64
64
|
isOriginalPosition,
|
|
65
65
|
specifierLine,
|
|
66
66
|
specifierColumn,
|
|
67
|
+
content,
|
|
67
68
|
...rest
|
|
68
69
|
}) => {
|
|
69
70
|
const parentUrl = isOriginalPosition
|
|
@@ -84,6 +85,7 @@ export const createDependencies = (ownerUrlInfo) => {
|
|
|
84
85
|
specifierLine,
|
|
85
86
|
specifierColumn,
|
|
86
87
|
isInline: true,
|
|
88
|
+
content,
|
|
87
89
|
...rest,
|
|
88
90
|
});
|
|
89
91
|
return reference;
|
|
@@ -411,6 +413,12 @@ const createReference = ({
|
|
|
411
413
|
ownerUrlInfo = reference.ownerUrlInfo,
|
|
412
414
|
...props
|
|
413
415
|
}) => {
|
|
416
|
+
const content =
|
|
417
|
+
ownerUrlInfo === undefined
|
|
418
|
+
? isOriginalPosition
|
|
419
|
+
? reference.ownerUrlInfo.originalContent
|
|
420
|
+
: reference.ownerUrlInfo.content
|
|
421
|
+
: ownerUrlInfo.content;
|
|
414
422
|
const trace = traceFromUrlSite({
|
|
415
423
|
url:
|
|
416
424
|
ownerUrlInfo === undefined
|
|
@@ -418,12 +426,7 @@ const createReference = ({
|
|
|
418
426
|
? reference.ownerUrlInfo.url
|
|
419
427
|
: reference.ownerUrlInfo.generatedUrl
|
|
420
428
|
: reference.ownerUrlInfo.url,
|
|
421
|
-
content
|
|
422
|
-
ownerUrlInfo === undefined
|
|
423
|
-
? isOriginalPosition
|
|
424
|
-
? reference.ownerUrlInfo.originalContent
|
|
425
|
-
: reference.ownerUrlInfo.content
|
|
426
|
-
: ownerUrlInfo.content,
|
|
429
|
+
content,
|
|
427
430
|
line,
|
|
428
431
|
column,
|
|
429
432
|
});
|
|
@@ -620,14 +623,15 @@ const applyDependencyRemovalEffects = (reference) => {
|
|
|
620
623
|
};
|
|
621
624
|
|
|
622
625
|
const traceFromUrlSite = (urlSite) => {
|
|
626
|
+
const codeFrame = urlSite.content
|
|
627
|
+
? generateContentFrame({
|
|
628
|
+
content: urlSite.content,
|
|
629
|
+
line: urlSite.line,
|
|
630
|
+
column: urlSite.column,
|
|
631
|
+
})
|
|
632
|
+
: "";
|
|
623
633
|
return {
|
|
624
|
-
codeFrame
|
|
625
|
-
? generateContentFrame({
|
|
626
|
-
content: urlSite.content,
|
|
627
|
-
line: urlSite.line,
|
|
628
|
-
column: urlSite.column,
|
|
629
|
-
})
|
|
630
|
-
: "",
|
|
634
|
+
codeFrame,
|
|
631
635
|
message: stringifyUrlSite(urlSite),
|
|
632
636
|
url: urlSite.url,
|
|
633
637
|
line: urlSite.line,
|
|
@@ -637,7 +641,7 @@ const traceFromUrlSite = (urlSite) => {
|
|
|
637
641
|
|
|
638
642
|
const adjustUrlSite = (urlInfo, { url, line, column }) => {
|
|
639
643
|
const isOriginal = url === urlInfo.url;
|
|
640
|
-
const adjust = (
|
|
644
|
+
const adjust = (urlInfo, urlSite) => {
|
|
641
645
|
if (!urlSite.isOriginal) {
|
|
642
646
|
return urlSite;
|
|
643
647
|
}
|
|
@@ -646,33 +650,35 @@ const adjustUrlSite = (urlInfo, { url, line, column }) => {
|
|
|
646
650
|
return urlSite;
|
|
647
651
|
}
|
|
648
652
|
const parentUrlInfo = urlInfo.graph.getUrlInfo(inlineUrlSite.url);
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
{
|
|
668
|
-
isOriginal,
|
|
669
|
-
url,
|
|
670
|
-
content: isOriginal ? urlInfo.originalContent : urlInfo.content,
|
|
653
|
+
line =
|
|
654
|
+
inlineUrlSite.line === undefined
|
|
655
|
+
? urlSite.line
|
|
656
|
+
: inlineUrlSite.line + urlSite.line;
|
|
657
|
+
// we remove 1 to the line because imagine the following html:
|
|
658
|
+
// <style>body { color: red; }</style>
|
|
659
|
+
// -> content starts same line as <style> (same for <script>)
|
|
660
|
+
if (urlInfo.content[0] === "\n") {
|
|
661
|
+
line = line - 1;
|
|
662
|
+
}
|
|
663
|
+
column =
|
|
664
|
+
inlineUrlSite.column === undefined
|
|
665
|
+
? urlSite.column
|
|
666
|
+
: inlineUrlSite.column + urlSite.column;
|
|
667
|
+
return adjust(parentUrlInfo, {
|
|
668
|
+
isOriginal: true,
|
|
669
|
+
url: inlineUrlSite.url,
|
|
670
|
+
content: inlineUrlSite.content,
|
|
671
671
|
line,
|
|
672
672
|
column,
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
|
|
673
|
+
});
|
|
674
|
+
};
|
|
675
|
+
return adjust(urlInfo, {
|
|
676
|
+
isOriginal,
|
|
677
|
+
url,
|
|
678
|
+
content: isOriginal ? urlInfo.originalContent : urlInfo.content,
|
|
679
|
+
line,
|
|
680
|
+
column,
|
|
681
|
+
});
|
|
676
682
|
};
|
|
677
683
|
|
|
678
684
|
const getRedirectedReferenceProps = (reference, url) => {
|
|
@@ -47,7 +47,7 @@ export const jsenvPluginInliningIntoHtml = () => {
|
|
|
47
47
|
url: linkReference.url,
|
|
48
48
|
});
|
|
49
49
|
const linkReferenceInlined = linkReference.inline({
|
|
50
|
-
line
|
|
50
|
+
line,
|
|
51
51
|
column,
|
|
52
52
|
isOriginal,
|
|
53
53
|
specifier: linkInlineUrl,
|
|
@@ -99,7 +99,7 @@ export const jsenvPluginInliningIntoHtml = () => {
|
|
|
99
99
|
url: scriptReference.url,
|
|
100
100
|
});
|
|
101
101
|
const scriptReferenceInlined = scriptReference.inline({
|
|
102
|
-
line
|
|
102
|
+
line,
|
|
103
103
|
column,
|
|
104
104
|
isOriginal,
|
|
105
105
|
specifier: scriptInlineUrl,
|
|
@@ -264,10 +264,7 @@ export const jsenvPluginHtmlReferenceAnalysis = ({
|
|
|
264
264
|
type,
|
|
265
265
|
expectedType,
|
|
266
266
|
isOriginalPosition: isOriginal,
|
|
267
|
-
|
|
268
|
-
// <style>body { color: red; }</style>
|
|
269
|
-
// -> content starts same line as <style> (same for <script>)
|
|
270
|
-
specifierLine: line - 1,
|
|
267
|
+
specifierLine: line,
|
|
271
268
|
specifierColumn: column,
|
|
272
269
|
specifier: inlineContentUrl,
|
|
273
270
|
contentType,
|
|
@@ -386,7 +383,7 @@ export const jsenvPluginHtmlReferenceAnalysis = ({
|
|
|
386
383
|
},
|
|
387
384
|
);
|
|
388
385
|
const importmapReferenceInlined = importmapReference.inline({
|
|
389
|
-
line
|
|
386
|
+
line,
|
|
390
387
|
column,
|
|
391
388
|
isOriginal,
|
|
392
389
|
specifier: importmapInlineUrl,
|