@volcanicminds/backend 0.6.3 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/index.js +332 -0
  2. package/dist/index.js.map +1 -0
  3. package/dist/lib/api/auth/controller/auth.js +337 -0
  4. package/dist/lib/api/auth/controller/auth.js.map +1 -0
  5. package/dist/lib/api/auth/routes.js +195 -0
  6. package/dist/lib/api/auth/routes.js.map +1 -0
  7. package/dist/lib/api/health/controller/health.js +8 -0
  8. package/dist/lib/api/health/controller/health.js.map +1 -0
  9. package/dist/lib/api/health/routes.js +26 -0
  10. package/dist/lib/api/health/routes.js.map +1 -0
  11. package/dist/lib/api/token/controller/token.js +116 -0
  12. package/dist/lib/api/token/controller/token.js.map +1 -0
  13. package/dist/lib/api/token/routes.js +152 -0
  14. package/dist/lib/api/token/routes.js.map +1 -0
  15. package/dist/lib/api/tool/controller/tool.js +25 -0
  16. package/dist/lib/api/tool/controller/tool.js.map +1 -0
  17. package/dist/lib/api/tool/routes.js +26 -0
  18. package/dist/lib/api/tool/routes.js.map +1 -0
  19. package/dist/lib/api/users/controller/user.js +14 -0
  20. package/dist/lib/api/users/controller/user.js.map +1 -0
  21. package/dist/lib/api/users/routes.js +65 -0
  22. package/dist/lib/api/users/routes.js.map +1 -0
  23. package/dist/lib/apollo/context.js +19 -0
  24. package/dist/lib/apollo/context.js.map +1 -0
  25. package/dist/lib/apollo/resolvers.js +9 -0
  26. package/dist/lib/apollo/resolvers.js.map +1 -0
  27. package/dist/lib/apollo/type-defs.js +9 -0
  28. package/dist/lib/apollo/type-defs.js.map +1 -0
  29. package/dist/lib/config/general.js +9 -0
  30. package/dist/lib/config/general.js.map +1 -0
  31. package/dist/lib/config/plugins.js +57 -0
  32. package/dist/lib/config/plugins.js.map +1 -0
  33. package/dist/lib/config/roles.js +19 -0
  34. package/dist/lib/config/roles.js.map +1 -0
  35. package/dist/lib/config/tracking.js +10 -0
  36. package/dist/lib/config/tracking.js.map +1 -0
  37. package/dist/lib/hooks/onError.js +15 -0
  38. package/dist/lib/hooks/onError.js.map +1 -0
  39. package/dist/lib/hooks/onRequest.js +71 -0
  40. package/dist/lib/hooks/onRequest.js.map +1 -0
  41. package/dist/lib/hooks/onResponse.js +25 -0
  42. package/dist/lib/hooks/onResponse.js.map +1 -0
  43. package/dist/lib/hooks/preHandler.js +39 -0
  44. package/dist/lib/hooks/preHandler.js.map +1 -0
  45. package/dist/lib/hooks/preSerialization.js +47 -0
  46. package/dist/lib/hooks/preSerialization.js.map +1 -0
  47. package/dist/lib/loader/general.js +29 -0
  48. package/dist/lib/loader/general.js.map +1 -0
  49. package/dist/lib/loader/hooks.js +46 -0
  50. package/dist/lib/loader/hooks.js.map +1 -0
  51. package/dist/lib/loader/plugins.js +24 -0
  52. package/dist/lib/loader/plugins.js.map +1 -0
  53. package/dist/lib/loader/roles.js +22 -0
  54. package/dist/lib/loader/roles.js.map +1 -0
  55. package/dist/lib/loader/router.js +181 -0
  56. package/dist/lib/loader/router.js.map +1 -0
  57. package/dist/lib/loader/schemas.js +34 -0
  58. package/dist/lib/loader/schemas.js.map +1 -0
  59. package/dist/lib/loader/tracking.js +70 -0
  60. package/dist/lib/loader/tracking.js.map +1 -0
  61. package/dist/lib/loader/translation.js +53 -0
  62. package/dist/lib/loader/translation.js.map +1 -0
  63. package/dist/lib/locales/en.json +12 -0
  64. package/dist/lib/locales/it.json +12 -0
  65. package/dist/lib/middleware/dispatchForgotPasswordLink.js +19 -0
  66. package/dist/lib/middleware/dispatchForgotPasswordLink.js.map +1 -0
  67. package/dist/lib/middleware/isAdmin.js +17 -0
  68. package/dist/lib/middleware/isAdmin.js.map +1 -0
  69. package/dist/lib/middleware/isAuthenticated.js +18 -0
  70. package/dist/lib/middleware/isAuthenticated.js.map +1 -0
  71. package/dist/lib/middleware/postAuth.js +19 -0
  72. package/dist/lib/middleware/postAuth.js.map +1 -0
  73. package/dist/lib/middleware/preAuth.js +17 -0
  74. package/dist/lib/middleware/preAuth.js.map +1 -0
  75. package/dist/lib/middleware/preForgotPasswordHandler.js +17 -0
  76. package/dist/lib/middleware/preForgotPasswordHandler.js.map +1 -0
  77. package/dist/lib/schemas/auth.js +101 -0
  78. package/dist/lib/schemas/auth.js.map +1 -0
  79. package/dist/lib/schemas/common.js +66 -0
  80. package/dist/lib/schemas/common.js.map +1 -0
  81. package/dist/lib/schemas/token.js +38 -0
  82. package/dist/lib/schemas/token.js.map +1 -0
  83. package/dist/lib/util/common.js +19 -0
  84. package/dist/lib/util/common.js.map +1 -0
  85. package/dist/lib/util/errors.js +19 -0
  86. package/dist/lib/util/errors.js.map +1 -0
  87. package/dist/lib/util/generate.js +10 -0
  88. package/dist/lib/util/generate.js.map +1 -0
  89. package/dist/lib/util/logger.js +52 -0
  90. package/dist/lib/util/logger.js.map +1 -0
  91. package/dist/lib/util/mark.js +25 -0
  92. package/dist/lib/util/mark.js.map +1 -0
  93. package/dist/lib/util/path.js +12 -0
  94. package/dist/lib/util/path.js.map +1 -0
  95. package/dist/lib/util/regexp.js +15 -0
  96. package/dist/lib/util/regexp.js.map +1 -0
  97. package/dist/lib/util/tracker.js +123 -0
  98. package/dist/lib/util/tracker.js.map +1 -0
  99. package/dist/lib/util/yn.js +17 -0
  100. package/dist/lib/util/yn.js.map +1 -0
  101. package/dist/nodemon.json +7 -0
  102. package/dist/package.json +101 -0
  103. package/dist/server.js +5 -0
  104. package/dist/server.js.map +1 -0
  105. package/dist/tsconfig.json +32 -0
  106. package/lib/loader/router.ts +10 -2
  107. package/package.json +2 -2
package/dist/index.js ADDED
@@ -0,0 +1,332 @@
1
+ 'use strict';
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.TranslatedError = exports.start = exports.yn = void 0;
39
+ const dotenv_1 = __importDefault(require("dotenv"));
40
+ dotenv_1.default.config();
41
+ const yn_1 = __importDefault(require("./lib/util/yn"));
42
+ exports.yn = yn_1.default;
43
+ const logger_1 = __importDefault(require("./lib/util/logger"));
44
+ const mark = __importStar(require("./lib/util/mark"));
45
+ const errors_1 = require("./lib/util/errors");
46
+ Object.defineProperty(exports, "TranslatedError", { enumerable: true, get: function () { return errors_1.TranslatedError; } });
47
+ const loaderPlugins = __importStar(require("./lib/loader/plugins"));
48
+ const loaderRoles = __importStar(require("./lib/loader/roles"));
49
+ const loaderRouter = __importStar(require("./lib/loader/router"));
50
+ const loaderHooks = __importStar(require("./lib/loader/hooks"));
51
+ const loaderSchemas = __importStar(require("./lib/loader/schemas"));
52
+ const loaderTracking = __importStar(require("./lib/loader/tracking"));
53
+ const loaderTranslation = __importStar(require("./lib/loader/translation"));
54
+ const loaderConfig = __importStar(require("./lib/loader/general"));
55
+ const fastify_1 = __importDefault(require("fastify"));
56
+ const jwt_1 = __importDefault(require("@fastify/jwt"));
57
+ const swagger_1 = __importDefault(require("@fastify/swagger"));
58
+ const swagger_ui_1 = __importDefault(require("@fastify/swagger-ui"));
59
+ const cors_1 = __importDefault(require("@fastify/cors"));
60
+ const helmet_1 = __importDefault(require("@fastify/helmet"));
61
+ const compress_1 = __importDefault(require("@fastify/compress"));
62
+ const rate_limit_1 = __importDefault(require("@fastify/rate-limit"));
63
+ const server_1 = require("@apollo/server");
64
+ const fastify_2 = __importStar(require("@as-integrations/fastify"));
65
+ const context_1 = require("./lib/apollo/context");
66
+ const resolvers_1 = __importDefault(require("./lib/apollo/resolvers"));
67
+ const type_defs_1 = __importDefault(require("./lib/apollo/type-defs"));
68
+ global.log = logger_1.default;
69
+ function attachApollo(server) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ log.info('Attach ApolloServer to Fastify');
72
+ const apollo = new server_1.ApolloServer({
73
+ typeDefs: type_defs_1.default,
74
+ resolvers: resolvers_1.default,
75
+ plugins: [(0, fastify_2.fastifyApolloDrainPlugin)(server)]
76
+ });
77
+ yield apollo.start();
78
+ return apollo;
79
+ });
80
+ }
81
+ function addApolloRouting(server, apollo) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ if (apollo) {
84
+ log.trace('Add graphql routes');
85
+ yield server.register((0, fastify_2.default)(apollo), {
86
+ context: context_1.myContextFunction
87
+ });
88
+ }
89
+ });
90
+ }
91
+ function addFastifyRouting(server) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ log.trace('Add server routes');
94
+ loaderHooks.apply(server);
95
+ loaderSchemas.apply(server);
96
+ const routes = loaderRouter.load();
97
+ routes && loaderRouter.apply(server, routes);
98
+ });
99
+ }
100
+ function addFastifySwagger(server) {
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ const { SWAGGER, SWAGGER_TITLE, SWAGGER_DESCRIPTION, SWAGGER_VERSION, SWAGGER_PREFIX_URL, SWAGGER_HOST } = process.env;
103
+ const loadSwagger = (0, yn_1.default)(SWAGGER, false);
104
+ if (loadSwagger) {
105
+ log.trace('Add swagger plugin');
106
+ const fs = require('fs');
107
+ const contents = fs.readFileSync('logo-dark.png', { encoding: 'base64' });
108
+ yield server.register(swagger_1.default, {
109
+ swagger: {
110
+ info: {
111
+ title: SWAGGER_TITLE || 'Volcanic API Documentation',
112
+ description: SWAGGER_DESCRIPTION || 'List of available APIs and schemes to use',
113
+ version: SWAGGER_VERSION || '0.0.1'
114
+ },
115
+ host: SWAGGER_HOST || 'localhost:2230',
116
+ schemes: ['https', 'http'],
117
+ consumes: ['application/json'],
118
+ produces: ['application/json']
119
+ },
120
+ openapi: {
121
+ info: {
122
+ title: SWAGGER_TITLE || 'Volcanic API Documentation',
123
+ description: SWAGGER_DESCRIPTION || 'List of available APIs and schemes to use',
124
+ version: SWAGGER_VERSION || '0.0.1'
125
+ },
126
+ servers: [
127
+ {
128
+ url: SWAGGER_HOST || 'http://localhost:2230'
129
+ }
130
+ ],
131
+ components: {
132
+ securitySchemes: {
133
+ Bearer: {
134
+ type: 'http',
135
+ scheme: 'bearer'
136
+ }
137
+ }
138
+ }
139
+ }
140
+ });
141
+ yield server.register(swagger_ui_1.default, {
142
+ routePrefix: SWAGGER_PREFIX_URL || '/documentation',
143
+ uiConfig: {
144
+ docExpansion: 'list',
145
+ deepLinking: true,
146
+ defaultModelsExpandDepth: 1
147
+ },
148
+ logo: {
149
+ type: 'image/png',
150
+ content: Buffer.from(contents, 'base64')
151
+ },
152
+ theme: {
153
+ title: SWAGGER_TITLE
154
+ }
155
+ });
156
+ }
157
+ });
158
+ }
159
+ const start = (decorators) => __awaiter(void 0, void 0, void 0, function* () {
160
+ const begin = new Date().getTime();
161
+ mark.print(logger_1.default);
162
+ global.config = loaderConfig.load();
163
+ global.roles = loaderRoles.load();
164
+ global.t = loaderTranslation.load();
165
+ const { tracking, trackingConfig } = loaderTracking.load();
166
+ global.tracking = tracking;
167
+ global.trackingConfig = trackingConfig;
168
+ const opts = (0, yn_1.default)(process.env.LOG_FASTIFY, false) ? { logger: { development: logger_1.default } } : { logger: true };
169
+ const server = (0, fastify_1.default)();
170
+ const { HOST: host = '0.0.0.0', PORT: port = '2230', GRAPHQL } = process.env;
171
+ const { JWT_SECRET = '', JWT_EXPIRES_IN = '15d', JWT_REFRESH = 'true', JWT_REFRESH_SECRET = '', JWT_REFRESH_EXPIRES_IN = '180d' } = process.env;
172
+ const loadRefreshJWT = (0, yn_1.default)(JWT_REFRESH, true);
173
+ const loadApollo = (0, yn_1.default)(GRAPHQL, false);
174
+ const plugins = loaderPlugins.load();
175
+ !loadApollo && (plugins === null || plugins === void 0 ? void 0 : plugins.helmet) && (yield server.register(helmet_1.default));
176
+ (plugins === null || plugins === void 0 ? void 0 : plugins.rateLimit) && (yield server.register(rate_limit_1.default));
177
+ (plugins === null || plugins === void 0 ? void 0 : plugins.cors) && (yield server.register(cors_1.default, plugins.cors || {}));
178
+ (plugins === null || plugins === void 0 ? void 0 : plugins.compress) && (yield server.register(compress_1.default));
179
+ log.t && log.trace(`Add JWT - expiresIn: ${JWT_EXPIRES_IN}`);
180
+ yield server.register(jwt_1.default, {
181
+ secret: JWT_SECRET,
182
+ sign: { expiresIn: JWT_EXPIRES_IN }
183
+ });
184
+ if (loadRefreshJWT) {
185
+ yield server.register(jwt_1.default, {
186
+ namespace: 'refreshToken',
187
+ secret: JWT_REFRESH_SECRET || JWT_SECRET,
188
+ sign: { expiresIn: JWT_REFRESH_EXPIRES_IN }
189
+ });
190
+ }
191
+ const apollo = loadApollo ? yield attachApollo(server) : null;
192
+ yield addFastifySwagger(server);
193
+ yield addApolloRouting(server, apollo);
194
+ yield addFastifyRouting(server);
195
+ decorators = Object.assign({ userManager: {
196
+ isImplemented() {
197
+ return false;
198
+ },
199
+ isValidUser(data) {
200
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
201
+ },
202
+ createUser(data) {
203
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
204
+ },
205
+ resetExternalId(data) {
206
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
207
+ },
208
+ updateUserById(id, user) {
209
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
210
+ },
211
+ retrieveUserById(id) {
212
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
213
+ },
214
+ retrieveUserByEmail(email) {
215
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
216
+ },
217
+ retrieveUserByConfirmationToken(code) {
218
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
219
+ },
220
+ retrieveUserByResetPasswordToken(code) {
221
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
222
+ },
223
+ retrieveUserByUsername(username) {
224
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
225
+ },
226
+ retrieveUserByExternalId(externalId) {
227
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
228
+ },
229
+ retrieveUserByPassword(email, password) {
230
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
231
+ },
232
+ changePassword(email, password, oldPassword) {
233
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
234
+ },
235
+ forgotPassword(email) {
236
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
237
+ },
238
+ userConfirmation(user) {
239
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
240
+ },
241
+ resetPassword(user, password) {
242
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
243
+ },
244
+ blockUserById(id, reason) {
245
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
246
+ },
247
+ unblockUserById(data) {
248
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
249
+ },
250
+ countQuery(data) {
251
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
252
+ },
253
+ findQuery(data) {
254
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
255
+ },
256
+ disableUserById(id) {
257
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
258
+ }
259
+ }, tokenManager: {
260
+ isImplemented() {
261
+ return false;
262
+ },
263
+ isValidToken(data) {
264
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
265
+ },
266
+ createToken(data) {
267
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
268
+ },
269
+ resetExternalId(id) {
270
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
271
+ },
272
+ updateTokenById(id, token) {
273
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
274
+ },
275
+ retrieveTokenById(id) {
276
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
277
+ },
278
+ retrieveTokenByExternalId(id) {
279
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
280
+ },
281
+ blockTokenById(id, reason) {
282
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
283
+ },
284
+ unblockTokenById(id) {
285
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
286
+ },
287
+ countQuery(data) {
288
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
289
+ },
290
+ findQuery(data) {
291
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
292
+ },
293
+ removeTokenById(id) {
294
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
295
+ }
296
+ }, dataBaseManager: {
297
+ isImplemented() {
298
+ return false;
299
+ },
300
+ synchronizeSchemas() {
301
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
302
+ },
303
+ retrieveBy(entityName, entityId) {
304
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
305
+ },
306
+ addChange(entityName, entityId, status, userId, contents, changeEntity) {
307
+ throw new Error('Not implemented. You need to define the specific decorator (manager).');
308
+ }
309
+ } }, decorators);
310
+ yield Promise.all(Object.keys(decorators || {}).map((key) => __awaiter(void 0, void 0, void 0, function* () {
311
+ yield server.decorate(key, decorators[key]);
312
+ })));
313
+ yield server
314
+ .listen({
315
+ port: Number(port),
316
+ host: host
317
+ })
318
+ .then((address) => {
319
+ const elapsed = (new Date().getTime() - begin) / 100;
320
+ log.info(`All stuff loaded in ${elapsed} sec`);
321
+ log.info(`Server ready 🚀 at ${address}`);
322
+ const loadSwagger = (0, yn_1.default)(process.env.SWAGGER, false);
323
+ loadSwagger && log.info(`Swagger ready ✨ at ${address}${process.env.SWAGGER_PREFIX_URL || '/documentation'}`);
324
+ });
325
+ global.server = server;
326
+ return server;
327
+ });
328
+ exports.start = start;
329
+ module.exports = { yn: yn_1.default, start, TranslatedError: errors_1.TranslatedError };
330
+ module.exports.server = { yn: yn_1.default, start, TranslatedError: errors_1.TranslatedError };
331
+ module.exports.default = { yn: yn_1.default, start, TranslatedError: errors_1.TranslatedError };
332
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}