UNPKG

@grpc.ts/fastify-client

Version:
88 lines (82 loc) 2.55 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var fp = require('fastify-plugin'); var core = require('@grpc.ts/core'); async function createClients(options) { if (!Array.isArray(options)) { options = [options]; } const clients = await Promise.allSettled(options.map(async ({ clientName = '', ...opts }) => { const client = await core.createClient(opts); return { client, clientName, }; })); return clients.reduce((result, settledServer) => { if (settledServer.status === 'fulfilled') { const { client, clientName } = settledServer.value; result[clientName] = client; } return result; }, {}); } let grpcClientList = {}; const getService = (serviceName, options = {}) => { const { clientName = '', packageName = '' } = options; const client = grpcClientList[clientName]; return client.getService(serviceName, { packageName, }); }; const grpcClient = async (fastify, options) => { if (!fastify.hasDecorator('grpcClient')) { fastify.decorate('grpcClient', { getService, }); } const list = await createClients(options); grpcClientList = { ...grpcClientList, ...list, }; fastify.addHook('onClose', onClose); function onClose() { Object.values(grpcClientList).forEach((wrapper) => { wrapper.close(); }); } }; var index = fp(grpcClient, { fastify: '>=3', name: '@grpc.ts/fastify-client', }); Object.defineProperty(exports, "ChannelCredentials", { enumerable: true, get: function () { return core.ChannelCredentials; } }); Object.defineProperty(exports, "GrpcTimestamp", { enumerable: true, get: function () { return core.GrpcTimestamp; } }); Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return core.createClient; } }); Object.defineProperty(exports, "createMetadata", { enumerable: true, get: function () { return core.createMetadata; } }); Object.defineProperty(exports, "createSecureContext", { enumerable: true, get: function () { return core.createSecureContext; } }); Object.defineProperty(exports, "dateToGrpcTimestamp", { enumerable: true, get: function () { return core.dateToGrpcTimestamp; } }); Object.defineProperty(exports, "grpcTimestampToDate", { enumerable: true, get: function () { return core.grpcTimestampToDate; } }); exports.default = index;