Describe the bug
@solid-primitives/event-listener@2.4.5 re-exports all symbols from its barrel via:
// dist/index.js
export * from "./eventListener.js";
export * from "./eventListenerMap.js";
export * from "./components.js";
export * from "./eventListenerStack.js";
export * from "./callbackWrappers.js";
export * from "./types.js";
Downstream consumers (e.g. @kobalte/utils) do named imports from the barrel:
// @kobalte/utils/dist/index.js
import { createEventListener } from "@solid-primitives/event-listener";
export { createEventListener } from "@solid-primitives/event-listener";
This works fine with Vite 7 / Storybook 10.4.0 (Rollup handles export * resolution at link time), but breaks under Vite 8 / Storybook 10.4.6+ (Rolldown) with:
[MISSING_EXPORT] Error: "createEventListener" is not exported by
"@solid-primitives/event-listener/dist/index.js".
╭─[ @kobalte/utils/dist/index.js:2:10 ]
│
2 │ import { createEventListener } from "@solid-primitives/event-listener";
│ ─────────┬────────
│ ╰────────── Missing export
───╯
Rolldown's static analysis does not follow export * for named-export resolution.
Environment
@solid-primitives/event-listener@2.4.5
- Vite
8.1.0 (production bundler: Rolldown 1.1.3)
- Storybook
10.4.6 (uses Vite 8 production bundler)
@kobalte/utils@0.9.1 (consumer that triggers the failure)
Workaround
Patch the barrel to add direct named exports alongside the export * re-exports:
export * from "./eventListener.js";
// ...
export { createEventListener, createEventSignal, makeEventListener, eventListener } from "./eventListener.js";
export { createEventListenerMap } from "./eventListenerMap.js";
This is a packaging-side fix (re-export barrels should also expose direct named bindings for bundlers that can't follow export *).
Expected
The barrel's export * re-exports should not break named imports in downstream consumers under Vite 8 / Rolldown. Either:
- The barrel re-exports should be statically resolvable (Rolldown should follow
export * for named-export resolution at link time), or
- The barrel should expose both the
export * and direct named exports so consumers' named imports work regardless of the bundler's static-analysis behavior.
Describe the bug
@solid-primitives/event-listener@2.4.5re-exports all symbols from its barrel via:Downstream consumers (e.g.
@kobalte/utils) do named imports from the barrel:This works fine with Vite 7 / Storybook 10.4.0 (Rollup handles
export *resolution at link time), but breaks under Vite 8 / Storybook 10.4.6+ (Rolldown) with:Rolldown's static analysis does not follow
export *for named-export resolution.Environment
@solid-primitives/event-listener@2.4.58.1.0(production bundler: Rolldown1.1.3)10.4.6(uses Vite 8 production bundler)@kobalte/utils@0.9.1(consumer that triggers the failure)Workaround
Patch the barrel to add direct named exports alongside the
export *re-exports:This is a packaging-side fix (re-export barrels should also expose direct named bindings for bundlers that can't follow
export *).Expected
The barrel's
export *re-exports should not break named imports in downstream consumers under Vite 8 / Rolldown. Either:export *for named-export resolution at link time), orexport *and direct named exports so consumers' named imports work regardless of the bundler's static-analysis behavior.