Skip to content

Commit

Permalink
apply the resolve plugin for all server function overrides
Browse files Browse the repository at this point in the history
  • Loading branch information
conico974 committed May 25, 2024
1 parent dde775c commit f8f8fe7
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 54 deletions.
5 changes: 1 addition & 4 deletions packages/open-next/src/build/createServerBundle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -227,10 +227,7 @@ async function generateBundle(

openNextResolvePlugin({
fnName: name,
overrides: {
converter: overrides.converter,
wrapper: overrides.wrapper,
},
overrides: overrides,
}),
];

Expand Down
36 changes: 8 additions & 28 deletions packages/open-next/src/core/createMainHandler.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
import type { AsyncLocalStorage } from "node:async_hooks";

import type { OpenNextConfig, OverrideOptions } from "types/open-next";
import type { OpenNextConfig } from "types/open-next";

import { debug } from "../adapters/logger";
import { generateUniqueId } from "../adapters/util";
import type { IncrementalCache } from "../cache/incremental/types";
import type { Queue } from "../queue/types";
import { openNextHandler } from "./requestHandler.js";
import { resolveConverter, resolveTagCache, resolveWrapper } from "./resolve";
import {
resolveConverter,
resolveIncrementalCache,
resolveQueue,
resolveTagCache,
resolveWrapper,
} from "./resolve";

declare global {
var queue: Queue;
Expand All @@ -17,32 +23,6 @@ declare global {
var __als: AsyncLocalStorage<string>;
}

async function resolveQueue(queue: OverrideOptions["queue"]) {
if (typeof queue === "string") {
const m = await import(`../queue/${queue}.js`);
return m.default;
} else if (typeof queue === "function") {
return queue();
} else {
const m_1 = await import("../queue/sqs.js");
return m_1.default;
}
}

async function resolveIncrementalCache(
incrementalCache: OverrideOptions["incrementalCache"],
) {
if (typeof incrementalCache === "string") {
const m = await import(`../cache/incremental/${incrementalCache}.js`);
return m.default;
} else if (typeof incrementalCache === "function") {
return incrementalCache();
} else {
const m_1 = await import("../cache/incremental/s3.js");
return m_1.default;
}
}

export async function createMainHandler() {
//First we load the config
const config: OpenNextConfig = await import(
Expand Down
32 changes: 32 additions & 0 deletions packages/open-next/src/core/resolve.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,35 @@ export async function resolveTagCache(
return m_1.default;
}
}

/**
*
* @param queue
* @returns
* @__PURE__
*/
export async function resolveQueue(queue: OverrideOptions["queue"]) {
if (typeof queue === "function") {
return queue();
} else {
const m_1 = await import("../queue/sqs.js");
return m_1.default;
}
}

/**
*
* @param incrementalCache
* @returns
* @__PURE__
*/
export async function resolveIncrementalCache(
incrementalCache: OverrideOptions["incrementalCache"],
) {
if (typeof incrementalCache === "function") {
return incrementalCache();
} else {
const m_1 = await import("../cache/incremental/s3.js");
return m_1.default;
}
}
68 changes: 46 additions & 22 deletions packages/open-next/src/plugins/resolve.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ import { readFileSync } from "node:fs";
import { Plugin } from "esbuild";
import type {
DefaultOverrideOptions,
IncludedIncrementalCache,
IncludedQueue,
IncludedTagCache,
LazyLoadedOverride,
OverrideOptions,
} from "types/open-next";

import logger from "../logger.js";
Expand All @@ -14,14 +13,22 @@ export interface IPluginSettings {
overrides?: {
wrapper?: DefaultOverrideOptions<any, any>["wrapper"];
converter?: DefaultOverrideOptions<any, any>["converter"];
// Right now theses do nothing since there is only one implementation
tag?: IncludedTagCache;
queue?: IncludedQueue;
incrementalCache?: IncludedIncrementalCache;
tagCache?: OverrideOptions["tagCache"];
queue?: OverrideOptions["queue"];
incrementalCache?: OverrideOptions["incrementalCache"];
};
fnName?: string;
}

function getOverrideOrDefault<
Override extends string | LazyLoadedOverride<any>,
>(override: Override, defaultOverride: string) {
if (typeof override === "string") {
return override;
}
return defaultOverride;
}

/**
* @param opts.overrides - The name of the overrides to use
* @returns
Expand All @@ -36,29 +43,46 @@ export function openNextResolvePlugin({
logger.debug(`OpenNext Resolve plugin for ${fnName}`);
build.onLoad({ filter: /core\/resolve.js/g }, async (args) => {
let contents = readFileSync(args.path, "utf-8");
if (overrides?.wrapper && typeof overrides.wrapper === "string") {
if (overrides?.wrapper) {
contents = contents.replace(
"../wrappers/aws-lambda.js",
`../wrappers/${overrides.wrapper}.js`,
`../wrappers/${getOverrideOrDefault(
overrides.wrapper,
"aws-lambda",
)}.js`,
);
}
if (overrides?.converter) {
if (typeof overrides.converter === "function") {
contents = contents.replace(
"../converters/aws-apigw-v2.js",
`../converters/dummy.js`,
);
} else {
contents = contents.replace(
"../converters/aws-apigw-v2.js",
`../converters/${overrides.converter}.js`,
);
}
contents = contents.replace(
"../converters/aws-apigw-v2.js",
`../converters/${getOverrideOrDefault(
overrides.converter,
"dummy",
)}.js`,
);
}
if (overrides?.tag) {
if (overrides?.tagCache) {
contents = contents.replace(
"../cache/tag/dynamodb.js",
`../cache/tag/${overrides.tag}.js`,
`../cache/tag/${getOverrideOrDefault(
overrides.tagCache,
"dynamodb-lite",
)}.js`,
);
}
if (overrides?.queue) {
contents = contents.replace(
"../queue/sqs.js",
`../queue/${getOverrideOrDefault(overrides.queue, "sqs-lite")}.js`,
);
}
if (overrides?.incrementalCache) {
contents = contents.replace(
"../cache/incremental/s3.js",
`../cache/incremental/${getOverrideOrDefault(
overrides.incrementalCache,
"s3-lite",
)}.js`,
);
}
return {
Expand Down

0 comments on commit f8f8fe7

Please sign in to comment.