本文整理汇总了TypeScript中apollo-utilities.getMainDefinition函数的典型用法代码示例。如果您正苦于以下问题:TypeScript getMainDefinition函数的具体用法?TypeScript getMainDefinition怎么用?TypeScript getMainDefinition使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了getMainDefinition函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: getMainDefinition
({ query }) => {
const definition = getMainDefinition(query);
return (
definition.kind === "OperationDefinition" &&
definition.operation === "subscription"
);
},
示例2: graphql
export function graphql(
resolver: Resolver,
document: DocumentNode,
rootValue?: any,
contextValue?: any,
variableValues?: VariableMap,
execOptions: ExecOptions = {},
) {
const mainDefinition = getMainDefinition(document);
const fragments = getFragmentDefinitions(document);
const fragmentMap = createFragmentMap(fragments);
const resultMapper = execOptions.resultMapper;
// Default matcher always matches all fragments
const fragmentMatcher = execOptions.fragmentMatcher || (() => true);
const execContext: ExecContext = {
fragmentMap,
contextValue,
variableValues,
resultMapper,
resolver,
fragmentMatcher,
};
return executeSelectionSet(
mainDefinition.selectionSet,
rootValue,
execContext,
);
}
示例3: executeStoreQuery
/**
* Based on graphql function from graphql-js:
*
* graphql(
* schema: GraphQLSchema,
* requestString: string,
* rootValue?: ?any,
* contextValue?: ?any,
* variableValues?: ?{[key: string]: any},
* operationName?: ?string
* ): Promise<GraphQLResult>
*
* The default export as of graphql-anywhere is sync as of 4.0,
* but below is an exported alternative that is async.
* In the 5.0 version, this will be the only export again
* and it will be async
*
*/
private executeStoreQuery({
query,
rootValue,
contextValue,
variableValues,
// Default matcher always matches all fragments
fragmentMatcher = defaultFragmentMatcher,
}: ExecStoreQueryOptions): ExecResult {
const mainDefinition = getMainDefinition(query);
const fragments = getFragmentDefinitions(query);
const fragmentMap = createFragmentMap(fragments);
const execContext: ExecContext = {
query,
fragmentMap,
contextValue,
variableValues,
fragmentMatcher,
};
return this.executeSelectionSet({
selectionSet: mainDefinition.selectionSet,
rootValue,
execContext,
});
}
示例4: getMainDefinition
({ query }) => {
const { kind, operation } = getMainDefinition(query);
queryOrMutationLink['options'].headers = new HttpHeaders({
Authorization: localStorage.getItem('token') ? `Bearer ${localStorage.getItem('token')}` : ''
});
return kind === 'OperationDefinition' && operation === 'subscription';
},
示例5: getMainDefinition
private async resolveDocument<TData>(
document: DocumentNode,
rootValue: TData,
context: any = {},
variables: VariableMap = {},
fragmentMatcher: FragmentMatcher = () => true,
onlyRunForcedResolvers: boolean = false,
) {
const mainDefinition = getMainDefinition(document);
const fragments = getFragmentDefinitions(document);
const fragmentMap = createFragmentMap(fragments);
const definitionOperation = (mainDefinition as OperationDefinitionNode)
.operation;
const defaultOperationType = definitionOperation
? capitalizeFirstLetter(definitionOperation)
: 'Query';
const { cache, client } = this;
const execContext: ExecContext = {
fragmentMap,
context: {
...context,
cache,
client,
},
variables,
fragmentMatcher,
defaultOperationType,
exportedVariables: {},
onlyRunForcedResolvers,
};
return this.resolveSelectionSet(
mainDefinition.selectionSet,
rootValue,
execContext,
).then(result => ({
result,
exportedVariables: execContext.exportedVariables,
}));
}
示例6: getMainDefinition
({ query }) => {
const { kind, operation }: any = getMainDefinition(query);
return kind === "OperationDefinition" && operation === "subscription";
},
示例7: getMainDefinition
({ query }) => {
const { kind, operation } = getMainDefinition(query);
return kind === 'OperationDefinition' && operation === 'subscription';
},
示例8: getMainDefinition
// split based on operation type
({query}) => {
const {kind, operation} = getMainDefinition(
query,
) as OperationDefinitionNode
return kind === 'OperationDefinition' && operation === 'subscription'
},
示例9: request
public request(
operation: Operation,
forward: NextLink = () => Observable.of({ data: {} }),
): Observable<FetchResult> {
if (typeDefs) {
const directives = 'directive @client on FIELD';
const definition = normalizeTypeDefs(typeDefs);
operation.setContext(({ schemas = [] }) => ({
schemas: schemas.concat([{ definition, directives }]),
}));
}
const isClient = hasDirectives(['client'], operation.query);
if (!isClient) return forward(operation);
const resolvers =
typeof clientStateConfig.resolvers === 'function'
? clientStateConfig.resolvers()
: clientStateConfig.resolvers;
const server = removeClientSetsFromDocument(operation.query);
const { query } = operation;
const type =
capitalizeFirstLetter(
(getMainDefinition(query) || ({} as any)).operation,
) || 'Query';
const resolver = (fieldName, rootValue = {}, args, context, info) => {
const { resultKey } = info;
// rootValue[fieldName] is where the data is stored in the "canonical model"
// rootValue[info.resultKey] is where the user wants the data to be.
// If fieldName != info.resultKey -- then GraphQL Aliases are in play
// See also:
// - https://github.com/apollographql/apollo-client/tree/master/packages/graphql-anywhere#resolver-info
// - https://github.com/apollographql/apollo-link-rest/pull/113
// Support GraphQL Aliases!
const aliasedNode = rootValue[resultKey];
const preAliasingNode = rootValue[fieldName];
const aliasNeeded = resultKey !== fieldName;
// If aliasedValue is defined, some other link or server already returned a value
if (aliasedNode !== undefined || preAliasingNode !== undefined) {
return aliasedNode || preAliasingNode;
}
// Look for the field in the custom resolver map
const resolverMap = resolvers[(rootValue as any).__typename || type];
if (resolverMap) {
const resolve = resolverMap[fieldName];
if (resolve) return resolve(rootValue, args, context, info);
}
// TODO: the proper thing to do here is throw an error saying to
// add `client.onResetStore(link.writeDefaults);`
// waiting on https://github.com/apollographql/apollo-client/pull/3010
return (
// Support nested fields
(aliasNeeded ? aliasedNode : preAliasingNode) ||
(defaults || {})[fieldName]
);
};
if (server) operation.query = server;
const obs =
server && forward
? forward(operation)
: Observable.of({
data: {},
});
return new Observable(observer => {
// Works around race condition between completion and graphql execution
// finishing. If complete is called during the graphql call, we will
// miss out on the result, since the observer will have completed
let complete = false;
let handlingNext = false;
obs.subscribe({
next: ({ data, errors }) => {
const observerErrorHandler = observer.error.bind(observer);
const context = operation.getContext();
handlingNext = true;
//data is from the server and provides the root value to this GraphQL resolution
//when there is no resolver, the data is taken from the context
graphql(resolver, query, data, context, operation.variables, {
fragmentMatcher,
})
.then(nextData => {
observer.next({
data: nextData,
errors,
});
if (complete) {
observer.complete();
}
//.........这里部分代码省略.........