remix-conform-rpc
Version:
Supercharge your remix/react-router actions and loaders with typesafe param and query parsing using conform and zod
28 lines • 1.14 kB
JavaScript
import { getParamsOrFail, getSearchParamsOrFail } from "remix-params-helper";
import { ZodSchema } from "zod";
import { respondWithError } from "../utils/error.js";
async function setupLoader({ loaderArgs, querySchema, load, paramSchema, middleware }) {
const params = paramSchema ? getParamsOrFail(loaderArgs.params, paramSchema) : undefined;
const query = querySchema ? getSearchParamsOrFail(loaderArgs.request, querySchema) : undefined;
const loadArgs = {
request: loaderArgs.request,
context: loaderArgs.context,
...(params && { params }),
...(query && { query })
};
const middlewareResult = middleware ? await middleware(loadArgs) : undefined;
try {
return await load({ ...loadArgs, ...middlewareResult });
}
catch (thrownValue) {
if (thrownValue instanceof Response) {
throw thrownValue;
}
throw respondWithError(null, {
message: thrownValue instanceof Error ? thrownValue.message : "unknown_error",
code: 500
});
}
}
export { setupLoader };
//# sourceMappingURL=setup-loader.server.js.map