@kubb/core 5.0.0-beta.12 → 5.0.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/core",
3
- "version": "5.0.0-beta.12",
3
+ "version": "5.0.0-beta.13",
4
4
  "description": "Core engine for Kubb's plugin-based code generation system. Provides the plugin driver, file manager, defineConfig, and build orchestration used by every Kubb plugin.",
5
5
  "keywords": [
6
6
  "code-generator",
@@ -58,15 +58,15 @@
58
58
  "dependencies": {
59
59
  "fflate": "^0.8.2",
60
60
  "tinyexec": "^1.1.2",
61
- "@kubb/ast": "5.0.0-beta.12"
61
+ "@kubb/ast": "5.0.0-beta.13"
62
62
  },
63
63
  "devDependencies": {
64
64
  "p-limit": "^7.3.0",
65
65
  "@internals/utils": "0.0.0",
66
- "@kubb/renderer-jsx": "5.0.0-beta.12"
66
+ "@kubb/renderer-jsx": "5.0.0-beta.13"
67
67
  },
68
68
  "peerDependencies": {
69
- "@kubb/renderer-jsx": "5.0.0-beta.12"
69
+ "@kubb/renderer-jsx": "5.0.0-beta.13"
70
70
  },
71
71
  "size-limit": [
72
72
  {
package/src/createKubb.ts CHANGED
@@ -777,6 +777,7 @@ type SetupResult = {
777
777
  driver: PluginDriver
778
778
  storage: Storage
779
779
  config: Config
780
+ dispose: () => void
780
781
  }
781
782
 
782
783
  /**
@@ -901,10 +902,15 @@ async function setup(userConfig: UserConfig, options: SetupOptions = {}): Promis
901
902
  // Register middleware hooks after all plugin hooks are registered.
902
903
  // Because AsyncEventEmitter calls listeners in registration order,
903
904
  // middleware hooks for any event fire after all plugin hooks for that event.
905
+ // Handlers are tracked so they can be removed after each build (disposeMiddleware),
906
+ // preventing accumulation when multiple configs share the same hooks instance.
907
+ const middlewareListeners: Array<[keyof KubbHooks & string, (...args: never[]) => void | Promise<void>]> = []
908
+
904
909
  function registerMiddlewareHook<K extends keyof KubbHooks & string>(event: K, middlewareHooks: Middleware['hooks']) {
905
910
  const handler = middlewareHooks[event]
906
911
  if (handler) {
907
912
  hooks.on(event, handler)
913
+ middlewareListeners.push([event, handler as (...args: never[]) => void | Promise<void>])
908
914
  }
909
915
  }
910
916
 
@@ -940,6 +946,12 @@ async function setup(userConfig: UserConfig, options: SetupOptions = {}): Promis
940
946
  hooks,
941
947
  driver,
942
948
  storage,
949
+ dispose: () => {
950
+ driver.dispose()
951
+ for (const [event, handler] of middlewareListeners) {
952
+ hooks.off(event, handler as never)
953
+ }
954
+ },
943
955
  }
944
956
  }
945
957
 
@@ -1239,7 +1251,7 @@ async function safeBuild(setupResult: SetupResult): Promise<BuildOutput> {
1239
1251
  storage,
1240
1252
  }
1241
1253
  } finally {
1242
- driver.dispose()
1254
+ setupResult.dispose()
1243
1255
  }
1244
1256
  }
1245
1257