Skip to content

Commit 9db9d3e

Browse files
committed
build: improved promise management in get instances manager of emitters and absorbers
1 parent 4101789 commit 9db9d3e

2 files changed

Lines changed: 20 additions & 14 deletions

File tree

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
import type { AbsorbersInstancesManager } from "./AbsorbersInstancesManager.js";
22
import type { Engine } from "@tsparticles/engine";
33

4-
const instancesManagers = new WeakMap<object, AbsorbersInstancesManager>();
4+
const instancesManagers = new WeakMap<object, Promise<AbsorbersInstancesManager>>();
55

66
/**
7-
*
8-
* @param e
7+
* @param e -
8+
* @returns -
99
*/
1010
export async function getAbsorbersInstancesManager(e: Engine): Promise<AbsorbersInstancesManager> {
1111
const pluginManager = e.pluginManager;
1212

1313
let manager = instancesManagers.get(pluginManager);
1414

1515
if (!manager) {
16-
const { AbsorbersInstancesManager } = await import("./AbsorbersInstancesManager.js");
17-
18-
manager = new AbsorbersInstancesManager(pluginManager);
16+
manager = import("./AbsorbersInstancesManager.js")
17+
.then(({ AbsorbersInstancesManager }) => new AbsorbersInstancesManager(pluginManager))
18+
.catch((error: unknown) => {
19+
instancesManagers.delete(pluginManager);
20+
throw error;
21+
});
1922

2023
instancesManagers.set(pluginManager, manager);
2124
}
2225

23-
return manager;
26+
return await manager;
2427
}
Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
import type { EmittersInstancesManager } from "./EmittersInstancesManager.js";
22
import type { Engine } from "@tsparticles/engine";
33

4-
const instancesManagers = new WeakMap<object, EmittersInstancesManager>();
4+
const instancesManagers = new WeakMap<object, Promise<EmittersInstancesManager>>();
55

66
/**
7-
*
8-
* @param e
7+
* @param e -
8+
* @returns -
99
*/
1010
export async function getEmittersInstancesManager(e: Engine): Promise<EmittersInstancesManager> {
1111
const pluginManager = e.pluginManager;
1212

1313
let manager = instancesManagers.get(pluginManager);
1414

1515
if (!manager) {
16-
const { EmittersInstancesManager } = await import("./EmittersInstancesManager.js");
17-
18-
manager = new EmittersInstancesManager(pluginManager);
16+
manager = import("./EmittersInstancesManager.js")
17+
.then(({ EmittersInstancesManager }) => new EmittersInstancesManager(pluginManager))
18+
.catch((error: unknown) => {
19+
instancesManagers.delete(pluginManager);
20+
throw error;
21+
});
1922

2023
instancesManagers.set(pluginManager, manager);
2124
}
2225

23-
return manager;
26+
return await manager;
2427
}

0 commit comments

Comments
 (0)