@jsenv/core 38.3.11 → 38.4.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/README.md +17 -18
- package/dist/babel_helpers/AsyncGenerator/AsyncGenerator.js +3 -3
- package/dist/babel_helpers/AwaitValue/AwaitValue.js +2 -2
- package/dist/babel_helpers/{overloadYield/overloadYield.js → OverloadYield/OverloadYield.js} +1 -1
- package/dist/babel_helpers/applyDecoratedDescriptor/applyDecoratedDescriptor.js +23 -14
- package/dist/babel_helpers/applyDecs/applyDecs.js +32 -21
- package/dist/babel_helpers/applyDecs2203/applyDecs2203.js +549 -549
- package/dist/babel_helpers/applyDecs2203R/applyDecs2203R.js +27 -15
- package/dist/babel_helpers/applyDecs2301/applyDecs2301.js +29 -18
- package/dist/babel_helpers/applyDecs2305/applyDecs2305.js +362 -541
- package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +4 -4
- package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +2 -2
- package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +3 -3
- package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +5 -3
- package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +2 -2
- package/dist/babel_helpers/asyncIterator/asyncIterator.js +1 -1
- package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +17 -17
- package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +2 -2
- package/dist/babel_helpers/callSuper/callSuper.js +25 -0
- package/dist/babel_helpers/checkInRHS/checkInRHS.js +10 -8
- package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +9 -6
- package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +2 -2
- package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +3 -3
- package/dist/babel_helpers/classCallCheck/classCallCheck.js +1 -1
- package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -2
- package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +7 -2
- package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +9 -3
- package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +3 -1
- package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +4 -4
- package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +4 -4
- package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +2 -2
- package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +2 -2
- package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +5 -5
- package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +2 -2
- package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +1 -1
- package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +11 -7
- package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +7 -7
- package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +8 -4
- package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +1 -1
- package/dist/babel_helpers/construct/construct.js +18 -14
- package/dist/babel_helpers/createClass/createClass.js +1 -1
- package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +21 -20
- package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +10 -9
- package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +11 -11
- package/dist/babel_helpers/createSuper/createSuper.js +11 -11
- package/dist/babel_helpers/decorate/decorate.js +255 -170
- package/dist/babel_helpers/defaults/defaults.js +5 -5
- package/dist/babel_helpers/defineAccessor/defineAccessor.js +1 -1
- package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +11 -11
- package/dist/babel_helpers/defineProperty/defineProperty.js +4 -4
- package/dist/babel_helpers/dispose/dispose.js +39 -39
- package/dist/babel_helpers/extends/extends.js +4 -4
- package/dist/babel_helpers/get/get.js +2 -2
- package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +1 -1
- package/dist/babel_helpers/identity/identity.js +1 -1
- package/dist/babel_helpers/importDeferProxy/importDeferProxy.js +27 -27
- package/dist/babel_helpers/inherits/inherits.js +4 -4
- package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +4 -4
- package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +5 -3
- package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +1 -1
- package/dist/babel_helpers/instanceof/instanceof.js +7 -3
- package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +1 -1
- package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +3 -1
- package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +1 -1
- package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +12 -14
- package/dist/babel_helpers/iterableToArray/iterableToArray.js +1 -1
- package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +1 -1
- package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +1 -1
- package/dist/babel_helpers/jsx/jsx.js +1 -1
- package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +4 -4
- package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +1 -1
- package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +2 -2
- package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +2 -2
- package/dist/babel_helpers/nullishReceiverError/nullishReceiverError.js +1 -1
- package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +1 -1
- package/dist/babel_helpers/objectSpread/objectSpread.js +8 -8
- package/dist/babel_helpers/objectSpread2/objectSpread2.js +5 -3
- package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +12 -12
- package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +10 -10
- package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +7 -5
- package/dist/babel_helpers/readOnlyError/readOnlyError.js +1 -1
- package/dist/babel_helpers/regeneratorRuntime/regeneratorRuntime.js +1 -1
- package/dist/babel_helpers/set/set.js +22 -19
- package/dist/babel_helpers/setFunctionName/setFunctionName.js +18 -0
- package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +7 -6
- package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +4 -4
- package/dist/babel_helpers/slicedToArray/slicedToArray.js +5 -5
- package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +5 -5
- package/dist/babel_helpers/superPropBase/superPropBase.js +4 -4
- package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +2 -2
- package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +3 -3
- package/dist/babel_helpers/tdz/tdz.js +1 -1
- package/dist/babel_helpers/temporalRef/temporalRef.js +3 -3
- package/dist/babel_helpers/toArray/toArray.js +5 -5
- package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +5 -5
- package/dist/babel_helpers/toPrimitive/toPrimitive.js +11 -7
- package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +8 -4
- package/dist/babel_helpers/typeof/typeof.js +6 -5
- package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +7 -7
- package/dist/babel_helpers/using/using.js +20 -20
- package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +3 -3
- package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +12 -12
- package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +5 -3
- package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +1 -1
- package/dist/js/ribbon.js +1 -1
- package/dist/js/ws.js +234 -146
- package/dist/jsenv_core.js +1365 -1211
- package/package.json +26 -22
- package/src/build/build.js +22 -14
- package/src/dev/start_dev_server.js +8 -21
- package/src/kitchen/errors.js +29 -24
- package/src/kitchen/kitchen.js +1 -1
- package/src/kitchen/url_graph/references.js +8 -0
- package/src/kitchen/url_graph/url_graph_report.js +5 -3
- package/src/plugins/plugins.js +2 -2
- package/src/plugins/protocol_file/jsenv_plugin_protocol_file.js +17 -7
- package/src/plugins/reference_analysis/js/jsenv_plugin_js_reference_analysis.js +10 -12
- package/src/plugins/ribbon/client/ribbon.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsenv/core",
|
|
3
|
-
"version": "38.
|
|
3
|
+
"version": "38.4.0",
|
|
4
4
|
"description": "Tool to develop, test and build js projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -53,32 +53,33 @@
|
|
|
53
53
|
"monorepo:upgrade_versions": "node ./scripts/monorepo/upgrade_external_versions.mjs",
|
|
54
54
|
"monorepo:sync_packages_versions": "node ./scripts/monorepo/sync_packages_versions.mjs",
|
|
55
55
|
"monorepo:publish": "node ./scripts/monorepo/publish_packages.mjs",
|
|
56
|
+
"monorepo:node_modules_clear": "npm @jsenv/snapshot clear **/node_modules/",
|
|
56
57
|
"performances": "node --expose-gc ./scripts/performance/generate_performance_report.mjs --log --once",
|
|
57
58
|
"prettier": "prettier --write .",
|
|
58
|
-
"playwright:install": "npx playwright install-deps && npx playwright install",
|
|
59
59
|
"certificate:install": "node ./scripts/dev/install_certificate_authority.mjs",
|
|
60
60
|
"prepublishOnly": "npm run build"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"@financial-times/polyfill-useragent-normaliser": "1.10.2",
|
|
64
|
-
"@jsenv/abort": "4.
|
|
65
|
-
"@jsenv/ast": "6.0.
|
|
66
|
-
"@jsenv/filesystem": "4.6.
|
|
64
|
+
"@jsenv/abort": "4.3.0",
|
|
65
|
+
"@jsenv/ast": "6.0.2",
|
|
66
|
+
"@jsenv/filesystem": "4.6.3",
|
|
67
67
|
"@jsenv/importmap": "1.2.1",
|
|
68
|
+
"@jsenv/inspect": "2.0.0",
|
|
68
69
|
"@jsenv/integrity": "0.0.1",
|
|
69
|
-
"@jsenv/js-module-fallback": "1.3.
|
|
70
|
-
"@jsenv/log": "3.
|
|
71
|
-
"@jsenv/node-esm-resolution": "1.0.
|
|
72
|
-
"@jsenv/plugin-bundling": "2.6.
|
|
70
|
+
"@jsenv/js-module-fallback": "1.3.10",
|
|
71
|
+
"@jsenv/log": "3.5.1",
|
|
72
|
+
"@jsenv/node-esm-resolution": "1.0.2",
|
|
73
|
+
"@jsenv/plugin-bundling": "2.6.3",
|
|
73
74
|
"@jsenv/plugin-minification": "1.5.4",
|
|
74
|
-
"@jsenv/plugin-supervisor": "1.4.
|
|
75
|
-
"@jsenv/plugin-transpilation": "1.3.
|
|
76
|
-
"@jsenv/runtime-compat": "1.2.
|
|
77
|
-
"@jsenv/server": "15.
|
|
78
|
-
"@jsenv/sourcemap": "1.2.
|
|
79
|
-
"@jsenv/url-meta": "8.
|
|
80
|
-
"@jsenv/urls": "2.2.
|
|
81
|
-
"@jsenv/utils": "2.1.
|
|
75
|
+
"@jsenv/plugin-supervisor": "1.4.1",
|
|
76
|
+
"@jsenv/plugin-transpilation": "1.3.10",
|
|
77
|
+
"@jsenv/runtime-compat": "1.2.2",
|
|
78
|
+
"@jsenv/server": "15.2.0",
|
|
79
|
+
"@jsenv/sourcemap": "1.2.5",
|
|
80
|
+
"@jsenv/url-meta": "8.4.0",
|
|
81
|
+
"@jsenv/urls": "2.2.2",
|
|
82
|
+
"@jsenv/utils": "2.1.1"
|
|
82
83
|
},
|
|
83
84
|
"devDependencies": {
|
|
84
85
|
"@babel/eslint-parser": "7.23.3",
|
|
@@ -94,12 +95,15 @@
|
|
|
94
95
|
"@jsenv/snapshot": "./packages/independent/snapshot/",
|
|
95
96
|
"@jsenv/test": "./packages/related/test/",
|
|
96
97
|
"babel-plugin-transform-async-to-promises": "0.8.18",
|
|
97
|
-
"eslint": "8.
|
|
98
|
+
"eslint": "8.56.0",
|
|
98
99
|
"eslint-plugin-html": "7.1.0",
|
|
99
|
-
"eslint-plugin-import": "2.29.
|
|
100
|
+
"eslint-plugin-import": "2.29.1",
|
|
100
101
|
"eslint-plugin-react": "7.33.2",
|
|
101
|
-
"open": "
|
|
102
|
-
"playwright": "1.40.
|
|
103
|
-
"
|
|
102
|
+
"open": "10.0.3",
|
|
103
|
+
"playwright": "1.40.1",
|
|
104
|
+
"@playwright/browser-chromium": "1.40.1",
|
|
105
|
+
"@playwright/browser-firefox": "1.40.1",
|
|
106
|
+
"@playwright/browser-webkit": "1.40.1",
|
|
107
|
+
"prettier": "3.1.1"
|
|
104
108
|
}
|
|
105
109
|
}
|
package/src/build/build.js
CHANGED
|
@@ -105,7 +105,7 @@ export const build = async ({
|
|
|
105
105
|
nodeEsmResolution,
|
|
106
106
|
magicExtensions,
|
|
107
107
|
magicDirectoryIndex,
|
|
108
|
-
|
|
108
|
+
directoryReferenceEffect,
|
|
109
109
|
scenarioPlaceholders,
|
|
110
110
|
injections,
|
|
111
111
|
transpilation = {},
|
|
@@ -195,6 +195,17 @@ export const build = async ({
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
+
if (assetsDirectory && assetsDirectory[assetsDirectory.length - 1] !== "/") {
|
|
199
|
+
assetsDirectory = `${assetsDirectory}/`;
|
|
200
|
+
}
|
|
201
|
+
if (directoryToClean === undefined) {
|
|
202
|
+
if (assetsDirectory === undefined) {
|
|
203
|
+
directoryToClean = buildDirectoryUrl;
|
|
204
|
+
} else {
|
|
205
|
+
directoryToClean = new URL(assetsDirectory, buildDirectoryUrl).href;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
198
209
|
const operation = Abort.startOperation();
|
|
199
210
|
operation.addAbortSignal(signal);
|
|
200
211
|
if (handleSIGINT) {
|
|
@@ -208,17 +219,6 @@ export const build = async ({
|
|
|
208
219
|
});
|
|
209
220
|
}
|
|
210
221
|
|
|
211
|
-
if (assetsDirectory && assetsDirectory[assetsDirectory.length - 1] !== "/") {
|
|
212
|
-
assetsDirectory = `${assetsDirectory}/`;
|
|
213
|
-
}
|
|
214
|
-
if (directoryToClean === undefined) {
|
|
215
|
-
if (assetsDirectory === undefined) {
|
|
216
|
-
directoryToClean = buildDirectoryUrl;
|
|
217
|
-
} else {
|
|
218
|
-
directoryToClean = new URL(assetsDirectory, buildDirectoryUrl).href;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
222
|
const runBuild = async ({ signal, logLevel }) => {
|
|
223
223
|
const logger = createLogger({ logLevel });
|
|
224
224
|
const createBuildTask = (label) => {
|
|
@@ -291,7 +291,7 @@ build ${entryPointKeys.length} entry points`);
|
|
|
291
291
|
nodeEsmResolution,
|
|
292
292
|
magicExtensions,
|
|
293
293
|
magicDirectoryIndex,
|
|
294
|
-
|
|
294
|
+
directoryReferenceEffect,
|
|
295
295
|
injections,
|
|
296
296
|
transpilation: {
|
|
297
297
|
babelHelpersAsImport: !explicitJsModuleConversion,
|
|
@@ -661,7 +661,15 @@ build ${entryPointKeys.length} entry points`);
|
|
|
661
661
|
};
|
|
662
662
|
|
|
663
663
|
if (!watch) {
|
|
664
|
-
|
|
664
|
+
try {
|
|
665
|
+
const result = await runBuild({
|
|
666
|
+
signal: operation.signal,
|
|
667
|
+
logLevel,
|
|
668
|
+
});
|
|
669
|
+
return result;
|
|
670
|
+
} finally {
|
|
671
|
+
await operation.end();
|
|
672
|
+
}
|
|
665
673
|
}
|
|
666
674
|
|
|
667
675
|
let resolveFirstBuild;
|
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
assertAndNormalizeDirectoryUrl,
|
|
5
5
|
bufferToEtag,
|
|
6
6
|
} from "@jsenv/filesystem";
|
|
7
|
-
import { Abort, raceProcessTeardownEvents } from "@jsenv/abort";
|
|
8
7
|
import { createLogger, createTaskLog } from "@jsenv/log";
|
|
9
8
|
import {
|
|
10
9
|
jsenvAccessControlAllowedHeaders,
|
|
@@ -123,25 +122,13 @@ export const startDevServer = async ({
|
|
|
123
122
|
}
|
|
124
123
|
|
|
125
124
|
const logger = createLogger({ logLevel });
|
|
126
|
-
const operation = Abort.startOperation();
|
|
127
|
-
operation.addAbortSignal(signal);
|
|
128
|
-
if (handleSIGINT) {
|
|
129
|
-
operation.addAbortSource((abort) => {
|
|
130
|
-
return raceProcessTeardownEvents(
|
|
131
|
-
{
|
|
132
|
-
SIGINT: true,
|
|
133
|
-
},
|
|
134
|
-
abort,
|
|
135
|
-
);
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
125
|
const startDevServerTask = createTaskLog("start dev server", {
|
|
139
126
|
disabled: !logger.levels.info,
|
|
140
127
|
});
|
|
141
128
|
|
|
142
|
-
const
|
|
129
|
+
const serverStopCallbackSet = new Set();
|
|
143
130
|
const serverEventsDispatcher = createServerEventsDispatcher();
|
|
144
|
-
|
|
131
|
+
serverStopCallbackSet.add(() => {
|
|
145
132
|
serverEventsDispatcher.destroy();
|
|
146
133
|
});
|
|
147
134
|
const kitchenCache = new Map();
|
|
@@ -216,7 +203,7 @@ export const startDevServer = async ({
|
|
|
216
203
|
cooldownBetweenFileEvents: clientAutoreload.cooldownBetweenFileEvents,
|
|
217
204
|
},
|
|
218
205
|
);
|
|
219
|
-
|
|
206
|
+
serverStopCallbackSet.add(stopWatchingSourceFiles);
|
|
220
207
|
|
|
221
208
|
const getOrCreateKitchen = (request) => {
|
|
222
209
|
const { runtimeName, runtimeVersion } = parseUserAgentHeader(
|
|
@@ -341,7 +328,7 @@ export const startDevServer = async ({
|
|
|
341
328
|
},
|
|
342
329
|
);
|
|
343
330
|
|
|
344
|
-
|
|
331
|
+
serverStopCallbackSet.add(() => {
|
|
345
332
|
kitchen.pluginController.callHooks("destroy", kitchen.context);
|
|
346
333
|
});
|
|
347
334
|
server_events: {
|
|
@@ -505,7 +492,7 @@ export const startDevServer = async ({
|
|
|
505
492
|
if (urlInfo.content !== undefined) {
|
|
506
493
|
kitchen.context.logger.error(`Error while handling ${request.url}:
|
|
507
494
|
${originalError.reasonCode || originalError.code}
|
|
508
|
-
${e.
|
|
495
|
+
${e.trace?.message}`);
|
|
509
496
|
return {
|
|
510
497
|
url: reference.url,
|
|
511
498
|
status: 200,
|
|
@@ -638,10 +625,10 @@ ${e.traceMessage}`);
|
|
|
638
625
|
});
|
|
639
626
|
server.stoppedPromise.then((reason) => {
|
|
640
627
|
onStop();
|
|
641
|
-
|
|
628
|
+
for (const serverStopCallback of serverStopCallbackSet) {
|
|
642
629
|
serverStopCallback(reason);
|
|
643
|
-
}
|
|
644
|
-
|
|
630
|
+
}
|
|
631
|
+
serverStopCallbackSet.clear();
|
|
645
632
|
});
|
|
646
633
|
startDevServerTask.done();
|
|
647
634
|
if (hostname) {
|
package/src/kitchen/errors.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { pathToFileURL } from "node:url";
|
|
2
2
|
import { createDetailedMessage } from "@jsenv/log";
|
|
3
3
|
import { stringifyUrlSite } from "@jsenv/urls";
|
|
4
|
+
import { inspectFileContent } from "@jsenv/inspect";
|
|
4
5
|
|
|
5
6
|
export const createResolveUrlError = ({
|
|
6
7
|
pluginController,
|
|
@@ -68,15 +69,9 @@ export const createFetchUrlContentError = ({
|
|
|
68
69
|
fetchError.reason = reason;
|
|
69
70
|
fetchError.url = urlInfo.url;
|
|
70
71
|
if (code === "PARSE_ERROR") {
|
|
71
|
-
fetchError.
|
|
72
|
-
fetchError.traceLine = error.traceLine;
|
|
73
|
-
fetchError.traceColumn = error.traceColumn;
|
|
74
|
-
fetchError.traceMessage = error.traceMessage;
|
|
72
|
+
fetchError.trace = error.trace;
|
|
75
73
|
} else {
|
|
76
|
-
fetchError.
|
|
77
|
-
fetchError.traceLine = urlInfo.firstReference.trace.line;
|
|
78
|
-
fetchError.traceColumn = urlInfo.firstReference.trace.column;
|
|
79
|
-
fetchError.traceMessage = urlInfo.firstReference.trace.message;
|
|
74
|
+
fetchError.trace = urlInfo.firstReference.trace;
|
|
80
75
|
}
|
|
81
76
|
fetchError.asResponse = error.asResponse;
|
|
82
77
|
return fetchError;
|
|
@@ -111,7 +106,7 @@ export const createFetchUrlContentError = ({
|
|
|
111
106
|
"code": "PARSE_ERROR",
|
|
112
107
|
"reason": error.reasonCode,
|
|
113
108
|
...(error.cause ? { "parse error message": error.cause.message } : {}),
|
|
114
|
-
"parse error trace": error.
|
|
109
|
+
"parse error trace": error.trace?.message,
|
|
115
110
|
});
|
|
116
111
|
}
|
|
117
112
|
return createFailedToFetchUrlContentError({
|
|
@@ -150,33 +145,43 @@ export const createTransformUrlContentError = ({
|
|
|
150
145
|
transformError.reason = reason;
|
|
151
146
|
transformError.stack = error.stack;
|
|
152
147
|
transformError.url = urlInfo.url;
|
|
153
|
-
transformError.
|
|
154
|
-
transformError.traceLine = urlInfo.firstReference.trace.line;
|
|
155
|
-
transformError.traceColumn = urlInfo.firstReference.trace.column;
|
|
156
|
-
transformError.traceMessage = urlInfo.firstReference.trace.message;
|
|
148
|
+
transformError.trace = urlInfo.firstReference.trace;
|
|
157
149
|
if (code === "PARSE_ERROR") {
|
|
158
150
|
transformError.reason = `parse error on ${urlInfo.type}`;
|
|
159
151
|
transformError.cause = error;
|
|
160
152
|
if (urlInfo.isInline) {
|
|
161
|
-
transformError.
|
|
153
|
+
transformError.trace.line =
|
|
162
154
|
urlInfo.firstReference.trace.line + error.line - 1;
|
|
163
|
-
transformError.
|
|
155
|
+
transformError.trace.column =
|
|
164
156
|
urlInfo.firstReference.trace.column + error.column;
|
|
165
|
-
transformError.
|
|
157
|
+
transformError.trace.codeFrame = inspectFileContent({
|
|
158
|
+
line: transformError.trace.line,
|
|
159
|
+
column: transformError.trace.column,
|
|
160
|
+
content: urlInfo.inlineUrlSite.content,
|
|
161
|
+
});
|
|
162
|
+
transformError.trace.message = stringifyUrlSite({
|
|
166
163
|
url: urlInfo.inlineUrlSite.url,
|
|
167
|
-
line: transformError.
|
|
168
|
-
column: transformError.
|
|
164
|
+
line: transformError.trace.line,
|
|
165
|
+
column: transformError.trace.column,
|
|
169
166
|
content: urlInfo.inlineUrlSite.content,
|
|
170
167
|
});
|
|
171
168
|
} else {
|
|
172
|
-
transformError.
|
|
173
|
-
transformError.traceColumn = error.column;
|
|
174
|
-
transformError.traceMessage = stringifyUrlSite({
|
|
169
|
+
transformError.trace = {
|
|
175
170
|
url: urlInfo.url,
|
|
176
|
-
line: error.line
|
|
171
|
+
line: error.line,
|
|
177
172
|
column: error.column,
|
|
178
|
-
|
|
179
|
-
|
|
173
|
+
codeFrame: inspectFileContent({
|
|
174
|
+
line: error.line - 1,
|
|
175
|
+
column: error.column,
|
|
176
|
+
content: urlInfo.content,
|
|
177
|
+
}),
|
|
178
|
+
message: stringifyUrlSite({
|
|
179
|
+
url: urlInfo.url,
|
|
180
|
+
line: error.line - 1,
|
|
181
|
+
column: error.column,
|
|
182
|
+
content: urlInfo.content,
|
|
183
|
+
}),
|
|
184
|
+
};
|
|
180
185
|
}
|
|
181
186
|
}
|
|
182
187
|
transformError.asResponse = error.asResponse;
|
package/src/kitchen/kitchen.js
CHANGED
|
@@ -487,7 +487,7 @@ ${ANSI.color(normalizedReturnValue, ANSI.YELLOW)}
|
|
|
487
487
|
) {
|
|
488
488
|
const errorInfo =
|
|
489
489
|
e.code === "PARSE_ERROR" && e.cause
|
|
490
|
-
? `${e.cause.reasonCode}\n${e.
|
|
490
|
+
? `${e.cause.reasonCode}\n${e.trace?.message}`
|
|
491
491
|
: e.stack;
|
|
492
492
|
// When something like <style> or <script> contains syntax error
|
|
493
493
|
// the HTML in itself it still valid
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
urlToExtension,
|
|
6
6
|
} from "@jsenv/urls";
|
|
7
7
|
import { generateUrlForInlineContent } from "@jsenv/ast";
|
|
8
|
+
import { inspectFileContent } from "@jsenv/inspect";
|
|
8
9
|
|
|
9
10
|
import { isWebWorkerEntryPointReference } from "../web_workers.js";
|
|
10
11
|
import { prependContent } from "../prepend_content.js";
|
|
@@ -619,6 +620,13 @@ const applyDependencyRemovalEffects = (reference) => {
|
|
|
619
620
|
|
|
620
621
|
const traceFromUrlSite = (urlSite) => {
|
|
621
622
|
return {
|
|
623
|
+
codeFrame: urlSite.content
|
|
624
|
+
? inspectFileContent({
|
|
625
|
+
content: urlSite.content,
|
|
626
|
+
line: urlSite.line,
|
|
627
|
+
column: urlSite.column,
|
|
628
|
+
})
|
|
629
|
+
: "",
|
|
622
630
|
message: stringifyUrlSite(urlSite),
|
|
623
631
|
url: urlSite.url,
|
|
624
632
|
line: urlSite.line,
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { inspectFileSize, distributePercentages } from "@jsenv/inspect";
|
|
2
|
+
import { ANSI } from "@jsenv/log";
|
|
3
|
+
|
|
2
4
|
import { GRAPH_VISITOR } from "./url_graph_visitor.js";
|
|
3
5
|
|
|
4
6
|
export const createUrlGraphSummary = (
|
|
@@ -166,7 +168,7 @@ const determineCategory = (urlInfo) => {
|
|
|
166
168
|
const createRepartitionMessage = ({ html, css, js, json, other, total }) => {
|
|
167
169
|
const addPart = (name, { count, size, percentage }) => {
|
|
168
170
|
parts.push(
|
|
169
|
-
`${ANSI.color(`${name}:`, ANSI.GREY)} ${count} (${
|
|
171
|
+
`${ANSI.color(`${name}:`, ANSI.GREY)} ${count} (${inspectFileSize(
|
|
170
172
|
size,
|
|
171
173
|
)} / ${percentage} %)`,
|
|
172
174
|
);
|
|
@@ -177,7 +179,7 @@ const createRepartitionMessage = ({ html, css, js, json, other, total }) => {
|
|
|
177
179
|
// parts.push(
|
|
178
180
|
// `${ANSI.color(`sourcemaps:`, ANSI.GREY)} ${
|
|
179
181
|
// sourcemaps.count
|
|
180
|
-
// } (${
|
|
182
|
+
// } (${inspectFileSize(sourcemaps.size)})`,
|
|
181
183
|
// )
|
|
182
184
|
// }
|
|
183
185
|
if (html.count) {
|
package/src/plugins/plugins.js
CHANGED
|
@@ -29,7 +29,7 @@ export const getCorePlugins = ({
|
|
|
29
29
|
nodeEsmResolution = {},
|
|
30
30
|
magicExtensions,
|
|
31
31
|
magicDirectoryIndex,
|
|
32
|
-
|
|
32
|
+
directoryReferenceEffect,
|
|
33
33
|
supervisor,
|
|
34
34
|
injections,
|
|
35
35
|
transpilation = true,
|
|
@@ -64,7 +64,7 @@ export const getCorePlugins = ({
|
|
|
64
64
|
- All the rest uses web standard url resolution
|
|
65
65
|
*/
|
|
66
66
|
jsenvPluginProtocolFile({
|
|
67
|
-
|
|
67
|
+
directoryReferenceEffect,
|
|
68
68
|
magicExtensions,
|
|
69
69
|
magicDirectoryIndex,
|
|
70
70
|
}),
|
|
@@ -17,7 +17,7 @@ export const jsenvPluginProtocolFile = ({
|
|
|
17
17
|
magicExtensions = ["inherit", ".js"],
|
|
18
18
|
magicDirectoryIndex = true,
|
|
19
19
|
preserveSymlinks = false,
|
|
20
|
-
|
|
20
|
+
directoryReferenceEffect = "error",
|
|
21
21
|
}) => {
|
|
22
22
|
return [
|
|
23
23
|
{
|
|
@@ -98,17 +98,27 @@ export const jsenvPluginProtocolFile = ({
|
|
|
98
98
|
}
|
|
99
99
|
reference.leadsToADirectory = stat && stat.isDirectory();
|
|
100
100
|
if (reference.leadsToADirectory) {
|
|
101
|
-
|
|
101
|
+
let actionForDirectory;
|
|
102
|
+
if (
|
|
102
103
|
reference.type === "http_request" ||
|
|
103
|
-
reference.type === "filesystem"
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
104
|
+
reference.type === "filesystem"
|
|
105
|
+
) {
|
|
106
|
+
actionForDirectory = "copy";
|
|
107
|
+
} else if (typeof directoryReferenceEffect === "string") {
|
|
108
|
+
actionForDirectory = directoryReferenceEffect;
|
|
109
|
+
} else if (typeof directoryReferenceEffect === "function") {
|
|
110
|
+
actionForDirectory = directoryReferenceEffect(reference);
|
|
111
|
+
} else {
|
|
112
|
+
actionForDirectory = "error";
|
|
113
|
+
}
|
|
114
|
+
if (actionForDirectory === "error") {
|
|
108
115
|
const error = new Error("Reference leads to a directory");
|
|
109
116
|
error.code = "DIRECTORY_REFERENCE_NOT_ALLOWED";
|
|
110
117
|
throw error;
|
|
111
118
|
}
|
|
119
|
+
if (actionForDirectory === "preserve") {
|
|
120
|
+
return `ignore:${url}${search}${hash}`;
|
|
121
|
+
}
|
|
112
122
|
}
|
|
113
123
|
const urlRaw = preserveSymlinks ? url : resolveSymlink(url);
|
|
114
124
|
const resolvedUrl = `${urlRaw}${search}${hash}`;
|
|
@@ -11,18 +11,20 @@ export const jsenvPluginJsReferenceAnalysis = ({ inlineContent }) => {
|
|
|
11
11
|
name: "jsenv:js_reference_analysis",
|
|
12
12
|
appliesDuring: "*",
|
|
13
13
|
transformUrlContent: {
|
|
14
|
-
js_classic: (urlInfo) =>
|
|
15
|
-
parseAndTransformJsReferences(urlInfo, {
|
|
14
|
+
js_classic: (urlInfo) => {
|
|
15
|
+
return parseAndTransformJsReferences(urlInfo, {
|
|
16
16
|
inlineContent,
|
|
17
17
|
canUseTemplateLiterals:
|
|
18
18
|
urlInfo.context.isSupportedOnCurrentClients("template_literals"),
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
});
|
|
20
|
+
},
|
|
21
|
+
js_module: (urlInfo) => {
|
|
22
|
+
return parseAndTransformJsReferences(urlInfo, {
|
|
22
23
|
inlineContent,
|
|
23
24
|
canUseTemplateLiterals:
|
|
24
25
|
urlInfo.context.isSupportedOnCurrentClients("template_literals"),
|
|
25
|
-
})
|
|
26
|
+
});
|
|
27
|
+
},
|
|
26
28
|
},
|
|
27
29
|
},
|
|
28
30
|
];
|
|
@@ -151,13 +153,9 @@ const parseAndTransformJsReferences = async (
|
|
|
151
153
|
if (parallelActions.length > 0) {
|
|
152
154
|
await Promise.all(parallelActions.map((action) => action()));
|
|
153
155
|
}
|
|
154
|
-
|
|
155
|
-
await
|
|
156
|
-
await previous;
|
|
157
|
-
await action();
|
|
158
|
-
}, Promise.resolve());
|
|
156
|
+
for (const sequentialAction of sequentialActions) {
|
|
157
|
+
await sequentialAction();
|
|
159
158
|
}
|
|
160
|
-
|
|
161
159
|
const { content, sourcemap } = magicSource.toContentAndSourcemap();
|
|
162
160
|
return { content, sourcemap };
|
|
163
161
|
};
|