50 lines
No EOL
1.5 KiB
JavaScript
50 lines
No EOL
1.5 KiB
JavaScript
//#region src/loaders/hooks.ts
|
|
let honoUrl = null;
|
|
let expressUrl = null;
|
|
async function resolve(specifier, context, nextResolve) {
|
|
const result = await nextResolve(specifier, context);
|
|
if (specifier === "hono") honoUrl = result.url;
|
|
else if (specifier === "express") expressUrl = result.url;
|
|
return result;
|
|
}
|
|
async function load(url, context, nextLoad) {
|
|
const result = await nextLoad(url, context);
|
|
if (expressUrl === url) {
|
|
const pathToExpressExtract = new URL("../express.mjs", import.meta.url);
|
|
return {
|
|
format: "module",
|
|
source: `
|
|
import { handle} from ${JSON.stringify(pathToExpressExtract.toString())};
|
|
import originalExpress from ${JSON.stringify(url + "?original")};
|
|
|
|
const extendedExpress = handle(originalExpress);
|
|
|
|
export * from ${JSON.stringify(url + "?original")};
|
|
export default extendedExpress;
|
|
`,
|
|
shortCircuit: true
|
|
};
|
|
}
|
|
if (honoUrl === url) {
|
|
const pathToHonoExtract = new URL("../hono.mjs", import.meta.url);
|
|
return {
|
|
format: "module",
|
|
source: `
|
|
import { handle } from ${JSON.stringify(pathToHonoExtract.toString())};
|
|
import * as originalHono from ${JSON.stringify(url + "?original")};
|
|
|
|
export * from ${JSON.stringify(url + "?original")};
|
|
export const Hono = handle(originalHono);
|
|
`,
|
|
shortCircuit: true
|
|
};
|
|
}
|
|
if (url.endsWith("?original")) {
|
|
const originalUrl = url.replace("?original", "");
|
|
if (originalUrl === honoUrl || originalUrl === expressUrl) return result;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
//#endregion
|
|
export { load, resolve }; |