Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/react-relay/hooks.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,9 @@ export { useEntryPointLoader } from './relay-hooks/useEntryPointLoader';
export { useFragment } from './relay-hooks/useFragment';
export { useLazyLoadQuery } from './relay-hooks/useLazyLoadQuery';
export { useMutation } from './relay-hooks/useMutation';
export { useMutationAction_EXPERIMENTAL } from './relay-hooks/useMutationAction_EXPERIMENTAL';
export { usePaginationFragment } from './relay-hooks/usePaginationFragment';
export { usePrefetchableForwardPaginationFragment } from './relay-hooks/usePrefetchableForwardPaginationFragment';
export { usePreloadedQuery } from './relay-hooks/usePreloadedQuery';
export { useQueryLoader } from './relay-hooks/useQueryLoader';
export { useRefetchableFragment } from './relay-hooks/useRefetchableFragment';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@

import {ProviderProps, ReactElement, ReactNode} from 'react';
import {IEnvironment, RelayContext} from 'relay-runtime';
import {ActorIdentifier, IActorEnvironment} from 'relay-runtime/multi-actor-environment/index';

export interface Props {
children: ReactNode;
environment: IEnvironment;
getEnvironmentForActor?: ((actorIdentifier: ActorIdentifier) => IActorEnvironment) | null | undefined;
}

export function RelayEnvironmentProvider(props: Props): ReactElement<ProviderProps<RelayContext>>;
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

import {GraphQLTaggedNode, OperationType, VariablesOf} from 'relay-runtime';

// Constrained to `OperationType` (response: unknown), not `MutationParameters`
// (response: Record<string, unknown>): the Flow source places no constraint on
// the response/`TData`, and the stricter bag rejects `@catch` mutations whose
// response is a `Result<…>` union. This also matches the other modern hooks.
export function useMutationAction_EXPERIMENTAL<TMutation extends OperationType>(
mutation: GraphQLTaggedNode,
): (variables: VariablesOf<TMutation>) => Promise<TMutation['response']>;
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

import {KeyType, KeyTypeData, RefetchFnDynamic} from '../ReactRelayTypes';
import {LoadMoreFn} from './useLoadMoreFunction';
import {GraphQLTaggedNode, OperationType, VariablesOf} from 'relay-runtime';

export interface usePrefetchableForwardPaginationFragmentHookType<
TQuery extends OperationType,
TKey extends KeyType | null | undefined,
TFragmentData,
TEdgeData,
> {
data: TFragmentData;
loadNext: LoadMoreFn<TQuery>;
hasNext: boolean;
isLoadingNext: boolean;
refetch: RefetchFnDynamic<TQuery, TKey>;
edges: TEdgeData;
}

export type GetExtraVariablesFn<TQuery extends OperationType, TFragmentData, TEdgeData> = (args: {
hasNext: boolean;
data: TFragmentData;
getServerEdges: () => TEdgeData;
}) => Partial<VariablesOf<TQuery>>;

export interface PrefetchingLoadMoreOptions<TQuery extends OperationType, TFragmentData, TEdgeData> {
UNSTABLE_extraVariables?:
| Partial<VariablesOf<TQuery>>
| GetExtraVariablesFn<TQuery, TFragmentData, TEdgeData>
| undefined;
onComplete?: ((error: Error | null) => void) | undefined;
}

export function usePrefetchableForwardPaginationFragment<
TQuery extends OperationType,
TKey extends KeyType,
TEdgeData,
>(
fragmentInput: GraphQLTaggedNode,
parentFragmentRef: TKey,
bufferSize: number,
initialSize?: number | null | undefined,
prefetchingLoadMoreOptions?: PrefetchingLoadMoreOptions<TQuery, KeyTypeData<TKey>, TEdgeData>,
minimalFetchSize?: number,
disablePrefetching?: boolean,
): usePrefetchableForwardPaginationFragmentHookType<TQuery, TKey, KeyTypeData<TKey>, TEdgeData>;
export function usePrefetchableForwardPaginationFragment<
TQuery extends OperationType,
TKey extends KeyType,
TEdgeData,
>(
fragmentInput: GraphQLTaggedNode,
parentFragmentRef: TKey | null | undefined,
bufferSize: number,
initialSize?: number | null | undefined,
prefetchingLoadMoreOptions?: PrefetchingLoadMoreOptions<
TQuery,
KeyTypeData<TKey> | null | undefined,
TEdgeData
>,
minimalFetchSize?: number,
disablePrefetching?: boolean,
): usePrefetchableForwardPaginationFragmentHookType<TQuery, TKey | null, KeyTypeData<TKey> | null | undefined, TEdgeData>;
13 changes: 9 additions & 4 deletions packages/relay-runtime/mutations/commitMutation.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,18 @@
import {PayloadError, UploadableMap} from '../network/RelayNetworkTypes';
import { GraphQLTaggedNode } from '../query/GraphQLTag';
import {Environment, SelectorStoreUpdater} from '../store/RelayStoreTypes';
import {CacheConfig, Disposable} from '../util/RelayRuntimeTypes';
import {CacheConfig, Disposable, Variables} from '../util/RelayRuntimeTypes';
import { DeclarativeMutationConfig } from './RelayDeclarativeMutationConfig';

// Mirrors the Flow type `{response: {...}, variables: {...}, rawResponse?: {...}}`,
// where `{...}` is Flow's inexact empty object ("any object"). `object` is the
// faithful TS equivalent; `Record<string, unknown>` would be too strict β€” it
// requires an implicit index signature, which `@catch` mutations (whose response
// is a `Result<…>` union) and interface-typed responses do not have.
export interface MutationParameters {
readonly response: Record<string, unknown>;
readonly variables: Record<string, unknown>;
readonly rawResponse?: Record<string, unknown> | undefined;
readonly response: object;
readonly variables: Variables;
readonly rawResponse?: object | undefined;
}

export interface MutationConfig<TOperation extends MutationParameters> {
Expand Down
Loading