1+ import type { Plugin as RollupPlugin } from "rollup" ;
2+
13import type { BuildContext } from "./BuildContext" ;
24
35/**
46 * A Rollup plugin declaration. Manages its import logic and configuration.
57 */
6- export interface Plugin < TName extends string , TConfig , TInstance > {
8+ export interface Plugin < TName extends string , TConfig > {
79 readonly name : TName ;
810
911 /** @internal */
10- readonly factory : PluginFactoryBlock < TConfig , TInstance > ;
12+ readonly factory : PluginFactoryBlock < TConfig > ;
1113
1214 /** @internal */
1315 readonly configure : PluginConfigBlock < TConfig > ;
1416
1517 override (
1618 configOverride : Partial < TConfig > ,
17- ) : Plugin < TName , TConfig , TInstance > ;
19+ ) : Plugin < TName , TConfig > ;
1820
1921 override (
2022 block : PluginConfigOverrideBlock < TConfig > ,
21- ) : Plugin < TName , TConfig , TInstance > ;
23+ ) : Plugin < TName , TConfig > ;
2224}
2325
24- export interface PluginFactoryBlock < TConfig , TInstance > {
25- ( config : TConfig , context : BuildContext ) : Promise < TInstance > | TInstance ;
26+ export interface PluginFactoryBlock < TConfig > {
27+ ( context : BuildContext ) : Promise < PluginFactory < TConfig > > | PluginFactory < TConfig > ;
2628}
2729
2830export interface PluginConfigBlock < TConfig > {
@@ -33,41 +35,45 @@ export interface PluginConfigOverrideBlock<TConfig> {
3335 ( config : TConfig , context : BuildContext ) : Promise < TConfig > | TConfig ;
3436}
3537
38+ export interface PluginFactory < TConfig > {
39+ ( config : TConfig ) : RollupPlugin ;
40+ }
41+
3642export interface PluginFactoryBuilder < TName extends string > {
3743 /** @internal */
3844 readonly name : TName ;
3945
40- factory < TConfig , TInstance > (
41- block : PluginFactoryBlock < TConfig , TInstance > ,
42- ) : PluginConfigurationBuilder < TName , TConfig , TInstance > ;
46+ factory < TConfig > (
47+ block : PluginFactoryBlock < TConfig > ,
48+ ) : PluginConfigurationBuilder < TName , TConfig > ;
4349}
4450
45- export interface PluginConfigurationBuilder < TName extends string , TConfig , TInstance > {
51+ export interface PluginConfigurationBuilder < TName extends string , TConfig > {
4652 /** @internal */
4753 readonly name : TName ;
4854
4955 /** @internal */
50- readonly factory : PluginFactoryBlock < TConfig , TInstance > ;
56+ readonly factory : PluginFactoryBlock < TConfig > ;
5157
52- configure < TConfig > (
58+ configure (
5359 config : TConfig ,
54- ) : Plugin < TName , TConfig , TInstance > ;
60+ ) : Plugin < TName , TConfig > ;
5561
56- configure < TConfig > (
62+ configure (
5763 block : PluginConfigBlock < TConfig >
58- ) : Plugin < TName , TConfig , TInstance > ;
64+ ) : Plugin < TName , TConfig > ;
5965}
6066
6167export type NameOf < TPlugin > = (
62- TPlugin extends Plugin < infer TName , any , any > ? TName : unknown
68+ TPlugin extends Plugin < infer TName , any > ? TName : unknown
6369) ;
6470
6571export type ConfigOf < TPlugin > = (
66- TPlugin extends Plugin < any , infer TConfig , any > ? TConfig : unknown
72+ TPlugin extends Plugin < any , infer TConfig > ? TConfig : unknown
6773) ;
6874
6975export type AnyPlugin = (
70- Plugin < any , any , any >
76+ Plugin < any , any >
7177) ;
7278
7379export type PluginMap = {
@@ -83,8 +89,8 @@ export function declarePlugin<TName extends string>(name: TName): PluginFactoryB
8389
8490function setPluginFactory (
8591 this : PluginFactoryBuilder < any > ,
86- block : PluginFactoryBlock < any , any >
87- ) : PluginConfigurationBuilder < any , any , any > {
92+ block : PluginFactoryBlock < any >
93+ ) : PluginConfigurationBuilder < any , any > {
8894 return {
8995 name : this . name ,
9096 factory : block ,
@@ -93,7 +99,7 @@ function setPluginFactory(
9399}
94100
95101function configurePlugin (
96- this : PluginConfigurationBuilder < any , any , any > ,
102+ this : PluginConfigurationBuilder < any , any > ,
97103 configOrBlock : any ,
98104) : AnyPlugin {
99105 return {
0 commit comments