@graphql-mesh/plugin-operation-field-permissions
Version:
27 lines (26 loc) • 1.15 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = useMeshOperationFieldPermissions;
/* eslint-disable no-new-func */
const operation_field_permissions_1 = require("@envelop/operation-field-permissions");
const cross_helpers_1 = require("@graphql-mesh/cross-helpers");
function useMeshOperationFieldPermissions(options) {
return {
onPluginInit({ addPlugin }) {
addPlugin((0, operation_field_permissions_1.useOperationFieldPermissions)({
getPermissions(context) {
const allowedFields = new Set();
for (const { if: condition, allow } of options.permissions) {
const ifFn = new Function('context', 'env', 'return ' + condition);
if (ifFn(context, cross_helpers_1.process.env)) {
for (const allowedField of allow) {
allowedFields.add(allowedField);
}
}
}
return allowedFields;
},
}));
},
};
}
;