@jsenv/core 27.0.0-alpha.57 → 27.0.0-alpha.58
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.
|
@@ -26,17 +26,15 @@ import {
|
|
|
26
26
|
registerDirectoryLifecycle,
|
|
27
27
|
} from "@jsenv/filesystem"
|
|
28
28
|
import { createLogger } from "@jsenv/logger"
|
|
29
|
-
import { Abort } from "@jsenv/abort"
|
|
30
29
|
|
|
31
30
|
import { initReloadableProcess } from "@jsenv/utils/process_reload/process_reload.js"
|
|
32
31
|
import { createTaskLog } from "@jsenv/utils/logs/task_log.js"
|
|
33
|
-
import { executeCommand } from "@jsenv/utils/command/command.js"
|
|
34
32
|
|
|
35
33
|
export const startBuildServer = async ({
|
|
36
34
|
signal = new AbortController().signal,
|
|
37
35
|
handleSIGINT = true,
|
|
38
36
|
logLevel,
|
|
39
|
-
|
|
37
|
+
serverLogLevel = "warn",
|
|
40
38
|
protocol = "http",
|
|
41
39
|
http2,
|
|
42
40
|
certificate,
|
|
@@ -53,14 +51,7 @@ export const startBuildServer = async ({
|
|
|
53
51
|
},
|
|
54
52
|
buildServerMainFile,
|
|
55
53
|
buildServerAutoreload = false,
|
|
56
|
-
clientFiles = {
|
|
57
|
-
"./**": true,
|
|
58
|
-
"./**/.*/": false, // any folder starting with a dot is ignored (includes .git,.jsenv for instance)
|
|
59
|
-
"./dist/": false,
|
|
60
|
-
"./**/node_modules/": false,
|
|
61
|
-
},
|
|
62
54
|
cooldownBetweenFileEvents,
|
|
63
|
-
buildCommand,
|
|
64
55
|
mainBuildFileUrl = "/index.html",
|
|
65
56
|
}) => {
|
|
66
57
|
const logger = createLogger({ logLevel })
|
|
@@ -123,32 +114,6 @@ export const startBuildServer = async ({
|
|
|
123
114
|
}
|
|
124
115
|
signal = reloadableProcess.signal
|
|
125
116
|
|
|
126
|
-
let buildPromise
|
|
127
|
-
let buildAbortController
|
|
128
|
-
const runBuild = async () => {
|
|
129
|
-
buildAbortController = new AbortController()
|
|
130
|
-
const buildOperation = Abort.startOperation()
|
|
131
|
-
buildOperation.addAbortSignal(signal)
|
|
132
|
-
buildOperation.addAbortSignal(buildAbortController.signal)
|
|
133
|
-
const buildTask = createTaskLog(logger, `execute build command`)
|
|
134
|
-
buildPromise = executeCommand(buildCommand, {
|
|
135
|
-
cwd: rootDirectoryUrl,
|
|
136
|
-
logLevel: buildCommandLogLevel,
|
|
137
|
-
signal: buildOperation.signal,
|
|
138
|
-
})
|
|
139
|
-
try {
|
|
140
|
-
await buildPromise
|
|
141
|
-
buildTask.done()
|
|
142
|
-
} catch (e) {
|
|
143
|
-
if (e.code === "ABORT_ERR") {
|
|
144
|
-
buildTask.fail(`execute build command aborted`)
|
|
145
|
-
} else {
|
|
146
|
-
buildTask.fail()
|
|
147
|
-
throw e
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
117
|
const startServerTask = createTaskLog(logger, "start build server")
|
|
153
118
|
const server = await startServer({
|
|
154
119
|
signal,
|
|
@@ -156,7 +121,7 @@ export const startBuildServer = async ({
|
|
|
156
121
|
stopOnSIGINT: false,
|
|
157
122
|
stopOnInternalError: false,
|
|
158
123
|
keepProcessAlive: true,
|
|
159
|
-
logLevel,
|
|
124
|
+
logLevel: serverLogLevel,
|
|
160
125
|
startLog: false,
|
|
161
126
|
|
|
162
127
|
protocol,
|
|
@@ -183,8 +148,7 @@ export const startBuildServer = async ({
|
|
|
183
148
|
}),
|
|
184
149
|
},
|
|
185
150
|
sendErrorDetails: true,
|
|
186
|
-
requestToResponse:
|
|
187
|
-
await buildPromise
|
|
151
|
+
requestToResponse: (request) => {
|
|
188
152
|
const urlIsVersioned = new URL(
|
|
189
153
|
request.ressource,
|
|
190
154
|
request.origin,
|
|
@@ -217,37 +181,9 @@ export const startBuildServer = async ({
|
|
|
217
181
|
})
|
|
218
182
|
logger.info(``)
|
|
219
183
|
|
|
220
|
-
runBuild()
|
|
221
|
-
const clientFileChangeCallback = ({ relativeUrl, event }) => {
|
|
222
|
-
const url = new URL(relativeUrl, rootDirectoryUrl).href
|
|
223
|
-
buildAbortController.abort()
|
|
224
|
-
// setTimeout is to ensure the abortController.abort() above
|
|
225
|
-
// is properly taken into account so that logs about abort comes first
|
|
226
|
-
// then logs about re-running the build happens
|
|
227
|
-
setTimeout(() => {
|
|
228
|
-
logger.info(`${url.slice(rootDirectoryUrl.length)} ${event} -> rebuild`)
|
|
229
|
-
runBuild()
|
|
230
|
-
})
|
|
231
|
-
}
|
|
232
|
-
const stopWatchingClientFiles = registerDirectoryLifecycle(rootDirectoryUrl, {
|
|
233
|
-
watchPatterns: clientFiles,
|
|
234
|
-
cooldownBetweenFileEvents,
|
|
235
|
-
keepProcessAlive: false,
|
|
236
|
-
recursive: true,
|
|
237
|
-
added: ({ relativeUrl }) => {
|
|
238
|
-
clientFileChangeCallback({ relativeUrl, event: "added" })
|
|
239
|
-
},
|
|
240
|
-
updated: ({ relativeUrl }) => {
|
|
241
|
-
clientFileChangeCallback({ relativeUrl, event: "modified" })
|
|
242
|
-
},
|
|
243
|
-
removed: ({ relativeUrl }) => {
|
|
244
|
-
clientFileChangeCallback({ relativeUrl, event: "removed" })
|
|
245
|
-
},
|
|
246
|
-
})
|
|
247
184
|
return {
|
|
248
185
|
origin: server.origin,
|
|
249
186
|
stop: () => {
|
|
250
|
-
stopWatchingClientFiles()
|
|
251
187
|
server.stop()
|
|
252
188
|
},
|
|
253
189
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ensureEmptyDirectory } from "@jsenv/filesystem"
|
|
2
2
|
|
|
3
3
|
export const loadUrlGraph = async ({
|
|
4
|
+
operation,
|
|
4
5
|
urlGraph,
|
|
5
6
|
kitchen,
|
|
6
7
|
startLoading,
|
|
@@ -69,6 +70,7 @@ export const loadUrlGraph = async ({
|
|
|
69
70
|
)
|
|
70
71
|
|
|
71
72
|
const waitAll = async () => {
|
|
73
|
+
operation.throwIfAborted()
|
|
72
74
|
if (promises.length === 0) {
|
|
73
75
|
return
|
|
74
76
|
}
|