UNPKG

1.81 kBJavaScriptView Raw
1var _a;
2import * as apolloImport from '@apollo/client';
3const apollo = (_a = apolloImport === null || apolloImport === void 0 ? void 0 : apolloImport.default) !== null && _a !== void 0 ? _a : apolloImport;
4function getFinalPromise(object) {
5 return Promise.resolve(object).then(resolvedObject => {
6 if (resolvedObject == null) {
7 return resolvedObject;
8 }
9 if (Array.isArray(resolvedObject)) {
10 return Promise.all(resolvedObject.map(o => getFinalPromise(o)));
11 }
12 else if (typeof resolvedObject === 'object') {
13 const keys = Object.keys(resolvedObject);
14 return Promise.all(keys.map(key => getFinalPromise(resolvedObject[key]))).then(awaitedValues => {
15 for (let i = 0; i < keys.length; i++) {
16 resolvedObject[keys[i]] = awaitedValues[i];
17 }
18 return resolvedObject;
19 });
20 }
21 return resolvedObject;
22 });
23}
24export class AwaitVariablesLink extends apollo.ApolloLink {
25 request(operation, forward) {
26 return new apollo.Observable(observer => {
27 let subscription;
28 getFinalPromise(operation.variables)
29 .then(resolvedVariables => {
30 operation.variables = resolvedVariables;
31 subscription = forward(operation).subscribe({
32 next: observer.next.bind(observer),
33 error: observer.error.bind(observer),
34 complete: observer.complete.bind(observer),
35 });
36 })
37 .catch(observer.error.bind(observer));
38 return () => {
39 if (subscription != null) {
40 subscription.unsubscribe();
41 }
42 };
43 });
44 }
45}