No more patched packages!

This commit is contained in:
Chi Vinh Le
2018-08-31 02:28:53 +02:00
parent aeada424fa
commit 792ceed2ad
5 changed files with 40 additions and 11 deletions
@@ -1,22 +1,46 @@
import {
ConnectionConfig,
ConnectionData,
createPaginationContainer,
FragmentOrRegularProp,
GraphQLTaggedNode,
RelayPaginationProp,
} from "react-relay";
import { InferableComponentEnhancerWithProps } from "recompose";
import { Variables } from "relay-runtime";
import { FragmentKeysNoLocal } from "./types";
// TODO: (cvle) at some point we might switch these to stock react-relay typings
// when they become versatile enough.
export type FragmentVariablesGetter<V extends Variables = Variables> = (
prevVars: V,
totalCount: number
) => V;
export interface ConnectionConfig<
P,
V extends Variables = Variables,
F extends Variables = Variables
> {
direction?: "backward" | "forward";
getConnectionFromProps?(props: P): ConnectionData | undefined | null;
getFragmentVariables?: FragmentVariablesGetter<F>;
getVariables(
props: P,
paginationInfo: { count: number; cursor?: string },
fragmentVariables: F
): V;
query: GraphQLTaggedNode;
}
/**
* withPaginationContainer is a curried version of `createPaginationContainers`
* from Relay.
*/
export default <T, FragmentVariables, QueryVariables>(
export default <T, QueryVariables, FragmentVariables>(
fragmentSpec: { [P in FragmentKeysNoLocal<T>]: GraphQLTaggedNode } & {
_?: never;
},
connectionConfig: ConnectionConfig<T, FragmentVariables, QueryVariables>
connectionConfig: ConnectionConfig<T, QueryVariables, FragmentVariables>
): InferableComponentEnhancerWithProps<
{ [P in FragmentKeysNoLocal<T>]: T[P] } & { relay: RelayPaginationProp },
{ [P in FragmentKeysNoLocal<T>]: FragmentOrRegularProp<T[P]> }