@@ -31,15 +31,39 @@ export interface IPluginSettings {
3131 fnName ?: string ;
3232}
3333
34- function getOverrideOrDefault <
35- Override extends string | LazyLoadedOverride < any > ,
36- > ( override : Override , defaultOverride : string ) {
34+ function getOverrideOrDummy < Override extends string | LazyLoadedOverride < any > > (
35+ override : Override ,
36+ ) {
3737 if ( typeof override === "string" ) {
3838 return override ;
3939 }
40- return defaultOverride ;
40+ // We can return dummy here because if it's not a string, it's a LazyLoadedOverride
41+ return "dummy" ;
4142}
4243
44+ // This could be useful in the future to map overrides to nested folders
45+ const nameToFolder = {
46+ wrapper : "wrappers" ,
47+ converter : "converters" ,
48+ tagCache : "tagCache" ,
49+ queue : "queue" ,
50+ incrementalCache : "incrementalCache" ,
51+ imageLoader : "imageLoader" ,
52+ originResolver : "originResolver" ,
53+ warmer : "warmer" ,
54+ } ;
55+
56+ const defaultOverrides = {
57+ wrapper : "aws-lambda" ,
58+ converter : "aws-apigw-v2" ,
59+ tagCache : "dynamodb" ,
60+ queue : "sqs" ,
61+ incrementalCache : "s3" ,
62+ imageLoader : "s3" ,
63+ originResolver : "pattern-env" ,
64+ warmer : "aws-lambda" ,
65+ } ;
66+
4367/**
4468 * @param opts.overrides - The name of the overrides to use
4569 * @returns
@@ -54,77 +78,18 @@ export function openNextResolvePlugin({
5478 logger . debug ( `OpenNext Resolve plugin for ${ fnName } ` ) ;
5579 build . onLoad ( { filter : / c o r e ( \/ | \\ ) r e s o l v e \. j s / g } , async ( args ) => {
5680 let contents = readFileSync ( args . path , "utf-8" ) ;
57- //TODO: refactor this. Every override should be at the same place so we can generate this dynamically
58- if ( overrides ?. wrapper ) {
59- contents = contents . replace (
60- "../overrides/wrappers/aws-lambda.js" ,
61- `../overrides/wrappers/${ getOverrideOrDefault (
62- overrides . wrapper ,
63- "aws-lambda" ,
64- ) } .js`,
65- ) ;
66- }
67- if ( overrides ?. converter ) {
68- contents = contents . replace (
69- "../overrides/converters/aws-apigw-v2.js" ,
70- `../overrides/converters/${ getOverrideOrDefault (
71- overrides . converter ,
72- "dummy" ,
73- ) } .js`,
74- ) ;
75- }
76- if ( overrides ?. tagCache ) {
77- contents = contents . replace (
78- "../overrides/tagCache/dynamodb.js" ,
79- `../overrides/tagCache/${ getOverrideOrDefault (
80- overrides . tagCache ,
81- "dynamodb-lite" ,
82- ) } .js`,
83- ) ;
84- }
85- if ( overrides ?. queue ) {
86- contents = contents . replace (
87- "../overrides/queue/sqs.js" ,
88- `../overrides/queue/${ getOverrideOrDefault (
89- overrides . queue ,
90- "sqs-lite" ,
91- ) } .js`,
92- ) ;
93- }
94- if ( overrides ?. incrementalCache ) {
95- contents = contents . replace (
96- "../overrides/incrementalCache/s3.js" ,
97- `../overrides/incrementalCache/${ getOverrideOrDefault (
98- overrides . incrementalCache ,
99- "s3-lite" ,
100- ) } .js`,
101- ) ;
102- }
103- if ( overrides ?. imageLoader ) {
104- contents = contents . replace (
105- "../overrides/imageLoader/s3.js" ,
106- `../overrides/imageLoader/${ getOverrideOrDefault (
107- overrides . imageLoader ,
108- "s3" ,
109- ) } .js`,
110- ) ;
111- }
112- if ( overrides ?. originResolver ) {
113- contents = contents . replace (
114- "../overrides/originResolver/pattern-env.js" ,
115- `../overrides/originResolver/${ getOverrideOrDefault (
116- overrides . originResolver ,
117- "pattern-env" ,
118- ) } .js`,
119- ) ;
120- }
121- if ( overrides ?. warmer ) {
81+ const overridesEntries = Object . entries ( overrides ?? { } ) ;
82+ for ( const [ overrideName , overrideValue ] of overridesEntries ) {
83+ if ( ! overrideValue ) {
84+ continue ;
85+ }
86+ const folder =
87+ nameToFolder [ overrideName as keyof typeof nameToFolder ] ;
88+ const defaultOverride =
89+ defaultOverrides [ overrideName as keyof typeof defaultOverrides ] ;
12290 contents = contents . replace (
123- "../overrides/warmer/aws-lambda.js" ,
124- `../overrides/warmer/${ getOverrideOrDefault (
125- overrides . warmer ,
126- "aws-lambda" ,
127- ) } .js`,
91+ `../overrides/${ folder } /${ defaultOverride } .js` ,
92+ `../overrides/${ folder } /${ getOverrideOrDummy ( overrideValue ) } .js` ,
12893 ) ;
12994 }
13095 return {
0 commit comments