gQuery/dist/gFetch.js
2021-12-14 09:20:26 -07:00

41 lines
No EOL
1.4 KiB
JavaScript

import { print } from "graphql";
export const stringifyDocument = (node) => {
let str = (typeof node !== "string" ? print(node) : node)
.replace(/([\s,]|#[^\n\r]+)+/g, " ")
.trim();
return str;
};
export class GFetch extends Object {
constructor(options) {
super();
const { path } = options;
this.path = path;
this.fetch = this.fetch.bind(this);
}
// * gFetch
// This is a fetcher that returns a promise that resolves to a graphql response
async fetch({ queries, fetch, }) {
// let document: DocumentNode = addTypenameToDocument(queries[0].query);
let documentString = stringifyDocument(queries[0].query);
const newQueries = {
...queries[0],
query: documentString,
};
// This is generic fetch, that is polyfilled via svelte kit
// graph ql fetches must be POST
// credentials include for user ssr data
const res = await fetch(this.path, {
method: "POST",
credentials: "include",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(newQueries),
});
// Gets the data back from the server
const data = await res.json();
return {
...data.data,
errors: data.errors,
};
}
}
//# sourceMappingURL=gFetch.js.map