@jsenv/core 27.0.0-alpha.64 → 27.0.0-alpha.67
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/babel_helpers/AsyncGenerator/AsyncGenerator.js +95 -0
- package/dist/babel_helpers/AwaitValue/AwaitValue.js +3 -0
- package/dist/babel_helpers/applyDecoratorDescriptor/applyDecoratorDescriptor.js +29 -0
- package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +9 -0
- package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +4 -0
- package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +5 -0
- package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +8 -0
- package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +52 -0
- package/dist/babel_helpers/asyncIterator/asyncIterator.js +78 -0
- package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +39 -0
- package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +4 -0
- package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +24 -0
- package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +7 -0
- package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +14 -0
- package/dist/babel_helpers/classCallCheck/classCallCheck.js +5 -0
- package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -0
- package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -0
- package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +8 -0
- package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +4 -0
- package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +6 -0
- package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +6 -0
- package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +7 -0
- package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -0
- package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +7 -0
- package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +7 -0
- package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +3 -0
- package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +8 -0
- package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +9 -0
- package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +5 -0
- package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -0
- package/dist/babel_helpers/construct/construct.js +15 -0
- package/dist/babel_helpers/createClass/createClass.js +18 -0
- package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +63 -0
- package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +22 -0
- package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +50 -0
- package/dist/babel_helpers/createSuper/createSuper.js +22 -0
- package/dist/babel_helpers/decorate/decorate.js +622 -0
- package/dist/babel_helpers/defaults/defaults.js +14 -0
- package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +26 -0
- package/dist/babel_helpers/defineProperty/defineProperty.js +19 -0
- package/dist/babel_helpers/extends/extends.js +16 -0
- package/dist/babel_helpers/get/get.js +21 -0
- package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +2 -0
- package/dist/babel_helpers/inherits/inherits.js +21 -0
- package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +6 -0
- package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +10 -0
- package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +3 -0
- package/dist/babel_helpers/instanceof/instanceof.js +7 -0
- package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +5 -0
- package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +49 -0
- package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +4 -0
- package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -0
- package/dist/babel_helpers/iterableToArray/iterableToArray.js +3 -0
- package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +38 -0
- package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +13 -0
- package/dist/babel_helpers/jsx/jsx.js +49 -0
- package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +10 -0
- package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +5 -0
- package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +3 -0
- package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +3 -0
- package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -0
- package/dist/babel_helpers/objectSpread/objectSpread.js +22 -0
- package/dist/babel_helpers/objectSpread2/objectSpread2.js +41 -0
- package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +20 -0
- package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +15 -0
- package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +10 -0
- package/dist/babel_helpers/readOnlyError/readOnlyError.js +4 -0
- package/dist/babel_helpers/readme.md +8 -0
- package/dist/babel_helpers/set/set.js +51 -0
- package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +5 -0
- package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -0
- package/dist/babel_helpers/slicedToArray/slicedToArray.js +5 -0
- package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +7 -0
- package/dist/babel_helpers/superPropBase/superPropBase.js +10 -0
- package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +11 -0
- package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +8 -0
- package/dist/babel_helpers/tdz/tdz.js +4 -0
- package/dist/babel_helpers/temporalRef/temporalRef.js +5 -0
- package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +3 -0
- package/dist/babel_helpers/toArray/toArray.js +5 -0
- package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +5 -0
- package/dist/babel_helpers/toPrimitive/toPrimitive.js +14 -0
- package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +5 -0
- package/dist/babel_helpers/typeof/typeof.js +7 -0
- package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +10 -0
- package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +7 -0
- package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +35 -0
- package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +67 -0
- package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +4 -0
- package/dist/html/explorer.html +557 -0
- package/dist/js/controllable_file.mjs +227 -0
- package/dist/{event_source_client.js → js/event_source_client.js} +19 -244
- package/dist/js/global_this.js +32 -0
- package/dist/js/html_supervisor_installer.js +522 -0
- package/dist/js/html_supervisor_setup.js +79 -0
- package/dist/{import_meta_hot.js → js/import_meta_hot.js} +1 -3
- package/dist/js/inline_content.js +8 -0
- package/dist/js/new_stylesheet.js +409 -0
- package/dist/js/regenerator_runtime.js +721 -0
- package/dist/js/s.js +429 -0
- package/dist/main.js +13450 -0
- package/dist/other/jsenv.png +0 -0
- package/dist/s.js.map +59 -62
- package/package.json +16 -12
- package/src/build/build.js +169 -68
- package/src/build/build_urls_generator.js +18 -2
- package/src/build/inject_service_worker_urls.js +1 -1
- package/src/build/resync_ressource_hints.js +56 -9
- package/src/dev/plugins/explorer/client/explorer.html +1 -1
- package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +1 -1
- package/src/dev/start_dev_server.js +17 -3
- package/src/execute/execute.js +3 -0
- package/src/omega/errors.js +12 -9
- package/src/omega/kitchen.js +252 -217
- package/src/omega/server/file_service.js +1 -1
- package/src/omega/url_graph/url_graph_report.js +2 -2
- package/src/omega/url_graph/url_info_transformations.js +10 -5
- package/src/omega/url_graph.js +3 -2
- package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +5 -10
- package/src/plugins/autoreload/jsenv_plugin_autoreload.js +1 -3
- package/src/plugins/bundling/js_module/bundle_js_module.js +66 -24
- package/src/plugins/file_urls/jsenv_plugin_file_urls.js +185 -53
- package/src/plugins/html_supervisor/jsenv_plugin_html_supervisor.js +9 -13
- package/src/plugins/http_urls/jsenv_plugin_http_urls.js +6 -6
- package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +5 -10
- package/src/plugins/inline/jsenv_plugin_js_inline_content.js +2 -2
- package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +12 -2
- package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +12 -0
- package/src/plugins/plugin_controller.js +17 -3
- package/src/plugins/plugins.js +16 -19
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +17 -19
- package/src/plugins/transpilation/as_js_classic/{jsenv_plugin_script_type_module_as_classic.js → jsenv_plugin_as_js_classic_html.js} +0 -0
- package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +9 -4
- package/src/plugins/transpilation/jsenv_plugin_transpilation.js +1 -2
- package/src/plugins/url_analysis/css/css_urls.js +1 -1
- package/src/plugins/url_analysis/html/html_urls.js +4 -1
- package/src/plugins/url_analysis/js/js_urls.js +3 -2
- package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +94 -1
- package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +3 -0
- package/src/plugins/url_resolution/jsenv_plugin_url_resolution.js +0 -3
- package/src/test/execute_plan.js +3 -1
- package/dist/event_source_client.js.map +0 -188
- package/dist/html_supervisor_installer.js +0 -1236
- package/dist/html_supervisor_installer.js.map +0 -337
- package/dist/html_supervisor_setup.js +0 -95
- package/dist/html_supervisor_setup.js.map +0 -57
- package/dist/import_meta_hot.js.map +0 -42
- package/src/jsenv_root_directory_url.js +0 -1
- package/src/omega/compat/default_runtime_compat.js +0 -11
- package/src/plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -61
- package/src/plugins/transpilation/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
package/src/omega/kitchen.js
CHANGED
|
@@ -15,7 +15,6 @@ import { createPluginController } from "../plugins/plugin_controller.js"
|
|
|
15
15
|
import { urlSpecifierEncoding } from "./url_specifier_encoding.js"
|
|
16
16
|
import { createUrlInfoTransformer } from "./url_graph/url_info_transformations.js"
|
|
17
17
|
import { RUNTIME_COMPAT } from "./compat/runtime_compat.js"
|
|
18
|
-
import { defaultRuntimeCompat } from "./compat/default_runtime_compat.js"
|
|
19
18
|
import {
|
|
20
19
|
createResolveUrlError,
|
|
21
20
|
createFetchUrlContentError,
|
|
@@ -46,7 +45,7 @@ export const createKitchen = ({
|
|
|
46
45
|
build: true,
|
|
47
46
|
}[scenario],
|
|
48
47
|
sourcemapsRelativeSources,
|
|
49
|
-
runtimeCompat
|
|
48
|
+
runtimeCompat,
|
|
50
49
|
writeGeneratedFiles,
|
|
51
50
|
}) => {
|
|
52
51
|
const pluginController = createPluginController({
|
|
@@ -86,7 +85,7 @@ export const createKitchen = ({
|
|
|
86
85
|
specifierColumn,
|
|
87
86
|
baseUrl,
|
|
88
87
|
isOriginalPosition,
|
|
89
|
-
|
|
88
|
+
shouldHandle,
|
|
90
89
|
isInline = false,
|
|
91
90
|
injected = false,
|
|
92
91
|
isRessourceHint = false,
|
|
@@ -122,7 +121,7 @@ export const createKitchen = ({
|
|
|
122
121
|
specifierColumn,
|
|
123
122
|
baseUrl,
|
|
124
123
|
isOriginalPosition,
|
|
125
|
-
|
|
124
|
+
shouldHandle,
|
|
126
125
|
isInline,
|
|
127
126
|
injected,
|
|
128
127
|
isRessourceHint,
|
|
@@ -152,11 +151,6 @@ export const createKitchen = ({
|
|
|
152
151
|
}
|
|
153
152
|
resolvedUrl = normalizeUrl(resolvedUrl)
|
|
154
153
|
reference.url = resolvedUrl
|
|
155
|
-
if (reference.external) {
|
|
156
|
-
reference.generatedUrl = resolvedUrl
|
|
157
|
-
reference.generatedSpecifier = reference.specifier
|
|
158
|
-
return urlGraph.reuseOrCreateUrlInfo(reference.url)
|
|
159
|
-
}
|
|
160
154
|
pluginController.callHooks(
|
|
161
155
|
"redirectUrl",
|
|
162
156
|
reference,
|
|
@@ -259,10 +253,6 @@ export const createKitchen = ({
|
|
|
259
253
|
})
|
|
260
254
|
|
|
261
255
|
const fetchUrlContent = async (urlInfo, { reference, context }) => {
|
|
262
|
-
if (reference.external) {
|
|
263
|
-
urlInfo.external = true
|
|
264
|
-
return
|
|
265
|
-
}
|
|
266
256
|
try {
|
|
267
257
|
const fetchUrlContentReturnValue =
|
|
268
258
|
await pluginController.callAsyncHooksUntil(
|
|
@@ -273,18 +263,13 @@ export const createKitchen = ({
|
|
|
273
263
|
if (!fetchUrlContentReturnValue) {
|
|
274
264
|
logger.warn(
|
|
275
265
|
createDetailedMessage(
|
|
276
|
-
`no plugin has handled
|
|
266
|
+
`no plugin has handled url during "fetchUrlContent" hook -> url will be ignored`,
|
|
277
267
|
{
|
|
278
268
|
"url": urlInfo.url,
|
|
279
269
|
"url reference trace": reference.trace,
|
|
280
270
|
},
|
|
281
271
|
),
|
|
282
272
|
)
|
|
283
|
-
urlInfo.external = true
|
|
284
|
-
return
|
|
285
|
-
}
|
|
286
|
-
if (fetchUrlContentReturnValue.external) {
|
|
287
|
-
urlInfo.external = true
|
|
288
273
|
return
|
|
289
274
|
}
|
|
290
275
|
const {
|
|
@@ -292,6 +277,7 @@ export const createKitchen = ({
|
|
|
292
277
|
type,
|
|
293
278
|
subtype,
|
|
294
279
|
contentType = "application/octet-stream",
|
|
280
|
+
originalUrl,
|
|
295
281
|
originalContent,
|
|
296
282
|
content,
|
|
297
283
|
sourcemap,
|
|
@@ -313,7 +299,8 @@ export const createKitchen = ({
|
|
|
313
299
|
subtype: urlInfo.subtype,
|
|
314
300
|
})
|
|
315
301
|
urlInfo.contentType = contentType
|
|
316
|
-
// during build urls info are reused and load returns originalContent
|
|
302
|
+
// during build urls info are reused and load returns originalUrl/originalContent
|
|
303
|
+
urlInfo.originalUrl = originalUrl || urlInfo.originalUrl
|
|
317
304
|
urlInfo.originalContent =
|
|
318
305
|
originalContent === undefined ? content : originalContent
|
|
319
306
|
urlInfo.content = content
|
|
@@ -367,206 +354,207 @@ export const createKitchen = ({
|
|
|
367
354
|
return fetchUrlContent(urlInfo, { reference, context })
|
|
368
355
|
}
|
|
369
356
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
return
|
|
374
|
-
}
|
|
357
|
+
if (urlInfo.shouldHandle) {
|
|
358
|
+
// "fetchUrlContent" hook
|
|
359
|
+
await fetchUrlContent(urlInfo, { reference: context.reference, context })
|
|
375
360
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
})
|
|
383
|
-
references.push(reference)
|
|
384
|
-
const referencedUrlInfo = resolveReference(reference)
|
|
385
|
-
return [reference, referencedUrlInfo]
|
|
386
|
-
}
|
|
387
|
-
const referenceUtils = {
|
|
388
|
-
readGeneratedSpecifier: async (reference) => {
|
|
389
|
-
// "formatReferencedUrl" can be async BUT this is an exception
|
|
390
|
-
// for most cases it will be sync. We want to favor the sync signature to keep things simpler
|
|
391
|
-
// The only case where it needs to be async is when
|
|
392
|
-
// the specifier is a `data:*` url
|
|
393
|
-
// in this case we'll wait for the promise returned by
|
|
394
|
-
// "formatReferencedUrl"
|
|
395
|
-
if (reference.generatedSpecifier.then) {
|
|
396
|
-
return reference.generatedSpecifier.then((value) => {
|
|
397
|
-
reference.generatedSpecifier = value
|
|
398
|
-
return value
|
|
399
|
-
})
|
|
400
|
-
}
|
|
401
|
-
return reference.generatedSpecifier
|
|
402
|
-
},
|
|
403
|
-
found: ({ specifierLine, specifierColumn, ...rest }) => {
|
|
404
|
-
const trace = stringifyUrlSite(
|
|
405
|
-
adjustUrlSite(urlInfo, {
|
|
406
|
-
urlGraph,
|
|
407
|
-
url: urlInfo.url,
|
|
408
|
-
line: specifierLine,
|
|
409
|
-
column: specifierColumn,
|
|
410
|
-
}),
|
|
411
|
-
)
|
|
412
|
-
// console.log(trace)
|
|
413
|
-
return addReference({
|
|
414
|
-
trace,
|
|
415
|
-
specifierLine,
|
|
416
|
-
specifierColumn,
|
|
417
|
-
...rest,
|
|
361
|
+
// parsing
|
|
362
|
+
const references = []
|
|
363
|
+
const addReference = (props) => {
|
|
364
|
+
const reference = createReference({
|
|
365
|
+
parentUrl: urlInfo.url,
|
|
366
|
+
...props,
|
|
418
367
|
})
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
...rest,
|
|
439
|
-
})
|
|
440
|
-
},
|
|
441
|
-
update: (currentReference, newReferenceParams) => {
|
|
442
|
-
const index = references.indexOf(currentReference)
|
|
443
|
-
if (index === -1) {
|
|
444
|
-
throw new Error(`reference do not exists`)
|
|
445
|
-
}
|
|
446
|
-
const previousReference = currentReference
|
|
447
|
-
const nextReference = createReference({
|
|
448
|
-
...previousReference,
|
|
449
|
-
...newReferenceParams,
|
|
450
|
-
})
|
|
451
|
-
references[index] = nextReference
|
|
452
|
-
mutateReference(previousReference, nextReference)
|
|
453
|
-
const newUrlInfo = resolveReference(nextReference)
|
|
454
|
-
const currentUrlInfo = context.urlGraph.getUrlInfo(currentReference.url)
|
|
455
|
-
if (
|
|
456
|
-
currentUrlInfo &&
|
|
457
|
-
currentUrlInfo !== newUrlInfo &&
|
|
458
|
-
currentUrlInfo.dependents.size === 0
|
|
459
|
-
) {
|
|
460
|
-
context.urlGraph.deleteUrlInfo(currentReference.url)
|
|
461
|
-
}
|
|
462
|
-
return [nextReference, newUrlInfo]
|
|
463
|
-
},
|
|
464
|
-
becomesInline: (
|
|
465
|
-
reference,
|
|
466
|
-
{
|
|
467
|
-
isOriginalPosition,
|
|
468
|
-
specifier,
|
|
469
|
-
specifierLine,
|
|
470
|
-
specifierColumn,
|
|
471
|
-
contentType,
|
|
472
|
-
content,
|
|
368
|
+
references.push(reference)
|
|
369
|
+
const referencedUrlInfo = resolveReference(reference)
|
|
370
|
+
return [reference, referencedUrlInfo]
|
|
371
|
+
}
|
|
372
|
+
const referenceUtils = {
|
|
373
|
+
readGeneratedSpecifier: async (reference) => {
|
|
374
|
+
// "formatReferencedUrl" can be async BUT this is an exception
|
|
375
|
+
// for most cases it will be sync. We want to favor the sync signature to keep things simpler
|
|
376
|
+
// The only case where it needs to be async is when
|
|
377
|
+
// the specifier is a `data:*` url
|
|
378
|
+
// in this case we'll wait for the promise returned by
|
|
379
|
+
// "formatReferencedUrl"
|
|
380
|
+
if (reference.generatedSpecifier.then) {
|
|
381
|
+
return reference.generatedSpecifier.then((value) => {
|
|
382
|
+
reference.generatedSpecifier = value
|
|
383
|
+
return value
|
|
384
|
+
})
|
|
385
|
+
}
|
|
386
|
+
return reference.generatedSpecifier
|
|
473
387
|
},
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
388
|
+
found: ({ trace, ...rest }) => {
|
|
389
|
+
if (trace === undefined) {
|
|
390
|
+
trace = stringifyUrlSite(
|
|
391
|
+
adjustUrlSite(urlInfo, {
|
|
392
|
+
urlGraph,
|
|
393
|
+
url: urlInfo.url,
|
|
394
|
+
line: rest.specifierLine,
|
|
395
|
+
column: rest.specifierColumn,
|
|
396
|
+
}),
|
|
397
|
+
)
|
|
398
|
+
}
|
|
399
|
+
// console.log(trace)
|
|
400
|
+
return addReference({
|
|
401
|
+
trace,
|
|
402
|
+
...rest,
|
|
403
|
+
})
|
|
404
|
+
},
|
|
405
|
+
foundInline: ({ isOriginalPosition, line, column, ...rest }) => {
|
|
406
|
+
const parentUrl = isOriginalPosition
|
|
407
|
+
? urlInfo.url
|
|
408
|
+
: urlInfo.generatedUrl
|
|
409
|
+
const parentContent = isOriginalPosition
|
|
410
|
+
? urlInfo.originalContent
|
|
411
|
+
: urlInfo.content
|
|
412
|
+
return addReference({
|
|
413
|
+
trace: stringifyUrlSite({
|
|
414
|
+
url: parentUrl,
|
|
415
|
+
content: parentContent,
|
|
416
|
+
line,
|
|
417
|
+
column,
|
|
418
|
+
}),
|
|
419
|
+
isOriginalPosition,
|
|
502
420
|
line,
|
|
503
421
|
column,
|
|
422
|
+
isInline: true,
|
|
423
|
+
...rest,
|
|
504
424
|
})
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
425
|
+
},
|
|
426
|
+
update: (currentReference, newReferenceParams) => {
|
|
427
|
+
const index = references.indexOf(currentReference)
|
|
428
|
+
if (index === -1) {
|
|
429
|
+
throw new Error(`reference do not exists`)
|
|
430
|
+
}
|
|
431
|
+
const previousReference = currentReference
|
|
432
|
+
const nextReference = createReference({
|
|
433
|
+
...previousReference,
|
|
434
|
+
...newReferenceParams,
|
|
435
|
+
})
|
|
436
|
+
references[index] = nextReference
|
|
437
|
+
mutateReference(previousReference, nextReference)
|
|
438
|
+
const newUrlInfo = resolveReference(nextReference)
|
|
439
|
+
const currentUrlInfo = context.urlGraph.getUrlInfo(
|
|
440
|
+
currentReference.url,
|
|
519
441
|
)
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
442
|
+
if (
|
|
443
|
+
currentUrlInfo &&
|
|
444
|
+
currentUrlInfo !== newUrlInfo &&
|
|
445
|
+
currentUrlInfo.dependents.size === 0
|
|
446
|
+
) {
|
|
447
|
+
context.urlGraph.deleteUrlInfo(currentReference.url)
|
|
448
|
+
}
|
|
449
|
+
return [nextReference, newUrlInfo]
|
|
450
|
+
},
|
|
451
|
+
becomesInline: (
|
|
452
|
+
reference,
|
|
453
|
+
{
|
|
454
|
+
isOriginalPosition,
|
|
455
|
+
specifier,
|
|
456
|
+
specifierLine,
|
|
457
|
+
specifierColumn,
|
|
458
|
+
contentType,
|
|
459
|
+
content,
|
|
460
|
+
},
|
|
461
|
+
) => {
|
|
462
|
+
const parentUrl = isOriginalPosition
|
|
463
|
+
? urlInfo.url
|
|
464
|
+
: urlInfo.generatedUrl
|
|
465
|
+
const parentContent = isOriginalPosition
|
|
466
|
+
? urlInfo.originalContent
|
|
467
|
+
: urlInfo.content
|
|
468
|
+
return referenceUtils.update(reference, {
|
|
469
|
+
trace: stringifyUrlSite({
|
|
470
|
+
url: parentUrl,
|
|
471
|
+
content: parentContent,
|
|
472
|
+
line: specifierLine,
|
|
473
|
+
column: specifierColumn,
|
|
474
|
+
}),
|
|
475
|
+
isOriginalPosition,
|
|
476
|
+
isInline: true,
|
|
477
|
+
specifier,
|
|
478
|
+
specifierLine,
|
|
479
|
+
specifierColumn,
|
|
480
|
+
contentType,
|
|
481
|
+
content,
|
|
482
|
+
})
|
|
483
|
+
},
|
|
484
|
+
inject: ({ trace, ...rest }) => {
|
|
485
|
+
if (trace === undefined) {
|
|
486
|
+
const { url, line, column } = getCallerPosition()
|
|
487
|
+
trace = stringifyUrlSite({
|
|
488
|
+
url,
|
|
489
|
+
line,
|
|
490
|
+
column,
|
|
491
|
+
})
|
|
492
|
+
}
|
|
493
|
+
return addReference({
|
|
494
|
+
trace,
|
|
495
|
+
injected: true,
|
|
496
|
+
...rest,
|
|
497
|
+
})
|
|
498
|
+
},
|
|
499
|
+
findByGeneratedSpecifier: (generatedSpecifier) => {
|
|
500
|
+
const reference = references.find(
|
|
501
|
+
(ref) => ref.generatedSpecifier === generatedSpecifier,
|
|
537
502
|
)
|
|
503
|
+
if (!reference) {
|
|
504
|
+
throw new Error(
|
|
505
|
+
`No reference found using the following generatedSpecifier: "${generatedSpecifier}"`,
|
|
506
|
+
)
|
|
507
|
+
}
|
|
508
|
+
return reference
|
|
538
509
|
},
|
|
539
|
-
|
|
540
|
-
} catch (error) {
|
|
541
|
-
throw createTransformUrlContentError({
|
|
542
|
-
pluginController,
|
|
543
|
-
reference: context.reference,
|
|
544
|
-
urlInfo,
|
|
545
|
-
error,
|
|
546
|
-
})
|
|
547
|
-
}
|
|
548
|
-
// after "transform" all references from originalContent
|
|
549
|
-
// and the one injected by plugin are known
|
|
550
|
-
urlGraph.updateReferences(urlInfo, references)
|
|
510
|
+
}
|
|
551
511
|
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
512
|
+
// "transform" hook
|
|
513
|
+
urlInfo.references = references
|
|
514
|
+
context.referenceUtils = referenceUtils
|
|
515
|
+
try {
|
|
516
|
+
await pluginController.callAsyncHooks(
|
|
517
|
+
"transformUrlContent",
|
|
518
|
+
urlInfo,
|
|
519
|
+
context,
|
|
520
|
+
async (transformReturnValue) => {
|
|
521
|
+
await urlInfoTransformer.applyIntermediateTransformations(
|
|
522
|
+
urlInfo,
|
|
523
|
+
transformReturnValue,
|
|
524
|
+
)
|
|
525
|
+
},
|
|
526
|
+
)
|
|
527
|
+
} catch (error) {
|
|
528
|
+
throw createTransformUrlContentError({
|
|
529
|
+
pluginController,
|
|
530
|
+
reference: context.reference,
|
|
531
|
+
urlInfo,
|
|
532
|
+
error,
|
|
533
|
+
})
|
|
534
|
+
}
|
|
535
|
+
// after "transform" all references from originalContent
|
|
536
|
+
// and the one injected by plugin are known
|
|
537
|
+
urlGraph.updateReferences(urlInfo, references)
|
|
538
|
+
|
|
539
|
+
// "finalize" hook
|
|
540
|
+
try {
|
|
541
|
+
const finalizeReturnValue = await pluginController.callAsyncHooksUntil(
|
|
542
|
+
"finalizeUrlContent",
|
|
543
|
+
urlInfo,
|
|
544
|
+
context,
|
|
545
|
+
)
|
|
546
|
+
await urlInfoTransformer.applyFinalTransformations(
|
|
547
|
+
urlInfo,
|
|
548
|
+
finalizeReturnValue,
|
|
549
|
+
)
|
|
550
|
+
} catch (error) {
|
|
551
|
+
throw createFinalizeUrlContentError({
|
|
552
|
+
pluginController,
|
|
553
|
+
reference: context.reference,
|
|
554
|
+
urlInfo,
|
|
555
|
+
error,
|
|
556
|
+
})
|
|
557
|
+
}
|
|
570
558
|
}
|
|
571
559
|
|
|
572
560
|
// "cooked" hook
|
|
@@ -602,13 +590,17 @@ export const createKitchen = ({
|
|
|
602
590
|
} finally {
|
|
603
591
|
const { generatedUrl } = urlInfo
|
|
604
592
|
if (generatedUrl && generatedUrl.startsWith("file:")) {
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
writeFileSync(
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
593
|
+
if (urlInfo.type === "directory") {
|
|
594
|
+
// no need to write the directory
|
|
595
|
+
} else {
|
|
596
|
+
writeFileSync(new URL(generatedUrl), urlInfo.content)
|
|
597
|
+
const { sourcemapGeneratedUrl, sourcemap } = urlInfo
|
|
598
|
+
if (sourcemapGeneratedUrl && sourcemap) {
|
|
599
|
+
writeFileSync(
|
|
600
|
+
new URL(sourcemapGeneratedUrl),
|
|
601
|
+
JSON.stringify(sourcemap, null, " "),
|
|
602
|
+
)
|
|
603
|
+
}
|
|
612
604
|
}
|
|
613
605
|
}
|
|
614
606
|
}
|
|
@@ -628,6 +620,44 @@ export const createKitchen = ({
|
|
|
628
620
|
return [ref, urlInfo]
|
|
629
621
|
}
|
|
630
622
|
|
|
623
|
+
const fetchOriginalUrlInfo = async ({
|
|
624
|
+
urlInfo,
|
|
625
|
+
context,
|
|
626
|
+
searchParam,
|
|
627
|
+
expectedType,
|
|
628
|
+
}) => {
|
|
629
|
+
const urlObject = new URL(urlInfo.url)
|
|
630
|
+
const { searchParams } = urlObject
|
|
631
|
+
if (!searchParams.has(searchParam)) {
|
|
632
|
+
return null
|
|
633
|
+
}
|
|
634
|
+
searchParams.delete(searchParam)
|
|
635
|
+
const originalUrl = urlObject.href
|
|
636
|
+
const originalReference = {
|
|
637
|
+
...(context.reference.original || context.reference),
|
|
638
|
+
expectedType,
|
|
639
|
+
}
|
|
640
|
+
originalReference.url = originalUrl
|
|
641
|
+
const originalUrlInfo = context.urlGraph.reuseOrCreateUrlInfo(
|
|
642
|
+
originalReference.url,
|
|
643
|
+
)
|
|
644
|
+
if (originalUrlInfo.originalUrl === undefined) {
|
|
645
|
+
applyReferenceEffectsOnUrlInfo(
|
|
646
|
+
originalReference,
|
|
647
|
+
originalUrlInfo,
|
|
648
|
+
context,
|
|
649
|
+
)
|
|
650
|
+
}
|
|
651
|
+
await context.fetchUrlContent(originalUrlInfo, {
|
|
652
|
+
reference: originalReference,
|
|
653
|
+
})
|
|
654
|
+
if (originalUrlInfo.dependents.size === 0) {
|
|
655
|
+
context.urlGraph.deleteUrlInfo(originalUrlInfo.url)
|
|
656
|
+
}
|
|
657
|
+
return originalUrlInfo
|
|
658
|
+
}
|
|
659
|
+
kitchenContext.fetchOriginalUrlInfo = fetchOriginalUrlInfo
|
|
660
|
+
|
|
631
661
|
return {
|
|
632
662
|
pluginController,
|
|
633
663
|
urlInfoTransformer,
|
|
@@ -671,6 +701,11 @@ const memoizeCook = (cook) => {
|
|
|
671
701
|
}
|
|
672
702
|
|
|
673
703
|
const applyReferenceEffectsOnUrlInfo = (reference, urlInfo, context) => {
|
|
704
|
+
if (reference.shouldHandle) {
|
|
705
|
+
urlInfo.shouldHandle = true
|
|
706
|
+
}
|
|
707
|
+
urlInfo.originalUrl = urlInfo.originalUrl || reference.url
|
|
708
|
+
|
|
674
709
|
Object.assign(urlInfo.data, reference.data)
|
|
675
710
|
Object.assign(urlInfo.timing, reference.timing)
|
|
676
711
|
if (reference.injected) {
|
|
@@ -37,8 +37,8 @@ const createUrlGraphReport = (urlGraph) => {
|
|
|
37
37
|
const urlInfo = urlInfos[url]
|
|
38
38
|
// ignore:
|
|
39
39
|
// - inline files: they are already taken into account in the file where they appear
|
|
40
|
-
// -
|
|
41
|
-
if (urlInfo.isInline || urlInfo.
|
|
40
|
+
// - ignored files: we don't know their content
|
|
41
|
+
if (urlInfo.isInline || !urlInfo.shouldHandle) {
|
|
42
42
|
return
|
|
43
43
|
}
|
|
44
44
|
// file loaded via import assertion are already inside the graph
|
|
@@ -34,14 +34,14 @@ export const createUrlInfoTransformer = ({
|
|
|
34
34
|
))
|
|
35
35
|
if (sourcemap.sources && sourcemap.sources.length > 1) {
|
|
36
36
|
sourcemap.sources = sourcemap.sources.map(
|
|
37
|
-
(source) => new URL(source, urlInfo.
|
|
37
|
+
(source) => new URL(source, urlInfo.originalUrl).href,
|
|
38
38
|
)
|
|
39
39
|
if (!wantSourcesContent) {
|
|
40
40
|
sourcemap.sourcesContent = undefined
|
|
41
41
|
}
|
|
42
42
|
return sourcemap
|
|
43
43
|
}
|
|
44
|
-
sourcemap.sources = [urlInfo.
|
|
44
|
+
sourcemap.sources = [urlInfo.originalUrl]
|
|
45
45
|
sourcemap.sourcesContent = [urlInfo.originalContent]
|
|
46
46
|
if (!wantSourcesContent) {
|
|
47
47
|
sourcemap.sourcesContent = undefined
|
|
@@ -74,6 +74,7 @@ export const createUrlInfoTransformer = ({
|
|
|
74
74
|
|
|
75
75
|
// already loaded during "load" hook (happens during build)
|
|
76
76
|
if (urlInfo.sourcemap) {
|
|
77
|
+
urlInfo.sourcemap = normalizeSourcemap(urlInfo, urlInfo.sourcemap)
|
|
77
78
|
return
|
|
78
79
|
}
|
|
79
80
|
// check for existing sourcemap for this content
|
|
@@ -92,8 +93,9 @@ export const createUrlInfoTransformer = ({
|
|
|
92
93
|
})
|
|
93
94
|
try {
|
|
94
95
|
await context.cook(sourcemapUrlInfo, { reference: sourcemapReference })
|
|
95
|
-
const
|
|
96
|
-
|
|
96
|
+
const sourcemapRaw = JSON.parse(sourcemapUrlInfo.content)
|
|
97
|
+
const sourcemap = normalizeSourcemap(urlInfo, sourcemapRaw)
|
|
98
|
+
urlInfo.sourcemap = sourcemap
|
|
97
99
|
} catch (e) {
|
|
98
100
|
logger.error(`Error while handling existing sourcemap: ${e.message}`)
|
|
99
101
|
return
|
|
@@ -146,7 +148,7 @@ export const createUrlInfoTransformer = ({
|
|
|
146
148
|
if (sourcemapsRelativeSources) {
|
|
147
149
|
sourcemap.sources = sourcemap.sources.map((source) => {
|
|
148
150
|
const sourceRelative = urlToRelativeUrl(source, urlInfo.url)
|
|
149
|
-
return sourceRelative
|
|
151
|
+
return sourceRelative || "."
|
|
150
152
|
})
|
|
151
153
|
}
|
|
152
154
|
sourcemapUrlInfo.content = JSON.stringify(sourcemap, null, " ")
|
|
@@ -163,6 +165,9 @@ export const createUrlInfoTransformer = ({
|
|
|
163
165
|
: sourcemapReference.generatedSpecifier,
|
|
164
166
|
})
|
|
165
167
|
}
|
|
168
|
+
} else if (urlInfo.sourcemapReference) {
|
|
169
|
+
// in the end we don't use the sourcemap placeholder
|
|
170
|
+
urlGraph.deleteUrlInfo(urlInfo.sourcemapReference.url)
|
|
166
171
|
}
|
|
167
172
|
urlInfo.contentEtag = bufferToEtag(Buffer.from(urlInfo.content))
|
|
168
173
|
}
|
package/src/omega/url_graph.js
CHANGED
|
@@ -184,11 +184,12 @@ const createUrlInfo = (url) => {
|
|
|
184
184
|
subtype: undefined, // "worker", "service_worker", "shared_worker" for js, otherwise undefined
|
|
185
185
|
contentType: "", // "text/html", "text/css", "text/javascript", "application/json", ...
|
|
186
186
|
url,
|
|
187
|
-
|
|
187
|
+
originalUrl: undefined,
|
|
188
188
|
generatedUrl: null,
|
|
189
|
+
filename: "",
|
|
189
190
|
isInline: false,
|
|
190
191
|
inlineUrlSite: null,
|
|
191
|
-
|
|
192
|
+
shouldHandle: undefined,
|
|
192
193
|
originalContent: undefined,
|
|
193
194
|
content: undefined,
|
|
194
195
|
contentEtag: null,
|