11import type { IsPluginEnabled , Plugin , ResolveConfig } from '../../types/config.ts' ;
2+ import { arrayify } from '../../util/array.ts' ;
23import { toDependency , toProductionEntry } from '../../util/input.ts' ;
34import { isInternal , join } from '../../util/path.ts' ;
45import { hasDependency } from '../../util/plugin.ts' ;
5- import type { PluginConfig } from './types.ts' ;
6+ import type { EsbuildConfig , PluginConfig } from './types.ts' ;
67
78// https://www.serverless.com/framework/docs
89
@@ -22,14 +23,26 @@ const handlerToEntry = (handler: string) => {
2223const pluginToInput = ( plugin : string , dir : string ) =>
2324 isInternal ( plugin ) ? toProductionEntry ( join ( dir , plugin ) ) : toDependency ( plugin ) ;
2425
26+ const getInjectEntries = ( esbuild : EsbuildConfig | undefined , dir : string ) =>
27+ esbuild && typeof esbuild === 'object' ? arrayify ( esbuild . inject ) . map ( id => toProductionEntry ( join ( dir , id ) ) ) : [ ] ;
28+
2529const resolveConfig : ResolveConfig < PluginConfig > = async ( config , options ) => {
2630 const functions = config . functions
2731 ? Object . values ( config . functions ) . flatMap ( fn => ( fn . handler ? [ handlerToEntry ( fn . handler ) ] : [ ] ) )
2832 : [ ] ;
2933 const plugins = config . plugins ?. filter ( ( plugin ) : plugin is string => typeof plugin === 'string' ) ?? [ ] ;
3034 const esbuild = config . custom ?. esbuild || config . build ?. esbuild ? [ toDependency ( 'esbuild' , { optional : true } ) ] : [ ] ;
31-
32- return [ ...functions , ...plugins . map ( plugin => pluginToInput ( plugin , options . configFileDir ) ) , ...esbuild ] ;
35+ const injectEntries = [
36+ ...getInjectEntries ( config . custom ?. esbuild , options . configFileDir ) ,
37+ ...getInjectEntries ( config . build ?. esbuild , options . configFileDir ) ,
38+ ] ;
39+
40+ return [
41+ ...functions ,
42+ ...plugins . map ( plugin => pluginToInput ( plugin , options . configFileDir ) ) ,
43+ ...esbuild ,
44+ ...injectEntries ,
45+ ] ;
3346} ;
3447
3548const plugin : Plugin = {
0 commit comments