UNPKG

relay-runtime

Version:

A core runtime for building GraphQL-driven applications.

236 lines (204 loc) • 7.87 kB
/** * 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 type {ConcreteRequest, ProvidedVariableType} from './RelayConcreteNode'; export interface JSResourceReference<TModule> { getModuleId(): string; getModuleIfRequired(): TModule | null | undefined; load(): Promise<TModule>; } /** * Represents a single operation used to processing and normalize runtime * request results. */ export interface NormalizationOperation { readonly kind: 'Operation'; readonly name: string; readonly argumentDefinitions: readonly NormalizationLocalArgumentDefinition[]; readonly selections: readonly NormalizationSelection[]; readonly clientAbstractTypes?: { readonly [key: string]: readonly string[]; }; readonly use_exec_time_resolvers?: boolean; readonly exec_time_resolvers_enabled_provider?: ProvidedVariableType; } export type NormalizationHandle = NormalizationScalarHandle | NormalizationLinkedHandle; export interface NormalizationLinkedHandle { readonly kind: 'LinkedHandle'; readonly alias?: string | null | undefined; readonly name: string; readonly args?: readonly NormalizationArgument[] | null | undefined; readonly handle: string; readonly key: string; // NOTE: this property is optional because it's expected to be rarely used readonly dynamicKey?: NormalizationArgument | null | undefined; readonly filters?: readonly string[] | null | undefined; readonly handleArgs?: readonly NormalizationArgument[]; } export interface NormalizationScalarHandle { readonly kind: 'ScalarHandle'; readonly alias?: string | null | undefined; readonly name: string; readonly args?: readonly NormalizationArgument[] | null | undefined; readonly handle: string; readonly key: string; // NOTE: this property is optional because it's expected to be rarely used readonly dynamicKey?: NormalizationArgument | null | undefined; readonly filters?: readonly string[] | null | undefined; readonly handleArgs?: readonly NormalizationArgument[]; } export type NormalizationArgument = | NormalizationListValueArgument | NormalizationLiteralArgument | NormalizationObjectValueArgument | NormalizationVariableArgument; export interface NormalizationCondition { readonly kind: 'Condition'; readonly passingValue: boolean; readonly condition: string; readonly selections: readonly NormalizationSelection[]; } export interface NormalizationClientExtension { readonly kind: 'ClientExtension'; readonly selections: readonly NormalizationSelection[]; } export type NormalizationField = NormalizationFlightField | NormalizationScalarField | NormalizationLinkedField; export interface NormalizationInlineFragment { readonly kind: 'InlineFragment'; readonly selections: readonly NormalizationSelection[]; readonly type: string; readonly abstractKey?: string | null | undefined; } export interface NormalizationFragmentSpread { readonly kind: 'FragmentSpread'; readonly fragment: NormalizationSplitOperation; readonly args?: readonly NormalizationArgument[] | null | undefined; } export interface NormalizationLinkedField { readonly kind: 'LinkedField'; readonly alias?: string | null | undefined; readonly name: string; readonly storageKey?: string | null | undefined; readonly args?: readonly NormalizationArgument[] | null | undefined; readonly concreteType?: string | null | undefined; readonly plural: boolean; readonly selections: readonly NormalizationSelection[]; } export interface NormalizationActorChange { readonly kind: 'ActorChange'; readonly linkedField: NormalizationLinkedField; } export interface NormalizationModuleImport { readonly args?: readonly NormalizationArgument[] | null | undefined; readonly kind: 'ModuleImport'; readonly documentName: string; readonly fragmentPropName: string; readonly fragmentName: string; readonly componentModuleProvider?: () => unknown | Promise<unknown> | JSResourceReference<unknown>; readonly operationModuleProvider?: () => | NormalizationRootNode | Promise<NormalizationRootNode> | JSResourceReference<NormalizationRootNode>; } export interface NormalizationListValueArgument { readonly kind: 'ListValue'; readonly name: string; readonly items: ReadonlyArray<NormalizationArgument | null>; } export interface NormalizationLiteralArgument { readonly kind: 'Literal'; readonly name: string; readonly type?: string | null | undefined; readonly value: any; } export interface NormalizationLocalArgumentDefinition { readonly kind: 'LocalArgument'; readonly name: string; readonly defaultValue: any; } export type NormalizationNode = | NormalizationClientExtension | NormalizationCondition | NormalizationDefer | NormalizationInlineFragment | NormalizationLinkedField | NormalizationOperation | NormalizationSplitOperation | NormalizationStream; export interface NormalizationScalarField { readonly kind: 'ScalarField'; readonly alias?: string | null | undefined; readonly name: string; readonly args?: readonly NormalizationArgument[] | null | undefined; readonly storageKey?: string | null | undefined; } export interface NormalizationFlightField { readonly kind: 'FlightField'; readonly alias?: string | null | undefined; readonly name: string; readonly args?: readonly NormalizationArgument[] | null | undefined; readonly storageKey: string | null | undefined; } export interface NormalizationClientComponent { readonly args?: readonly NormalizationArgument[] | null | undefined; readonly kind: 'ClientComponent'; readonly fragment: NormalizationNode; } export interface NormalizationTypeDiscriminator { readonly kind: 'TypeDiscriminator'; readonly abstractKey: string; } export type NormalizationSelection = | NormalizationCondition | NormalizationClientComponent | NormalizationClientExtension | NormalizationDefer | NormalizationField | NormalizationFlightField | NormalizationFragmentSpread | NormalizationHandle | NormalizationInlineFragment | NormalizationModuleImport | NormalizationStream | NormalizationActorChange | NormalizationTypeDiscriminator; export interface NormalizationSplitOperation { readonly argumentDefinitions?: readonly NormalizationLocalArgumentDefinition[]; readonly kind: 'SplitOperation'; readonly name: string; readonly metadata: { readonly [key: string]: unknown } | null | undefined; readonly selections: readonly NormalizationSelection[]; } export interface NormalizationStream { readonly if: string | null; readonly kind: 'Stream'; readonly label: string; readonly selections: readonly NormalizationSelection[]; } export interface NormalizationDefer { readonly if: string | null; readonly kind: 'Defer'; readonly label: string; readonly selections: readonly NormalizationSelection[]; } export interface NormalizationVariableArgument { readonly kind: 'Variable'; readonly name: string; readonly type?: string | null | undefined; readonly variableName: string; } export interface NormalizationObjectValueArgument { readonly kind: 'ObjectValue'; readonly name: string; readonly fields: readonly NormalizationArgument[]; } export type NormalizationSelectableNode = | NormalizationDefer | NormalizationLinkedField | NormalizationOperation | NormalizationSplitOperation | NormalizationStream; export type NormalizationRootNode = ConcreteRequest | NormalizationSplitOperation;