Skip to content

Commit de9a026

Browse files
committed
fix: wait for assembler hooks node to be resolved
1 parent 9595eb9 commit de9a026

File tree

3 files changed

+70
-4
lines changed

3 files changed

+70
-4
lines changed

src/hooks.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ export class AssemblerHooks {
4848
*/
4949
async registerDevServerHooks() {
5050
await Promise.all([
51-
this.#config?.onDevServerStarted?.map(async (node) =>
51+
...(this.#config?.onDevServerStarted || []).map(async (node) =>
5252
this.#hooks.add('onDevServerStarted', await this.#resolveHookNode(node))
5353
),
54-
this.#config?.onSourceFileChanged?.map(async (node) =>
54+
...(this.#config?.onSourceFileChanged || []).map(async (node) =>
5555
this.#hooks.add('onSourceFileChanged', await this.#resolveHookNode(node))
5656
),
5757
])
@@ -62,10 +62,10 @@ export class AssemblerHooks {
6262
*/
6363
async registerBuildHooks() {
6464
await Promise.all([
65-
this.#config?.onBuildStarting?.map(async (node) =>
65+
...(this.#config?.onBuildStarting || []).map(async (node) =>
6666
this.#hooks.add('onBuildStarting', await this.#resolveHookNode(node))
6767
),
68-
this.#config?.onBuildCompleted?.map(async (node) =>
68+
...(this.#config?.onBuildCompleted || []).map(async (node) =>
6969
this.#hooks.add('onBuildCompleted', await this.#resolveHookNode(node))
7070
),
7171
])

tests/bundler.spec.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
import ts from 'typescript'
1111
import { test } from '@japa/runner'
12+
import { setTimeout as sleep } from 'node:timers/promises'
13+
1214
import { Bundler } from '../index.js'
1315

1416
test.group('Bundler', () => {
@@ -189,4 +191,33 @@ test.group('Bundler', () => {
189191

190192
await bundler.bundle()
191193
})
194+
195+
test('wait for hooks to be registered', async ({ assert, fs }) => {
196+
assert.plan(1)
197+
198+
await fs.createJson('tsconfig.json', {
199+
include: ['**/*'],
200+
exclude: [],
201+
})
202+
await fs.create('index.ts', 'console.log("hey")')
203+
await fs.create('bin/server.js', `process.send({ isAdonisJS: true, environment: 'web' })`)
204+
await fs.create('.env', 'PORT=3334')
205+
206+
const bundler = new Bundler(fs.baseUrl, ts, {
207+
hooks: {
208+
onBuildStarting: [
209+
async () => {
210+
await sleep(1000)
211+
return {
212+
default: () => {
213+
assert.isTrue(true)
214+
},
215+
}
216+
},
217+
],
218+
},
219+
})
220+
221+
await bundler.bundle()
222+
})
192223
})

tests/dev_server.spec.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,39 @@ test.group('DevServer', () => {
102102
await fs.create('index.ts', 'foo')
103103
await sleep(10)
104104
})
105+
106+
test('wait for hooks to be registered', async ({ assert, fs, cleanup }) => {
107+
assert.plan(1)
108+
109+
await fs.createJson('tsconfig.json', {
110+
include: ['**/*'],
111+
exclude: [],
112+
})
113+
await fs.create('index.ts', 'console.log("hey")')
114+
await fs.create('bin/server.js', `process.send({ isAdonisJS: true, environment: 'web' })`)
115+
await fs.create('.env', 'PORT=3334')
116+
117+
const devServer = new DevServer(fs.baseUrl, {
118+
assets: { enabled: false },
119+
nodeArgs: [],
120+
scriptArgs: [],
121+
hooks: {
122+
onDevServerStarted: [
123+
async () => {
124+
await sleep(400)
125+
return {
126+
default: () => {
127+
assert.isTrue(true)
128+
},
129+
}
130+
},
131+
],
132+
},
133+
})
134+
135+
await devServer.startAndWatch(ts)
136+
cleanup(() => devServer.close())
137+
138+
await sleep(500)
139+
})
105140
})

0 commit comments

Comments
 (0)