@grpc.ts/fastify-client
Version:
Fastify package for client
88 lines (82 loc) • 2.55 kB
JavaScript
;
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;