Merge pull request #2 from alloy/voxmatt-relay-modern

Simplify modules by removing namespaces.
This commit is contained in:
Matt Martin
2017-10-17 15:51:18 -07:00
committed by GitHub
7 changed files with 1216 additions and 1261 deletions
+9 -9
View File
@@ -1,5 +1,5 @@
import * as React from "react";
import { RelayCommonTypes } from "relay-runtime";
import * as RelayRuntimeTypes from "relay-runtime";
// ~~~~~~~~~~~~~~~~~~~~~
// Maybe Fix
@@ -20,24 +20,24 @@ export interface FragmentResolver {
dispose(): void;
resolve(
fragment: RelayQuery["Fragment"],
dataIDs: RelayCommonTypes.DataID | RelayCommonTypes.DataID[]
dataIDs: RelayRuntimeTypes.DataID | RelayRuntimeTypes.DataID[]
): StoreReaderData | StoreReaderData[] | undefined | null;
}
export interface RelayEnvironmentInterface {
forceFetch(
querySet: RelayCommonTypes.RelayQuerySet,
onReadyStateChange: RelayCommonTypes.ReadyStateChangeCallback
): RelayCommonTypes.Abortable;
querySet: RelayRuntimeTypes.RelayQuerySet,
onReadyStateChange: RelayRuntimeTypes.ReadyStateChangeCallback
): RelayRuntimeTypes.Abortable;
getFragmentResolver(fragment: RelayQuery["Fragment"], onNext: () => void): FragmentResolver;
getStoreData(): RelayStoreData;
primeCache(
querySet: RelayCommonTypes.RelayQuerySet,
onReadyStateChange: RelayCommonTypes.ReadyStateChangeCallback
): RelayCommonTypes.Abortable;
querySet: RelayRuntimeTypes.RelayQuerySet,
onReadyStateChange: RelayRuntimeTypes.ReadyStateChangeCallback
): RelayRuntimeTypes.Abortable;
read(
node: RelayQuery["Node"],
dataID: RelayCommonTypes.DataID,
dataID: RelayRuntimeTypes.DataID,
options?: StoreReaderOptions
): StoreReaderData | void;
readQuery(root: RelayQuery["Root"], options?: StoreReaderOptions): StoreReaderData[] | void;
+17 -8
View File
@@ -1,6 +1,15 @@
import { RelayRuntimeTypes, RelayCommonTypes } from "relay-runtime";
export {
QueryRenderer,
commitMutation,
createFragmentContainer,
createPaginationContainer,
createRefetchContainer,
fetchQuery,
graphql,
} from "react-relay";
import * as RelayRuntimeTypes from "relay-runtime";
import { RelayEnvironmentInterface } from "react-relay/classic";
import {} from "react-relay/modern";
// ~~~~~~~~~~~~~~~~~~~~~
// Maybe Fix
@@ -13,7 +22,7 @@ type ConcreteOperationDefinition = object;
// ~~~~~~~~~~~~~~~~~~~~~
// Util
// ~~~~~~~~~~~~~~~~~~~~~
export function getFragment(q: string, v?: RelayCommonTypes.Variables): string;
export function getFragment(q: string, v?: RelayRuntimeTypes.Variables): string;
export interface ComponentWithFragment<T> extends React.ComponentClass<T> {
getFragment: typeof getFragment;
}
@@ -35,25 +44,25 @@ export type CompatEnvironment = RelayRuntimeTypes.Environment | RelayClassicEnvi
export function commitUpdate(
environment: CompatEnvironment,
config: RelayRuntimeTypes.MutationConfig<any>
): RelayCommonTypes.Disposable;
): RelayRuntimeTypes.Disposable;
export function applyUpdate(
environment: CompatEnvironment,
config: RelayRuntimeTypes.OptimisticMutationConfig
): RelayCommonTypes.Disposable;
): RelayRuntimeTypes.Disposable;
// ~~~~~~~~~~~~~~~~~~~~~
// RelayCompatContainer
// ~~~~~~~~~~~~~~~~~~~~~
export interface GeneratedNodeMap {
[key: string]: RelayCommonTypes.GraphQLTaggedNode;
[key: string]: RelayRuntimeTypes.GraphQLTaggedNode;
}
export function createContainer<T>(
Component: ReactBaseComponent<T>,
fragmentSpec: RelayCommonTypes.GraphQLTaggedNode | GeneratedNodeMap
fragmentSpec: RelayRuntimeTypes.GraphQLTaggedNode | GeneratedNodeMap
): ReactFragmentComponent<T>;
// ~~~~~~~~~~~~~~~~~~~~~
// injectDefaultVariablesProvider
// ~~~~~~~~~~~~~~~~~~~~~
export type VariablesProvider = () => RelayCommonTypes.Variables;
export type VariablesProvider = () => RelayRuntimeTypes.Variables;
export function injectDefaultVariablesProvider(variablesProvider: VariablesProvider): void;
+151 -14
View File
@@ -6,20 +6,157 @@
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.4
import { RelayRuntimeTypes } from "relay-runtime";
import * as ReactRelayModernTypes from "react-relay/modern";
export {
commitLocalUpdate,
commitRelayModernMutation as commitMutation,
fetchRelayModernQuery as fetchQuery,
requestRelaySubscription as requestSubscription,
} from "relay-runtime";
import * as React from "react";
import * as RelayRuntimeTypes from "relay-runtime";
// ~~~~~~~~~~~~~~~~~~~~~
// React-Relay Modern
// Maybe Fix
// ~~~~~~~~~~~~~~~~~~~~~
export import QueryRenderer = ReactRelayModernTypes.ReactRelayQueryRenderer;
export import createFragmentContainer = ReactRelayModernTypes.createFragmentContainer;
export import createPaginationContainer = ReactRelayModernTypes.createPaginationContainer;
export import createRefetchContainer = ReactRelayModernTypes.createRefetchContainer;
export import graphql = ReactRelayModernTypes.graphql;
export import commitLocalUpdate = RelayRuntimeTypes.commitLocalUpdate;
export import commitMutation = RelayRuntimeTypes.commitRelayModernMutation;
export import fetchQuery = RelayRuntimeTypes.fetchRelayModernQuery;
export import requestSubscription = RelayRuntimeTypes.requestRelaySubscription;
// exported for convenience
export import ModernTypes = ReactRelayModernTypes;
type ConcreteFragment = any;
type ConcreteBatch = any;
type ConcreteFragmentDefinition = object;
type ConcreteOperationDefinition = object;
type ReactBaseComponent<T> = React.ComponentClass<T> | React.StatelessComponent<T>;
// ~~~~~~~~~~~~~~~~~~~~~
// RelayProp
// ~~~~~~~~~~~~~~~~~~~~~
// note: refetch and pagination containers augment this
export interface RelayProp {
environment: RelayRuntimeTypes.Environment;
}
// ~~~~~~~~~~~~~~~~~~~~~
// RelayQL
// ~~~~~~~~~~~~~~~~~~~~~
export function RelayQL(strings: string[], ...substitutions: any[]): RelayRuntimeTypes.RelayConcreteNode;
// ~~~~~~~~~~~~~~~~~~~~~
// RelayModernGraphQLTag
// ~~~~~~~~~~~~~~~~~~~~~
export interface GeneratedNodeMap {
[key: string]: GraphQLTaggedNode;
}
export type GraphQLTaggedNode =
| (() => ConcreteFragment | ConcreteBatch)
| {
modern(): ConcreteFragment | ConcreteBatch;
classic(relayQL: typeof RelayQL): ConcreteFragmentDefinition | ConcreteOperationDefinition;
};
/**
* Runtime function to correspond to the `graphql` tagged template function.
* All calls to this function should be transformed by the plugin.
*/
export interface GraphqlInterface {
(strings: string[] | TemplateStringsArray): GraphQLTaggedNode;
experimental(strings: string[] | TemplateStringsArray): GraphQLTaggedNode;
}
export const graphql: GraphqlInterface;
// ~~~~~~~~~~~~~~~~~~~~~
// ReactRelayQueryRenderer
// ~~~~~~~~~~~~~~~~~~~~~
export interface QueryRendererProps {
cacheConfig?: RelayRuntimeTypes.CacheConfig;
environment: RelayRuntimeTypes.Environment;
query: GraphQLTaggedNode;
render(readyState: ReadyState): React.ReactElement<any> | undefined | null;
variables: RelayRuntimeTypes.Variables;
rerunParamExperimental?: RelayRuntimeTypes.RerunParam;
}
export interface ReadyState {
error: Error | undefined | null;
props: { [propName: string]: any } | undefined | null;
retry?(): void;
}
export interface QueryRendererState {
readyState: ReadyState;
}
export class ReactRelayQueryRenderer extends React.Component<QueryRendererProps, QueryRendererState> {}
export class QueryRenderer extends ReactRelayQueryRenderer {}
// ~~~~~~~~~~~~~~~~~~~~~
// createFragmentContainer
// ~~~~~~~~~~~~~~~~~~~~~
export function createFragmentContainer<T>(
Component: ReactBaseComponent<T>,
fragmentSpec: GraphQLTaggedNode | GeneratedNodeMap
): ReactBaseComponent<T>;
// ~~~~~~~~~~~~~~~~~~~~~
// createPaginationContainer
// ~~~~~~~~~~~~~~~~~~~~~
export interface PageInfo {
endCursor: string | undefined | null;
hasNextPage: boolean;
hasPreviousPage: boolean;
startCursor: string | undefined | null;
}
export interface ConnectionData {
edges?: any[];
pageInfo?: PageInfo;
}
export type RelayPaginationProp = RelayProp & {
hasMore(): boolean;
isLoading(): boolean;
loadMore(
pageSize: number,
callback: (error?: Error) => void,
options?: RefetchOptions
): RelayRuntimeTypes.Disposable | undefined | null;
refetchConnection(
totalCount: number,
callback: (error?: Error) => void,
refetchVariables?: RelayRuntimeTypes.Variables
): RelayRuntimeTypes.Disposable | undefined | null;
};
export function FragmentVariablesGetter(
prevVars: RelayRuntimeTypes.Variables,
totalCount: number
): RelayRuntimeTypes.Variables;
export interface ConnectionConfig<T> {
direction?: "backward" | "forward";
getConnectionFromProps?(props: T): ConnectionData | undefined | null;
getFragmentVariables?: typeof FragmentVariablesGetter;
getVariables(
props: { [propName: string]: any },
paginationInfo: { count: number; cursor?: string },
fragmentVariables: RelayRuntimeTypes.Variables
): RelayRuntimeTypes.Variables;
query: GraphQLTaggedNode;
}
export function createPaginationContainer<T>(
Component: ReactBaseComponent<T>,
fragmentSpec: GraphQLTaggedNode | GeneratedNodeMap,
connectionConfig: ConnectionConfig<T>
): ReactBaseComponent<T>;
// ~~~~~~~~~~~~~~~~~~~~~
// createFragmentContainer
// ~~~~~~~~~~~~~~~~~~~~~
export interface RefetchOptions {
force?: boolean;
rerunParamExperimental?: RelayRuntimeTypes.RerunParam;
}
export type RelayRefetchProp = RelayProp & {
refetch(
refetchVariables:
| RelayRuntimeTypes.Variables
| ((fragmentVariables: RelayRuntimeTypes.Variables) => RelayRuntimeTypes.Variables),
renderVariables?: RelayRuntimeTypes.Variables,
callback?: (error?: Error) => void,
options?: RefetchOptions
): RelayRuntimeTypes.Disposable;
};
export function createRefetchContainer<T>(
Component: ReactBaseComponent<T>,
fragmentSpec: GraphQLTaggedNode | GeneratedNodeMap,
taggedNode: GraphQLTaggedNode
): ReactBaseComponent<T>;
-146
View File
@@ -1,146 +0,0 @@
import * as React from "react";
import { RelayCommonTypes, RelayRuntimeTypes } from "relay-runtime";
// ~~~~~~~~~~~~~~~~~~~~~
// Maybe Fix
// ~~~~~~~~~~~~~~~~~~~~~
type ConcreteFragment = any;
type ConcreteBatch = any;
type ConcreteFragmentDefinition = object;
type ConcreteOperationDefinition = object;
type ReactBaseComponent<T> = React.ComponentClass<T> | React.StatelessComponent<T>;
// ~~~~~~~~~~~~~~~~~~~~~
// RelayProp
// ~~~~~~~~~~~~~~~~~~~~~
// note: refetch and pagination containers augment this
export interface RelayProp {
environment: RelayRuntimeTypes.Environment;
}
// ~~~~~~~~~~~~~~~~~~~~~
// RelayQL
// ~~~~~~~~~~~~~~~~~~~~~
export function RelayQL(strings: string[], ...substitutions: any[]): RelayCommonTypes.RelayConcreteNode;
// ~~~~~~~~~~~~~~~~~~~~~
// RelayModernGraphQLTag
// ~~~~~~~~~~~~~~~~~~~~~
export interface GeneratedNodeMap {
[key: string]: GraphQLTaggedNode;
}
export type GraphQLTaggedNode =
| (() => ConcreteFragment | ConcreteBatch)
| {
modern(): ConcreteFragment | ConcreteBatch;
classic(relayQL: typeof RelayQL): ConcreteFragmentDefinition | ConcreteOperationDefinition;
};
/**
* Runtime function to correspond to the `graphql` tagged template function.
* All calls to this function should be transformed by the plugin.
*/
export interface GraphqlInterface {
(strings: string[] | TemplateStringsArray): GraphQLTaggedNode;
experimental(strings: string[] | TemplateStringsArray): GraphQLTaggedNode;
}
export const graphql: GraphqlInterface;
// ~~~~~~~~~~~~~~~~~~~~~
// ReactRelayQueryRenderer
// ~~~~~~~~~~~~~~~~~~~~~
export interface QueryRendererProps {
cacheConfig?: RelayCommonTypes.CacheConfig;
environment: RelayRuntimeTypes.Environment;
query: GraphQLTaggedNode;
render(readyState: ReadyState): React.ReactElement<any> | undefined | null;
variables: RelayCommonTypes.Variables;
rerunParamExperimental?: RelayCommonTypes.RerunParam;
}
export interface ReadyState {
error: Error | undefined | null;
props: { [propName: string]: any } | undefined | null;
retry?(): void;
}
export interface QueryRendererState {
readyState: ReadyState;
}
export class ReactRelayQueryRenderer extends React.Component<QueryRendererProps, QueryRendererState> {}
// ~~~~~~~~~~~~~~~~~~~~~
// createFragmentContainer
// ~~~~~~~~~~~~~~~~~~~~~
export function createFragmentContainer<T>(
Component: ReactBaseComponent<T>,
fragmentSpec: GraphQLTaggedNode | GeneratedNodeMap
): ReactBaseComponent<T>;
// ~~~~~~~~~~~~~~~~~~~~~
// createPaginationContainer
// ~~~~~~~~~~~~~~~~~~~~~
export interface PageInfo {
endCursor: string | undefined | null;
hasNextPage: boolean;
hasPreviousPage: boolean;
startCursor: string | undefined | null;
}
export interface ConnectionData {
edges?: any[];
pageInfo?: PageInfo;
}
export type RelayPaginationProp = RelayProp & {
hasMore(): boolean;
isLoading(): boolean;
loadMore(
pageSize: number,
callback: (error?: Error) => void,
options?: RefetchOptions
): RelayCommonTypes.Disposable | undefined | null;
refetchConnection(
totalCount: number,
callback: (error?: Error) => void,
refetchVariables?: RelayCommonTypes.Variables
): RelayCommonTypes.Disposable | undefined | null;
};
export function FragmentVariablesGetter(
prevVars: RelayCommonTypes.Variables,
totalCount: number
): RelayCommonTypes.Variables;
export interface ConnectionConfig<T> {
direction?: "backward" | "forward";
getConnectionFromProps?(props: T): ConnectionData | undefined | null;
getFragmentVariables?: typeof FragmentVariablesGetter;
getVariables(
props: { [propName: string]: any },
paginationInfo: { count: number; cursor?: string },
fragmentVariables: RelayCommonTypes.Variables
): RelayCommonTypes.Variables;
query: GraphQLTaggedNode;
}
export function createPaginationContainer<T>(
Component: ReactBaseComponent<T>,
fragmentSpec: GraphQLTaggedNode | GeneratedNodeMap,
connectionConfig: ConnectionConfig<T>
): ReactBaseComponent<T>;
// ~~~~~~~~~~~~~~~~~~~~~
// createFragmentContainer
// ~~~~~~~~~~~~~~~~~~~~~
export interface RefetchOptions {
force?: boolean;
rerunParamExperimental?: RelayCommonTypes.RerunParam;
}
export type RelayRefetchProp = RelayProp & {
refetch(
refetchVariables:
| RelayCommonTypes.Variables
| ((fragmentVariables: RelayCommonTypes.Variables) => RelayCommonTypes.Variables),
renderVariables?: RelayCommonTypes.Variables,
callback?: (error?: Error) => void,
options?: RefetchOptions
): RelayCommonTypes.Disposable;
};
export function createRefetchContainer<T>(
Component: ReactBaseComponent<T>,
fragmentSpec: GraphQLTaggedNode | GeneratedNodeMap,
taggedNode: GraphQLTaggedNode
): ReactBaseComponent<T>;
+4 -3
View File
@@ -12,7 +12,8 @@ import {
createRefetchContainer,
requestSubscription,
QueryRenderer,
ModernTypes,
RelayRefetchProp,
RelayPaginationProp
} from "react-relay";
// ~~~~~~~~~~~~~~~~~~~~~
@@ -79,7 +80,7 @@ interface StoryInterface {
id: string;
}
interface FeedStoriesProps {
relay: ModernTypes.RelayRefetchProp;
relay: RelayRefetchProp;
feed: {
stories: { edges: Array<{ node: StoryInterface }> };
};
@@ -134,7 +135,7 @@ const FeedRefetchContainer = createRefetchContainer(
// ~~~~~~~~~~~~~~~~~~~~~
interface FeedProps {
user: { feed: { edges: Array<{ node: StoryInterface }> } };
relay: ModernTypes.RelayPaginationProp;
relay: RelayPaginationProp;
}
class Feed extends React.Component<FeedProps> {
render() {
-1
View File
@@ -20,7 +20,6 @@
"files": [
"index.d.ts",
"classic.d.ts",
"modern.d.ts",
"compat.d.ts",
"test/react-relay-tests.tsx",
"test/react-relay-classic-tests.tsx"
+1035 -1080
View File
File diff suppressed because it is too large Load Diff