/*! * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import 'setimmediate'; import ApolloClient, { ApolloClientOptions, MutationOptions, OperationVariables, MutationUpdaterFn } from 'apollo-client'; import { ApolloReducerConfig, NormalizedCacheObject } from 'apollo-cache-inmemory'; import { ApolloLink } from 'apollo-link'; import { Store } from 'redux'; import { defaultDataIdFromObject } from './cache/index'; import { OfflineCache as OfflineCacheType } from './cache/offline-cache'; import { StoreOptions } from './store'; import { ApolloCache } from 'apollo-cache'; import { AuthOptions, AUTH_TYPE } from 'aws-appsync-auth-link'; import { Credentials, CredentialsOptions } from 'aws-sdk/lib/credentials'; import { DocumentNode } from 'graphql'; import { buildSync } from "./deltaSync"; import { Subscription } from 'apollo-client/util/Observable'; export { defaultDataIdFromObject }; export declare const createAppSyncLink: ({ url, region, auth, complexObjectsCredentials, resultsFetcherLink, conflictResolver, }: { url: string; region: string; auth: AuthOptions; complexObjectsCredentials: CredentialsGetter; resultsFetcherLink?: ApolloLink; conflictResolver?: ConflictResolver; }) => ApolloLink; export declare const createLinkWithCache: (createLinkFunc?: (cache: ApolloCache) => ApolloLink) => ApolloLink; export interface CacheWithStore extends ApolloCache { store: Store; } declare type CredentialsGetter = () => (Credentials | CredentialsOptions | Promise | Promise | null) | Credentials | CredentialsOptions | Promise | Promise | null; export interface AWSAppSyncClientOptions { url: string; region: string; auth: AuthOptions; conflictResolver?: ConflictResolver; complexObjectsCredentials?: CredentialsGetter; cacheOptions?: ApolloReducerConfig; disableOffline?: boolean; offlineConfig?: OfflineConfig; } export declare type OfflineConfig = Pick>, 'storage' | 'callback' | 'keyPrefix'> & { storeCacheRootMutation?: boolean; }; export declare type OfflineCallback = (err: any, success: any) => void; export interface ConflictResolutionInfo { mutation: DocumentNode; mutationName: string; operationType: string; variables: any; data: any; retries: number; } export declare type ConflictResolver = (obj: ConflictResolutionInfo) => 'DISCARD' | any; declare class AWSAppSyncClient extends ApolloClient { private _store; private hydratedPromise; hydrated(): Promise>; private _disableOffline; constructor({ url, region, auth, conflictResolver, complexObjectsCredentials, cacheOptions, disableOffline, offlineConfig: { storage, keyPrefix, callback, storeCacheRootMutation, }, }: AWSAppSyncClientOptions, options?: Partial>); isOfflineEnabled(): boolean; mutate(options: MutationOptions): Promise, Record>>; sync(options: SubscribeWithSyncOptions): Subscription; } export declare type QuerySyncOptions = { query: DocumentNode; variables: TVariables; update: MutationUpdaterFn; }; export declare type BaseQuerySyncOptions = QuerySyncOptions & { baseRefreshIntervalInSeconds?: number; }; export declare type SubscribeWithSyncOptions = { baseQuery?: BaseQuerySyncOptions; subscriptionQuery?: QuerySyncOptions; deltaQuery?: QuerySyncOptions; }; export default AWSAppSyncClient; export { AWSAppSyncClient }; export { AUTH_TYPE, buildSync };