@jsenv/core 27.0.0-alpha.8 → 27.0.0-alpha.82
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/applyDecs/applyDecs.js +756 -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/identity/identity.js +3 -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/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/js/event_source_client.js +324 -0
- package/dist/js/global_this.js +32 -0
- package/dist/js/html_supervisor_installer.js +522 -0
- package/dist/js/html_supervisor_setup.js +82 -0
- package/dist/js/import_meta_hot.js +84 -0
- 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 +13422 -0
- package/dist/other/jsenv.png +0 -0
- package/dist/s.js +626 -0
- package/dist/s.js.map +204 -0
- package/package.json +57 -51
- package/readme.md +6 -14
- package/src/build/build.js +1074 -563
- package/src/build/build_urls_generator.js +65 -24
- package/src/build/graph_utils.js +31 -0
- package/src/build/{inject_version_mappings.js → inject_global_version_mappings.js} +49 -18
- package/src/build/inject_service_worker_urls.js +79 -0
- package/src/build/resync_ressource_hints.js +115 -0
- package/src/build/start_build_server.js +210 -0
- package/src/dev/plugins/explorer/client/explorer.html +1 -1
- package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +9 -13
- package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +3 -1
- package/src/dev/start_dev_server.js +165 -38
- package/src/execute/execute.js +35 -8
- package/src/execute/run.js +21 -57
- package/src/execute/runtimes/browsers/from_playwright.js +220 -150
- package/src/execute/runtimes/node/child_exec_options.js +1 -1
- package/src/execute/runtimes/node/controllable_file.mjs +26 -10
- package/src/execute/runtimes/node/kill_process_tree.js +2 -4
- package/src/execute/runtimes/node/node_execution_performance.js +67 -0
- package/src/execute/runtimes/node/node_process.js +288 -39
- package/src/main.js +27 -0
- package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +30 -7
- package/src/omega/{runtime_support/runtime_support.js → compat/runtime_compat.js} +14 -16
- package/src/omega/errors.js +63 -67
- package/src/omega/fetched_content_compliance.js +24 -0
- package/src/omega/file_url_converter.js +9 -51
- package/src/omega/kitchen.js +605 -467
- package/src/omega/omega_server.js +2 -3
- package/src/omega/server/file_service.js +88 -41
- package/src/omega/server/user_agent.js +5 -6
- package/src/omega/url_graph/url_graph_load.js +31 -23
- package/src/omega/url_graph/url_graph_report.js +94 -51
- package/src/omega/url_graph/url_info_transformations.js +37 -17
- package/src/omega/url_graph.js +88 -19
- package/src/omega/url_specifier_encoding.js +59 -0
- package/src/omega/web_workers.js +42 -0
- package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
- package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +19 -12
- package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +0 -0
- package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
- package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +41 -0
- package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js +204 -0
- package/src/plugins/autoreload/jsenv_plugin_autoreload.js +25 -0
- package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
- package/src/plugins/bundling/css/bundle_css.js +140 -0
- package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
- package/src/plugins/bundling/js_module/bundle_js_module.js +343 -0
- package/src/plugins/bundling/jsenv_plugin_bundling.js +54 -0
- package/src/plugins/cache_control/jsenv_plugin_cache_control.js +34 -0
- package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +54 -41
- package/src/plugins/file_urls/jsenv_plugin_file_urls.js +183 -0
- package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
- package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
- package/src/plugins/html_supervisor/client/html_supervisor_installer.js +254 -0
- package/src/plugins/html_supervisor/client/html_supervisor_setup.js +82 -0
- package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
- package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
- package/src/{omega/core_plugins → plugins}/html_supervisor/jsenv_plugin_html_supervisor.js +73 -55
- package/src/plugins/http_urls/jsenv_plugin_http_urls.js +12 -0
- package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
- package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
- package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +7 -4
- package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +100 -0
- package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +33 -8
- package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
- package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
- package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +40 -36
- package/src/plugins/inject_globals/inject_globals.js +57 -0
- package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +24 -0
- package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
- package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +22 -21
- package/src/plugins/inline/jsenv_plugin_html_inline_content.js +161 -0
- package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
- package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +8 -11
- package/src/plugins/inline/jsenv_plugin_js_inline_content.js +294 -0
- package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
- package/src/plugins/minification/css/minify_css.js +9 -0
- package/src/plugins/minification/html/minify_html.js +13 -0
- package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
- package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
- package/src/plugins/minification/json/minify_json.js +8 -0
- package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +162 -0
- package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +12 -0
- package/src/{omega → plugins}/plugin_controller.js +57 -12
- package/src/plugins/plugins.js +89 -0
- package/src/plugins/transpilation/as_js_classic/client/s.js +429 -0
- package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
- package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +211 -0
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_html.js +304 -0
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_workers.js +55 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js +14 -17
- package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +39 -32
- package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +30 -6
- package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -0
- package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
- package/src/plugins/transpilation/babel/require_babel_plugin.js +8 -0
- package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
- package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +184 -0
- package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +79 -0
- package/src/plugins/transpilation/jsenv_plugin_transpilation.js +46 -0
- package/src/plugins/url_analysis/css/css_urls.js +49 -0
- package/src/plugins/url_analysis/html/html_urls.js +272 -0
- package/src/plugins/url_analysis/js/js_urls.js +68 -0
- package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +103 -0
- package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +20 -0
- package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +9 -5
- package/src/plugins/url_version/jsenv_plugin_url_version.js +28 -0
- package/src/require_from_jsenv.js +3 -0
- package/src/test/execute_plan.js +85 -44
- package/src/test/execute_test_plan.js +37 -25
- package/src/test/execution_steps.js +2 -5
- package/src/test/logs_file_execution.js +56 -49
- package/main.js +0 -19
- package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +0 -227
- package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
- package/src/dev/plugins/autoreload/client/event_source_connection.js +0 -195
- package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +0 -374
- package/src/dev/plugins/autoreload/sse_service.js +0 -149
- package/src/execute/runtimes/node/controlled_process.js +0 -316
- package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
- package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
- package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -58
- package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +0 -168
- package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +0 -77
- package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -98
- package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
- package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
- package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
- package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
- package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +0 -142
- package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -207
- package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
- package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +0 -77
- package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +0 -50
- package/src/omega/core_plugins.js +0 -39
- package/src/omega/runtime_support/default_runtime_support.js +0 -13
- package/src/omega/url_graph/url_graph_sort.js +0 -29
- package/src/omega/url_mentions/css_url_mentions.js +0 -63
- package/src/omega/url_mentions/html_url_mentions.js +0 -185
- package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
- package/src/omega/url_mentions/parse_url_mentions.js +0 -37
- package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
|
@@ -30,12 +30,11 @@ import {
|
|
|
30
30
|
getHtmlNodeAttributeByName,
|
|
31
31
|
htmlNodePosition,
|
|
32
32
|
removeHtmlNodeAttributeByName,
|
|
33
|
-
|
|
34
|
-
assignHtmlNodeAttributes,
|
|
33
|
+
setHtmlNodeGeneratedText,
|
|
35
34
|
getHtmlNodeTextNode,
|
|
36
35
|
removeHtmlNode,
|
|
37
36
|
} from "@jsenv/utils/html_ast/html_ast.js"
|
|
38
|
-
import { generateInlineContentUrl } from "@jsenv/
|
|
37
|
+
import { generateInlineContentUrl } from "@jsenv/urls"
|
|
39
38
|
|
|
40
39
|
export const jsenvPluginImportmap = () => {
|
|
41
40
|
let finalImportmap = null
|
|
@@ -59,16 +58,16 @@ export const jsenvPluginImportmap = () => {
|
|
|
59
58
|
return {
|
|
60
59
|
name: "jsenv:importmap",
|
|
61
60
|
appliesDuring: "*",
|
|
62
|
-
|
|
63
|
-
js_import_export: (
|
|
61
|
+
resolveUrl: {
|
|
62
|
+
js_import_export: (reference) => {
|
|
64
63
|
if (!finalImportmap) {
|
|
65
64
|
return null
|
|
66
65
|
}
|
|
67
66
|
try {
|
|
68
67
|
let fromMapping = false
|
|
69
68
|
const result = resolveImport({
|
|
70
|
-
specifier,
|
|
71
|
-
importer: parentUrl,
|
|
69
|
+
specifier: reference.specifier,
|
|
70
|
+
importer: reference.parentUrl,
|
|
72
71
|
importMap: finalImportmap,
|
|
73
72
|
onImportMapping: () => {
|
|
74
73
|
fromMapping = true
|
|
@@ -91,12 +90,9 @@ export const jsenvPluginImportmap = () => {
|
|
|
91
90
|
}
|
|
92
91
|
},
|
|
93
92
|
},
|
|
94
|
-
|
|
95
|
-
html: async (
|
|
96
|
-
|
|
97
|
-
{ scenario, cook, urlGraph, referenceUtils },
|
|
98
|
-
) => {
|
|
99
|
-
const htmlAst = parseHtmlString(content)
|
|
93
|
+
transformUrlContent: {
|
|
94
|
+
html: async (htmlUrlInfo, context) => {
|
|
95
|
+
const htmlAst = parseHtmlString(htmlUrlInfo.content)
|
|
100
96
|
const importmap = findNode(htmlAst, (node) => {
|
|
101
97
|
if (node.nodeName !== "script") {
|
|
102
98
|
return false
|
|
@@ -108,7 +104,7 @@ export const jsenvPluginImportmap = () => {
|
|
|
108
104
|
return true
|
|
109
105
|
})
|
|
110
106
|
if (!importmap) {
|
|
111
|
-
onHtmlImportmapParsed(null, url)
|
|
107
|
+
onHtmlImportmapParsed(null, htmlUrlInfo.url)
|
|
112
108
|
return null
|
|
113
109
|
}
|
|
114
110
|
const handleInlineImportmap = async (importmap, textNode) => {
|
|
@@ -117,7 +113,7 @@ export const jsenvPluginImportmap = () => {
|
|
|
117
113
|
preferOriginal: true,
|
|
118
114
|
})
|
|
119
115
|
const inlineImportmapUrl = generateInlineContentUrl({
|
|
120
|
-
url,
|
|
116
|
+
url: htmlUrlInfo.url,
|
|
121
117
|
extension: ".importmap",
|
|
122
118
|
line,
|
|
123
119
|
column,
|
|
@@ -125,21 +121,26 @@ export const jsenvPluginImportmap = () => {
|
|
|
125
121
|
columnEnd,
|
|
126
122
|
})
|
|
127
123
|
const [inlineImportmapReference, inlineImportmapUrlInfo] =
|
|
128
|
-
referenceUtils.foundInline({
|
|
124
|
+
context.referenceUtils.foundInline({
|
|
129
125
|
type: "script_src",
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
126
|
+
isOriginalPosition: isOriginal,
|
|
127
|
+
specifierLine: line - 1,
|
|
128
|
+
specifierColumn: column,
|
|
133
129
|
specifier: inlineImportmapUrl,
|
|
134
130
|
contentType: "application/importmap+json",
|
|
135
131
|
content: textNode.value,
|
|
136
132
|
})
|
|
137
|
-
await cook({
|
|
133
|
+
await context.cook(inlineImportmapUrlInfo, {
|
|
138
134
|
reference: inlineImportmapReference,
|
|
139
|
-
urlInfo: inlineImportmapUrlInfo,
|
|
140
135
|
})
|
|
141
|
-
|
|
142
|
-
|
|
136
|
+
setHtmlNodeGeneratedText(importmap, {
|
|
137
|
+
generatedText: inlineImportmapUrlInfo.content,
|
|
138
|
+
generatedBy: "jsenv:importmap",
|
|
139
|
+
})
|
|
140
|
+
onHtmlImportmapParsed(
|
|
141
|
+
JSON.parse(inlineImportmapUrlInfo.content),
|
|
142
|
+
htmlUrlInfo.url,
|
|
143
|
+
)
|
|
143
144
|
}
|
|
144
145
|
const handleImportmapWithSrc = async (importmap, src) => {
|
|
145
146
|
// Browser would throw on remote importmap
|
|
@@ -147,35 +148,38 @@ export const jsenvPluginImportmap = () => {
|
|
|
147
148
|
// We must precook the importmap to know its content and inline it into the HTML
|
|
148
149
|
// In this situation the ref to the importmap was already discovered
|
|
149
150
|
// when parsing the HTML
|
|
150
|
-
const importmapReference =
|
|
151
|
-
(
|
|
151
|
+
const importmapReference =
|
|
152
|
+
context.referenceUtils.findByGeneratedSpecifier(src)
|
|
153
|
+
const importmapUrlInfo = context.urlGraph.getUrlInfo(
|
|
154
|
+
importmapReference.url,
|
|
152
155
|
)
|
|
153
|
-
|
|
154
|
-
await cook({
|
|
156
|
+
await context.cook(importmapUrlInfo, {
|
|
155
157
|
reference: importmapReference,
|
|
156
|
-
urlInfo: importmapUrlInfo,
|
|
157
158
|
})
|
|
158
|
-
onHtmlImportmapParsed(
|
|
159
|
+
onHtmlImportmapParsed(
|
|
160
|
+
JSON.parse(importmapUrlInfo.content),
|
|
161
|
+
htmlUrlInfo.url,
|
|
162
|
+
)
|
|
159
163
|
removeHtmlNodeAttributeByName(importmap, "src")
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
164
|
+
setHtmlNodeGeneratedText(importmap, {
|
|
165
|
+
generatedText: importmapUrlInfo.content,
|
|
166
|
+
generatedBy: "jsenv:importmap",
|
|
167
|
+
generatedFromSrc: src,
|
|
163
168
|
})
|
|
164
|
-
setHtmlNodeText(importmap, importmapUrlInfo.content)
|
|
165
169
|
|
|
166
170
|
const { line, column, lineEnd, columnEnd, isOriginal } =
|
|
167
171
|
htmlNodePosition.readNodePosition(importmap, {
|
|
168
172
|
preferOriginal: true,
|
|
169
173
|
})
|
|
170
174
|
const inlineImportmapUrl = generateInlineContentUrl({
|
|
171
|
-
url,
|
|
175
|
+
url: htmlUrlInfo.url,
|
|
172
176
|
extension: ".importmap",
|
|
173
177
|
line,
|
|
174
178
|
column,
|
|
175
179
|
lineEnd,
|
|
176
180
|
columnEnd,
|
|
177
181
|
})
|
|
178
|
-
referenceUtils.becomesInline(importmapReference, {
|
|
182
|
+
context.referenceUtils.becomesInline(importmapReference, {
|
|
179
183
|
line: line - 1,
|
|
180
184
|
column,
|
|
181
185
|
isOriginal,
|
|
@@ -200,7 +204,7 @@ export const jsenvPluginImportmap = () => {
|
|
|
200
204
|
// by "formatReferencedUrl" making the importmap presence useless.
|
|
201
205
|
// In dev/test we keep importmap into the HTML to see it even if useless
|
|
202
206
|
// Duing build we get rid of it
|
|
203
|
-
if (scenario === "build") {
|
|
207
|
+
if (context.scenario === "build") {
|
|
204
208
|
removeHtmlNode(importmap)
|
|
205
209
|
}
|
|
206
210
|
return {
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseHtmlString,
|
|
3
|
+
injectScriptAsEarlyAsPossible,
|
|
4
|
+
createHtmlNode,
|
|
5
|
+
stringifyHtmlAst,
|
|
6
|
+
} from "@jsenv/utils/html_ast/html_ast.js"
|
|
7
|
+
import { createMagicSource } from "@jsenv/utils/sourcemap/magic_source.js"
|
|
8
|
+
|
|
9
|
+
export const injectGlobals = (urlInfo, globals) => {
|
|
10
|
+
if (urlInfo.type === "html") {
|
|
11
|
+
return globalInjectorOnHtml(urlInfo, globals)
|
|
12
|
+
}
|
|
13
|
+
if (urlInfo.type === "js_classic" || urlInfo.type === "js_module") {
|
|
14
|
+
return globalsInjectorOnJs(urlInfo, globals)
|
|
15
|
+
}
|
|
16
|
+
throw new Error(`cannot inject globals into "${urlInfo.type}"`)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const globalInjectorOnHtml = async (urlInfo, globals) => {
|
|
20
|
+
// ideally we would inject an importmap but browser support is too low
|
|
21
|
+
// (even worse for worker/service worker)
|
|
22
|
+
// so for now we inject code into entry points
|
|
23
|
+
const htmlAst = parseHtmlString(urlInfo.content, {
|
|
24
|
+
storeOriginalPositions: false,
|
|
25
|
+
})
|
|
26
|
+
const clientCode = generateClientCodeForGlobals({
|
|
27
|
+
globals,
|
|
28
|
+
isWebWorker: false,
|
|
29
|
+
})
|
|
30
|
+
injectScriptAsEarlyAsPossible(
|
|
31
|
+
htmlAst,
|
|
32
|
+
createHtmlNode({
|
|
33
|
+
"tagName": "script",
|
|
34
|
+
"textContent": clientCode,
|
|
35
|
+
"injected-by": "jsenv:inject_globals",
|
|
36
|
+
}),
|
|
37
|
+
)
|
|
38
|
+
return stringifyHtmlAst(htmlAst)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const globalsInjectorOnJs = async (urlInfo, globals) => {
|
|
42
|
+
const clientCode = generateClientCodeForGlobals({
|
|
43
|
+
globals,
|
|
44
|
+
isWebWorker:
|
|
45
|
+
urlInfo.subtype === "worker" ||
|
|
46
|
+
urlInfo.subtype === "service_worker" ||
|
|
47
|
+
urlInfo.subtype === "shared_worker",
|
|
48
|
+
})
|
|
49
|
+
const magicSource = createMagicSource(urlInfo.content)
|
|
50
|
+
magicSource.prepend(clientCode)
|
|
51
|
+
return magicSource.toContentAndSourcemap()
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const generateClientCodeForGlobals = ({ isWebWorker = false, globals }) => {
|
|
55
|
+
const globalName = isWebWorker ? "self" : "window"
|
|
56
|
+
return `Object.assign(${globalName}, ${JSON.stringify(globals, null, " ")});`
|
|
57
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { injectGlobals } from "./inject_globals.js"
|
|
2
|
+
|
|
3
|
+
export const jsenvPluginInjectGlobals = (urlAssociations) => {
|
|
4
|
+
return {
|
|
5
|
+
name: "jsenv:inject_globals",
|
|
6
|
+
appliesDuring: "*",
|
|
7
|
+
transformUrlContent: async (urlInfo) => {
|
|
8
|
+
const url = Object.keys(urlAssociations).find((url) => {
|
|
9
|
+
return url === urlInfo.url
|
|
10
|
+
})
|
|
11
|
+
if (!url) {
|
|
12
|
+
return null
|
|
13
|
+
}
|
|
14
|
+
let globals = urlAssociations[url]
|
|
15
|
+
if (typeof globals === "function") {
|
|
16
|
+
globals = await globals()
|
|
17
|
+
}
|
|
18
|
+
if (Object.keys(globals).length === 0) {
|
|
19
|
+
return null
|
|
20
|
+
}
|
|
21
|
+
return injectGlobals(urlInfo, globals)
|
|
22
|
+
},
|
|
23
|
+
}
|
|
24
|
+
}
|
|
File without changes
|
|
@@ -1,45 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { DATA_URL } from "@jsenv/urls"
|
|
2
|
+
import { CONTENT_TYPE } from "@jsenv/utils/content_type/content_type.js"
|
|
3
3
|
|
|
4
4
|
export const jsenvPluginDataUrls = () => {
|
|
5
5
|
return {
|
|
6
6
|
name: "jsenv:data_urls",
|
|
7
7
|
appliesDuring: "*",
|
|
8
|
-
|
|
9
|
-
if (!specifier.startsWith("data:")) {
|
|
8
|
+
resolveUrl: (reference) => {
|
|
9
|
+
if (!reference.specifier.startsWith("data:")) {
|
|
10
10
|
return null
|
|
11
11
|
}
|
|
12
|
-
return specifier
|
|
12
|
+
return reference.specifier
|
|
13
13
|
},
|
|
14
|
-
|
|
15
|
-
if (!url.startsWith("data:")) {
|
|
14
|
+
fetchUrlContent: (urlInfo) => {
|
|
15
|
+
if (!urlInfo.url.startsWith("data:")) {
|
|
16
16
|
return null
|
|
17
17
|
}
|
|
18
|
-
const {
|
|
19
|
-
data.base64Flag = base64Flag
|
|
20
|
-
return {
|
|
18
|
+
const {
|
|
21
19
|
contentType,
|
|
20
|
+
base64Flag,
|
|
21
|
+
data: urlData,
|
|
22
|
+
} = DATA_URL.parse(urlInfo.url)
|
|
23
|
+
urlInfo.data.base64Flag = base64Flag
|
|
24
|
+
return {
|
|
22
25
|
content: contentFromUrlData({ contentType, base64Flag, urlData }),
|
|
26
|
+
contentType,
|
|
23
27
|
}
|
|
24
28
|
},
|
|
25
|
-
|
|
26
|
-
if (!reference.
|
|
29
|
+
formatUrl: (reference, context) => {
|
|
30
|
+
if (!reference.generatedUrl.startsWith("data:")) {
|
|
27
31
|
return null
|
|
28
32
|
}
|
|
29
33
|
if (reference.type === "sourcemap_comment") {
|
|
30
34
|
return null
|
|
31
35
|
}
|
|
32
36
|
return (async () => {
|
|
33
|
-
const urlInfo = urlGraph.getUrlInfo(reference.url)
|
|
34
|
-
await cook({
|
|
35
|
-
reference,
|
|
36
|
-
urlInfo,
|
|
37
|
-
})
|
|
37
|
+
const urlInfo = context.urlGraph.getUrlInfo(reference.url)
|
|
38
|
+
await context.cook(urlInfo, { reference })
|
|
38
39
|
if (urlInfo.originalContent === urlInfo.content) {
|
|
39
|
-
return reference.
|
|
40
|
+
return reference.generatedUrl
|
|
40
41
|
}
|
|
41
|
-
const specifier =
|
|
42
|
-
contentType: urlInfo.
|
|
42
|
+
const specifier = DATA_URL.stringify({
|
|
43
|
+
contentType: urlInfo.headers["content-type"],
|
|
43
44
|
base64Flag: urlInfo.data.base64Flag,
|
|
44
45
|
data: urlInfo.data.base64Flag
|
|
45
46
|
? dataToBase64(urlInfo.content)
|
|
@@ -52,7 +53,7 @@ export const jsenvPluginDataUrls = () => {
|
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
const contentFromUrlData = ({ contentType, base64Flag, urlData }) => {
|
|
55
|
-
if (
|
|
56
|
+
if (CONTENT_TYPE.isTextual(contentType)) {
|
|
56
57
|
if (base64Flag) {
|
|
57
58
|
return base64ToString(urlData)
|
|
58
59
|
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseHtmlString,
|
|
3
|
+
stringifyHtmlAst,
|
|
4
|
+
visitHtmlAst,
|
|
5
|
+
getHtmlNodeTextNode,
|
|
6
|
+
htmlNodePosition,
|
|
7
|
+
parseScriptNode,
|
|
8
|
+
setHtmlNodeGeneratedText,
|
|
9
|
+
getHtmlNodeAttributeByName,
|
|
10
|
+
} from "@jsenv/utils/html_ast/html_ast.js"
|
|
11
|
+
import { generateInlineContentUrl } from "@jsenv/urls"
|
|
12
|
+
import { CONTENT_TYPE } from "@jsenv/utils/content_type/content_type.js"
|
|
13
|
+
|
|
14
|
+
export const jsenvPluginHtmlInlineContent = ({ analyzeConvertedScripts }) => {
|
|
15
|
+
return {
|
|
16
|
+
name: "jsenv:html_inline_content",
|
|
17
|
+
appliesDuring: "*",
|
|
18
|
+
transformUrlContent: {
|
|
19
|
+
html: async (urlInfo, context) => {
|
|
20
|
+
const htmlAst = parseHtmlString(urlInfo.content)
|
|
21
|
+
const actions = []
|
|
22
|
+
const handleInlineStyle = (node) => {
|
|
23
|
+
if (node.nodeName !== "style") {
|
|
24
|
+
return
|
|
25
|
+
}
|
|
26
|
+
const textNode = getHtmlNodeTextNode(node)
|
|
27
|
+
if (!textNode) {
|
|
28
|
+
return
|
|
29
|
+
}
|
|
30
|
+
actions.push(async () => {
|
|
31
|
+
const { line, column, lineEnd, columnEnd, isOriginal } =
|
|
32
|
+
htmlNodePosition.readNodePosition(node, {
|
|
33
|
+
preferOriginal: true,
|
|
34
|
+
})
|
|
35
|
+
const inlineStyleUrl = generateInlineContentUrl({
|
|
36
|
+
url: urlInfo.url,
|
|
37
|
+
extension: ".css",
|
|
38
|
+
line,
|
|
39
|
+
column,
|
|
40
|
+
lineEnd,
|
|
41
|
+
columnEnd,
|
|
42
|
+
})
|
|
43
|
+
const [inlineStyleReference, inlineStyleUrlInfo] =
|
|
44
|
+
context.referenceUtils.foundInline({
|
|
45
|
+
type: "link_href",
|
|
46
|
+
expectedType: "css",
|
|
47
|
+
isOriginalPosition: isOriginal,
|
|
48
|
+
// we remove 1 to the line because imagine the following html:
|
|
49
|
+
// <style>body { color: red; }</style>
|
|
50
|
+
// -> content starts same line as <style>
|
|
51
|
+
specifierLine: line - 1,
|
|
52
|
+
specifierColumn: column,
|
|
53
|
+
specifier: inlineStyleUrl,
|
|
54
|
+
contentType: "text/css",
|
|
55
|
+
content: textNode.value,
|
|
56
|
+
})
|
|
57
|
+
await context.cook(inlineStyleUrlInfo, {
|
|
58
|
+
reference: inlineStyleReference,
|
|
59
|
+
})
|
|
60
|
+
setHtmlNodeGeneratedText(node, {
|
|
61
|
+
generatedText: inlineStyleUrlInfo.content,
|
|
62
|
+
generatedBy: "jsenv:html_inline_content",
|
|
63
|
+
})
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
const handleInlineScript = (node) => {
|
|
67
|
+
if (node.nodeName !== "script") {
|
|
68
|
+
return
|
|
69
|
+
}
|
|
70
|
+
const textNode = getHtmlNodeTextNode(node)
|
|
71
|
+
if (!textNode) {
|
|
72
|
+
return
|
|
73
|
+
}
|
|
74
|
+
// If the inline script was already handled by an other plugin, ignore it
|
|
75
|
+
// - we want to preserve inline scripts generated by html supervisor during dev
|
|
76
|
+
// - we want to avoid cooking twice a script during build
|
|
77
|
+
const generatedBy = getHtmlNodeAttributeByName(node, "generated-by")
|
|
78
|
+
if (generatedBy) {
|
|
79
|
+
if (generatedBy.value === "jsenv:as_js_classic_html") {
|
|
80
|
+
if (!analyzeConvertedScripts) {
|
|
81
|
+
return
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (generatedBy.value === "jsenv:html_supervisor") {
|
|
85
|
+
return
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
actions.push(async () => {
|
|
89
|
+
const scriptCategory = parseScriptNode(node)
|
|
90
|
+
const { line, column, lineEnd, columnEnd, isOriginal } =
|
|
91
|
+
htmlNodePosition.readNodePosition(node, {
|
|
92
|
+
preferOriginal: true,
|
|
93
|
+
})
|
|
94
|
+
// from MDN about [type] attribute:
|
|
95
|
+
// "Any other value: The embedded content is treated as a data block
|
|
96
|
+
// which won't be processed by the browser. Developers must use a valid MIME type
|
|
97
|
+
// that is not a JavaScript MIME type to denote data blocks.
|
|
98
|
+
// The src attribute will be ignored."
|
|
99
|
+
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-type
|
|
100
|
+
const isJs =
|
|
101
|
+
scriptCategory === "classic" || scriptCategory === "module"
|
|
102
|
+
const isImportmap = scriptCategory === "importmap"
|
|
103
|
+
const contentType = isJs
|
|
104
|
+
? "text/javascript"
|
|
105
|
+
: isImportmap
|
|
106
|
+
? "application/importmap+json"
|
|
107
|
+
: scriptCategory
|
|
108
|
+
|
|
109
|
+
let inlineScriptUrl = generateInlineContentUrl({
|
|
110
|
+
url: urlInfo.url,
|
|
111
|
+
extension: CONTENT_TYPE.asFileExtension(contentType),
|
|
112
|
+
line,
|
|
113
|
+
column,
|
|
114
|
+
lineEnd,
|
|
115
|
+
columnEnd,
|
|
116
|
+
})
|
|
117
|
+
const [inlineScriptReference, inlineScriptUrlInfo] =
|
|
118
|
+
context.referenceUtils.foundInline({
|
|
119
|
+
node,
|
|
120
|
+
type: "script_src",
|
|
121
|
+
expectedType: {
|
|
122
|
+
classic: "js_classic",
|
|
123
|
+
module: "js_module",
|
|
124
|
+
importmap: "importmap",
|
|
125
|
+
}[scriptCategory],
|
|
126
|
+
// we remove 1 to the line because imagine the following html:
|
|
127
|
+
// <script>console.log('ok')</script>
|
|
128
|
+
// -> content starts same line as <script>
|
|
129
|
+
specifierLine: line - 1,
|
|
130
|
+
specifierColumn: column,
|
|
131
|
+
isOriginalPosition: isOriginal,
|
|
132
|
+
specifier: inlineScriptUrl,
|
|
133
|
+
contentType,
|
|
134
|
+
content: textNode.value,
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
await context.cook(inlineScriptUrlInfo, {
|
|
138
|
+
reference: inlineScriptReference,
|
|
139
|
+
})
|
|
140
|
+
setHtmlNodeGeneratedText(node, {
|
|
141
|
+
generatedText: inlineScriptUrlInfo.content,
|
|
142
|
+
generatedBy: "jsenv:html_inline_content",
|
|
143
|
+
})
|
|
144
|
+
})
|
|
145
|
+
}
|
|
146
|
+
visitHtmlAst(htmlAst, (node) => {
|
|
147
|
+
handleInlineStyle(node)
|
|
148
|
+
handleInlineScript(node)
|
|
149
|
+
})
|
|
150
|
+
if (actions.length === 0) {
|
|
151
|
+
return null
|
|
152
|
+
}
|
|
153
|
+
await Promise.all(actions.map((action) => action()))
|
|
154
|
+
const htmlModified = stringifyHtmlAst(htmlAst)
|
|
155
|
+
return {
|
|
156
|
+
content: htmlModified,
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsenvPluginHtmlInlineContent } from "./jsenv_plugin_html_inline_content.js"
|
|
2
|
+
import { jsenvPluginJsInlineContent } from "./jsenv_plugin_js_inline_content.js"
|
|
3
|
+
import { jsenvPluginDataUrls } from "./jsenv_plugin_data_urls.js"
|
|
4
|
+
import { jsenvPluginInlineQueryParam } from "./jsenv_plugin_inline_query_param.js"
|
|
5
|
+
|
|
6
|
+
export const jsenvPluginInline = ({
|
|
7
|
+
fetchInlineUrls = true,
|
|
8
|
+
analyzeConvertedScripts = false,
|
|
9
|
+
allowEscapeForVersioning = false,
|
|
10
|
+
} = {}) => {
|
|
11
|
+
return [
|
|
12
|
+
...(fetchInlineUrls ? [jsenvPluginInlineUrls()] : []),
|
|
13
|
+
jsenvPluginHtmlInlineContent({ analyzeConvertedScripts }),
|
|
14
|
+
jsenvPluginJsInlineContent({ allowEscapeForVersioning }),
|
|
15
|
+
jsenvPluginDataUrls(),
|
|
16
|
+
jsenvPluginInlineQueryParam(),
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const jsenvPluginInlineUrls = () => {
|
|
21
|
+
return {
|
|
22
|
+
name: "jsenv:inline_urls",
|
|
23
|
+
appliesDuring: "*",
|
|
24
|
+
fetchUrlContent: (urlInfo) => {
|
|
25
|
+
if (!urlInfo.isInline) {
|
|
26
|
+
return null
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
// we want to fetch the original content otherwise we might re-cook
|
|
30
|
+
// content already cooked
|
|
31
|
+
content: urlInfo.originalContent,
|
|
32
|
+
contentType: urlInfo.contentType,
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DATA_URL } from "@jsenv/urls"
|
|
2
2
|
|
|
3
3
|
export const jsenvPluginInlineQueryParam = () => {
|
|
4
4
|
return {
|
|
5
5
|
name: "jsenv:inline_query_param",
|
|
6
6
|
appliesDuring: "*",
|
|
7
|
-
|
|
7
|
+
formatUrl: {
|
|
8
8
|
// <link> and <script> can be inlined in the html
|
|
9
9
|
// this should be done during dev and postbuild but not build
|
|
10
10
|
// so that the bundled file gets inlined and not the entry point
|
|
@@ -15,21 +15,18 @@ export const jsenvPluginInlineQueryParam = () => {
|
|
|
15
15
|
// but maybe we should rather use ?object_url
|
|
16
16
|
// or people could do this:
|
|
17
17
|
// import workerText from './worker.js?text'
|
|
18
|
-
// const blob = new Blob(workerText, { type: '
|
|
18
|
+
// const blob = new Blob(workerText, { type: 'text/javascript' })
|
|
19
19
|
// window.URL.createObjectURL(blob)
|
|
20
20
|
// in any case the recommended way is to use an url
|
|
21
21
|
// to benefit from shared worker and reuse worker between tabs
|
|
22
|
-
"*": (reference,
|
|
23
|
-
if (!
|
|
22
|
+
"*": (reference, context) => {
|
|
23
|
+
if (!reference.searchParams.has("inline")) {
|
|
24
24
|
return null
|
|
25
25
|
}
|
|
26
26
|
return (async () => {
|
|
27
|
-
const urlInfo = urlGraph.getUrlInfo(reference.url)
|
|
28
|
-
await cook({
|
|
29
|
-
|
|
30
|
-
urlInfo,
|
|
31
|
-
})
|
|
32
|
-
const specifier = DataUrl.stringify({
|
|
27
|
+
const urlInfo = context.urlGraph.getUrlInfo(reference.url)
|
|
28
|
+
await context.cook(urlInfo, { reference })
|
|
29
|
+
const specifier = DATA_URL.stringify({
|
|
33
30
|
mediaType: urlInfo.contentType,
|
|
34
31
|
base64Flag: true,
|
|
35
32
|
data: Buffer.from(urlInfo.content).toString("base64"),
|