@terabits/grapi
Version:
Grapi Schema Generator For GraphQL Server
53 lines (52 loc) • 1.89 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
var lodash_1 = require("../lodash");
var compose_1 = __importDefault(require("./compose"));
var createEmptyHook = function () { return ({
wrapCreate: [],
wrapUpdate: [],
wrapDelete: [],
resolveFields: {}
}); };
exports["default"] = (function (hooks) {
var reducedHookMap = (0, lodash_1.reduce)(hooks, function (result, hookMap) {
(0, lodash_1.forEach)(hookMap, function (hook, modelName) {
if (!result[modelName]) {
result[modelName] = createEmptyHook();
}
(0, lodash_1.forEach)(hook, function (method, methodName) {
if (methodName === 'resolveFields') {
result[modelName].resolveFields = __assign(__assign({}, result[modelName].resolveFields), method);
}
else {
result[modelName][methodName].push(method);
}
});
});
return result;
}, {});
return (0, lodash_1.mapValues)(reducedHookMap, function (hookMap) {
return (0, lodash_1.mapValues)(hookMap, function (combinedHooks, key) {
if (key === 'resolveFields') {
return combinedHooks;
}
else {
return (0, compose_1["default"])(combinedHooks);
}
});
});
});