/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow strict-local * @format */ // flowlint ambiguous-object-type:error 'use strict'; import type {ConnectionMetadata} from '../handlers/connection/ConnectionHandler'; import type {ConcreteRequest} from './RelayConcreteNode'; export type ReaderFragmentSpread = {| +kind: 'FragmentSpread', +name: string, +args: ?$ReadOnlyArray, |}; export type ReaderInlineDataFragmentSpread = {| +kind: 'InlineDataFragmentSpread', +name: string, +selections: $ReadOnlyArray, |}; export type ReaderFragment = {| +kind: 'Fragment', +name: string, +type: string, +metadata: ?{| +connection?: $ReadOnlyArray, +mask?: boolean, +plural?: boolean, +refetch?: ReaderRefetchMetadata, |}, +argumentDefinitions: $ReadOnlyArray, +selections: $ReadOnlyArray, |}; // Marker type for a @refetchable fragment export type ReaderRefetchableFragment = {| ...ReaderFragment, +metadata: {| +connection?: [ConnectionMetadata], +refetch: ReaderRefetchMetadata, |}, |}; // Marker Type for a @refetchable fragment with a single use of @connection export type ReaderPaginationFragment = {| ...ReaderFragment, +metadata: {| +connection: [ConnectionMetadata], +refetch: {| ...ReaderRefetchMetadata, connection: ReaderPaginationMetadata, |}, |}, |}; export type ReaderRefetchMetadata = {| +connection: ?ReaderPaginationMetadata, +operation: string | ConcreteRequest, +fragmentPathInResult: Array, +identifierField?: ?string, |}; // Stricter form of ConnectionMetadata export type ReaderPaginationMetadata = {| +backward: {| +count: string, +cursor: string, |} | null, +forward: {| +count: string, +cursor: string, |} | null, +path: $ReadOnlyArray, |}; export type ReaderInlineDataFragment = {| +kind: 'InlineDataFragment', +name: string, |}; export type ReaderArgument = | ReaderListValueArgument | ReaderLiteralArgument | ReaderObjectValueArgument | ReaderVariableArgument; export type ReaderArgumentDefinition = ReaderLocalArgument | ReaderRootArgument; export type ReaderCondition = {| +kind: 'Condition', +passingValue: boolean, +condition: string, +selections: $ReadOnlyArray, |}; export type ReaderClientExtension = {| +kind: 'ClientExtension', +selections: $ReadOnlyArray, |}; export type ReaderField = ReaderScalarField | ReaderLinkedField; export type ReaderRootArgument = {| +kind: 'RootArgument', +name: string, +type: ?string, |}; export type ReaderInlineFragment = {| +kind: 'InlineFragment', +selections: $ReadOnlyArray, +type: string, |}; export type ReaderLinkedField = {| +kind: 'LinkedField', +alias: ?string, +name: string, +storageKey: ?string, +args: ?$ReadOnlyArray, +concreteType: ?string, +plural: boolean, +selections: $ReadOnlyArray, |}; export type ReaderModuleImport = {| +kind: 'ModuleImport', +documentName: string, +fragmentPropName: string, +fragmentName: string, |}; export type ReaderListValueArgument = {| +kind: 'ListValue', +name: string, +items: $ReadOnlyArray, |}; export type ReaderLiteralArgument = {| +kind: 'Literal', +name: string, +type?: ?string, +value: mixed, |}; export type ReaderLocalArgument = {| +kind: 'LocalArgument', +name: string, +type: string, +defaultValue: mixed, |}; export type ReaderObjectValueArgument = {| +kind: 'ObjectValue', +name: string, +fields: $ReadOnlyArray, |}; export type ReaderNode = | ReaderCondition | ReaderLinkedField | ReaderFragment | ReaderInlineFragment; export type ReaderScalarField = {| +kind: 'ScalarField', +alias: ?string, +name: string, +args: ?$ReadOnlyArray, +storageKey: ?string, |}; export type ReaderDefer = {| +kind: 'Defer', +selections: $ReadOnlyArray, |}; export type ReaderStream = {| +kind: 'Stream', +selections: $ReadOnlyArray, |}; export type ReaderSelection = | ReaderCondition | ReaderClientExtension | ReaderDefer | ReaderField | ReaderFragmentSpread | ReaderInlineDataFragmentSpread | ReaderInlineFragment | ReaderModuleImport | ReaderStream; export type ReaderVariableArgument = {| +kind: 'Variable', +name: string, +type?: ?string, +variableName: string, |};