UNPKG

@grpc.ts/fastify-server

Version:
88 lines (82 loc) 2.56 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var fp = require('fastify-plugin'); var core = require('@grpc.ts/core'); async function createServers(options) { if (!Array.isArray(options)) { options = [options]; } const servers = await Promise.allSettled(options.map(async ({ serverName = '', ...opts }) => { const serverObj = await core.createServer(opts); return { serverObj, serverName, }; })); return servers.reduce((result, settledServer) => { if (settledServer.status === 'fulfilled') { const { serverName, serverObj } = settledServer.value; result[serverName] = serverObj; } return result; }, {}); } let grpcServerList = {}; const getServer = (serverName = '') => { return grpcServerList[serverName]; }; const grpcServer = async (fastify, options) => { if (!fastify.hasDecorator('grpcServer')) { fastify.decorate('grpcServer', { getServer, }); } const list = await createServers(options); grpcServerList = { ...grpcServerList, ...list, }; fastify.addHook('onClose', onClose); function onClose() { Object.values(grpcServerList).forEach((grpcServer) => { grpcServer.server.forceShutdown(); }); } }; var index = fp(grpcServer, { fastify: '>=3', name: '@grpc.ts/fastify-server', }); Object.defineProperty(exports, "GrpcTimestamp", { enumerable: true, get: function () { return core.GrpcTimestamp; } }); Object.defineProperty(exports, "ServerCredentials", { enumerable: true, get: function () { return core.ServerCredentials; } }); Object.defineProperty(exports, "StatusBuilder", { enumerable: true, get: function () { return core.StatusBuilder; } }); 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, "createServer", { enumerable: true, get: function () { return core.createServer; } }); 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;