@jsenv/core 27.0.0-alpha.62 → 27.0.0-alpha.65
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/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 +13362 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/AsyncGenerator/AsyncGenerator.js +95 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/AwaitValue/AwaitValue.js +3 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/applyDecoratorDescriptor/applyDecoratorDescriptor.js +29 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +9 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/arrayWithHoles/arrayWithHoles.js +4 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/assertThisInitialized/assertThisInitialized.js +8 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +52 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/asyncIterator/asyncIterator.js +78 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/asyncToGenerator/asyncToGenerator.js +39 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +4 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +24 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +7 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +14 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classCallCheck/classCallCheck.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +8 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classNameTDZError/classNameTDZError.js +4 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +6 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +6 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +7 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +7 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +7 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +3 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +8 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +9 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/construct/construct.js +15 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/createClass/createClass.js +18 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +63 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +22 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/createRawReactElement/createRawReactElement.js +50 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/createSuper/createSuper.js +22 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/decorate/decorate.js +622 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/defaults/defaults.js +14 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +26 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/defineProperty/defineProperty.js +19 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/extends/extends.js +16 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/get/get.js +21 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/getPrototypeOf/getPrototypeOf.js +2 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/inherits/inherits.js +21 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/inheritsLoose/inheritsLoose.js +6 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +10 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +3 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/instanceof/instanceof.js +7 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/interopRequireDefault/interopRequireDefault.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +49 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/isNativeFunction/isNativeFunction.js +4 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/iterableToArray/iterableToArray.js +3 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +38 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +13 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/jsx/jsx.js +49 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/maybeArrayLike/maybeArrayLike.js +10 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/newArrowCheck/newArrowCheck.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/nonIterableRest/nonIterableRest.js +3 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/nonIterableSpread/nonIterableSpread.js +3 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/objectSpread/objectSpread.js +22 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/objectSpread2/objectSpread2.js +41 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +20 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +15 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +10 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/readOnlyError/readOnlyError.js +4 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/readme.md +8 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/set/set.js +51 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/setPrototypeOf/setPrototypeOf.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/slicedToArray/slicedToArray.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +7 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/superPropBase/superPropBase.js +10 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +11 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +8 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/tdz/tdz.js +4 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/temporalRef/temporalRef.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/temporalUndefined/temporalUndefined.js +3 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/toArray/toArray.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/toConsumableArray/toConsumableArray.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/toPrimitive/toPrimitive.js +14 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/toPropertyKey/toPropertyKey.js +5 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/typeof/typeof.js +7 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +10 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +7 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +35 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/wrapRegExp/wrapRegExp.js +67 -0
- package/dist/node_modules/@jsenv/babel-plugins/src/babel_helpers/writeOnlyError/writeOnlyError.js +4 -0
- package/dist/other/jsenv.png +0 -0
- package/main.js +1 -0
- package/package.json +18 -14
- package/src/build/build.js +169 -69
- package/src/build/build_urls_generator.js +18 -2
- package/src/build/inject_global_version_mappings.js +18 -5
- package/src/build/inject_service_worker_urls.js +1 -1
- package/src/build/resync_ressource_hints.js +56 -9
- package/src/build/start_build_server.js +41 -30
- package/src/dev/plugins/explorer/client/explorer.html +1 -1
- package/src/dev/start_dev_server.js +21 -5
- package/src/execute/execute.js +3 -0
- package/src/execute/runtimes/browsers/from_playwright.js +10 -0
- package/src/execute/runtimes/node/node_process.js +8 -0
- package/src/omega/errors.js +10 -7
- package/src/omega/kitchen.js +251 -340
- package/src/omega/server/file_service.js +34 -17
- package/src/omega/url_graph/url_graph_load.js +10 -17
- package/src/omega/url_graph/url_graph_report.js +2 -2
- package/src/omega/url_graph/url_info_transformations.js +1 -4
- package/src/omega/url_graph.js +7 -3
- package/src/omega/url_specifier_encoding.js +59 -0
- 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 +171 -53
- package/src/plugins/html_supervisor/client/html_supervisor_installer.js +1 -1
- 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/importmap/jsenv_plugin_importmap.js +2 -4
- package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +51 -42
- package/src/plugins/inline/jsenv_plugin_data_urls.js +1 -4
- package/src/plugins/inline/jsenv_plugin_html_inline_content.js +3 -5
- package/src/plugins/inline/jsenv_plugin_inline_query_param.js +1 -4
- package/src/plugins/inline/jsenv_plugin_js_inline_content.js +1 -4
- package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +16 -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 +15 -15
- package/src/plugins/transpilation/as_js_classic/client/s.js +362 -807
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +20 -10
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_html.js +302 -0
- package/src/plugins/transpilation/as_js_classic/{jsenv_plugin_workers_type_module_as_classic.js → jsenv_plugin_as_js_classic_workers.js} +2 -2
- package/src/plugins/transpilation/babel/jsenv_plugin_babel.js +5 -2
- package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +1 -2
- package/src/plugins/transpilation/jsenv_plugin_transpilation.js +2 -0
- package/src/plugins/url_analysis/html/html_urls.js +3 -0
- package/src/plugins/url_analysis/js/js_urls.js +2 -1
- package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +87 -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 +34 -13
- package/src/test/execute_test_plan.js +2 -0
- package/src/test/logs_file_execution.js +47 -38
- 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/as_js_classic/client/s.js.md +0 -1
- package/src/plugins/transpilation/as_js_classic/jsenv_plugin_script_type_module_as_classic.js +0 -270
- package/src/plugins/transpilation/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
- package/src/plugins/transpilation/fetch_original_url_info.js +0 -30
|
@@ -16,9 +16,11 @@ import {
|
|
|
16
16
|
import { GRAPH } from "./graph_utils.js"
|
|
17
17
|
|
|
18
18
|
export const resyncRessourceHints = async ({
|
|
19
|
+
logger,
|
|
19
20
|
finalGraphKitchen,
|
|
20
21
|
finalGraph,
|
|
21
|
-
|
|
22
|
+
rawUrls,
|
|
23
|
+
postBuildRedirections,
|
|
22
24
|
}) => {
|
|
23
25
|
const ressourceHintActions = []
|
|
24
26
|
GRAPH.forEach(finalGraph, (urlInfo) => {
|
|
@@ -29,20 +31,62 @@ export const resyncRessourceHints = async ({
|
|
|
29
31
|
const htmlAst = parseHtmlString(urlInfo.content, {
|
|
30
32
|
storeOriginalPositions: false,
|
|
31
33
|
})
|
|
34
|
+
const actions = []
|
|
32
35
|
const visitLinkWithHref = (linkNode, hrefAttribute) => {
|
|
33
36
|
const href = hrefAttribute.value
|
|
34
37
|
if (!href || href.startsWith("data:")) {
|
|
35
38
|
return
|
|
36
39
|
}
|
|
37
|
-
const
|
|
40
|
+
const relAttribute = getHtmlNodeAttributeByName(linkNode, "rel")
|
|
41
|
+
const rel = relAttribute ? relAttribute.value : undefined
|
|
42
|
+
const isRessourceHint = [
|
|
43
|
+
"preconnect",
|
|
44
|
+
"dns-prefetch",
|
|
45
|
+
"prefetch",
|
|
46
|
+
"preload",
|
|
47
|
+
"modulepreload",
|
|
48
|
+
].includes(rel)
|
|
49
|
+
if (!isRessourceHint) {
|
|
50
|
+
return
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
let buildUrl
|
|
54
|
+
for (const key of Object.keys(rawUrls)) {
|
|
55
|
+
if (rawUrls[key] === href) {
|
|
56
|
+
buildUrl = key
|
|
57
|
+
break
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (!buildUrl) {
|
|
61
|
+
logger.warn(`remove ressource hint because cannot find "${href}"`)
|
|
62
|
+
actions.push(() => {
|
|
63
|
+
removeHtmlNode(linkNode)
|
|
64
|
+
})
|
|
65
|
+
return
|
|
66
|
+
}
|
|
67
|
+
buildUrl = postBuildRedirections[buildUrl] || buildUrl
|
|
38
68
|
const urlInfo = finalGraph.getUrlInfo(buildUrl)
|
|
39
69
|
if (!urlInfo) {
|
|
70
|
+
logger.warn(
|
|
71
|
+
`remove ressource hint because cannot find "${buildUrl}" in the graph`,
|
|
72
|
+
)
|
|
73
|
+
actions.push(() => {
|
|
74
|
+
removeHtmlNode(linkNode)
|
|
75
|
+
})
|
|
40
76
|
return
|
|
41
77
|
}
|
|
42
78
|
if (urlInfo.dependents.size === 0) {
|
|
43
|
-
|
|
79
|
+
logger.warn(
|
|
80
|
+
`remove ressource hint because "${href}" not used anymore`,
|
|
81
|
+
)
|
|
82
|
+
actions.push(() => {
|
|
83
|
+
removeHtmlNode(linkNode)
|
|
84
|
+
})
|
|
44
85
|
return
|
|
45
86
|
}
|
|
87
|
+
actions.push(() => {
|
|
88
|
+
hrefAttribute.value = urlInfo.data.buildUrlSpecifier
|
|
89
|
+
})
|
|
46
90
|
}
|
|
47
91
|
visitHtmlAst(htmlAst, (node) => {
|
|
48
92
|
if (node.nodeName !== "link") {
|
|
@@ -54,12 +98,15 @@ export const resyncRessourceHints = async ({
|
|
|
54
98
|
}
|
|
55
99
|
visitLinkWithHref(node, hrefAttribute)
|
|
56
100
|
})
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
101
|
+
if (actions.length) {
|
|
102
|
+
actions.forEach((action) => action())
|
|
103
|
+
await finalGraphKitchen.urlInfoTransformer.applyFinalTransformations(
|
|
104
|
+
urlInfo,
|
|
105
|
+
{
|
|
106
|
+
content: stringifyHtmlAst(htmlAst),
|
|
107
|
+
},
|
|
108
|
+
)
|
|
109
|
+
}
|
|
63
110
|
})
|
|
64
111
|
})
|
|
65
112
|
await Promise.all(
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
pluginRequestWaitingCheck,
|
|
22
22
|
pluginCORS,
|
|
23
23
|
fetchFileSystem,
|
|
24
|
+
composeServices,
|
|
24
25
|
} from "@jsenv/server"
|
|
25
26
|
import {
|
|
26
27
|
assertAndNormalizeDirectoryUrl,
|
|
@@ -44,6 +45,7 @@ export const startBuildServer = async ({
|
|
|
44
45
|
listenAnyIp,
|
|
45
46
|
ip,
|
|
46
47
|
port = 9779,
|
|
48
|
+
services = {},
|
|
47
49
|
|
|
48
50
|
rootDirectoryUrl,
|
|
49
51
|
buildDirectoryUrl,
|
|
@@ -57,7 +59,9 @@ export const startBuildServer = async ({
|
|
|
57
59
|
// - inside a forked child process
|
|
58
60
|
// - inside a worker thread
|
|
59
61
|
// (because node cluster won't work)
|
|
60
|
-
buildServerAutoreload = typeof process.send !== "function" &&
|
|
62
|
+
buildServerAutoreload = typeof process.send !== "function" &&
|
|
63
|
+
!parentPort &&
|
|
64
|
+
!process.debugPort,
|
|
61
65
|
cooldownBetweenFileEvents,
|
|
62
66
|
}) => {
|
|
63
67
|
const logger = createLogger({ logLevel })
|
|
@@ -144,10 +148,7 @@ export const startBuildServer = async ({
|
|
|
144
148
|
accessControlAllowRequestOrigin: true,
|
|
145
149
|
accessControlAllowRequestMethod: true,
|
|
146
150
|
accessControlAllowRequestHeaders: true,
|
|
147
|
-
accessControlAllowedRequestHeaders:
|
|
148
|
-
...jsenvAccessControlAllowedHeaders,
|
|
149
|
-
"x-jsenv-execution-id",
|
|
150
|
-
],
|
|
151
|
+
accessControlAllowedRequestHeaders: jsenvAccessControlAllowedHeaders,
|
|
151
152
|
accessControlAllowCredentials: true,
|
|
152
153
|
}),
|
|
153
154
|
...pluginServerTiming(),
|
|
@@ -156,31 +157,13 @@ export const startBuildServer = async ({
|
|
|
156
157
|
}),
|
|
157
158
|
},
|
|
158
159
|
sendErrorDetails: true,
|
|
159
|
-
requestToResponse: (
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
...request,
|
|
167
|
-
ressource: mainBuildFileUrl,
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
return fetchFileSystem(
|
|
171
|
-
new URL(request.ressource.slice(1), buildDirectoryUrl),
|
|
172
|
-
{
|
|
173
|
-
headers: request.headers,
|
|
174
|
-
cacheControl: urlIsVersioned
|
|
175
|
-
? `private,max-age=${SECONDS_IN_30_DAYS},immutable`
|
|
176
|
-
: "private,max-age=0,must-revalidate",
|
|
177
|
-
etagEnabled: true,
|
|
178
|
-
compressionEnabled: !request.pathname.endsWith(".mp4"),
|
|
179
|
-
rootDirectoryUrl: buildDirectoryUrl,
|
|
180
|
-
canReadDirectory: true,
|
|
181
|
-
},
|
|
182
|
-
)
|
|
183
|
-
},
|
|
160
|
+
requestToResponse: composeServices({
|
|
161
|
+
...services,
|
|
162
|
+
build_files_service: createBuildFilesService({
|
|
163
|
+
buildDirectoryUrl,
|
|
164
|
+
mainBuildFileUrl,
|
|
165
|
+
}),
|
|
166
|
+
}),
|
|
184
167
|
})
|
|
185
168
|
startBuildServerTask.done()
|
|
186
169
|
logger.info(``)
|
|
@@ -197,4 +180,32 @@ export const startBuildServer = async ({
|
|
|
197
180
|
}
|
|
198
181
|
}
|
|
199
182
|
|
|
183
|
+
const createBuildFilesService = ({ buildDirectoryUrl, mainBuildFileUrl }) => {
|
|
184
|
+
return (request) => {
|
|
185
|
+
const urlIsVersioned = new URL(
|
|
186
|
+
request.ressource,
|
|
187
|
+
request.origin,
|
|
188
|
+
).searchParams.has("v")
|
|
189
|
+
if (mainBuildFileUrl && request.ressource === "/") {
|
|
190
|
+
request = {
|
|
191
|
+
...request,
|
|
192
|
+
ressource: mainBuildFileUrl,
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return fetchFileSystem(
|
|
196
|
+
new URL(request.ressource.slice(1), buildDirectoryUrl),
|
|
197
|
+
{
|
|
198
|
+
headers: request.headers,
|
|
199
|
+
cacheControl: urlIsVersioned
|
|
200
|
+
? `private,max-age=${SECONDS_IN_30_DAYS},immutable`
|
|
201
|
+
: "private,max-age=0,must-revalidate",
|
|
202
|
+
etagEnabled: true,
|
|
203
|
+
compressionEnabled: !request.pathname.endsWith(".mp4"),
|
|
204
|
+
rootDirectoryUrl: buildDirectoryUrl,
|
|
205
|
+
canReadDirectory: true,
|
|
206
|
+
},
|
|
207
|
+
)
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
200
211
|
const SECONDS_IN_30_DAYS = 60 * 60 * 24 * 30
|
|
@@ -14,7 +14,7 @@ import { createKitchen } from "@jsenv/core/src/omega/kitchen.js"
|
|
|
14
14
|
import { startOmegaServer } from "@jsenv/core/src/omega/omega_server.js"
|
|
15
15
|
|
|
16
16
|
import { jsenvPluginExplorer } from "./plugins/explorer/jsenv_plugin_explorer.js"
|
|
17
|
-
import { jsenvPluginToolbar } from "./plugins/toolbar/jsenv_plugin_toolbar.js"
|
|
17
|
+
// import { jsenvPluginToolbar } from "./plugins/toolbar/jsenv_plugin_toolbar.js"
|
|
18
18
|
|
|
19
19
|
export const startDevServer = async ({
|
|
20
20
|
signal = new AbortController().signal,
|
|
@@ -40,7 +40,9 @@ export const startDevServer = async ({
|
|
|
40
40
|
// - inside a forked child process
|
|
41
41
|
// - inside a worker thread
|
|
42
42
|
// (because node cluster won't work)
|
|
43
|
-
devServerAutoreload = typeof process.send !== "function" &&
|
|
43
|
+
devServerAutoreload = typeof process.send !== "function" &&
|
|
44
|
+
!parentPort &&
|
|
45
|
+
!process.debugPort,
|
|
44
46
|
clientFiles = {
|
|
45
47
|
"./**": true,
|
|
46
48
|
"./**/.*/": false, // any folder starting with a dot is ignored (includes .git,.jsenv for instance)
|
|
@@ -51,7 +53,18 @@ export const startDevServer = async ({
|
|
|
51
53
|
clientAutoreload = true,
|
|
52
54
|
|
|
53
55
|
sourcemaps = "inline",
|
|
56
|
+
// default runtimeCompat assume dev server will be request by recent browsers
|
|
57
|
+
// Used by "jsenv_plugin_node_runtime.js" to deactivate itself
|
|
58
|
+
// If dev server can be requested by Node.js to exec files
|
|
59
|
+
// we would add "node" to the potential runtimes. For now it's out of the scope of the dev server
|
|
60
|
+
// and "jsenv_plugin_node_runtime.js" applies only during build made for node.js
|
|
61
|
+
runtimeCompat = {
|
|
62
|
+
chrome: "100",
|
|
63
|
+
firefox: "100",
|
|
64
|
+
safari: "15.5",
|
|
65
|
+
},
|
|
54
66
|
plugins = [],
|
|
67
|
+
urlAnalysis = {},
|
|
55
68
|
htmlSupervisor = true,
|
|
56
69
|
injectedGlobals,
|
|
57
70
|
nodeEsmResolution,
|
|
@@ -66,7 +79,7 @@ export const startDevServer = async ({
|
|
|
66
79
|
"./test/**/*.test.html": true,
|
|
67
80
|
},
|
|
68
81
|
},
|
|
69
|
-
toolbar = false,
|
|
82
|
+
// toolbar = false,
|
|
70
83
|
writeGeneratedFiles = true,
|
|
71
84
|
}) => {
|
|
72
85
|
const logger = createLogger({ logLevel })
|
|
@@ -162,6 +175,7 @@ export const startDevServer = async ({
|
|
|
162
175
|
rootDirectoryUrl,
|
|
163
176
|
urlGraph,
|
|
164
177
|
scenario: "dev",
|
|
178
|
+
runtimeCompat,
|
|
165
179
|
sourcemaps,
|
|
166
180
|
writeGeneratedFiles,
|
|
167
181
|
plugins: [
|
|
@@ -170,7 +184,9 @@ export const startDevServer = async ({
|
|
|
170
184
|
rootDirectoryUrl,
|
|
171
185
|
urlGraph,
|
|
172
186
|
scenario: "dev",
|
|
187
|
+
runtimeCompat,
|
|
173
188
|
|
|
189
|
+
urlAnalysis,
|
|
174
190
|
htmlSupervisor,
|
|
175
191
|
injectedGlobals,
|
|
176
192
|
nodeEsmResolution,
|
|
@@ -183,7 +199,7 @@ export const startDevServer = async ({
|
|
|
183
199
|
jsenvPluginExplorer({
|
|
184
200
|
groups: explorerGroups,
|
|
185
201
|
}),
|
|
186
|
-
...(toolbar ? [jsenvPluginToolbar(toolbar)] : []),
|
|
202
|
+
// ...(toolbar ? [jsenvPluginToolbar(toolbar)] : []),
|
|
187
203
|
],
|
|
188
204
|
})
|
|
189
205
|
const server = await startOmegaServer({
|
|
@@ -208,7 +224,7 @@ export const startDevServer = async ({
|
|
|
208
224
|
logger.info(``)
|
|
209
225
|
server.addEffect(() => {
|
|
210
226
|
return () => {
|
|
211
|
-
kitchen.pluginController.callHooks("destroy")
|
|
227
|
+
kitchen.pluginController.callHooks("destroy", {})
|
|
212
228
|
}
|
|
213
229
|
})
|
|
214
230
|
return {
|
package/src/execute/execute.js
CHANGED
|
@@ -68,6 +68,7 @@ export const execute = async ({
|
|
|
68
68
|
}
|
|
69
69
|
if (runtime.needsServer) {
|
|
70
70
|
const urlGraph = createUrlGraph()
|
|
71
|
+
const runtimeCompat = { [runtime.name]: runtime.version }
|
|
71
72
|
const kitchen = createKitchen({
|
|
72
73
|
signal,
|
|
73
74
|
logger,
|
|
@@ -75,6 +76,7 @@ export const execute = async ({
|
|
|
75
76
|
urlGraph,
|
|
76
77
|
scenario,
|
|
77
78
|
sourcemaps,
|
|
79
|
+
runtimeCompat,
|
|
78
80
|
writeGeneratedFiles,
|
|
79
81
|
plugins: [
|
|
80
82
|
...plugins,
|
|
@@ -82,6 +84,7 @@ export const execute = async ({
|
|
|
82
84
|
rootDirectoryUrl,
|
|
83
85
|
urlGraph,
|
|
84
86
|
scenario,
|
|
87
|
+
runtimeCompat,
|
|
85
88
|
|
|
86
89
|
htmlSupervisor,
|
|
87
90
|
injectedGlobals,
|
|
@@ -216,9 +216,14 @@ export const createRuntimeFromPlaywright = ({
|
|
|
216
216
|
},
|
|
217
217
|
})
|
|
218
218
|
cleanupCallbackList.add(removeConsoleListener)
|
|
219
|
+
const actionOperation = Abort.startOperation()
|
|
220
|
+
actionOperation.addAbortSignal(signal)
|
|
219
221
|
const winnerPromise = new Promise((resolve, reject) => {
|
|
220
222
|
raceCallbacks(
|
|
221
223
|
{
|
|
224
|
+
aborted: (cb) => {
|
|
225
|
+
return actionOperation.addAbortCallback(cb)
|
|
226
|
+
},
|
|
222
227
|
// https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-error
|
|
223
228
|
error: (cb) => {
|
|
224
229
|
return registerEvent({
|
|
@@ -317,6 +322,11 @@ export const createRuntimeFromPlaywright = ({
|
|
|
317
322
|
|
|
318
323
|
const getResult = async () => {
|
|
319
324
|
const winner = await winnerPromise
|
|
325
|
+
if (winner.name === "aborted") {
|
|
326
|
+
return {
|
|
327
|
+
status: "aborted",
|
|
328
|
+
}
|
|
329
|
+
}
|
|
320
330
|
if (winner.name === "error" || winner.name === "pageerror") {
|
|
321
331
|
const error = winner.data
|
|
322
332
|
return {
|
|
@@ -162,6 +162,9 @@ nodeProcess.run = async ({
|
|
|
162
162
|
const winnerPromise = new Promise((resolve) => {
|
|
163
163
|
raceCallbacks(
|
|
164
164
|
{
|
|
165
|
+
aborted: (cb) => {
|
|
166
|
+
return actionOperation.addAbortCallback(cb)
|
|
167
|
+
},
|
|
165
168
|
// https://nodejs.org/api/child_process.html#child_process_event_disconnect
|
|
166
169
|
// disconnect: (cb) => {
|
|
167
170
|
// return onceProcessEvent(childProcess, "disconnect", cb)
|
|
@@ -194,6 +197,11 @@ nodeProcess.run = async ({
|
|
|
194
197
|
},
|
|
195
198
|
})
|
|
196
199
|
const winner = await winnerPromise
|
|
200
|
+
if (winner.name === "aborted") {
|
|
201
|
+
return {
|
|
202
|
+
status: "aborted",
|
|
203
|
+
}
|
|
204
|
+
}
|
|
197
205
|
if (winner.name === "error") {
|
|
198
206
|
const error = winner.data
|
|
199
207
|
removeOutputListener()
|
package/src/omega/errors.js
CHANGED
|
@@ -97,13 +97,16 @@ export const createTransformUrlContentError = ({
|
|
|
97
97
|
...details
|
|
98
98
|
}) => {
|
|
99
99
|
const transformError = new Error(
|
|
100
|
-
createDetailedMessage(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
100
|
+
createDetailedMessage(
|
|
101
|
+
`Failed to transform url content of "${urlInfo.type}"`,
|
|
102
|
+
{
|
|
103
|
+
reason,
|
|
104
|
+
...details,
|
|
105
|
+
"url": urlInfo.url,
|
|
106
|
+
"url reference trace": reference.trace,
|
|
107
|
+
...detailsFromPluginController(pluginController),
|
|
108
|
+
},
|
|
109
|
+
),
|
|
107
110
|
)
|
|
108
111
|
transformError.name = "TRANSFORM_URL_CONTENT_ERROR"
|
|
109
112
|
transformError.code = code
|