Skip to content

Commit 0966599

Browse files
chore: use event emitter
1 parent 1ef2ed9 commit 0966599

File tree

4 files changed

+7
-25
lines changed

4 files changed

+7
-25
lines changed

packages/radonis-build/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@
99

1010
export { AssetsManifestBuilder } from './src/assets_manifest_builder'
1111
export { ClientBuilder } from './src/client_builder'
12+
export type { BuiltAssets } from './src/types/main'

packages/radonis-build/src/client_builder.ts

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* file that was distributed with this source code.
88
*/
99

10+
import EventEmitter from 'node:events'
1011
import { rm } from 'node:fs/promises'
1112

1213
import { RadonisException } from '@microeinhundert/radonis-shared'
@@ -15,25 +16,9 @@ import { context } from 'esbuild'
1516
import { E_CANNOT_BUILD_CLIENT } from './exceptions'
1617
import { loaders } from './loaders'
1718
import { radonisPlugin } from './plugin'
18-
import type { BuildOptions, OnBuildEndCallback } from './types/main'
19-
20-
export class ClientBuilder {
21-
/**
22-
* The registered `onBuildEnd` callbacks
23-
*/
24-
#onBuildEndCallbacks: OnBuildEndCallback[]
25-
26-
constructor() {
27-
this.#onBuildEndCallbacks = []
28-
}
29-
30-
/**
31-
* Register a callback to be called when a build has ended
32-
*/
33-
onBuildEnd(callback: OnBuildEndCallback): void {
34-
this.#onBuildEndCallbacks.push(callback)
35-
}
19+
import type { BuildOptions } from './types/main'
3620

21+
export class ClientBuilder extends EventEmitter {
3722
/**
3823
* Build the client
3924
*/
@@ -70,7 +55,7 @@ export class ClientBuilder {
7055
publicPath,
7156
minify: outputForProduction,
7257
onEnd: async (builtAssets) => {
73-
await Promise.all(this.#onBuildEndCallbacks.map((callback) => callback.apply(null, [builtAssets])))
58+
this.emit('end', builtAssets)
7459
},
7560
}),
7661
],

packages/radonis-build/src/types/main.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,6 @@ export interface BuildOptions {
5050
esbuildOptions?: EsbuildOptions
5151
}
5252

53-
/**
54-
* `onBuildEnd` callback
55-
*/
56-
export type OnBuildEndCallback = (builtAssets: BuiltAssets) => MaybePromise<void>
57-
5853
/**
5954
* Radonis plugin options
6055
*/

packages/radonis-server/commands/BuildClient.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { join } from 'node:path'
1212
import { BaseCommand, flags } from '@adonisjs/ace'
1313
import { files } from '@adonisjs/sink'
1414
import type { RadonisConfig } from '@ioc:Microeinhundert/Radonis'
15+
import type { BuiltAssets } from '@microeinhundert/radonis-build'
1516
import { AssetsManifestBuilder, ClientBuilder } from '@microeinhundert/radonis-build'
1617
import { getEntryPoints, writeAssetsManifestToDisk } from '@microeinhundert/radonis-build/utils'
1718

@@ -74,7 +75,7 @@ export default class BuildClient extends BaseCommand {
7475
const entryPoints = await getEntryPoints(this.application.resourcesPath())
7576
const clientBuilder = new ClientBuilder()
7677

77-
clientBuilder.onBuildEnd(async (builtAssets) => {
78+
clientBuilder.on('end', async (builtAssets: BuiltAssets) => {
7879
const assetsManifestBuilder = new AssetsManifestBuilder(builtAssets)
7980
const assetsManifest = assetsManifestBuilder.build()
8081
await writeAssetsManifestToDisk(assetsManifest, this.#outputPath)

0 commit comments

Comments
 (0)