@@ -89,55 +89,67 @@ export const IsolatedDecl: UnpluginInstance<Options | undefined, false> =
8989 addOutput ( id , sourceText )
9090 } ,
9191
92- // esbuild only
93- async buildEnd ( ) {
94- if ( meta . framework === 'esbuild' ) {
95- const esbuildOptions = meta . build ! . initialOptions
96-
97- const entries = esbuildOptions . entryPoints
98- if (
99- ! (
100- entries &&
101- Array . isArray ( entries ) &&
102- entries . every ( ( entry ) => typeof entry === 'string' )
92+ esbuild : {
93+ setup ( build ) {
94+ build . onEnd ( async ( result ) => {
95+ const esbuildOptions = build . initialOptions
96+
97+ const entries = esbuildOptions . entryPoints
98+ if (
99+ ! (
100+ entries &&
101+ Array . isArray ( entries ) &&
102+ entries . every ( ( entry ) => typeof entry === 'string' )
103+ )
103104 )
104- )
105- throw new Error ( 'unsupported entryPoints, must be an string[]' )
106-
107- const outBase = lowestCommonAncestor ( ...entries )
108- const jsExt = esbuildOptions . outExtension ?. [ '.js' ]
109- let outExt : string
110- switch ( jsExt ) {
111- case '.cjs' :
112- outExt = 'cts'
113- break
114- case '.mjs' :
115- outExt = 'mts'
116- break
117- default :
118- outExt = 'ts'
119- break
120- }
105+ throw new Error ( 'unsupported entryPoints, must be an string[]' )
106+
107+ const outBase = lowestCommonAncestor ( ...entries )
108+ const jsExt = esbuildOptions . outExtension ?. [ '.js' ]
109+ let outExt : string
110+ switch ( jsExt ) {
111+ case '.cjs' :
112+ outExt = 'cts'
113+ break
114+ case '.mjs' :
115+ outExt = 'mts'
116+ break
117+ default :
118+ outExt = 'ts'
119+ break
120+ }
121121
122- const build = meta . build !
123- if (
124- build . initialOptions . outdir &&
125- ( build . initialOptions . write ?? true )
126- )
127- for ( const [ filename , source ] of Object . entries ( outputFiles ) ) {
128- const outFile = `${ path . relative ( outBase , filename ) } .d.${ outExt } `
129-
130- const filePath = path . resolve (
131- build . initialOptions . outdir ,
132- outFile ,
133- )
134- await mkdir ( path . dirname ( filePath ) , { recursive : true } )
135- await writeFile ( filePath , source )
122+ if ( build . initialOptions . write ?? true ) {
123+ if ( ! build . initialOptions . outdir )
124+ throw new Error ( 'outdir is required when write is true' )
125+
126+ for ( const [ filename , source ] of Object . entries ( outputFiles ) ) {
127+ const outFile = `${ path . relative ( outBase , filename ) } .d.${ outExt } `
128+
129+ const filePath = path . resolve (
130+ build . initialOptions . outdir ,
131+ outFile ,
132+ )
133+ await mkdir ( path . dirname ( filePath ) , { recursive : true } )
134+ await writeFile ( filePath , source )
135+ }
136+ } else {
137+ result . outputFiles ||= [ ]
138+ const textEncoder = new TextEncoder ( )
139+
140+ for ( const [ filename , source ] of Object . entries ( outputFiles ) ) {
141+ const outFile = `${ path . relative ( outBase , filename ) } .d.${ outExt } `
142+ result . outputFiles . push ( {
143+ path : outFile ,
144+ contents : textEncoder . encode ( source ) ,
145+ hash : '' ,
146+ text : source ,
147+ } )
148+ }
136149 }
137- }
150+ } )
151+ } ,
138152 } ,
139-
140- // esbuild,
141153 rollup,
142154 rolldown : rollup ,
143155 vite : {
0 commit comments