simple-graphql
Version:
The simple way to generates GraphQL schemas and Sequelize models from your models definition.
59 lines • 3.2 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = __importDefault(require("lodash"));
const toGraphQLFieldConfigMap_1 = __importDefault(require("../transformer/toGraphQLFieldConfigMap"));
const toGraphQLInputFieldConfigMap_1 = __importDefault(require("../transformer/toGraphQLInputFieldConfigMap"));
const StringHelper_1 = __importDefault(require("../utils/StringHelper"));
exports.default = (subscriptionConfigMaps, context) => {
const subscriptions = {};
const addSubscription = (name, options) => {
if (subscriptions[name]) {
throw new Error(`Subscription ${name} already defined.`);
}
const fieldConfig = (0, toGraphQLFieldConfigMap_1.default)(name, 'Payload', { '': options.output }, context)[''];
const finalOptions = Object.assign({}, options);
const fieldResolve = fieldConfig.resolve;
if (fieldResolve) {
const resolve = finalOptions.resolve;
finalOptions.resolve = function (source, args, context, info, sgContext) {
return __awaiter(this, void 0, void 0, function* () {
return fieldResolve(resolve
? {
[info.fieldName]: yield resolve({ [info.fieldName]: source }, args, context, info, sgContext)
}
: { [info.fieldName]: source }, args, context, info);
});
};
}
subscriptions[name] = {
type: fieldConfig.type,
resolve: finalOptions.resolve
? context.hookFieldResolve(name, finalOptions)
: undefined,
subscribe: context.hookSubscriptionResolve(name, finalOptions),
description: options.description
};
if (options.input || fieldConfig.args) {
subscriptions[name].args = Object.assign(Object.assign({}, fieldConfig.args), (0, toGraphQLInputFieldConfigMap_1.default)(StringHelper_1.default.toInitialUpperCase(name), Object.assign({}, options.input), context));
}
};
for (let subscriptionConfigMap of subscriptionConfigMaps) {
lodash_1.default.forOwn(subscriptionConfigMap, (value, key) => {
addSubscription(key, value);
});
}
return subscriptions;
};
//# sourceMappingURL=buildRootSubscription.js.map