@graphql-hive/envelop
Version:
GraphQL Hive + GraphQL Envelop
64 lines (63 loc) • 2.84 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createServicesFetcher = exports.createSchemaFetcher = exports.atLeastOnceSampler = void 0;
exports.createHive = createHive;
exports.useHive = useHive;
const core_1 = require("@graphql-hive/core");
var core_2 = require("@graphql-hive/core");
Object.defineProperty(exports, "atLeastOnceSampler", { enumerable: true, get: function () { return core_2.atLeastOnceSampler; } });
Object.defineProperty(exports, "createSchemaFetcher", { enumerable: true, get: function () { return core_2.createSchemaFetcher; } });
Object.defineProperty(exports, "createServicesFetcher", { enumerable: true, get: function () { return core_2.createServicesFetcher; } });
function createHive(clientOrOptions) {
return (0, core_1.createHive)(Object.assign(Object.assign({}, clientOrOptions), { agent: Object.assign({ name: 'hive-client-envelop' }, clientOrOptions.agent) }));
}
function useHive(clientOrOptions) {
const hive = (0, core_1.isHiveClient)(clientOrOptions)
? clientOrOptions
: createHive(Object.assign(Object.assign({}, clientOrOptions), { agent: Object.assign({ name: 'hive-client-envelop' }, clientOrOptions.agent) }));
void hive.info();
if (hive[core_1.autoDisposeSymbol]) {
if (global.process) {
const signals = Array.isArray(hive[core_1.autoDisposeSymbol])
? hive[core_1.autoDisposeSymbol]
: ['SIGINT', 'SIGTERM'];
for (const signal of signals) {
process.once(signal, () => hive.dispose());
}
}
else {
console.error('It seems that GraphQL Hive is not being executed in Node.js. ' +
'Please attempt manual client disposal and use autoDispose: false option.');
}
}
return {
onSchemaChange({ schema }) {
hive.reportSchema({ schema });
},
onExecute({ args }) {
const complete = hive.collectUsage();
return {
onExecuteDone({ result }) {
if (!(0, core_1.isAsyncIterable)(result)) {
void complete(args, result);
return;
}
const errors = [];
return {
onNext(ctx) {
if (ctx.result.errors) {
errors.push(...ctx.result.errors);
}
},
onEnd() {
void complete(args, errors.length ? { errors } : {});
},
};
},
};
},
onSubscribe({ args }) {
hive.collectSubscriptionUsage({ args });
},
};
}
;