@accounts/module-core
Version:
Server side GraphQL transport for accounts
30 lines • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildSchema = void 0;
const authenticated_directive_1 = require("./authenticated-directive");
const schema_1 = require("@graphql-tools/schema");
const merge_1 = require("@graphql-tools/merge");
const buildSchema = ({ typeDefs, resolvers, authDirective: { authDirectiveTypeDefs, authDirectiveTransformer } = (0, authenticated_directive_1.authDirective)('auth'), directives = [], } = {}) => ({ typeDefs: accountsTypeDefs, resolvers: accountsResolvers }) => {
let schema = (0, schema_1.makeExecutableSchema)({
typeDefs: (0, merge_1.mergeTypeDefs)([
...accountsTypeDefs,
...(typeDefs ? [typeDefs] : []),
authDirectiveTypeDefs,
...directives.reduce((acc, [directiveTypeDefs]) => {
if (directiveTypeDefs != null) {
acc.push(directiveTypeDefs);
}
return acc;
}, []),
]),
resolvers: resolvers
? (0, merge_1.mergeResolvers)([resolvers, ...accountsResolvers])
: accountsResolvers,
});
for (const [, directiveTransformer] of directives) {
schema = directiveTransformer(schema);
}
return authDirectiveTransformer(schema);
};
exports.buildSchema = buildSchema;
//# sourceMappingURL=schema-builder.js.map