@reactionable/amplify
Version:
Reactionable package for Amplify
40 lines • 1.25 kB
JavaScript
import { Amplify } from "@aws-amplify/core";
import { GraphQLAPI, graphqlOperation } from "@aws-amplify/api-graphql";
function isGraphQLResult(arg) {
return arg !== null && typeof arg === "object" && ("data" in arg || "errors" in arg);
}
function extractData(result) {
const resultKeys = Object.keys(result);
if (resultKeys.length !== 1) {
return undefined;
}
const data = result[resultKeys[0]];
return data;
}
export async function query({ query, variables, rawData, }) {
let result;
try {
result = await GraphQLAPI.graphql(Amplify, graphqlOperation(query, variables));
}
catch (error) {
if (error instanceof Error) {
throw error;
}
if (!isGraphQLResult(error) || !error.errors) {
throw new Error("An unexpected error occurred");
}
throw new Error(error.errors.map((errorItem) => errorItem.message).join(", "));
}
if (!result || !isGraphQLResult(result) || !result.data) {
throw new Error("No data");
}
if (rawData) {
return result.data;
}
const data = extractData(result.data);
if (!data) {
throw new Error("No data");
}
return data;
}
//# sourceMappingURL=Query.js.map