/** * 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'; /** * Represents a single operation used to processing and normalize runtime * request results. */ export type NormalizationOperation = {| +kind: 'Operation', +name: string, +argumentDefinitions: $ReadOnlyArray, +selections: $ReadOnlyArray, |}; export type NormalizationHandle = | NormalizationScalarHandle | NormalizationLinkedHandle; export type NormalizationLinkedHandle = {| +kind: 'LinkedHandle', +alias: ?string, +name: string, +args: ?$ReadOnlyArray, +handle: string, +key: string, // T45504512: new connection model // NOTE: this property is optional because it's expected to be rarely used +dynamicKey?: ?NormalizationArgument, +filters: ?$ReadOnlyArray, |}; export type NormalizationScalarHandle = {| +kind: 'ScalarHandle', +alias: ?string, +name: string, +args: ?$ReadOnlyArray, +handle: string, +key: string, // T45504512: new connection model // NOTE: this property is optional because it's expected to be rarely used +dynamicKey?: ?NormalizationArgument, +filters: ?$ReadOnlyArray, |}; export type NormalizationArgument = | NormalizationListValueArgument | NormalizationLiteralArgument | NormalizationObjectValueArgument | NormalizationVariableArgument; export type NormalizationCondition = {| +kind: 'Condition', +passingValue: boolean, +condition: string, +selections: $ReadOnlyArray, |}; export type NormalizationClientExtension = {| +kind: 'ClientExtension', +selections: $ReadOnlyArray, |}; export type NormalizationField = | NormalizationScalarField | NormalizationLinkedField; export type NormalizationInlineFragment = {| +kind: 'InlineFragment', +selections: $ReadOnlyArray, +type: string, |}; export type NormalizationLinkedField = {| +kind: 'LinkedField', +alias: ?string, +name: string, +storageKey: ?string, +args: ?$ReadOnlyArray, +concreteType: ?string, +plural: boolean, +selections: $ReadOnlyArray, |}; export type NormalizationModuleImport = {| +kind: 'ModuleImport', +documentName: string, +fragmentPropName: string, +fragmentName: string, |}; export type NormalizationListValueArgument = {| +kind: 'ListValue', +name: string, +items: $ReadOnlyArray, |}; export type NormalizationLiteralArgument = {| +kind: 'Literal', +name: string, +type?: ?string, +value: mixed, |}; export type NormalizationLocalArgumentDefinition = {| +kind: 'LocalArgument', +name: string, +type: string, +defaultValue: mixed, |}; export type NormalizationNode = | NormalizationClientExtension | NormalizationCondition | NormalizationDefer | NormalizationInlineFragment | NormalizationLinkedField | NormalizationOperation | NormalizationSplitOperation | NormalizationStream; export type NormalizationScalarField = {| +kind: 'ScalarField', +alias: ?string, +name: string, +args: ?$ReadOnlyArray, +storageKey: ?string, |}; export type NormalizationSelection = | NormalizationCondition | NormalizationClientExtension | NormalizationDefer | NormalizationField | NormalizationHandle | NormalizationInlineFragment | NormalizationModuleImport | NormalizationStream; export type NormalizationSplitOperation = {| +kind: 'SplitOperation', +name: string, +metadata: ?{+[key: string]: mixed, ...}, +selections: $ReadOnlyArray, |}; export type NormalizationStream = {| +if: string | null, +kind: 'Stream', +label: string, +useCustomizedBatch: string | null, +metadata: ?{+[key: string]: mixed, ...}, +selections: $ReadOnlyArray, |}; export type NormalizationDefer = {| +if: string | null, +kind: 'Defer', +label: string, +selections: $ReadOnlyArray, |}; export type NormalizationVariableArgument = {| +kind: 'Variable', +name: string, +type?: ?string, +variableName: string, |}; export type NormalizationObjectValueArgument = {| +kind: 'ObjectValue', +name: string, +fields: $ReadOnlyArray, |}; export type NormalizationSelectableNode = | NormalizationDefer | NormalizationLinkedField | NormalizationOperation | NormalizationSplitOperation | NormalizationStream;