wcz-layout
Version:
34 lines (33 loc) • 1.35 kB
JavaScript
import { t as getAccessToken } from "./user-BQiWoQk1.mjs";
import { n as getTokenOnBehalfOf, t as getAppToken } from "./msalServer-BHuM63vM.mjs";
import { createMiddleware } from "@tanstack/react-start";
import axios, { AxiosError } from "axios";
import https from "node:https";
//#region src/middleware/apiMiddleware.ts
const httpsAgent = new https.Agent({ rejectUnauthorized: false });
const apiMiddleware = ({ baseURL, scopeKey }) => createMiddleware().server(async ({ next, request }) => {
const resolvedBaseURL = process.env[baseURL];
if (!resolvedBaseURL) throw new Error(`"${baseURL}" env variable is not set.`);
const authHeader = request.headers.get("Authorization");
let accessToken;
if (authHeader?.startsWith("Bearer ")) accessToken = await getTokenOnBehalfOf(authHeader.substring(7), scopeKey);
else try {
accessToken = await getAccessToken(scopeKey);
} catch {
accessToken = await getAppToken(scopeKey);
}
const api = axios.create({
baseURL: resolvedBaseURL,
httpsAgent,
headers: { Authorization: `Bearer ${accessToken}` }
});
try {
return await next({ context: { api } });
} catch (error) {
if (error instanceof AxiosError) throw new Error(error.response?.data?.message ?? error.message);
throw error;
}
});
//#endregion
export { apiMiddleware as t };
//# sourceMappingURL=apiMiddleware-DRhawg5S.mjs.map