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