@accounts/module-core
Version:
Server side GraphQL transport for accounts
32 lines • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.authDirective = void 0;
const authenticated_resolver_1 = require("./authenticated-resolver");
const utils_1 = require("@graphql-tools/utils");
const graphql_1 = require("graphql");
function authDirective(directiveName = 'auth') {
const typeDirectiveArgumentMaps = {};
return {
authDirectiveTypeDefs: `directive @${directiveName} on FIELD_DEFINITION | OBJECT`,
authDirectiveTransformer: (schema) => (0, utils_1.mapSchema)(schema, {
[utils_1.MapperKind.TYPE]: (type) => {
const authDirective = (0, utils_1.getDirective)(schema, type, directiveName)?.[0];
if (authDirective) {
typeDirectiveArgumentMaps[type.name] = authDirective;
}
return undefined;
},
[utils_1.MapperKind.OBJECT_FIELD]: (fieldConfig, _fieldName, typeName) => {
const authDirective = (0, utils_1.getDirective)(schema, fieldConfig, directiveName)?.[0] ??
typeDirectiveArgumentMaps[typeName];
if (authDirective) {
const { resolve = graphql_1.defaultFieldResolver } = fieldConfig;
fieldConfig.resolve = (0, authenticated_resolver_1.authenticated)(resolve);
return fieldConfig;
}
},
}),
};
}
exports.authDirective = authDirective;
//# sourceMappingURL=authenticated-directive.js.map