Skip to content

Commit 1ff7fab

Browse files
committed
stall requests until bundler is done (startup)
1 parent f29f1ed commit 1ff7fab

File tree

6 files changed

+17
-6
lines changed

6 files changed

+17
-6
lines changed

src/compiler/bundler.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
outputPath, refsAndTemplatesFilePath,
2121
virtualFilesPath
2222
} from './client-script/generate-data-files'
23+
import {resolveBundlerReadyPromise} from './bundler/bundler-ready-promise'
2324

2425
export const isProduction = process.env.BUN_ENV === 'production'
2526
export const inputFilePath = '/input.js'
@@ -113,6 +114,7 @@ function handleResult(result: BuildResult) {
113114
: contents)
114115
})
115116
if (!measuredEnd) {
117+
resolveBundlerReadyPromise()
116118
addMarker('bundler', 'end')
117119
measuredEnd = true
118120
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
let resolveBundlerReadyPromise
2+
const bundlerReadyPromise = new Promise(res => resolveBundlerReadyPromise = res)
3+
4+
export function getBundlerReadyPromise() {
5+
return bundlerReadyPromise
6+
}
7+
export {resolveBundlerReadyPromise}

src/compiler/client-script/generate-data-files.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ export async function generateClientScriptFile() {
2525
let inputFile = ''
2626
const hfs = getVolume()
2727
inputFile += getAssetsFilePaths().map(path => `import '${path}'`).join(newLine)
28-
console.log(inputFile)
2928
inputFile += newLine
3029
iterateObject(getStateListenersAsCode(), ([fileName, fileContents]) => {
3130
if (fileName === stateListenersFileName) {

src/compiler/generate-code.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export function clientTemplatesToJs(): string {
3333
mapMapToArray(getClientTemplates(), ([componentId, template]) => {
3434
code += wrapQuoteIfStartsWithNumber(componentId)
3535
code += ':'
36-
code += `'${template.replace(/'/, '\\\'')}'`
36+
code += `'${template.replace(/(['"])/g, '\\$1')}'`
3737
code += ','
3838
})
3939
code += '},'

src/server/bun.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ export default function cherrySoda(entry): (req: Request) => Promise<Response> {
99
process.env.CHERRY_COLA_ENTRY = entry
1010
const {fs, outputPath} = compile(entry)
1111
const render = getRenderer()
12-
let serveStaticListener: (req: Request) => Response = serveStatic(outputPath, fs)
12+
let serveStaticListener: (req: Request) => Promise<Response> = serveStatic(outputPath, fs)
1313

1414
return async (req) => {
1515
// todo: routing; next if request should not be handled
16-
const res: Response = serveStaticListener(req)
16+
const res: Response = await serveStaticListener(req)
1717
if (res.status < 400) return res
1818
// try {
1919
return new Response(render(), {

src/server/serve-static.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ import * as nfs from 'fs'
33

44
import mime from 'mime'
55

6-
export default function serveStatic(outputPath: string, fs: { existsSync: Function, readFileSync: Function } = nfs): (req: Request) => Response {
7-
return (req) => {
6+
import {getBundlerReadyPromise} from '../compiler/bundler/bundler-ready-promise'
7+
8+
export default function serveStatic(outputPath: string, fs: { existsSync: Function, readFileSync: Function } = nfs): (req: Request) => Promise<Response> {
9+
return async (req) => {
10+
await getBundlerReadyPromise()
811
const url = new URL(req.url)
912
const filePath = path.join(outputPath, url.pathname)
1013
if (url.pathname === '/' || !fs.existsSync(filePath))

0 commit comments

Comments
 (0)