@inrupt/experimental-graphql-codegen-solid-query
Version:
Generate a Schema Node in Code Generation
42 lines (37 loc) • 1.38 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = void 0;
// Adds the compiled schema to the source document
function plugin(schema, documents, config) {
return {
content: "",
prepend: [
`import { execute, type ExecutionResult } from 'graphql'`,
`import { TypedDocumentNode } from '@graphql-typed-document-node/core'`,
`import * as RDF from '@rdfjs/types'`,
`import { Algebra } from 'sparqlalgebrajs'`,
],
append: [
`
export type ISparqlEngine = RDF.AlgebraSparqlQueryable<Algebra.Project | Algebra.Ask, RDF.BindingsResultSupport & RDF.BooleanResultSupport>;
export interface IContext {
sparqlEngine: ISparqlEngine;
context?: RDF.QueryContext | undefined;
}
export interface ISolidQueryOptions<TData, TVariables> {
document: TypedDocumentNode<TData, TVariables>;
variables: TVariables;
context: IContext;
}
export async function solidQuery<TData, TVariables extends Record<string, any>>(options: ISolidQueryOptions<TData, TVariables>): Promise<ExecutionResult<TData>> {
return execute({
schema,
document: options.document,
variableValues: options.variables,
contextValue: options.context,
}) as Promise<ExecutionResult<TData>> | ExecutionResult<TData>;
}`,
],
};
}
exports.plugin = plugin;