UNPKG

5.07 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.withMethodsTemplate = void 0;
4exports.withMethodsTemplate = function (queries, mutations) {
5 return "\n export type AbortableQueryWithArgs<T, A> = {\n $args(args: A): AbortableQuery<T>;\n $abort(): void;\n };\n\n export type AbortableQueryWithOptionalArgs<T, A> = {\n $fetch(): Promise<T>;\n $args(args: A): AbortableQuery<T>;\n $abort(): void;\n };\n \n export type AbortableQuery<T> = {\n $fetch(): Promise<T>;\n $abort(): void;\n };\n export interface FragmentableQueryWithArgs<T, A> {\n $fragment(fragment: string | DocumentNode): AbortableQueryWithArgs<T, A>;\n }\n export interface FragmentableQueryWithOptionalArgs<T, A> {\n $fragment(fragment: string | DocumentNode): AbortableQueryWithOptionalArgs<T, A>;\n }\n export interface FragmentableQuery<T> {\n $fragment(fragment: string | DocumentNode): AbortableQuery<T>;\n }\n \n export type AbortableMutationWithArgs<T, A> = {\n $args(args: A): AbortableMutation<T>;\n $abort(): void;\n };\n\n export type AbortableMutationWithOptionalArgs<T, A> = {\n $post(): Promise<T>;\n $args(args: A): AbortableMutation<T>;\n $abort(): void;\n };\n \n export type AbortableMutation<T> = {\n $post(): Promise<T>;\n $abort(): void;\n };\n \n export interface FragmentableMutationWithArgs<T, A> {\n $fragment(fragment: string | DocumentNode): AbortableMutationWithArgs<T, A>;\n }\n export interface FragmentableMutationWithOptionalArgs<T, A> {\n $fragment(fragment: string | DocumentNode): AbortableMutationWithOptionalArgs<T, A>;\n }\n export interface FragmentableMutation<T> {\n $fragment(fragment: string | DocumentNode): AbortableMutation<T>;\n }\n \n \n export const apiProvider = (apolloClient: ApolloClient<any>) => {\n const abortableQuery = <T, A = null>(\n query: DocumentNode,\n args: boolean,\n optionalArgs: boolean\n ): A extends null ? AbortableQuery<T> : AbortableQueryWithArgs<T, A> => {\n let observableQuery: ZenObservable.Subscription;\n const parsedQuery = query.definitions[0] as OperationDefinitionNode;\n const queryName = parsedQuery.name.value;\n let variables: { [x: string]: any } = {};\n \n function $abort() {\n if (observableQuery && !observableQuery.closed) {\n observableQuery.unsubscribe();\n }\n }\n async function $fetch() {\n return new Promise<T>((resolve, reject) => {\n observableQuery = execute(apolloClient.link, {\n query,\n variables,\n }).subscribe({\n next: ({ data, errors }) => {\n if (errors) {\n reject(errors);\n } else {\n resolve(data[queryName]);\n }\n },\n error: error => reject(error),\n });\n });\n }\n function $args(args) {\n variables = args;\n return {\n $abort,\n $fetch,\n };\n }\n if (args && !optionalArgs) {\n return {\n $abort,\n $args,\n } as any;\n } else if (optionalArgs) {\n return {\n $abort,\n $args,\n $fetch,\n } as any;\n } else {\n return {\n $abort,\n $fetch,\n } as any;\n }\n };\n const abortableMutation = <T, A = null>(\n mutation: DocumentNode,\n args: boolean,\n optionalArgs: boolean\n ): AbortableMutationWithArgs<T, A> => {\n let observableQuery: ZenObservable.Subscription;\n const parsedQuery = mutation.definitions[0] as OperationDefinitionNode;\n const mutationName = parsedQuery.name.value;\n let variables: { [x: string]: any } = {};\n \n function $abort() {\n if (observableQuery && !observableQuery.closed) {\n observableQuery.unsubscribe();\n }\n }\n async function $post() {\n return new Promise<T>((resolve, reject) => {\n observableQuery = execute(apolloClient.link, {\n query: mutation,\n variables,\n }).subscribe({\n next: ({ data, errors }) => {\n if (errors) {\n reject(errors);\n } else {\n resolve(data[mutationName]);\n }\n },\n error: error => reject(error),\n });\n });\n }\n function $args(args) {\n variables = args;\n return {\n $abort,\n $post,\n };\n }\n if (args && !optionalArgs) {\n return {\n $abort,\n $args,\n } as any;\n } else if (optionalArgs) {\n return {\n $abort,\n $args,\n $post,\n } as any;\n } else {\n return {\n $abort,\n $post,\n } as any;\n }\n };\n\n return {\n " + queries.join('\n') + "\n " + mutations.join('\n') + "\n }\n };\n\n ";
6};