Skip to content

Commit 51275b4

Browse files
committed
Additional fixes for possible memory leak and TS issues.
1 parent eb76bdc commit 51275b4

File tree

5 files changed

+24
-17
lines changed

5 files changed

+24
-17
lines changed

packages/core/build.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -341,12 +341,9 @@ export async function buildApp(
341341

342342
hooks.emit({ type: 'build:electron:complete' })
343343
} else if (isMobileBuild) {
344-
const mobileOpts = { target, outDir }
344+
const mobileOpts = { target: target as 'ios' | 'android', outDir }
345345

346-
// @ts-expect-error
347346
await mobile.init(mobileOpts, resolvedConfig)
348-
349-
// @ts-expect-error
350347
await mobile.open(mobileOpts, resolvedConfig)
351348
}
352349

packages/core/utils/assets.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,9 +363,11 @@ export const getServiceAssets = (
363363

364364
for (const name of servicesToBuild) {
365365

366-
const resolvedService = resolvedServices[name] as ResolvedService
366+
const resolvedService = resolvedServices[name] as ResolvedService & {
367+
__src?: string
368+
__autobuild?: boolean
369+
}
367370

368-
// @ts-ignore
369371
const { build, base, filepath, __src, __autobuild } = resolvedService
370372

371373
const allowCompilation = !(dev && __autobuild)

packages/core/utils/processes.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,27 @@ export const spawnProcess = (command, args, { env = {}, opts = {}, cwd, label }
4242

4343
children[proc.pid] = proc
4444

45+
// Cleanup function to remove process and listeners
46+
const cleanup = (res) => {
47+
delete children[proc.pid]
48+
// Remove all listeners to prevent memory leaks
49+
proc.removeAllListeners()
50+
if (proc.stdout) proc.stdout.removeAllListeners()
51+
if (proc.stderr) proc.stderr.removeAllListeners()
52+
resolve(res)
53+
}
54+
4555
// Process output is handled by the service management system
4656
// Individual process logs are no longer logged to console
4757
if (opts.log !== false) {
48-
proc.stdout.on('data', (data) => hooks.emit({ type: 'service:stdout', data, service: label }))
49-
proc.stderr.on('data', (data) => hooks.emit({ type: 'service:stderr', data, service: label }))
58+
proc.stdout?.on('data', (data) => hooks.emit({ type: 'service:stdout', data, service: label }))
59+
proc.stderr?.on('data', (data) => hooks.emit({ type: 'service:stderr', data, service: label }))
5060
proc.on('error', (error) => hooks.emit({ type: 'service:error', error, service: label }))
5161
}
5262

53-
proc.on('exit', res => {
54-
delete children[proc.pid]
55-
// hooks.emit({ type: 'service:exit', code: res, service: label })
56-
resolve(res)
57-
})
63+
// Handle both exit and close to ensure cleanup
64+
proc.once('exit', cleanup)
65+
proc.once('close', cleanup)
66+
proc.once('error', cleanup)
5867
})
5968
}

packages/core/vite/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ export const resolveViteConfig = async (
141141

142142
const VitePWAPlugin = await import('vite-plugin-pwa').then(m => m.VitePWA)
143143

144-
// @ts-ignore
145-
plugins.push(...VitePWAPlugin({ registerType: 'autoUpdate', ...opts }))
144+
const pwaPlugins = VitePWAPlugin({ registerType: 'autoUpdate', ...opts })
145+
plugins.push(...(Array.isArray(pwaPlugins) ? pwaPlugins : [pwaPlugins]))
146146
}
147147

148148
// Get html files from plugins

packages/core/vite/plugins/electron/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ async function resolveViteConfig(options: ElectronOptions): Promise<InlineConfig
4242
emptyOutDir: false,
4343
},
4444
resolve: {
45-
// @ts-ignore
46-
browserField: false,
45+
browserField: false as const,
4746
conditions: ['node'],
4847
mainFields: ['module', 'jsnext:main', 'jsnext'],
4948
},

0 commit comments

Comments
 (0)