Skip to content

Commit 6402f7d

Browse files
committed
refactor resolves plugin
1 parent 98489be commit 6402f7d

File tree

1 file changed

+39
-74
lines changed

1 file changed

+39
-74
lines changed

packages/open-next/src/plugins/resolve.ts

Lines changed: 39 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -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: /core(\/|\\)resolve\.js/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

Comments
 (0)