import { readFileSync } from "fs"; import { GetChronologyItemsQuery, GetChronologyItemsQueryVariables, GetContentQuery, GetContentQueryVariables, GetContentsQuery, GetContentsQueryVariables, GetContentsSlugsQuery, GetContentsSlugsQueryVariables, GetContentTextQuery, GetContentTextQueryVariables, GetErasQuery, GetErasQueryVariables, GetLibraryItemQuery, GetLibraryItemQueryVariables, GetLibraryItemsPreviewQuery, GetLibraryItemsPreviewQueryVariables, GetLibraryItemsSlugsQuery, GetLibraryItemsSlugsQueryVariables, GetWebsiteInterfaceQuery, GetWebsiteInterfaceQueryVariables, } from "graphql/operations-types"; const graphQL = async (query: string, variables?: string) => { const res = await fetch(`${process.env.URL_GRAPHQL}`, { method: "POST", body: JSON.stringify({ query: query, variables: variables, }), headers: { "content-type": "application/json", Authorization: "Bearer " + process.env.ACCESS_TOKEN, }, }); return (await res.json()).data; }; function getQueryFromOperations(queryName: string): string { const operations = readFileSync("./src/graphql/operation.graphql", "utf8"); let startingIndex = -1; let endingIndex = -1; const lines = operations.split("\n"); lines.map((line, index) => { if (startingIndex === -1) { if (line.startsWith(`query ${queryName}(`)) startingIndex = index; if (line.startsWith(`query ${queryName} {`)) startingIndex = index; } else if (endingIndex === -1) { if (line.startsWith("query")) endingIndex = index; } }); return lines.slice(startingIndex, endingIndex).join("\n"); } export async function getWebsiteInterface( variables: GetWebsiteInterfaceQueryVariables ): Promise { const query = getQueryFromOperations("getWebsiteInterface"); return await graphQL(query, JSON.stringify(variables)); } export async function getEras( variables: GetErasQueryVariables ): Promise { const query = getQueryFromOperations("getEras"); return await graphQL(query, JSON.stringify(variables)); } export async function getChronologyItems( variables: GetChronologyItemsQueryVariables ): Promise { const query = getQueryFromOperations("getChronologyItems"); return await graphQL(query, JSON.stringify(variables)); } export async function getLibraryItemsPreview( variables: GetLibraryItemsPreviewQueryVariables ): Promise { const query = getQueryFromOperations("getLibraryItemsPreview"); return await graphQL(query, JSON.stringify(variables)); } export async function getLibraryItemsSlugs( variables: GetLibraryItemsSlugsQueryVariables ): Promise { const query = getQueryFromOperations("getLibraryItemsSlugs"); return await graphQL(query, JSON.stringify(variables)); } export async function getLibraryItem( variables: GetLibraryItemQueryVariables ): Promise { const query = getQueryFromOperations("getLibraryItem"); return await graphQL(query, JSON.stringify(variables)); } export async function getContentsSlugs( variables: GetContentsSlugsQueryVariables ): Promise { const query = getQueryFromOperations("getContentsSlugs"); return await graphQL(query, JSON.stringify(variables)); } export async function getContents( variables: GetContentsQueryVariables ): Promise { const query = getQueryFromOperations("getContents"); return await graphQL(query, JSON.stringify(variables)); } export async function getContent( variables: GetContentQueryVariables ): Promise { const query = getQueryFromOperations("getContent"); return await graphQL(query, JSON.stringify(variables)); } export async function getContentText( variables: GetContentTextQueryVariables ): Promise { const query = getQueryFromOperations("getContentText"); return await graphQL(query, JSON.stringify(variables)); }