@oobleck/fluid-backend
Version:
Fluid Framework backend for nteract RTC
38 lines • 1.55 kB
JavaScript
import { execute, subscribe } from "graphql";
import { makeExecutableSchema } from "@graphql-tools/schema";
import { mergeTypeDefs } from "@graphql-tools/merge";
import { ExecuteError } from "../types";
import { ResolverContext } from "./context";
import { NotebookResolvers } from "./resolvers";
import queriesSchema from "../schema/gql/queries.gql";
import mutationsSchema from "../schema/gql/mutations.gql";
import subscriptionsSchema from "../schema/gql/subscriptions.gql";
export class FluidBackend {
constructor() {
this.context = new ResolverContext();
const typeDefs = mergeTypeDefs([queriesSchema, mutationsSchema, subscriptionsSchema]);
this.schema = makeExecutableSchema({ typeDefs, resolvers: NotebookResolvers });
}
dispose() {
this.context.dispose();
}
async execute(document, variableValues) {
var _a;
const valueOrPromise = execute({ schema: this.schema, document, variableValues, contextValue: this.context });
const result = await Promise.resolve(valueOrPromise);
if (result.errors) {
throw new ExecuteError(result.errors);
}
return (_a = result.data) !== null && _a !== void 0 ? _a : {};
}
async subscribe(document, variableValues) {
const result = subscribe({
schema: this.schema,
document,
variableValues,
contextValue: this.context
});
return result;
}
}
//# sourceMappingURL=fluidBackend.js.map