@xitkov/core 2.4.9

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 (98) hide show
  1. package/README.md +256 -0
  2. package/lib/app.d.ts +75 -0
  3. package/lib/app.js +143 -0
  4. package/lib/app.js.map +1 -0
  5. package/lib/errors/index.d.ts +25 -0
  6. package/lib/errors/index.js +41 -0
  7. package/lib/errors/index.js.map +1 -0
  8. package/lib/hooks/business.d.ts +1 -0
  9. package/lib/hooks/business.js +26 -0
  10. package/lib/hooks/business.js.map +1 -0
  11. package/lib/hooks/hooks.d.ts +4 -0
  12. package/lib/hooks/hooks.js +66 -0
  13. package/lib/hooks/hooks.js.map +1 -0
  14. package/lib/hooks/index.d.ts +3 -0
  15. package/lib/hooks/index.js +20 -0
  16. package/lib/hooks/index.js.map +1 -0
  17. package/lib/hooks/types.d.ts +9 -0
  18. package/lib/hooks/types.js +3 -0
  19. package/lib/hooks/types.js.map +1 -0
  20. package/lib/index.d.ts +17 -0
  21. package/lib/index.js +23 -0
  22. package/lib/index.js.map +1 -0
  23. package/lib/libs/cache.d.ts +7 -0
  24. package/lib/libs/cache.js +22 -0
  25. package/lib/libs/cache.js.map +1 -0
  26. package/lib/libs/index.d.ts +5 -0
  27. package/lib/libs/index.js +22 -0
  28. package/lib/libs/index.js.map +1 -0
  29. package/lib/libs/logs.d.ts +5 -0
  30. package/lib/libs/logs.js +26 -0
  31. package/lib/libs/logs.js.map +1 -0
  32. package/lib/libs/queue.d.ts +21 -0
  33. package/lib/libs/queue.js +49 -0
  34. package/lib/libs/queue.js.map +1 -0
  35. package/lib/libs/socket.d.ts +8 -0
  36. package/lib/libs/socket.js +26 -0
  37. package/lib/libs/socket.js.map +1 -0
  38. package/lib/libs/utils.d.ts +8 -0
  39. package/lib/libs/utils.js +28 -0
  40. package/lib/libs/utils.js.map +1 -0
  41. package/lib/logger/index.d.ts +11 -0
  42. package/lib/logger/index.js +50 -0
  43. package/lib/logger/index.js.map +1 -0
  44. package/lib/services/auth.d.ts +19 -0
  45. package/lib/services/auth.js +41 -0
  46. package/lib/services/auth.js.map +1 -0
  47. package/lib/services/databases/index.d.ts +3 -0
  48. package/lib/services/databases/index.js +20 -0
  49. package/lib/services/databases/index.js.map +1 -0
  50. package/lib/services/databases/mongo-service.d.ts +26 -0
  51. package/lib/services/databases/mongo-service.js +55 -0
  52. package/lib/services/databases/mongo-service.js.map +1 -0
  53. package/lib/services/databases/postgres-service.d.ts +28 -0
  54. package/lib/services/databases/postgres-service.js +126 -0
  55. package/lib/services/databases/postgres-service.js.map +1 -0
  56. package/lib/services/databases/types.d.ts +26 -0
  57. package/lib/services/databases/types.js +3 -0
  58. package/lib/services/databases/types.js.map +1 -0
  59. package/lib/services/index.d.ts +6 -0
  60. package/lib/services/index.js +23 -0
  61. package/lib/services/index.js.map +1 -0
  62. package/lib/services/micro-service.d.ts +60 -0
  63. package/lib/services/micro-service.js +146 -0
  64. package/lib/services/micro-service.js.map +1 -0
  65. package/lib/services/register-micro-services.d.ts +1 -0
  66. package/lib/services/register-micro-services.js +41 -0
  67. package/lib/services/register-micro-services.js.map +1 -0
  68. package/lib/services/register-services.d.ts +5 -0
  69. package/lib/services/register-services.js +272 -0
  70. package/lib/services/register-services.js.map +1 -0
  71. package/lib/services/service.d.ts +46 -0
  72. package/lib/services/service.js +63 -0
  73. package/lib/services/service.js.map +1 -0
  74. package/package.json +49 -0
  75. package/src/app.ts +182 -0
  76. package/src/errors/index.ts +37 -0
  77. package/src/hooks/business.ts +23 -0
  78. package/src/hooks/hooks.ts +60 -0
  79. package/src/hooks/index.ts +3 -0
  80. package/src/hooks/types.ts +9 -0
  81. package/src/index.ts +18 -0
  82. package/src/libs/cache.ts +25 -0
  83. package/src/libs/index.ts +5 -0
  84. package/src/libs/logs.ts +21 -0
  85. package/src/libs/queue.ts +48 -0
  86. package/src/libs/socket.ts +28 -0
  87. package/src/libs/utils.ts +28 -0
  88. package/src/logger/index.ts +49 -0
  89. package/src/services/auth.ts +48 -0
  90. package/src/services/databases/index.ts +3 -0
  91. package/src/services/databases/mongo-service.ts +75 -0
  92. package/src/services/databases/postgres-service.ts +149 -0
  93. package/src/services/databases/types.ts +29 -0
  94. package/src/services/index.ts +6 -0
  95. package/src/services/micro-service.ts +188 -0
  96. package/src/services/register-micro-services.ts +37 -0
  97. package/src/services/register-services.ts +268 -0
  98. package/src/services/service.ts +118 -0
@@ -0,0 +1,20 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./hooks"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ __exportStar(require("./business"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,0CAAuB;AACvB,6CAA0B"}
@@ -0,0 +1,9 @@
1
+ export interface HooksMethods {
2
+ readonly all?: Function[];
3
+ readonly find: Function[];
4
+ readonly get: Function[];
5
+ readonly create: Function[];
6
+ readonly patch: Function[];
7
+ readonly remove: Function[];
8
+ readonly update: Function[];
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":""}
package/lib/index.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ export * from './services';
2
+ export * from './errors';
3
+ export * from './hooks';
4
+ export * from './libs';
5
+ export * from './logger';
6
+ export * from './app';
7
+ export interface ServiceTypes {
8
+ [service: string]: any;
9
+ }
10
+ export interface MicroServiceNames {
11
+ [microService: string]: {
12
+ [service: string]: any;
13
+ };
14
+ }
15
+ export interface SubMicroServiceNames {
16
+ [service: string]: any;
17
+ }
package/lib/index.js ADDED
@@ -0,0 +1,23 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./services"), exports);
18
+ __exportStar(require("./errors"), exports);
19
+ __exportStar(require("./hooks"), exports);
20
+ __exportStar(require("./libs"), exports);
21
+ __exportStar(require("./logger"), exports);
22
+ __exportStar(require("./app"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,2CAAyB;AACzB,0CAAwB;AACxB,yCAAuB;AACvB,2CAAyB;AACzB,wCAAsB"}
@@ -0,0 +1,7 @@
1
+ import { Redis } from 'ioredis';
2
+ export declare class Cache {
3
+ static client: Redis;
4
+ static set(key: string, value: any, expirationInSeconds?: number): Promise<void>;
5
+ static get(key: string): Promise<any>;
6
+ static delete(key: string): Promise<void>;
7
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Cache = void 0;
4
+ class Cache {
5
+ static async set(key, value, expirationInSeconds = 600) {
6
+ await Cache.client.set(key, JSON.stringify(value));
7
+ await Cache.client.expire(key, expirationInSeconds);
8
+ }
9
+ static async get(key) {
10
+ const cacheData = await Cache.client.get(key);
11
+ if (!cacheData) {
12
+ return null;
13
+ }
14
+ const data = JSON.parse(cacheData);
15
+ return data;
16
+ }
17
+ static async delete(key) {
18
+ await Cache.client.del(key);
19
+ }
20
+ }
21
+ exports.Cache = Cache;
22
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/libs/cache.ts"],"names":[],"mappings":";;;AAEA,MAAa,KAAK;IAEhB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,mBAAmB,GAAG,GAAG;QACjE,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAW;QAC1B,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,IAAI,CAAC;SACb;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAW;QAC7B,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;CAEF;AArBD,sBAqBC"}
@@ -0,0 +1,5 @@
1
+ export * from './queue';
2
+ export * from './socket';
3
+ export * from './logs';
4
+ export * from './utils';
5
+ export * from './cache';
@@ -0,0 +1,22 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./queue"), exports);
18
+ __exportStar(require("./socket"), exports);
19
+ __exportStar(require("./logs"), exports);
20
+ __exportStar(require("./utils"), exports);
21
+ __exportStar(require("./cache"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/libs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB;AACxB,0CAAwB"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="express" />
2
+ import expressWinston from 'express-winston';
3
+ export declare class InternalLogs {
4
+ static middleware(options?: Partial<expressWinston.LoggerOptions>): import("express").Handler;
5
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InternalLogs = void 0;
7
+ const winston_1 = __importDefault(require("winston"));
8
+ const express_winston_1 = __importDefault(require("express-winston"));
9
+ class InternalLogs {
10
+ static middleware(options) {
11
+ return express_winston_1.default.logger({
12
+ transports: [
13
+ new winston_1.default.transports.Console()
14
+ ],
15
+ format: winston_1.default.format.combine(winston_1.default.format.json()),
16
+ meta: true,
17
+ msg: "HTTP {{req.method}} {{req.url}}",
18
+ expressFormat: true,
19
+ colorize: false,
20
+ ignoreRoute: function (req, res) { return false; },
21
+ ...(options !== null && options !== void 0 ? options : {})
22
+ });
23
+ }
24
+ }
25
+ exports.InternalLogs = InternalLogs;
26
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/libs/logs.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAC9B,sEAA6C;AAE7C,MAAa,YAAY;IACrB,MAAM,CAAC,UAAU,CAAC,OAA+C;QAC7D,OAAO,yBAAc,CAAC,MAAM,CAAC;YACzB,UAAU,EAAE;gBACV,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,EAAE;aACjC;YACD,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACtB;YACD,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,iCAAiC;YACtC,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,UAAU,GAAG,EAAE,GAAG,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC;YAClD,GAAG,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;SACrB,CAAC,CAAA;IACN,CAAC;CACJ;AAjBD,oCAiBC"}
@@ -0,0 +1,21 @@
1
+ import BullQueue from 'bull';
2
+ export declare class Queue<T = any> {
3
+ readonly queue: BullQueue.Queue<T>;
4
+ private readonly queueName;
5
+ constructor(name: string, redisUrl: string, opts?: BullQueue.QueueOptions);
6
+ add(data: T, opts?: BullQueue.JobOptions): Promise<BullQueue.Job<T>>;
7
+ get consume(): {
8
+ (callback: BullQueue.ProcessCallbackFunction<T>): Promise<void>;
9
+ (callback: BullQueue.ProcessPromiseFunction<T>): Promise<void>;
10
+ (callback: string): Promise<void>;
11
+ (concurrency: number, callback: BullQueue.ProcessCallbackFunction<T>): Promise<void>;
12
+ (concurrency: number, callback: BullQueue.ProcessPromiseFunction<T>): Promise<void>;
13
+ (concurrency: number, callback: string): Promise<void>;
14
+ (name: string, callback: BullQueue.ProcessCallbackFunction<T>): Promise<void>;
15
+ (name: string, callback: BullQueue.ProcessPromiseFunction<T>): Promise<void>;
16
+ (name: string, callback: string): Promise<void>;
17
+ (name: string, concurrency: number, callback: BullQueue.ProcessCallbackFunction<T>): Promise<void>;
18
+ (name: string, concurrency: number, callback: BullQueue.ProcessPromiseFunction<T>): Promise<void>;
19
+ (name: string, concurrency: number, callback: string): Promise<void>;
20
+ };
21
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Queue = void 0;
7
+ const bull_1 = __importDefault(require("bull"));
8
+ const logger_1 = require("../logger");
9
+ class Queue {
10
+ constructor(name, redisUrl, opts = {}) {
11
+ var _a;
12
+ const defaultOpts = {
13
+ limiter: {
14
+ duration: 50000,
15
+ max: 30,
16
+ },
17
+ ...opts
18
+ };
19
+ const env = (_a = process.env.ENVIRONMENT) !== null && _a !== void 0 ? _a : 'dev';
20
+ let queueName = `${name}_${env}`;
21
+ if (/prod/gi.test(env) && !/pre/gi.test(env)) {
22
+ queueName = name;
23
+ }
24
+ this.queue = new bull_1.default(queueName, redisUrl, defaultOpts);
25
+ this.queueName = queueName;
26
+ this.queue.on('completed', function (job, result) {
27
+ const payload = { job, result };
28
+ logger_1.Logger.info(`Completed ${queueName}: `, payload);
29
+ });
30
+ this.queue.on('failed', async function (job, error) {
31
+ const payload = { job, error };
32
+ logger_1.Logger.info(`Failed ${queueName}: `, payload);
33
+ });
34
+ }
35
+ async add(data, opts) {
36
+ const options = {
37
+ removeOnComplete: true,
38
+ removeOnFail: true,
39
+ attempts: 1,
40
+ ...(opts !== null && opts !== void 0 ? opts : {})
41
+ };
42
+ return this.queue.add(data, options);
43
+ }
44
+ get consume() {
45
+ return this.queue.process;
46
+ }
47
+ }
48
+ exports.Queue = Queue;
49
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/libs/queue.ts"],"names":[],"mappings":";;;;;;AAAA,gDAA6B;AAC7B,sCAAmC;AAEnC,MAAa,KAAK;IAIhB,YAAY,IAAY,EAAE,QAAgB,EAAE,OAA+B,EAAE;;QAC3E,MAAM,WAAW,GAA2B;YAC1C,OAAO,EAAE;gBACP,QAAQ,EAAE,KAAK;gBACf,GAAG,EAAE,EAAE;aACR;YACD,GAAG,IAAI;SACR,CAAA;QACD,MAAM,GAAG,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,WAAW,mCAAI,KAAK,CAAC;QAC7C,IAAI,SAAS,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAA;QAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC5C,SAAS,GAAG,IAAI,CAAA;SACjB;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,cAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAE1B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,GAAG,EAAE,MAAM;YAC9C,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;YAC/B,eAAM,CAAC,IAAI,CAAC,aAAa,SAAS,IAAI,EAAE,OAAO,CAAC,CAAA;QAClD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,WAAW,GAAG,EAAE,KAAK;YAChD,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;YAC9B,eAAM,CAAC,IAAI,CAAC,UAAU,SAAS,IAAI,EAAE,OAAO,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAO,EAAE,IAA2B;QAC5C,MAAM,OAAO,GAAyB;YACpC,gBAAgB,EAAE,IAAI;YACtB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC;SAChB,CAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;CACF;AA5CD,sBA4CC"}
@@ -0,0 +1,8 @@
1
+ import type { DefaultEventsMap } from "socket.io/dist/typed-events";
2
+ import { Server, Socket as SocketIO } from "socket.io";
3
+ export declare class Socket {
4
+ static io: Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>;
5
+ static emit(eventName: string, data: any): boolean;
6
+ static on(eventName: string, cb: (...args: any[]) => void): Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>;
7
+ static client(cb: (socket: SocketIO<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>) => void, debug?: boolean): void;
8
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Socket = void 0;
4
+ const __1 = require("..");
5
+ class Socket {
6
+ static emit(eventName, data) {
7
+ return Socket.io.emit(eventName, data);
8
+ }
9
+ static on(eventName, cb) {
10
+ return Socket.io.on(eventName, cb);
11
+ }
12
+ static client(cb, debug = false) {
13
+ Socket.io.on('connection', function (socket) {
14
+ if (debug) {
15
+ __1.Logger.debug('Client Connected', socket.id);
16
+ }
17
+ cb(socket);
18
+ // Whenever someone disconnects this piece of code executed
19
+ socket.on('disconnect', function () {
20
+ __1.Logger.debug('Client Disconnected', socket.id);
21
+ });
22
+ });
23
+ }
24
+ }
25
+ exports.Socket = Socket;
26
+ //# sourceMappingURL=socket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/libs/socket.ts"],"names":[],"mappings":";;;AAEA,0BAA4B;AAE5B,MAAa,MAAM;IAGf,MAAM,CAAC,IAAI,CAAC,SAAiB,EAAE,IAAS;QACpC,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,SAAiB,EAAE,EAA4B;QACrD,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,EAAyF,EAAE,KAAK,GAAG,KAAK;QAClH,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,UAAS,MAAM;YACtC,IAAI,KAAK,EAAE;gBACP,UAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;aAC/C;YACD,EAAE,CAAC,MAAM,CAAC,CAAC;YACX,2DAA2D;YAC3D,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE;gBACpB,UAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAvBD,wBAuBC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Function to slice an array given a limit and offset
3
+ * @param array input array
4
+ * @param limit how many records to return
5
+ * @param offset offset to discard elements
6
+ * @returns sliced array or empty if input is null or has length = 0 or even if the params (limit/offset) exceeds the array length
7
+ */
8
+ export declare function limitOffset<T>(array: T[], limit: string, offset: string): T[];
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.limitOffset = void 0;
4
+ /**
5
+ * Function to slice an array given a limit and offset
6
+ * @param array input array
7
+ * @param limit how many records to return
8
+ * @param offset offset to discard elements
9
+ * @returns sliced array or empty if input is null or has length = 0 or even if the params (limit/offset) exceeds the array length
10
+ */
11
+ function limitOffset(array, limit, offset) {
12
+ if (!array)
13
+ return [];
14
+ const $limit = parseInt(limit, 10);
15
+ const $offset = parseInt(offset, 10);
16
+ const length = array.length;
17
+ if (!length) {
18
+ return [];
19
+ }
20
+ if ($offset > length - 1) {
21
+ return [];
22
+ }
23
+ const start = Math.min(length - 1, $offset);
24
+ const end = Math.min(length, $offset + $limit);
25
+ return array.slice(start, end);
26
+ }
27
+ exports.limitOffset = limitOffset;
28
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/libs/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,SAAgB,WAAW,CAAI,KAAU,EAAE,KAAa,EAAE,MAAc;IACpE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,EAAE,CAAC;KACX;IACD,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE;QACxB,OAAO,EAAE,CAAC;KACX;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAE/C,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAnBH,kCAmBG"}
@@ -0,0 +1,11 @@
1
+ import winston from 'winston';
2
+ export type Level = "error" | "warn" | "info" | "http" | "verbose" | "debug" | "silly";
3
+ export declare class Logger {
4
+ private static isLocalEnv;
5
+ static readonly instance: winston.Logger;
6
+ static info(message: string, payload?: any): void;
7
+ static error(message: string, error: any): void;
8
+ static warn(message: string, data: any): void;
9
+ static debug(message: string, data: any): void;
10
+ static enableLogger(): void;
11
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Logger = void 0;
7
+ const winston_1 = __importDefault(require("winston"));
8
+ class Logger {
9
+ static info(message, payload = {}) {
10
+ if (Logger.isLocalEnv) {
11
+ console.info(message, payload);
12
+ return;
13
+ }
14
+ Logger.instance.info(message, payload);
15
+ }
16
+ static error(message, error) {
17
+ if (Logger.isLocalEnv) {
18
+ console.error(message, error);
19
+ return;
20
+ }
21
+ Logger.instance.error(message, error);
22
+ }
23
+ static warn(message, data) {
24
+ if (Logger.isLocalEnv) {
25
+ console.warn(message, data);
26
+ return;
27
+ }
28
+ Logger.instance.warn(message, data);
29
+ }
30
+ static debug(message, data) {
31
+ if (Logger.isLocalEnv) {
32
+ console.debug(message, data);
33
+ return;
34
+ }
35
+ Logger.instance.debug(message, data);
36
+ }
37
+ static enableLogger() {
38
+ Logger.isLocalEnv = false;
39
+ }
40
+ }
41
+ exports.Logger = Logger;
42
+ Logger.isLocalEnv = process.env.NODE_ENV === "local";
43
+ Logger.instance = winston_1.default.createLogger({
44
+ transports: [
45
+ new winston_1.default.transports.Console(),
46
+ ],
47
+ format: winston_1.default.format.combine(winston_1.default.format.json()),
48
+ exitOnError: false,
49
+ });
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAI9B,MAAa,MAAM;IAYjB,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,UAAe,EAAE;QAC5C,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC9B,OAAM;SACP;QACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,KAAU;QACtC,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAC7B,OAAM;SACP;QACD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,IAAS;QACpC,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC3B,OAAM;SACP;QACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,IAAS;QACrC,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC5B,OAAM;SACP;QACD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,MAAM,CAAC,UAAU,GAAG,KAAK,CAAA;IAC3B,CAAC;;AA3CH,wBA4CC;AA3CgB,iBAAU,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAA;AAC5C,eAAQ,GAAG,iBAAO,CAAC,YAAY,CAAC;IAC9C,UAAU,EAAE;QACV,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,EAAE;KACjC;IACD,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACtB;IACD,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { AxiosInstance, AxiosRequestConfig } from 'axios';
2
+ export type AuthServiceQuery = {
3
+ [key: string]: any;
4
+ };
5
+ export interface InternalAuthServiceMethods {
6
+ readonly request: AxiosInstance;
7
+ readonly baseURL: string;
8
+ }
9
+ export interface InternalAuthServiceOptions {
10
+ axiosConfig?: AxiosRequestConfig;
11
+ baseURL: string;
12
+ }
13
+ export declare class AuthService implements InternalAuthServiceMethods {
14
+ readonly request: AxiosInstance;
15
+ readonly baseURL: string;
16
+ constructor({ axiosConfig, baseURL }: InternalAuthServiceOptions);
17
+ throwError(err: any): never;
18
+ verify<T = any>(query?: AuthServiceQuery, config?: AxiosRequestConfig): Promise<T>;
19
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AuthService = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const errors_1 = require("../errors");
9
+ class AuthService {
10
+ constructor({ axiosConfig, baseURL }) {
11
+ this.request = axios_1.default.create({ ...(axiosConfig !== null && axiosConfig !== void 0 ? axiosConfig : {}), baseURL, });
12
+ this.baseURL = baseURL;
13
+ }
14
+ throwError(err) {
15
+ var _a, _b, _c, _d;
16
+ const message = (_b = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message;
17
+ const status = (_c = err === null || err === void 0 ? void 0 : err.response) === null || _c === void 0 ? void 0 : _c.status;
18
+ if (message) {
19
+ switch (status) {
20
+ case 401: throw new errors_1.Unauthorized(message);
21
+ case 400: throw new errors_1.BadRequest(message);
22
+ case 500: throw new errors_1.InternalServer(message);
23
+ case 204: throw new errors_1.NoContent(message);
24
+ default: throw new errors_1.InternalServer(message);
25
+ }
26
+ }
27
+ throw new errors_1.InternalServer((_d = err === null || err === void 0 ? void 0 : err.message) !== null && _d !== void 0 ? _d : String(err));
28
+ }
29
+ async verify(query, config = {}) {
30
+ var _a;
31
+ try {
32
+ const { data } = await this.request.post(`/verify`, undefined, { ...config, params: query });
33
+ return (_a = data === null || data === void 0 ? void 0 : data.data) !== null && _a !== void 0 ? _a : data;
34
+ }
35
+ catch (err) {
36
+ this.throwError(err);
37
+ }
38
+ }
39
+ }
40
+ exports.AuthService = AuthService;
41
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAiE;AACjE,sCAAgF;AAchF,MAAa,WAAW;IAIpB,YAAY,EAAE,WAAW,EAAE,OAAO,EAA8B;QAC5D,IAAI,CAAC,OAAO,GAAG,eAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,CAAC,EAAE,OAAO,GAAE,CAAC,CAAA;QAChE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,UAAU,CAAC,GAAQ;;QACf,MAAM,OAAO,GAAG,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,IAAI,0CAAE,OAAO,CAAA;QAC5C,MAAM,MAAM,GAAG,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,MAAM,CAAA;QACpC,IAAI,OAAO,EAAE;YACT,QAAO,MAAM,EAAE;gBACX,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,qBAAY,CAAC,OAAO,CAAC,CAAA;gBACzC,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,mBAAU,CAAC,OAAO,CAAC,CAAA;gBACvC,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,uBAAc,CAAC,OAAO,CAAC,CAAA;gBAC3C,KAAK,GAAG,CAAC,CAAC,MAAM,IAAI,kBAAS,CAAC,OAAO,CAAC,CAAA;gBACtC,OAAO,CAAC,CAAE,MAAM,IAAI,uBAAc,CAAC,OAAO,CAAC,CAAA;aAC9C;SACJ;QACD,MAAM,IAAI,uBAAc,CAAC,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,mCAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,MAAM,CAAU,KAAwB,EAAE,SAA6B,EAAE;;QAC3E,IAAI;YACA,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;YAC5F,OAAO,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,mCAAI,IAAI,CAAA;SAC5B;QAAC,OAAM,GAAQ,EAAE;YACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;SACvB;IACL,CAAC;CACJ;AAhCD,kCAgCC"}
@@ -0,0 +1,3 @@
1
+ export * from './postgres-service';
2
+ export * from './mongo-service';
3
+ export * from './types';
@@ -0,0 +1,20 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./postgres-service"), exports);
18
+ __exportStar(require("./mongo-service"), exports);
19
+ __exportStar(require("./types"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/databases/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,kDAAgC;AAChC,0CAAwB"}
@@ -0,0 +1,26 @@
1
+ import { Request, Response } from "express";
2
+ import { Model } from "mongoose";
3
+ import type { InternalServiceMethods, Query, User } from "./types";
4
+ export interface MongoInternalServiceMethods<T = any> extends InternalServiceMethods<T> {
5
+ model: Model<T>;
6
+ }
7
+ export interface MongoInternalServiceOptions {
8
+ Model: Model<any>;
9
+ }
10
+ export declare class MongoDBService<T> implements MongoInternalServiceMethods<T> {
11
+ readonly Model: Model<any>;
12
+ constructor({ Model }: MongoInternalServiceOptions);
13
+ find(query?: Query, user?: User, req?: Request, res?: Response): Promise<T[]>;
14
+ get(id: string | null, query?: Query, user?: User, req?: Request, res?: Response): Promise<T | null>;
15
+ create(data: Partial<T> | Partial<T>[], query?: Query, user?: User, req?: Request, res?: Response): Promise<T | T[]>;
16
+ update(id: string, data: T, query?: Query, user?: User, req?: Request, res?: Response): Promise<T | null>;
17
+ patch(id: string, data: Partial<T>, query?: Query, user?: User, req?: Request, res?: Response): Promise<T | T[] | null>;
18
+ remove(id: string, query?: Query, user?: User, req?: Request, res?: Response): Promise<T | T[] | null>;
19
+ get model(): Model<any, {}, {}, {}>;
20
+ _find(query?: Query): Promise<T[]>;
21
+ _get(id: string | null, query?: Query): Promise<T | null>;
22
+ _create(data: Partial<T> | Partial<T>[]): Promise<T | T[]>;
23
+ _update(id: string, data: T): Promise<T | null>;
24
+ _patch(id: string, data: Partial<T>): Promise<T | T[] | null>;
25
+ _remove(id: string, query?: Query): Promise<T | T[] | null>;
26
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MongoDBService = void 0;
4
+ class MongoDBService {
5
+ constructor({ Model }) {
6
+ this.Model = Model;
7
+ }
8
+ async find(query, user, req, res) {
9
+ return await this.Model.find(query !== null && query !== void 0 ? query : {});
10
+ }
11
+ async get(id, query, user, req, res) {
12
+ return await this.Model.findOne({
13
+ _id: id,
14
+ ...query
15
+ });
16
+ }
17
+ async create(data, query, user, req, res) {
18
+ return (await this.Model.create(data)).toJSON();
19
+ }
20
+ async update(id, data, query, user, req, res) {
21
+ return await this.Model.findOneAndUpdate({ _id: id }, { $set: data }, { new: true });
22
+ }
23
+ async patch(id, data, query, user, req, res) {
24
+ return await this.Model.findOneAndUpdate({ _id: id }, { $set: data }, { new: true });
25
+ }
26
+ async remove(id, query, user, req, res) {
27
+ return await this.Model.findOneAndDelete({ _id: id, ...query });
28
+ }
29
+ get model() {
30
+ return this.Model;
31
+ }
32
+ async _find(query) {
33
+ return await this.Model.find(query !== null && query !== void 0 ? query : {});
34
+ }
35
+ async _get(id, query) {
36
+ return await this.Model.findOne({
37
+ _id: id,
38
+ ...query
39
+ });
40
+ }
41
+ async _create(data) {
42
+ return (await this.Model.create(data)).toJSON();
43
+ }
44
+ async _update(id, data) {
45
+ return await this.Model.findOneAndUpdate({ _id: id }, { $set: data }, { new: true });
46
+ }
47
+ async _patch(id, data) {
48
+ return await this.Model.findOneAndUpdate({ _id: id }, { $set: data }, { new: true });
49
+ }
50
+ async _remove(id, query) {
51
+ return await this.Model.findOneAndDelete({ _id: id, ...query });
52
+ }
53
+ }
54
+ exports.MongoDBService = MongoDBService;
55
+ //# sourceMappingURL=mongo-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-service.js","sourceRoot":"","sources":["../../../src/services/databases/mongo-service.ts"],"names":[],"mappings":"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"}