UNPKG

2.19 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var IO = require("socket.io");
4var fastify = require("fastify");
5var dotenv = require("dotenv");
6var module_1 = require("./module");
7function registerPlugins(server, plugins) {
8 plugins.forEach(function (plugin) {
9 server.register(plugin.handler, plugin.options);
10 });
11}
12function registerControllers(server, controllers) {
13 controllers.forEach(function (controller) {
14 server.register(controller.handler, { prefix: controller.path });
15 });
16}
17function registerRepositories(server, repositories) {
18 repositories.forEach(function (repository) {
19 server.register(repository.controller.handler, {
20 prefix: repository.controller.path
21 });
22 });
23}
24function registerModules(server, modules, wss) {
25 modules.forEach(function (module) {
26 var plugins = module.plugins, controllers = module.controllers, repositories = module.repositories;
27 if (wss) {
28 registerWebsockets(wss, repositories);
29 }
30 registerPlugins(server, plugins);
31 registerControllers(server, controllers);
32 registerRepositories(server, repositories);
33 });
34}
35function registerWebsockets(wss, repositories) {
36 repositories.forEach(function (repo) {
37 if (!repo.websocket) {
38 return;
39 }
40 wss.on("connection", function (socket) {
41 repo.model.findAll().then(function (all) {
42 socket.emit("" + repo.name, all);
43 });
44 });
45 });
46}
47function startServer(port, server) {
48 server.listen(port, function (error) {
49 if (error) {
50 server.log.error(error);
51 process.exit(1);
52 return;
53 }
54 server.log.info(" > Server running on PORT " + port);
55 return;
56 });
57}
58function bootstrap(_a) {
59 var modules = _a.modules;
60 dotenv.config();
61 var port = process.env.PORT || "3000";
62 var server = fastify();
63 var wss = IO(server.server);
64 modules = [module_1.DefaultModule].concat(modules);
65 registerModules(server, modules, wss);
66 return startServer(port, server);
67}
68exports.bootstrap = bootstrap;