You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
2.2 KiB
53 lines
2.2 KiB
4 months ago
|
import { serializeFetchParameter } from "./serializeFetchParameter.js";
|
||
|
// For GET operations, returns the given URI rewritten with parameters, or a
|
||
|
// parse error.
|
||
|
export function rewriteURIForGET(chosenURI, body) {
|
||
|
// Implement the standard HTTP GET serialization, plus 'extensions'. Note
|
||
|
// the extra level of JSON serialization!
|
||
|
var queryParams = [];
|
||
|
var addQueryParam = function (key, value) {
|
||
|
queryParams.push("".concat(key, "=").concat(encodeURIComponent(value)));
|
||
|
};
|
||
|
if ("query" in body) {
|
||
|
addQueryParam("query", body.query);
|
||
|
}
|
||
|
if (body.operationName) {
|
||
|
addQueryParam("operationName", body.operationName);
|
||
|
}
|
||
|
if (body.variables) {
|
||
|
var serializedVariables = void 0;
|
||
|
try {
|
||
|
serializedVariables = serializeFetchParameter(body.variables, "Variables map");
|
||
|
}
|
||
|
catch (parseError) {
|
||
|
return { parseError: parseError };
|
||
|
}
|
||
|
addQueryParam("variables", serializedVariables);
|
||
|
}
|
||
|
if (body.extensions) {
|
||
|
var serializedExtensions = void 0;
|
||
|
try {
|
||
|
serializedExtensions = serializeFetchParameter(body.extensions, "Extensions map");
|
||
|
}
|
||
|
catch (parseError) {
|
||
|
return { parseError: parseError };
|
||
|
}
|
||
|
addQueryParam("extensions", serializedExtensions);
|
||
|
}
|
||
|
// Reconstruct the URI with added query params.
|
||
|
// XXX This assumes that the URI is well-formed and that it doesn't
|
||
|
// already contain any of these query params. We could instead use the
|
||
|
// URL API and take a polyfill (whatwg-url@6) for older browsers that
|
||
|
// don't support URLSearchParams. Note that some browsers (and
|
||
|
// versions of whatwg-url) support URL but not URLSearchParams!
|
||
|
var fragment = "", preFragment = chosenURI;
|
||
|
var fragmentStart = chosenURI.indexOf("#");
|
||
|
if (fragmentStart !== -1) {
|
||
|
fragment = chosenURI.substr(fragmentStart);
|
||
|
preFragment = chosenURI.substr(0, fragmentStart);
|
||
|
}
|
||
|
var queryParamsPrefix = preFragment.indexOf("?") === -1 ? "?" : "&";
|
||
|
var newURI = preFragment + queryParamsPrefix + queryParams.join("&") + fragment;
|
||
|
return { newURI: newURI };
|
||
|
}
|
||
|
//# sourceMappingURL=rewriteURIForGET.js.map
|