@jsenv/core 27.0.0-alpha.9 → 27.0.0-alpha.92
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 +528 -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/js/uneval.js +804 -0
- package/dist/main.js +25163 -0
- package/dist/other/jsenv.png +0 -0
- package/dist/s.js +626 -0
- package/dist/s.js.map +205 -0
- package/package.json +61 -57
- package/readme.md +6 -14
- package/src/build/build.js +1040 -551
- package/src/build/build_urls_generator.js +65 -25
- package/src/build/graph_utils.js +31 -0
- package/src/build/inject_global_version_mappings.js +93 -0
- package/src/build/inject_service_worker_urls.js +79 -0
- package/src/build/resync_ressource_hints.js +114 -0
- package/src/build/start_build_server.js +217 -0
- package/src/build/version_generator.js +60 -0
- package/src/dev/plugins/explorer/client/explorer.html +1 -1
- package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +9 -14
- package/src/dev/plugins/toolbar/client/util/fetching.js +1 -1
- package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +6 -4
- package/src/dev/start_dev_server.js +173 -38
- package/src/execute/execute.js +35 -8
- package/src/execute/run.js +21 -57
- package/src/execute/runtimes/browsers/from_playwright.js +224 -153
- 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/helpers/command/command.js +73 -0
- package/src/{dev/plugins/autoreload/client/event_source_connection.js → helpers/event_source/event_source.js} +2 -0
- package/src/helpers/event_source/sse_service.js +53 -0
- package/src/helpers/worker_reload.js +57 -0
- 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} +16 -17
- 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 +607 -466
- 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 -5
- package/src/omega/url_graph/{url_graph_sort.js → sort_by_dependencies.js} +3 -5
- 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 +54 -24
- 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 +6 -3
- 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 +362 -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 +56 -43
- package/src/plugins/file_urls/jsenv_plugin_file_urls.js +190 -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/plugins/html_supervisor/jsenv_plugin_html_supervisor.js +239 -0
- package/src/plugins/http_urls/jsenv_plugin_http_urls.js +16 -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 +15 -18
- 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 +35 -10
- 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 +56 -54
- 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 +159 -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 +91 -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 +209 -0
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_html.js +282 -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 +2 -3
- 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 +3 -4
- 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 +40 -33
- package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +32 -9
- 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 +2 -3
- 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 +80 -0
- package/src/plugins/transpilation/jsenv_plugin_transpilation.js +46 -0
- package/src/plugins/url_analysis/css/css_urls.js +48 -0
- package/src/plugins/url_analysis/html/html_urls.js +257 -0
- package/src/plugins/url_analysis/js/js_urls.js +69 -0
- package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +110 -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/coverage/babel_plugin_instrument.js +82 -0
- package/src/test/coverage/coverage_reporter_html_directory.js +36 -0
- package/src/test/coverage/coverage_reporter_json_file.js +22 -0
- package/src/test/coverage/coverage_reporter_text_log.js +19 -0
- package/src/test/coverage/empty_coverage_factory.js +52 -0
- package/src/test/coverage/file_by_file_coverage.js +25 -0
- package/src/test/coverage/istanbul_coverage_composition.js +28 -0
- package/src/test/coverage/istanbul_coverage_map_from_coverage.js +16 -0
- package/src/test/coverage/list_files_not_covered.js +15 -0
- package/src/test/coverage/missing_coverage.js +41 -0
- package/src/test/coverage/report_to_coverage.js +196 -0
- package/src/test/coverage/v8_and_istanbul.js +37 -0
- package/src/test/coverage/v8_coverage_composition.js +24 -0
- package/src/test/coverage/v8_coverage_from_directory.js +87 -0
- package/src/test/coverage/v8_coverage_to_istanbul.js +99 -0
- package/src/test/execute_plan.js +87 -46
- package/src/test/execute_test_plan.js +40 -28
- 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/inject_version_mappings.js +0 -62
- 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/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/html_supervisor/jsenv_plugin_html_supervisor.js +0 -233
- 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_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
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// const { clientRuntimeCompat, isSupportedOnCurrentClient } = context
|
|
2
|
+
// const shouldBeCompatibleWithNode =
|
|
3
|
+
// Object.keys(clientRuntimeCompat).includes("node")
|
|
4
|
+
// const requiredFeatureNames = [
|
|
5
|
+
// "import_dynamic",
|
|
6
|
+
// "top_level_await",
|
|
7
|
+
// "global_this",
|
|
8
|
+
// // when using node we assume the code won't use browser specific feature
|
|
9
|
+
// ...(shouldBeCompatibleWithNode
|
|
10
|
+
// ? []
|
|
11
|
+
// : [
|
|
12
|
+
// "script_type_module",
|
|
13
|
+
// "worker_type_module",
|
|
14
|
+
// "import_type_json",
|
|
15
|
+
// "import_type_css",
|
|
16
|
+
// ]),
|
|
17
|
+
// // "importmap",
|
|
18
|
+
// ]
|
|
19
|
+
// const needsSystemJs = featuresRelatedToSystemJs.some((featureName) => {
|
|
20
|
+
// const isRequired = requiredFeatureNames.includes(featureName)
|
|
21
|
+
// return isRequired && !isSupportedOnCurrentClient(featureName)
|
|
22
|
+
// })
|
|
23
|
+
// if (!needsSystemJs) {
|
|
24
|
+
// return null
|
|
25
|
+
// }
|
|
26
|
+
// const { code, map } = await applyBabelPlugins({
|
|
27
|
+
|
|
28
|
+
// })
|
|
29
|
+
// return {
|
|
30
|
+
// content: code,
|
|
31
|
+
// soourcemap: map,
|
|
32
|
+
// }
|
|
33
|
+
|
|
34
|
+
// const featuresRelatedToSystemJs = [
|
|
35
|
+
// "script_type_module",
|
|
36
|
+
// "worker_type_module",
|
|
37
|
+
// "import_dynamic",
|
|
38
|
+
// "import_type_json",
|
|
39
|
+
// "import_type_css",
|
|
40
|
+
// "top_level_await",
|
|
41
|
+
// // "importmap",
|
|
42
|
+
// // "worker_importmap",
|
|
43
|
+
// ]
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Something to keep in mind:
|
|
3
|
+
* When systemjs format is used by babel, it will generated UID based on
|
|
4
|
+
* the import specifier:
|
|
5
|
+
* https://github.com/babel/babel/blob/97d1967826077f15e766778c0d64711399e9a72a/packages/babel-plugin-transform-modules-systemjs/src/index.ts#L498
|
|
6
|
+
* But at this stage import specifier are absolute file urls
|
|
7
|
+
* So without minification these specifier are long and dependent
|
|
8
|
+
* on where the files are on the filesystem.
|
|
9
|
+
* This is mitigated by minification that will shorten them
|
|
10
|
+
* But ideally babel should not generate this in the first place
|
|
11
|
+
* and prefer to unique identifier based solely on the specifier basename for instance
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { urlToFilename, injectQueryParams } from "@jsenv/urls"
|
|
15
|
+
import { readFileSync } from "@jsenv/filesystem"
|
|
16
|
+
import { createMagicSource, composeTwoSourcemaps } from "@jsenv/sourcemap"
|
|
17
|
+
import { applyBabelPlugins } from "@jsenv/ast"
|
|
18
|
+
|
|
19
|
+
import { requireFromJsenv } from "@jsenv/core/src/require_from_jsenv.js"
|
|
20
|
+
import { requireBabelPlugin } from "../babel/require_babel_plugin.js"
|
|
21
|
+
import { babelPluginTransformImportMetaUrl } from "./helpers/babel_plugin_transform_import_meta_url.js"
|
|
22
|
+
import { jsenvPluginAsJsClassicHtml } from "./jsenv_plugin_as_js_classic_html.js"
|
|
23
|
+
import { jsenvPluginAsJsClassicWorkers } from "./jsenv_plugin_as_js_classic_workers.js"
|
|
24
|
+
|
|
25
|
+
export const jsenvPluginAsJsClassic = ({ systemJsInjection }) => {
|
|
26
|
+
const systemJsClientFileUrl = new URL(
|
|
27
|
+
"./client/s.js?js_classic",
|
|
28
|
+
import.meta.url,
|
|
29
|
+
).href
|
|
30
|
+
|
|
31
|
+
return [
|
|
32
|
+
jsenvPluginAsJsClassicConversion({
|
|
33
|
+
systemJsInjection,
|
|
34
|
+
systemJsClientFileUrl,
|
|
35
|
+
}),
|
|
36
|
+
jsenvPluginAsJsClassicHtml({
|
|
37
|
+
systemJsInjection,
|
|
38
|
+
systemJsClientFileUrl,
|
|
39
|
+
generateJsClassicFilename,
|
|
40
|
+
}),
|
|
41
|
+
jsenvPluginAsJsClassicWorkers({
|
|
42
|
+
generateJsClassicFilename,
|
|
43
|
+
}),
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// propagate ?as_js_classic to referenced urls
|
|
48
|
+
// and perform the conversion during fetchUrlContent
|
|
49
|
+
const jsenvPluginAsJsClassicConversion = ({
|
|
50
|
+
systemJsInjection,
|
|
51
|
+
systemJsClientFileUrl,
|
|
52
|
+
}) => {
|
|
53
|
+
const propagateJsClassicSearchParam = (reference, context) => {
|
|
54
|
+
const parentUrlInfo = context.urlGraph.getUrlInfo(reference.parentUrl)
|
|
55
|
+
if (
|
|
56
|
+
!parentUrlInfo ||
|
|
57
|
+
!new URL(parentUrlInfo.url).searchParams.has("as_js_classic")
|
|
58
|
+
) {
|
|
59
|
+
return null
|
|
60
|
+
}
|
|
61
|
+
const urlTransformed = injectQueryParams(reference.url, {
|
|
62
|
+
as_js_classic: "",
|
|
63
|
+
})
|
|
64
|
+
reference.filename = generateJsClassicFilename(reference.url)
|
|
65
|
+
return urlTransformed
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
name: "jsenv:as_js_classic_conversion",
|
|
70
|
+
appliesDuring: "*",
|
|
71
|
+
redirectUrl: {
|
|
72
|
+
// We want to propagate transformation of js module to js classic to:
|
|
73
|
+
// - import specifier (static/dynamic import + re-export)
|
|
74
|
+
// - url specifier when inside System.register/_context.import()
|
|
75
|
+
// (because it's the transpiled equivalent of static and dynamic imports)
|
|
76
|
+
// And not other references otherwise we could try to transform inline ressources
|
|
77
|
+
// or specifiers inside new URL()...
|
|
78
|
+
js_import_export: propagateJsClassicSearchParam,
|
|
79
|
+
js_url_specifier: (reference, context) => {
|
|
80
|
+
if (
|
|
81
|
+
reference.subtype === "system_register_arg" ||
|
|
82
|
+
reference.subtype === "system_import_arg"
|
|
83
|
+
) {
|
|
84
|
+
return propagateJsClassicSearchParam(reference, context)
|
|
85
|
+
}
|
|
86
|
+
return null
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
fetchUrlContent: async (urlInfo, context) => {
|
|
90
|
+
const originalUrlInfo = await context.fetchOriginalUrlInfo({
|
|
91
|
+
urlInfo,
|
|
92
|
+
context,
|
|
93
|
+
searchParam: "as_js_classic",
|
|
94
|
+
// override the expectedType to "js_module"
|
|
95
|
+
// because when there is ?as_js_classic it means the underlying ressource
|
|
96
|
+
// is a js_module
|
|
97
|
+
expectedType: "js_module",
|
|
98
|
+
})
|
|
99
|
+
if (!originalUrlInfo) {
|
|
100
|
+
return null
|
|
101
|
+
}
|
|
102
|
+
const isJsEntryPoint =
|
|
103
|
+
// in general html files are entry points
|
|
104
|
+
// but during build js can be sepcified as an entry point
|
|
105
|
+
// (meaning there is no html file where we can inject systemjs)
|
|
106
|
+
// in that case we need to inject systemjs in the js file
|
|
107
|
+
originalUrlInfo.data.isEntryPoint ||
|
|
108
|
+
// In thoose case we need to inject systemjs the worker js file
|
|
109
|
+
originalUrlInfo.data.isWebWorkerEntryPoint
|
|
110
|
+
// if it's an entry point without dependency (it does not use import)
|
|
111
|
+
// then we can use UMD, otherwise we have to use systemjs
|
|
112
|
+
// because it is imported by systemjs
|
|
113
|
+
const jsClassicFormat =
|
|
114
|
+
isJsEntryPoint && !originalUrlInfo.data.usesImport ? "umd" : "system"
|
|
115
|
+
const { content, sourcemap } = await convertJsModuleToJsClassic({
|
|
116
|
+
systemJsInjection,
|
|
117
|
+
systemJsClientFileUrl,
|
|
118
|
+
urlInfo: originalUrlInfo,
|
|
119
|
+
isJsEntryPoint,
|
|
120
|
+
jsClassicFormat,
|
|
121
|
+
})
|
|
122
|
+
urlInfo.data.jsClassicFormat = jsClassicFormat
|
|
123
|
+
return {
|
|
124
|
+
content,
|
|
125
|
+
contentType: "text/javascript",
|
|
126
|
+
type: "js_classic",
|
|
127
|
+
originalUrl: originalUrlInfo.originalUrl,
|
|
128
|
+
originalContent: originalUrlInfo.originalContent,
|
|
129
|
+
sourcemap,
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const generateJsClassicFilename = (url) => {
|
|
136
|
+
const filename = urlToFilename(url)
|
|
137
|
+
let [basename, extension] = splitFileExtension(filename)
|
|
138
|
+
const { searchParams } = new URL(url)
|
|
139
|
+
if (
|
|
140
|
+
searchParams.has("as_json_module") ||
|
|
141
|
+
searchParams.has("as_css_module") ||
|
|
142
|
+
searchParams.has("as_text_module")
|
|
143
|
+
) {
|
|
144
|
+
extension = ".js"
|
|
145
|
+
}
|
|
146
|
+
return `${basename}.es5${extension}`
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const splitFileExtension = (filename) => {
|
|
150
|
+
const dotLastIndex = filename.lastIndexOf(".")
|
|
151
|
+
if (dotLastIndex === -1) {
|
|
152
|
+
return [filename, ""]
|
|
153
|
+
}
|
|
154
|
+
return [filename.slice(0, dotLastIndex), filename.slice(dotLastIndex)]
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const convertJsModuleToJsClassic = async ({
|
|
158
|
+
systemJsInjection,
|
|
159
|
+
systemJsClientFileUrl,
|
|
160
|
+
urlInfo,
|
|
161
|
+
isJsEntryPoint,
|
|
162
|
+
jsClassicFormat,
|
|
163
|
+
}) => {
|
|
164
|
+
const { code, map } = await applyBabelPlugins({
|
|
165
|
+
babelPlugins: [
|
|
166
|
+
...(jsClassicFormat === "system"
|
|
167
|
+
? [
|
|
168
|
+
// propposal-dynamic-import required with systemjs for babel8:
|
|
169
|
+
// https://github.com/babel/babel/issues/10746
|
|
170
|
+
requireFromJsenv("@babel/plugin-proposal-dynamic-import"),
|
|
171
|
+
[
|
|
172
|
+
requireBabelPlugin("babel-plugin-transform-async-to-promises"),
|
|
173
|
+
{
|
|
174
|
+
topLevelAwait: "return",
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
requireFromJsenv("@babel/plugin-transform-modules-systemjs"),
|
|
178
|
+
]
|
|
179
|
+
: [
|
|
180
|
+
[
|
|
181
|
+
requireBabelPlugin("babel-plugin-transform-async-to-promises"),
|
|
182
|
+
{
|
|
183
|
+
topLevelAwait: "simple",
|
|
184
|
+
},
|
|
185
|
+
],
|
|
186
|
+
babelPluginTransformImportMetaUrl,
|
|
187
|
+
requireFromJsenv("@babel/plugin-transform-modules-umd"),
|
|
188
|
+
]),
|
|
189
|
+
],
|
|
190
|
+
urlInfo,
|
|
191
|
+
})
|
|
192
|
+
let sourcemap = urlInfo.sourcemap
|
|
193
|
+
sourcemap = await composeTwoSourcemaps(sourcemap, map)
|
|
194
|
+
if (systemJsInjection && jsClassicFormat === "system" && isJsEntryPoint) {
|
|
195
|
+
const magicSource = createMagicSource(code)
|
|
196
|
+
const systemjsCode = readFileSync(systemJsClientFileUrl, { as: "string" })
|
|
197
|
+
magicSource.prepend(`${systemjsCode}\n\n`)
|
|
198
|
+
const magicResult = magicSource.toContentAndSourcemap()
|
|
199
|
+
sourcemap = await composeTwoSourcemaps(sourcemap, magicResult.sourcemap)
|
|
200
|
+
return {
|
|
201
|
+
content: magicResult.content,
|
|
202
|
+
sourcemap,
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
content: code,
|
|
207
|
+
sourcemap,
|
|
208
|
+
}
|
|
209
|
+
}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import {
|
|
2
|
+
generateInlineContentUrl,
|
|
3
|
+
injectQueryParamsIntoSpecifier,
|
|
4
|
+
} from "@jsenv/urls"
|
|
5
|
+
import {
|
|
6
|
+
parseHtmlString,
|
|
7
|
+
visitHtmlNodes,
|
|
8
|
+
stringifyHtmlAst,
|
|
9
|
+
getHtmlNodeAttribute,
|
|
10
|
+
getHtmlNodeText,
|
|
11
|
+
getHtmlNodePosition,
|
|
12
|
+
setHtmlNodeAttributes,
|
|
13
|
+
setHtmlNodeText,
|
|
14
|
+
injectScriptNodeAsEarlyAsPossible,
|
|
15
|
+
createHtmlNode,
|
|
16
|
+
} from "@jsenv/ast"
|
|
17
|
+
|
|
18
|
+
export const jsenvPluginAsJsClassicHtml = ({
|
|
19
|
+
systemJsInjection,
|
|
20
|
+
systemJsClientFileUrl,
|
|
21
|
+
generateJsClassicFilename,
|
|
22
|
+
}) => {
|
|
23
|
+
return {
|
|
24
|
+
name: "jsenv:as_js_classic_html",
|
|
25
|
+
appliesDuring: "*",
|
|
26
|
+
transformUrlContent: {
|
|
27
|
+
html: async (urlInfo, context) => {
|
|
28
|
+
const shouldTransformScriptTypeModule =
|
|
29
|
+
!context.isSupportedOnCurrentClients("script_type_module") ||
|
|
30
|
+
!context.isSupportedOnCurrentClients("import_dynamic")
|
|
31
|
+
const htmlAst = parseHtmlString(urlInfo.content)
|
|
32
|
+
const preloadAsScriptNodes = []
|
|
33
|
+
const modulePreloadNodes = []
|
|
34
|
+
const moduleScriptNodes = []
|
|
35
|
+
const classicScriptNodes = []
|
|
36
|
+
const visitLinkNodes = (node) => {
|
|
37
|
+
const rel = getHtmlNodeAttribute(node, "rel")
|
|
38
|
+
if (rel === "modulepreload") {
|
|
39
|
+
modulePreloadNodes.push(node)
|
|
40
|
+
return
|
|
41
|
+
}
|
|
42
|
+
if (rel === "preload") {
|
|
43
|
+
const asValue = getHtmlNodeAttribute(node, "as")
|
|
44
|
+
if (asValue === "script") {
|
|
45
|
+
preloadAsScriptNodes.push(node)
|
|
46
|
+
}
|
|
47
|
+
return
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const visitScriptNodes = (node) => {
|
|
51
|
+
const type = getHtmlNodeAttribute(node, "type")
|
|
52
|
+
if (type === "module") {
|
|
53
|
+
moduleScriptNodes.push(node)
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
if (type === undefined || type === "text/javascript") {
|
|
57
|
+
classicScriptNodes.push(node)
|
|
58
|
+
return
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
visitHtmlNodes(htmlAst, {
|
|
62
|
+
link: (node) => {
|
|
63
|
+
visitLinkNodes(node)
|
|
64
|
+
},
|
|
65
|
+
script: (node) => {
|
|
66
|
+
visitScriptNodes(node)
|
|
67
|
+
},
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
const actions = []
|
|
71
|
+
const jsModuleUrls = []
|
|
72
|
+
const convertedUrls = []
|
|
73
|
+
const getReferenceAsJsClassic = async (
|
|
74
|
+
reference,
|
|
75
|
+
{
|
|
76
|
+
// we don't cook ressource hints
|
|
77
|
+
// because they might refer to ressource that will be modified during build
|
|
78
|
+
// It also means something else HAVE to reference that url in order to cook it
|
|
79
|
+
// so that the preload is deleted by "resync_ressource_hints.js" otherwise
|
|
80
|
+
cookIt = false,
|
|
81
|
+
} = {},
|
|
82
|
+
) => {
|
|
83
|
+
const newReferenceProps = {
|
|
84
|
+
expectedType: "js_classic",
|
|
85
|
+
specifier: injectQueryParamsIntoSpecifier(reference.specifier, {
|
|
86
|
+
as_js_classic: "",
|
|
87
|
+
}),
|
|
88
|
+
filename: generateJsClassicFilename(reference.url),
|
|
89
|
+
}
|
|
90
|
+
const [newReference, newUrlInfo] = context.referenceUtils.update(
|
|
91
|
+
reference,
|
|
92
|
+
newReferenceProps,
|
|
93
|
+
)
|
|
94
|
+
const convertedUrl = newUrlInfo.url
|
|
95
|
+
if (!convertedUrls.includes(convertedUrl)) {
|
|
96
|
+
convertedUrls.push(convertedUrl)
|
|
97
|
+
}
|
|
98
|
+
if (cookIt) {
|
|
99
|
+
// during dev it means js modules will be cooked before server sends the HTML
|
|
100
|
+
// it's ok because:
|
|
101
|
+
// - during dev script_type_module are supported (dev use a recent browser)
|
|
102
|
+
// - even if browser is not supported it still works it's jus a bit slower
|
|
103
|
+
// because it needs to decide if systemjs will be injected or not
|
|
104
|
+
await context.cook(newUrlInfo, { reference: newReference })
|
|
105
|
+
}
|
|
106
|
+
return [newReference, newUrlInfo]
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
classicScriptNodes.forEach((classicScriptNode) => {
|
|
110
|
+
const src = getHtmlNodeAttribute(classicScriptNode, "src")
|
|
111
|
+
if (src !== undefined) {
|
|
112
|
+
const reference = urlInfo.references.find(
|
|
113
|
+
(ref) =>
|
|
114
|
+
ref.generatedSpecifier === src && ref.type === "script_src",
|
|
115
|
+
)
|
|
116
|
+
const urlObject = new URL(reference.url)
|
|
117
|
+
if (urlObject.searchParams.has("as_js_classic")) {
|
|
118
|
+
const convertedUrl = urlObject.href
|
|
119
|
+
convertedUrls.push(convertedUrl)
|
|
120
|
+
urlObject.searchParams.delete("as_js_classic")
|
|
121
|
+
const jsModuleUrl = urlObject.href
|
|
122
|
+
jsModuleUrls.push(jsModuleUrl)
|
|
123
|
+
actions.push(async () => {
|
|
124
|
+
const urlInfo = context.urlGraph.getUrlInfo(convertedUrl)
|
|
125
|
+
await context.cook(urlInfo, { reference })
|
|
126
|
+
})
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
})
|
|
130
|
+
moduleScriptNodes.forEach((moduleScriptNode) => {
|
|
131
|
+
const src = getHtmlNodeAttribute(moduleScriptNode, "src")
|
|
132
|
+
if (src !== undefined) {
|
|
133
|
+
const reference = urlInfo.references.find(
|
|
134
|
+
(ref) =>
|
|
135
|
+
ref.generatedSpecifier === src &&
|
|
136
|
+
ref.type === "script_src" &&
|
|
137
|
+
ref.expectedType === "js_module",
|
|
138
|
+
)
|
|
139
|
+
jsModuleUrls.push(reference.url)
|
|
140
|
+
if (shouldTransformScriptTypeModule) {
|
|
141
|
+
actions.push(async () => {
|
|
142
|
+
const [newReference] = await getReferenceAsJsClassic(
|
|
143
|
+
reference,
|
|
144
|
+
{
|
|
145
|
+
cookIt: true,
|
|
146
|
+
},
|
|
147
|
+
)
|
|
148
|
+
setHtmlNodeAttributes(moduleScriptNode, {
|
|
149
|
+
type: undefined,
|
|
150
|
+
src: newReference.generatedSpecifier,
|
|
151
|
+
})
|
|
152
|
+
})
|
|
153
|
+
}
|
|
154
|
+
return
|
|
155
|
+
}
|
|
156
|
+
if (shouldTransformScriptTypeModule) {
|
|
157
|
+
const htmlNodeText = getHtmlNodeText(moduleScriptNode)
|
|
158
|
+
actions.push(async () => {
|
|
159
|
+
const { line, column, lineEnd, columnEnd, isOriginal } =
|
|
160
|
+
getHtmlNodePosition(moduleScriptNode, {
|
|
161
|
+
preferOriginal: true,
|
|
162
|
+
})
|
|
163
|
+
let inlineScriptUrl = generateInlineContentUrl({
|
|
164
|
+
url: urlInfo.url,
|
|
165
|
+
extension: ".js",
|
|
166
|
+
line,
|
|
167
|
+
column,
|
|
168
|
+
lineEnd,
|
|
169
|
+
columnEnd,
|
|
170
|
+
})
|
|
171
|
+
const [inlineReference] = context.referenceUtils.foundInline({
|
|
172
|
+
node: moduleScriptNode,
|
|
173
|
+
type: "script_src",
|
|
174
|
+
expectedType: "js_module",
|
|
175
|
+
isOriginalPosition: isOriginal,
|
|
176
|
+
// we remove 1 to the line because imagine the following html:
|
|
177
|
+
// <script>console.log('ok')</script>
|
|
178
|
+
// -> content starts same line as <script>
|
|
179
|
+
specifierLine: line - 1,
|
|
180
|
+
specifierColumn: column,
|
|
181
|
+
specifier: inlineScriptUrl,
|
|
182
|
+
contentType: "text/javascript",
|
|
183
|
+
content: htmlNodeText,
|
|
184
|
+
})
|
|
185
|
+
const [, newUrlInfo] = await getReferenceAsJsClassic(
|
|
186
|
+
inlineReference,
|
|
187
|
+
{ cookIt: true },
|
|
188
|
+
)
|
|
189
|
+
setHtmlNodeText(moduleScriptNode, newUrlInfo.content)
|
|
190
|
+
setHtmlNodeAttributes(moduleScriptNode, {
|
|
191
|
+
"type": undefined,
|
|
192
|
+
"generated-by": "jsenv:as_js_classic_html",
|
|
193
|
+
})
|
|
194
|
+
})
|
|
195
|
+
}
|
|
196
|
+
})
|
|
197
|
+
if (shouldTransformScriptTypeModule) {
|
|
198
|
+
preloadAsScriptNodes.forEach((preloadAsScriptNode) => {
|
|
199
|
+
const href = getHtmlNodeAttribute(preloadAsScriptNode, "href")
|
|
200
|
+
const reference = urlInfo.references.find(
|
|
201
|
+
(ref) =>
|
|
202
|
+
ref.generatedSpecifier === href &&
|
|
203
|
+
ref.type === "link_href" &&
|
|
204
|
+
ref.expectedType === undefined,
|
|
205
|
+
)
|
|
206
|
+
const expectedScriptType = jsModuleUrls.includes(reference.url)
|
|
207
|
+
? "module"
|
|
208
|
+
: "classic"
|
|
209
|
+
if (expectedScriptType === "module") {
|
|
210
|
+
actions.push(async () => {
|
|
211
|
+
// reference modified by <script type="module"> conversion
|
|
212
|
+
let newReference
|
|
213
|
+
if (reference.next) {
|
|
214
|
+
newReference = reference.next
|
|
215
|
+
} else {
|
|
216
|
+
// when the url is not referenced by a <script type="module">
|
|
217
|
+
// we assume we want to preload "classic" but it might not be the case
|
|
218
|
+
// but it's unlikely to happen and people should use "modulepreload" in that case anyway
|
|
219
|
+
;[newReference] = await getReferenceAsJsClassic(reference)
|
|
220
|
+
}
|
|
221
|
+
setHtmlNodeAttributes(preloadAsScriptNode, {
|
|
222
|
+
href: newReference.generatedSpecifier,
|
|
223
|
+
crossorigin: undefined,
|
|
224
|
+
})
|
|
225
|
+
})
|
|
226
|
+
}
|
|
227
|
+
})
|
|
228
|
+
modulePreloadNodes.forEach((modulePreloadNode) => {
|
|
229
|
+
const href = getHtmlNodeAttribute(modulePreloadNode, "href")
|
|
230
|
+
const reference = urlInfo.references.find(
|
|
231
|
+
(ref) =>
|
|
232
|
+
ref.generatedSpecifier === href &&
|
|
233
|
+
ref.type === "link_href" &&
|
|
234
|
+
ref.expectedType === "js_module",
|
|
235
|
+
)
|
|
236
|
+
actions.push(async () => {
|
|
237
|
+
let newReference
|
|
238
|
+
if (reference.next) {
|
|
239
|
+
newReference = reference.next
|
|
240
|
+
} else {
|
|
241
|
+
;[newReference] = await getReferenceAsJsClassic(reference)
|
|
242
|
+
}
|
|
243
|
+
setHtmlNodeAttributes(modulePreloadNode, {
|
|
244
|
+
rel: "preload",
|
|
245
|
+
as: "script",
|
|
246
|
+
href: newReference.generatedSpecifier,
|
|
247
|
+
})
|
|
248
|
+
})
|
|
249
|
+
})
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
if (actions.length === 0) {
|
|
253
|
+
return null
|
|
254
|
+
}
|
|
255
|
+
await Promise.all(actions.map((action) => action()))
|
|
256
|
+
if (systemJsInjection) {
|
|
257
|
+
const needsSystemJs = convertedUrls.some(
|
|
258
|
+
(convertedUrl) =>
|
|
259
|
+
context.urlGraph.getUrlInfo(convertedUrl).data.jsClassicFormat ===
|
|
260
|
+
"system",
|
|
261
|
+
)
|
|
262
|
+
if (needsSystemJs) {
|
|
263
|
+
const [systemJsReference] = context.referenceUtils.inject({
|
|
264
|
+
type: "script_src",
|
|
265
|
+
expectedType: "js_classic",
|
|
266
|
+
specifier: systemJsClientFileUrl,
|
|
267
|
+
})
|
|
268
|
+
injectScriptNodeAsEarlyAsPossible(
|
|
269
|
+
htmlAst,
|
|
270
|
+
createHtmlNode({
|
|
271
|
+
"tagName": "script",
|
|
272
|
+
"src": systemJsReference.generatedSpecifier,
|
|
273
|
+
"injected-by": "jsenv:as_js_classic_html",
|
|
274
|
+
}),
|
|
275
|
+
)
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return stringifyHtmlAst(htmlAst)
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
}
|
|
282
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { injectQueryParams } from "@jsenv/urls"
|
|
2
|
+
|
|
3
|
+
export const jsenvPluginAsJsClassicWorkers = ({
|
|
4
|
+
generateJsClassicFilename,
|
|
5
|
+
}) => {
|
|
6
|
+
const updateReference = (reference) => {
|
|
7
|
+
reference.filename = generateJsClassicFilename(reference.url)
|
|
8
|
+
reference.mutation = (magicSource) => {
|
|
9
|
+
magicSource.replace({
|
|
10
|
+
start: reference.typePropertyNode.value.start,
|
|
11
|
+
end: reference.typePropertyNode.value.end,
|
|
12
|
+
replacement: JSON.stringify("classic"),
|
|
13
|
+
})
|
|
14
|
+
}
|
|
15
|
+
reference.expectedType = "js_classic"
|
|
16
|
+
return injectQueryParams(reference.url, {
|
|
17
|
+
as_js_classic: "",
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return {
|
|
22
|
+
name: "jsenv:as_js_classic_workers",
|
|
23
|
+
appliesDuring: "*",
|
|
24
|
+
redirectUrl: {
|
|
25
|
+
js_url_specifier: (reference, context) => {
|
|
26
|
+
if (reference.expectedType !== "js_module") {
|
|
27
|
+
return null
|
|
28
|
+
}
|
|
29
|
+
if (reference.expectedSubtype === "worker") {
|
|
30
|
+
if (context.isSupportedOnCurrentClients("worker_type_module")) {
|
|
31
|
+
return null
|
|
32
|
+
}
|
|
33
|
+
return updateReference(reference)
|
|
34
|
+
}
|
|
35
|
+
if (reference.expectedSubtype === "service_worker") {
|
|
36
|
+
if (
|
|
37
|
+
context.isSupportedOnCurrentClients("service_worker_type_module")
|
|
38
|
+
) {
|
|
39
|
+
return null
|
|
40
|
+
}
|
|
41
|
+
return updateReference(reference)
|
|
42
|
+
}
|
|
43
|
+
if (reference.expectedSubtype === "shared_worker") {
|
|
44
|
+
if (
|
|
45
|
+
context.isSupportedOnCurrentClients("shared_worker_type_module")
|
|
46
|
+
) {
|
|
47
|
+
return null
|
|
48
|
+
}
|
|
49
|
+
return updateReference(reference)
|
|
50
|
+
}
|
|
51
|
+
return null
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { pathToFileURL } from "node:url"
|
|
2
|
-
|
|
3
|
-
import { injectImport } from "@jsenv/utils/js_ast/babel_utils.js"
|
|
2
|
+
import { injectJsImport } from "@jsenv/ast"
|
|
4
3
|
|
|
5
4
|
export const babelPluginGlobalThisAsJsenvImport = (
|
|
6
5
|
babel,
|
|
@@ -23,7 +22,7 @@ export const babelPluginGlobalThisAsJsenvImport = (
|
|
|
23
22
|
const { node } = path
|
|
24
23
|
// we should do this once, tree shaking will remote it but still
|
|
25
24
|
if (node.name === "globalThis") {
|
|
26
|
-
|
|
25
|
+
injectJsImport({
|
|
27
26
|
programPath: path.scope.getProgramParent().path,
|
|
28
27
|
from: getImportSpecifier(globalThisClientFileUrl),
|
|
29
28
|
sideEffect: true,
|
package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js
RENAMED
|
File without changes
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { pathToFileURL } from "node:url"
|
|
2
|
-
|
|
3
|
-
import { injectImport } from "@jsenv/utils/js_ast/babel_utils.js"
|
|
2
|
+
import { injectJsImport } from "@jsenv/ast"
|
|
4
3
|
import {
|
|
5
4
|
getBabelHelperFileUrl,
|
|
6
5
|
babelHelperNameFromUrl,
|
|
7
|
-
} from "@jsenv/babel-plugins
|
|
6
|
+
} from "@jsenv/babel-plugins"
|
|
8
7
|
|
|
9
8
|
// named import approach found here:
|
|
10
9
|
// https://github.com/rollup/rollup-plugin-babel/blob/18e4232a450f320f44c651aa8c495f21c74d59ac/src/helperPlugin.js#L1
|
|
@@ -37,7 +36,7 @@ export const babelPluginBabelHelpersAsJsenvImports = (
|
|
|
37
36
|
return undefined
|
|
38
37
|
}
|
|
39
38
|
const babelHelperImportSpecifier = getBabelHelperFileUrl(name)
|
|
40
|
-
const helper =
|
|
39
|
+
const helper = injectJsImport({
|
|
41
40
|
programPath: file.path,
|
|
42
41
|
from: getImportSpecifier(babelHelperImportSpecifier),
|
|
43
42
|
nameHint: `_${name}`,
|
package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js
RENAMED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { getBabelHelperFileUrl
|
|
1
|
+
import { getBabelHelperFileUrl } from "@jsenv/babel-plugins"
|
|
2
|
+
import { requireBabelPlugin } from "../require_babel_plugin.js"
|
|
2
3
|
import { babelPluginCompatMap } from "./babel_plugins_compatibility.js"
|
|
3
4
|
|
|
4
5
|
export const getBaseBabelPluginStructure = ({
|
|
5
6
|
url,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
//
|
|
9
|
-
topLevelAwait = "simple",
|
|
10
|
-
isJsModule,
|
|
7
|
+
isSupported,
|
|
8
|
+
// isJsModule,
|
|
9
|
+
// getImportSpecifier,
|
|
11
10
|
}) => {
|
|
12
11
|
const isBabelPluginNeeded = (babelPluginName) => {
|
|
13
|
-
return !
|
|
12
|
+
return !isSupported(babelPluginCompatMap[babelPluginName])
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
const babelPluginStructure = {}
|
|
@@ -37,21 +36,19 @@ export const getBaseBabelPluginStructure = ({
|
|
|
37
36
|
babelPluginStructure["proposal-unicode-property-regex"] =
|
|
38
37
|
requireBabelPlugin("@babel/plugin-proposal-unicode-property-regex")
|
|
39
38
|
}
|
|
40
|
-
if (
|
|
41
|
-
isJsModule &&
|
|
42
|
-
usesTopLevelAwait &&
|
|
43
|
-
!isSupportedOnRuntime("top_level_await")
|
|
44
|
-
) {
|
|
39
|
+
if (isBabelPluginNeeded("transform-async-to-promises")) {
|
|
45
40
|
babelPluginStructure["transform-async-to-promises"] = [
|
|
46
41
|
requireBabelPlugin("babel-plugin-transform-async-to-promises"),
|
|
47
42
|
{
|
|
48
|
-
topLevelAwait,
|
|
43
|
+
topLevelAwait: "ignore", // will be handled by "jsenv:top_level_await" plugin
|
|
44
|
+
externalHelpers: false,
|
|
45
|
+
// enable once https://github.com/rpetrich/babel-plugin-transform-async-to-promises/pull/83
|
|
46
|
+
// externalHelpers: isJsModule,
|
|
47
|
+
// externalHelpersPath: isJsModule ? getImportSpecifier(
|
|
48
|
+
// "babel-plugin-transform-async-to-promises/helpers.mjs",
|
|
49
|
+
// ) : null
|
|
49
50
|
},
|
|
50
51
|
]
|
|
51
|
-
} else if (isBabelPluginNeeded("transform-async-to-promises")) {
|
|
52
|
-
babelPluginStructure["transform-async-to-promises"] = requireBabelPlugin(
|
|
53
|
-
"babel-plugin-transform-async-to-promises",
|
|
54
|
-
)
|
|
55
52
|
}
|
|
56
53
|
if (isBabelPluginNeeded("transform-arrow-functions")) {
|
|
57
54
|
babelPluginStructure["transform-arrow-functions"] = requireBabelPlugin(
|
|
File without changes
|