Files
probo/apps/console/src/RelayEnvironment.ts
gearnode b3dcfc6b53 Add react setup
Signed-off-by: gearnode <bryan@frimin.fr>
2025-01-31 21:01:21 -08:00

49 lines
1.1 KiB
TypeScript

import {
Environment,
FetchFunction,
Network,
RecordSource,
Store,
} from "relay-runtime";
import { buildEndpoint } from "./utils";
const fetchRelay: FetchFunction = async (request, variables) => {
const response = await fetch(buildEndpoint("/console/v1/query"), {
method: "POST",
credentials: "include",
headers: {
Accept:
"application/graphql-response+json; charset=utf-8, application/json; charset=utf-8",
"Content-Type": "application/json",
},
body: JSON.stringify({
operationName: request.name,
query: request.text,
variables,
}),
});
const json = await response.json();
if (Array.isArray(json.errors)) {
throw new Error(
`Error fetching GraphQL query '${
request.name
}' with variables '${JSON.stringify(variables)}': ${JSON.stringify(
json.errors,
)}`,
);
}
return json;
};
function createRelayEnvironment() {
return new Environment({
network: Network.create(fetchRelay),
store: new Store(new RecordSource()),
});
}
export const RelayEnvironment: Environment = createRelayEnvironment();