| 
1 | 1 | (function (  | 
2 | 2 |   document,  | 
 | 3 | + | 
3 | 4 |   GRAPHENE_SETTINGS,  | 
4 | 5 |   GraphiQL,  | 
5 | 6 |   React,  | 
6 | 7 |   ReactDOM,  | 
7 | 8 |   SubscriptionsTransportWs,  | 
 | 9 | +  fetch,  | 
8 | 10 |   history,  | 
9 | 11 |   location,  | 
10 | 12 | ) {  | 
11 | 13 |   // Parse the cookie value for a CSRF token  | 
12 | 14 |   var csrftoken;  | 
13 |  | -  var cookies = ('; ' + document.cookie).split('; csrftoken=');  | 
 | 15 | +  var cookies = ("; " + document.cookie).split("; csrftoken=");  | 
14 | 16 |   if (cookies.length == 2) {  | 
15 |  | -    csrftoken = cookies.pop().split(';').shift();  | 
 | 17 | +    csrftoken = cookies.pop().split(";").shift();  | 
16 | 18 |   } else {  | 
17 | 19 |     csrftoken = document.querySelector("[name=csrfmiddlewaretoken]").value;  | 
18 | 20 |   }  | 
19 | 21 | 
 
  | 
20 | 22 |   // Collect the URL parameters  | 
21 | 23 |   var parameters = {};  | 
22 |  | -  location.hash.substr(1).split('&').forEach(function (entry) {  | 
23 |  | -    var eq = entry.indexOf('=');  | 
24 |  | -    if (eq >= 0) {  | 
25 |  | -      parameters[decodeURIComponent(entry.slice(0, eq))] =  | 
26 |  | -        decodeURIComponent(entry.slice(eq + 1));  | 
27 |  | -    }  | 
28 |  | -  });  | 
 | 24 | +  location.hash  | 
 | 25 | +    .substr(1)  | 
 | 26 | +    .split("&")  | 
 | 27 | +    .forEach(function (entry) {  | 
 | 28 | +      var eq = entry.indexOf("=");  | 
 | 29 | +      if (eq >= 0) {  | 
 | 30 | +        parameters[decodeURIComponent(entry.slice(0, eq))] = decodeURIComponent(  | 
 | 31 | +          entry.slice(eq + 1),  | 
 | 32 | +        );  | 
 | 33 | +      }  | 
 | 34 | +    });  | 
29 | 35 |   // Produce a Location fragment string from a parameter object.  | 
30 | 36 |   function locationQuery(params) {  | 
31 |  | -    return '#' + Object.keys(params).map(function (key) {  | 
32 |  | -      return encodeURIComponent(key) + '=' +  | 
33 |  | -        encodeURIComponent(params[key]);  | 
34 |  | -    }).join('&');  | 
 | 37 | +    return (  | 
 | 38 | +      "#" +  | 
 | 39 | +      Object.keys(params)  | 
 | 40 | +        .map(function (key) {  | 
 | 41 | +          return (  | 
 | 42 | +            encodeURIComponent(key) + "=" + encodeURIComponent(params[key])  | 
 | 43 | +          );  | 
 | 44 | +        })  | 
 | 45 | +        .join("&")  | 
 | 46 | +    );  | 
35 | 47 |   }  | 
36 | 48 |   // Derive a fetch URL from the current URL, sans the GraphQL parameters.  | 
37 | 49 |   var graphqlParamNames = {  | 
38 | 50 |     query: true,  | 
39 | 51 |     variables: true,  | 
40 |  | -    operationName: true  | 
 | 52 | +    operationName: true,  | 
41 | 53 |   };  | 
42 | 54 |   var otherParams = {};  | 
43 | 55 |   for (var k in parameters) {  | 
 | 
51 | 63 |   // Defines a GraphQL fetcher using the fetch API.  | 
52 | 64 |   function httpClient(graphQLParams) {  | 
53 | 65 |     var headers = {  | 
54 |  | -      'Accept': 'application/json',  | 
55 |  | -      'Content-Type': 'application/json'  | 
 | 66 | +      Accept: "application/json",  | 
 | 67 | +      "Content-Type": "application/json",  | 
56 | 68 |     };  | 
57 | 69 |     if (csrftoken) {  | 
58 |  | -      headers['X-CSRFToken'] = csrftoken;  | 
 | 70 | +      headers["X-CSRFToken"] = csrftoken;  | 
59 | 71 |     }  | 
60 | 72 |     return fetch(fetchURL, {  | 
61 |  | -      method: 'post',  | 
 | 73 | +      method: "post",  | 
62 | 74 |       headers: headers,  | 
63 | 75 |       body: JSON.stringify(graphQLParams),  | 
64 |  | -      credentials: 'include',  | 
65 |  | -    }).then(function (response) {  | 
66 |  | -      return response.text();  | 
67 |  | -    }).then(function (responseBody) {  | 
68 |  | -      try {  | 
69 |  | -        return JSON.parse(responseBody);  | 
70 |  | -      } catch (error) {  | 
71 |  | -        return responseBody;  | 
72 |  | -      }  | 
73 |  | -    });  | 
 | 76 | +      credentials: "include",  | 
 | 77 | +    })  | 
 | 78 | +      .then(function (response) {  | 
 | 79 | +        return response.text();  | 
 | 80 | +      })  | 
 | 81 | +      .then(function (responseBody) {  | 
 | 82 | +        try {  | 
 | 83 | +          return JSON.parse(responseBody);  | 
 | 84 | +        } catch (error) {  | 
 | 85 | +          return responseBody;  | 
 | 86 | +        }  | 
 | 87 | +      });  | 
74 | 88 |   }  | 
75 | 89 | 
 
  | 
76 | 90 |   // Derive the subscription URL. If the SUBSCRIPTION_URL setting is specified, uses that value. Otherwise  | 
 | 
157 | 171 |     onEditVariables: onEditVariables,  | 
158 | 172 |     onEditOperationName: onEditOperationName,  | 
159 | 173 |     query: parameters.query,  | 
160 |  | -  }  | 
 | 174 | +  };  | 
161 | 175 |   if (parameters.variables) {  | 
162 | 176 |     options.variables = parameters.variables;  | 
163 | 177 |   }  | 
 | 
167 | 181 |   // Render <GraphiQL /> into the body.  | 
168 | 182 |   ReactDOM.render(  | 
169 | 183 |     React.createElement(GraphiQL, options),  | 
170 |  | -    document.getElementById("editor")  | 
 | 184 | +    document.getElementById("editor"),  | 
171 | 185 |   );  | 
172 | 186 | })(  | 
173 | 187 |   document,  | 
 | 188 | + | 
174 | 189 |   window.GRAPHENE_SETTINGS,  | 
175 | 190 |   window.GraphiQL,  | 
176 | 191 |   window.React,  | 
177 | 192 |   window.ReactDOM,  | 
178 | 193 |   window.SubscriptionsTransportWs,  | 
 | 194 | +  window.fetch,  | 
179 | 195 |   window.history,  | 
180 | 196 |   window.location,  | 
181 | 197 | );  | 
0 commit comments