@famir/database 0.0.1

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 (188) hide show
  1. package/README.md +4 -0
  2. package/dist/database.d.ts +27 -0
  3. package/dist/database.error.d.ts +9 -0
  4. package/dist/database.error.js +13 -0
  5. package/dist/database.error.js.map +1 -0
  6. package/dist/database.functions.d.ts +242 -0
  7. package/dist/database.functions.js +17 -0
  8. package/dist/database.functions.js.map +1 -0
  9. package/dist/database.js +5 -0
  10. package/dist/database.js.map +1 -0
  11. package/dist/database.keys.d.ts +21 -0
  12. package/dist/database.keys.js +67 -0
  13. package/dist/database.keys.js.map +1 -0
  14. package/dist/database.schemas.d.ts +3 -0
  15. package/dist/database.schemas.js +12 -0
  16. package/dist/database.schemas.js.map +1 -0
  17. package/dist/index.d.ts +7 -0
  18. package/dist/index.js +8 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/models/campaign/campaign.d.ts +24 -0
  21. package/dist/models/campaign/campaign.js +47 -0
  22. package/dist/models/campaign/campaign.js.map +1 -0
  23. package/dist/models/campaign/index.d.ts +1 -0
  24. package/dist/models/campaign/index.js +2 -0
  25. package/dist/models/campaign/index.js.map +1 -0
  26. package/dist/models/index.d.ts +7 -0
  27. package/dist/models/index.js +8 -0
  28. package/dist/models/index.js.map +1 -0
  29. package/dist/models/lure/index.d.ts +1 -0
  30. package/dist/models/lure/index.js +2 -0
  31. package/dist/models/lure/index.js.map +1 -0
  32. package/dist/models/lure/lure.d.ts +17 -0
  33. package/dist/models/lure/lure.js +25 -0
  34. package/dist/models/lure/lure.js.map +1 -0
  35. package/dist/models/message/index.d.ts +1 -0
  36. package/dist/models/message/index.js +2 -0
  37. package/dist/models/message/index.js.map +1 -0
  38. package/dist/models/message/message.d.ts +38 -0
  39. package/dist/models/message/message.js +58 -0
  40. package/dist/models/message/message.js.map +1 -0
  41. package/dist/models/proxy/index.d.ts +1 -0
  42. package/dist/models/proxy/index.js +2 -0
  43. package/dist/models/proxy/index.js.map +1 -0
  44. package/dist/models/proxy/proxy.d.ts +16 -0
  45. package/dist/models/proxy/proxy.js +23 -0
  46. package/dist/models/proxy/proxy.js.map +1 -0
  47. package/dist/models/redirector/index.d.ts +1 -0
  48. package/dist/models/redirector/index.js +2 -0
  49. package/dist/models/redirector/index.js.map +1 -0
  50. package/dist/models/redirector/redirector.d.ts +12 -0
  51. package/dist/models/redirector/redirector.js +23 -0
  52. package/dist/models/redirector/redirector.js.map +1 -0
  53. package/dist/models/session/index.d.ts +1 -0
  54. package/dist/models/session/index.js +2 -0
  55. package/dist/models/session/index.js.map +1 -0
  56. package/dist/models/session/session.d.ts +13 -0
  57. package/dist/models/session/session.js +27 -0
  58. package/dist/models/session/session.js.map +1 -0
  59. package/dist/models/target/index.d.ts +1 -0
  60. package/dist/models/target/index.js +2 -0
  61. package/dist/models/target/index.js.map +1 -0
  62. package/dist/models/target/target.d.ts +51 -0
  63. package/dist/models/target/target.js +110 -0
  64. package/dist/models/target/target.js.map +1 -0
  65. package/dist/redis-database-connector.d.ts +15 -0
  66. package/dist/redis-database-connector.js +47 -0
  67. package/dist/redis-database-connector.js.map +1 -0
  68. package/dist/redis-database-manager.d.ts +11 -0
  69. package/dist/redis-database-manager.js +27 -0
  70. package/dist/redis-database-manager.js.map +1 -0
  71. package/dist/redis-functions.d.ts +1 -0
  72. package/dist/redis-functions.js +1396 -0
  73. package/dist/redis-functions.js.map +1 -0
  74. package/dist/repositories/base/index.d.ts +1 -0
  75. package/dist/repositories/base/index.js +2 -0
  76. package/dist/repositories/base/index.js.map +1 -0
  77. package/dist/repositories/base/redis-base.repository.d.ts +23 -0
  78. package/dist/repositories/base/redis-base.repository.js +140 -0
  79. package/dist/repositories/base/redis-base.repository.js.map +1 -0
  80. package/dist/repositories/campaign/campaign.d.ts +13 -0
  81. package/dist/repositories/campaign/campaign.functions.d.ts +66 -0
  82. package/dist/repositories/campaign/campaign.functions.js +111 -0
  83. package/dist/repositories/campaign/campaign.functions.js.map +1 -0
  84. package/dist/repositories/campaign/campaign.js +2 -0
  85. package/dist/repositories/campaign/campaign.js.map +1 -0
  86. package/dist/repositories/campaign/campaign.schemas.d.ts +9 -0
  87. package/dist/repositories/campaign/campaign.schemas.js +148 -0
  88. package/dist/repositories/campaign/campaign.schemas.js.map +1 -0
  89. package/dist/repositories/campaign/index.d.ts +3 -0
  90. package/dist/repositories/campaign/index.js +4 -0
  91. package/dist/repositories/campaign/index.js.map +1 -0
  92. package/dist/repositories/campaign/redis-campaign.repository.d.ts +25 -0
  93. package/dist/repositories/campaign/redis-campaign.repository.js +138 -0
  94. package/dist/repositories/campaign/redis-campaign.repository.js.map +1 -0
  95. package/dist/repositories/index.d.ts +8 -0
  96. package/dist/repositories/index.js +9 -0
  97. package/dist/repositories/index.js.map +1 -0
  98. package/dist/repositories/lure/index.d.ts +3 -0
  99. package/dist/repositories/lure/index.js +4 -0
  100. package/dist/repositories/lure/index.js.map +1 -0
  101. package/dist/repositories/lure/lure.d.ts +11 -0
  102. package/dist/repositories/lure/lure.functions.d.ts +49 -0
  103. package/dist/repositories/lure/lure.functions.js +82 -0
  104. package/dist/repositories/lure/lure.functions.js.map +1 -0
  105. package/dist/repositories/lure/lure.js +2 -0
  106. package/dist/repositories/lure/lure.js.map +1 -0
  107. package/dist/repositories/lure/lure.schemas.d.ts +3 -0
  108. package/dist/repositories/lure/lure.schemas.js +45 -0
  109. package/dist/repositories/lure/lure.schemas.js.map +1 -0
  110. package/dist/repositories/lure/redis-lure.repository.d.ts +21 -0
  111. package/dist/repositories/lure/redis-lure.repository.js +107 -0
  112. package/dist/repositories/lure/redis-lure.repository.js.map +1 -0
  113. package/dist/repositories/message/index.d.ts +3 -0
  114. package/dist/repositories/message/index.js +4 -0
  115. package/dist/repositories/message/index.js.map +1 -0
  116. package/dist/repositories/message/message.d.ts +6 -0
  117. package/dist/repositories/message/message.functions.d.ts +44 -0
  118. package/dist/repositories/message/message.functions.js +53 -0
  119. package/dist/repositories/message/message.functions.js.map +1 -0
  120. package/dist/repositories/message/message.js +2 -0
  121. package/dist/repositories/message/message.js.map +1 -0
  122. package/dist/repositories/message/message.schemas.d.ts +2 -0
  123. package/dist/repositories/message/message.schemas.js +206 -0
  124. package/dist/repositories/message/message.schemas.js.map +1 -0
  125. package/dist/repositories/message/redis-message.repository.d.ts +20 -0
  126. package/dist/repositories/message/redis-message.repository.js +72 -0
  127. package/dist/repositories/message/redis-message.repository.js.map +1 -0
  128. package/dist/repositories/proxy/index.d.ts +3 -0
  129. package/dist/repositories/proxy/index.js +4 -0
  130. package/dist/repositories/proxy/index.js.map +1 -0
  131. package/dist/repositories/proxy/proxy.d.ts +10 -0
  132. package/dist/repositories/proxy/proxy.functions.d.ts +43 -0
  133. package/dist/repositories/proxy/proxy.functions.js +72 -0
  134. package/dist/repositories/proxy/proxy.functions.js.map +1 -0
  135. package/dist/repositories/proxy/proxy.js +2 -0
  136. package/dist/repositories/proxy/proxy.js.map +1 -0
  137. package/dist/repositories/proxy/proxy.schemas.d.ts +3 -0
  138. package/dist/repositories/proxy/proxy.schemas.js +34 -0
  139. package/dist/repositories/proxy/proxy.schemas.js.map +1 -0
  140. package/dist/repositories/proxy/redis-proxy.repository.d.ts +20 -0
  141. package/dist/repositories/proxy/redis-proxy.repository.js +93 -0
  142. package/dist/repositories/proxy/redis-proxy.repository.js.map +1 -0
  143. package/dist/repositories/redirector/index.d.ts +3 -0
  144. package/dist/repositories/redirector/index.js +4 -0
  145. package/dist/repositories/redirector/index.js.map +1 -0
  146. package/dist/repositories/redirector/redirector.d.ts +11 -0
  147. package/dist/repositories/redirector/redirector.functions.d.ts +44 -0
  148. package/dist/repositories/redirector/redirector.functions.js +70 -0
  149. package/dist/repositories/redirector/redirector.functions.js.map +1 -0
  150. package/dist/repositories/redirector/redirector.js +2 -0
  151. package/dist/repositories/redirector/redirector.js.map +1 -0
  152. package/dist/repositories/redirector/redirector.schemas.d.ts +3 -0
  153. package/dist/repositories/redirector/redirector.schemas.js +51 -0
  154. package/dist/repositories/redirector/redirector.schemas.js.map +1 -0
  155. package/dist/repositories/redirector/redis-redirector.repository.d.ts +23 -0
  156. package/dist/repositories/redirector/redis-redirector.repository.js +121 -0
  157. package/dist/repositories/redirector/redis-redirector.repository.js.map +1 -0
  158. package/dist/repositories/session/index.d.ts +3 -0
  159. package/dist/repositories/session/index.js +4 -0
  160. package/dist/repositories/session/index.js.map +1 -0
  161. package/dist/repositories/session/redis-session.repository.d.ts +18 -0
  162. package/dist/repositories/session/redis-session.repository.js +85 -0
  163. package/dist/repositories/session/redis-session.repository.js.map +1 -0
  164. package/dist/repositories/session/session.d.ts +8 -0
  165. package/dist/repositories/session/session.functions.d.ts +35 -0
  166. package/dist/repositories/session/session.functions.js +47 -0
  167. package/dist/repositories/session/session.functions.js.map +1 -0
  168. package/dist/repositories/session/session.js +2 -0
  169. package/dist/repositories/session/session.js.map +1 -0
  170. package/dist/repositories/session/session.schemas.d.ts +2 -0
  171. package/dist/repositories/session/session.schemas.js +44 -0
  172. package/dist/repositories/session/session.schemas.js.map +1 -0
  173. package/dist/repositories/target/index.d.ts +3 -0
  174. package/dist/repositories/target/index.js +4 -0
  175. package/dist/repositories/target/index.js.map +1 -0
  176. package/dist/repositories/target/redis-target.repository.d.ts +30 -0
  177. package/dist/repositories/target/redis-target.repository.js +198 -0
  178. package/dist/repositories/target/redis-target.repository.js.map +1 -0
  179. package/dist/repositories/target/target.d.ts +17 -0
  180. package/dist/repositories/target/target.functions.d.ts +89 -0
  181. package/dist/repositories/target/target.functions.js +184 -0
  182. package/dist/repositories/target/target.functions.js.map +1 -0
  183. package/dist/repositories/target/target.js +2 -0
  184. package/dist/repositories/target/target.js.map +1 -0
  185. package/dist/repositories/target/target.schemas.d.ts +13 -0
  186. package/dist/repositories/target/target.schemas.js +241 -0
  187. package/dist/repositories/target/target.schemas.js.map +1 -0
  188. package/package.json +46 -0
@@ -0,0 +1,25 @@
1
+ export class LureModel {
2
+ campaignId;
3
+ lureId;
4
+ path;
5
+ redirectorId;
6
+ isEnabled;
7
+ sessionCount;
8
+ createdAt;
9
+ static isNotNull = (model) => {
10
+ return model != null;
11
+ };
12
+ static isEnabled = (model) => {
13
+ return model.isEnabled;
14
+ };
15
+ constructor(campaignId, lureId, path, redirectorId, isEnabled, sessionCount, createdAt) {
16
+ this.campaignId = campaignId;
17
+ this.lureId = lureId;
18
+ this.path = path;
19
+ this.redirectorId = redirectorId;
20
+ this.isEnabled = isEnabled;
21
+ this.sessionCount = sessionCount;
22
+ this.createdAt = createdAt;
23
+ }
24
+ }
25
+ //# sourceMappingURL=lure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lure.js","sourceRoot":"","sources":["../../../src/models/lure/lure.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAS;IAUT;IACA;IACA;IACA;IACA;IACA;IACA;IAfX,MAAM,CAAC,SAAS,GAAG,CAAsB,KAAe,EAAc,EAAE;QACtE,OAAO,KAAK,IAAI,IAAI,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,CAAC,SAAS,GAAG,CAAsB,KAAQ,EAAoC,EAAE;QACrF,OAAO,KAAK,CAAC,SAAS,CAAA;IACxB,CAAC,CAAA;IAED,YACW,UAAkB,EAClB,MAAc,EACd,IAAY,EACZ,YAAoB,EACpB,SAAkB,EAClB,YAAoB,EACpB,SAAe;QANf,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QACZ,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAS;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAM;IACvB,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './message.js';
@@ -0,0 +1,2 @@
1
+ export * from './message.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/message/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
@@ -0,0 +1,38 @@
1
+ export declare const MESSAGE_KINDS: readonly ["simple", "stream-request", "stream-response"];
2
+ export type MessageKind = (typeof MESSAGE_KINDS)[number];
3
+ export declare const MESSAGE_METHODS: readonly ["HEAD", "GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"];
4
+ export type MessageMethod = (typeof MESSAGE_METHODS)[number];
5
+ export type MessageHeader = string | string[];
6
+ export type MessageHeaders = Record<string, MessageHeader | undefined>;
7
+ export type MessageBody = Buffer;
8
+ export type MessageConnection = Record<string, number | string | null | undefined>;
9
+ export type MessagePayload = Record<string, unknown>;
10
+ export type MessageError = readonly [object, ...string[]];
11
+ export declare class MessageModel {
12
+ readonly campaignId: string;
13
+ readonly messageId: string;
14
+ readonly proxyId: string;
15
+ readonly targetId: string;
16
+ readonly sessionId: string;
17
+ readonly kind: string;
18
+ readonly method: string;
19
+ readonly url: string;
20
+ readonly status: number;
21
+ readonly processor: string;
22
+ readonly startTime: number;
23
+ readonly finishTime: number;
24
+ readonly createdAt: Date;
25
+ static isNotNull: <T extends MessageModel>(model: T | null) => model is T;
26
+ constructor(campaignId: string, messageId: string, proxyId: string, targetId: string, sessionId: string, kind: string, method: string, url: string, status: number, processor: string, startTime: number, finishTime: number, createdAt: Date);
27
+ get totalTime(): number;
28
+ }
29
+ export declare class FullMessageModel extends MessageModel {
30
+ readonly requestHeaders: MessageHeaders;
31
+ readonly requestBody: MessageBody;
32
+ readonly responseHeaders: MessageHeaders;
33
+ readonly responseBody: MessageBody;
34
+ readonly connection: MessageConnection;
35
+ readonly payload: MessagePayload;
36
+ readonly errors: MessageError[];
37
+ constructor(campaignId: string, messageId: string, proxyId: string, targetId: string, sessionId: string, kind: string, method: string, url: string, requestHeaders: MessageHeaders, requestBody: MessageBody, status: number, responseHeaders: MessageHeaders, responseBody: MessageBody, connection: MessageConnection, payload: MessagePayload, errors: MessageError[], processor: string, startTime: number, finishTime: number, createdAt: Date);
38
+ }
@@ -0,0 +1,58 @@
1
+ export const MESSAGE_KINDS = ['simple', 'stream-request', 'stream-response'];
2
+ export const MESSAGE_METHODS = ['HEAD', 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'];
3
+ export class MessageModel {
4
+ campaignId;
5
+ messageId;
6
+ proxyId;
7
+ targetId;
8
+ sessionId;
9
+ kind;
10
+ method;
11
+ url;
12
+ status;
13
+ processor;
14
+ startTime;
15
+ finishTime;
16
+ createdAt;
17
+ static isNotNull = (model) => {
18
+ return model != null;
19
+ };
20
+ constructor(campaignId, messageId, proxyId, targetId, sessionId, kind, method, url, status, processor, startTime, finishTime, createdAt) {
21
+ this.campaignId = campaignId;
22
+ this.messageId = messageId;
23
+ this.proxyId = proxyId;
24
+ this.targetId = targetId;
25
+ this.sessionId = sessionId;
26
+ this.kind = kind;
27
+ this.method = method;
28
+ this.url = url;
29
+ this.status = status;
30
+ this.processor = processor;
31
+ this.startTime = startTime;
32
+ this.finishTime = finishTime;
33
+ this.createdAt = createdAt;
34
+ }
35
+ get totalTime() {
36
+ return this.finishTime > this.startTime ? this.finishTime - this.startTime : 0;
37
+ }
38
+ }
39
+ export class FullMessageModel extends MessageModel {
40
+ requestHeaders;
41
+ requestBody;
42
+ responseHeaders;
43
+ responseBody;
44
+ connection;
45
+ payload;
46
+ errors;
47
+ constructor(campaignId, messageId, proxyId, targetId, sessionId, kind, method, url, requestHeaders, requestBody, status, responseHeaders, responseBody, connection, payload, errors, processor, startTime, finishTime, createdAt) {
48
+ super(campaignId, messageId, proxyId, targetId, sessionId, kind, method, url, status, processor, startTime, finishTime, createdAt);
49
+ this.requestHeaders = requestHeaders;
50
+ this.requestBody = requestBody;
51
+ this.responseHeaders = responseHeaders;
52
+ this.responseBody = responseBody;
53
+ this.connection = connection;
54
+ this.payload = payload;
55
+ this.errors = errors;
56
+ }
57
+ }
58
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/models/message/message.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,CAAU,CAAA;AAGrF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAA;AAUpG,MAAM,OAAO,YAAY;IAMZ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAjBX,MAAM,CAAC,SAAS,GAAG,CAAyB,KAAe,EAAc,EAAE;QACzE,OAAO,KAAK,IAAI,IAAI,CAAA;IACtB,CAAC,CAAA;IAED,YACW,UAAkB,EAClB,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,SAAiB,EACjB,IAAY,EACZ,MAAc,EACd,GAAW,EACX,MAAc,EACd,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,SAAe;QAZf,eAAU,GAAV,UAAU,CAAQ;QAClB,cAAS,GAAT,SAAS,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,QAAG,GAAH,GAAG,CAAQ;QACX,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAQ;QACjB,eAAU,GAAV,UAAU,CAAQ;QAClB,cAAS,GAAT,SAAS,CAAM;IACvB,CAAC;IAEJ,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAChF,CAAC;;AAGH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAUrC;IACA;IAEA;IACA;IACA;IACA;IACA;IAhBX,YACE,UAAkB,EAClB,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,SAAiB,EACjB,IAAY,EACZ,MAAc,EACd,GAAW,EACF,cAA8B,EAC9B,WAAwB,EACjC,MAAc,EACL,eAA+B,EAC/B,YAAyB,EACzB,UAA6B,EAC7B,OAAuB,EACvB,MAAsB,EAC/B,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,SAAe;QAEf,KAAK,CACH,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,MAAM,EACN,GAAG,EACH,MAAM,EACN,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,CACV,CAAA;QA3BQ,mBAAc,GAAd,cAAc,CAAgB;QAC9B,gBAAW,GAAX,WAAW,CAAa;QAExB,oBAAe,GAAf,eAAe,CAAgB;QAC/B,iBAAY,GAAZ,YAAY,CAAa;QACzB,eAAU,GAAV,UAAU,CAAmB;QAC7B,YAAO,GAAP,OAAO,CAAgB;QACvB,WAAM,GAAN,MAAM,CAAgB;IAqBjC,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export * from './proxy.js';
@@ -0,0 +1,2 @@
1
+ export * from './proxy.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/proxy/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
@@ -0,0 +1,16 @@
1
+ export declare class ProxyModel {
2
+ readonly campaignId: string;
3
+ readonly proxyId: string;
4
+ readonly url: string;
5
+ readonly isEnabled: boolean;
6
+ readonly messageCount: number;
7
+ readonly createdAt: Date;
8
+ static isNotNull: <T extends ProxyModel>(model: T | null) => model is T;
9
+ static isEnabled: <T extends ProxyModel>(model: T) => model is T & {
10
+ isEnabled: true;
11
+ };
12
+ constructor(campaignId: string, proxyId: string, url: string, isEnabled: boolean, messageCount: number, createdAt: Date);
13
+ }
14
+ export interface EnabledProxyModel extends ProxyModel {
15
+ isEnabled: true;
16
+ }
@@ -0,0 +1,23 @@
1
+ export class ProxyModel {
2
+ campaignId;
3
+ proxyId;
4
+ url;
5
+ isEnabled;
6
+ messageCount;
7
+ createdAt;
8
+ static isNotNull = (model) => {
9
+ return model != null;
10
+ };
11
+ static isEnabled = (model) => {
12
+ return model.isEnabled;
13
+ };
14
+ constructor(campaignId, proxyId, url, isEnabled, messageCount, createdAt) {
15
+ this.campaignId = campaignId;
16
+ this.proxyId = proxyId;
17
+ this.url = url;
18
+ this.isEnabled = isEnabled;
19
+ this.messageCount = messageCount;
20
+ this.createdAt = createdAt;
21
+ }
22
+ }
23
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/models/proxy/proxy.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IAUV;IACA;IACA;IACA;IACA;IACA;IAdX,MAAM,CAAC,SAAS,GAAG,CAAuB,KAAe,EAAc,EAAE;QACvE,OAAO,KAAK,IAAI,IAAI,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,CAAC,SAAS,GAAG,CAAuB,KAAQ,EAAoC,EAAE;QACtF,OAAO,KAAK,CAAC,SAAS,CAAA;IACxB,CAAC,CAAA;IAED,YACW,UAAkB,EAClB,OAAe,EACf,GAAW,EACX,SAAkB,EAClB,YAAoB,EACpB,SAAe;QALf,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAQ;QACf,QAAG,GAAH,GAAG,CAAQ;QACX,cAAS,GAAT,SAAS,CAAS;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAM;IACvB,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './redirector.js';
@@ -0,0 +1,2 @@
1
+ export * from './redirector.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/redirector/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,12 @@
1
+ export declare class RedirectorModel {
2
+ readonly campaignId: string;
3
+ readonly redirectorId: string;
4
+ readonly lureCount: number;
5
+ readonly createdAt: Date;
6
+ static isNotNull: <T extends RedirectorModel>(model: T | null) => model is T;
7
+ constructor(campaignId: string, redirectorId: string, lureCount: number, createdAt: Date);
8
+ }
9
+ export declare class FullRedirectorModel extends RedirectorModel {
10
+ readonly page: string;
11
+ constructor(campaignId: string, redirectorId: string, page: string, lureCount: number, createdAt: Date);
12
+ }
@@ -0,0 +1,23 @@
1
+ export class RedirectorModel {
2
+ campaignId;
3
+ redirectorId;
4
+ lureCount;
5
+ createdAt;
6
+ static isNotNull = (model) => {
7
+ return model != null;
8
+ };
9
+ constructor(campaignId, redirectorId, lureCount, createdAt) {
10
+ this.campaignId = campaignId;
11
+ this.redirectorId = redirectorId;
12
+ this.lureCount = lureCount;
13
+ this.createdAt = createdAt;
14
+ }
15
+ }
16
+ export class FullRedirectorModel extends RedirectorModel {
17
+ page;
18
+ constructor(campaignId, redirectorId, page, lureCount, createdAt) {
19
+ super(campaignId, redirectorId, lureCount, createdAt);
20
+ this.page = page;
21
+ }
22
+ }
23
+ //# sourceMappingURL=redirector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirector.js","sourceRoot":"","sources":["../../../src/models/redirector/redirector.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAe;IAMf;IACA;IACA;IACA;IARX,MAAM,CAAC,SAAS,GAAG,CAA4B,KAAe,EAAc,EAAE;QAC5E,OAAO,KAAK,IAAI,IAAI,CAAA;IACtB,CAAC,CAAA;IAED,YACW,UAAkB,EAClB,YAAoB,EACpB,SAAiB,EACjB,SAAe;QAHf,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAM;IACvB,CAAC;;AAGN,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAI3C;IAHX,YACE,UAAkB,EAClB,YAAoB,EACX,IAAY,EACrB,SAAiB,EACjB,SAAe;QAEf,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;QAJ5C,SAAI,GAAJ,IAAI,CAAQ;IAKvB,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export * from './session.js';
@@ -0,0 +1,2 @@
1
+ export * from './session.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/session/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
@@ -0,0 +1,13 @@
1
+ export declare class SessionModel {
2
+ readonly campaignId: string;
3
+ readonly sessionId: string;
4
+ readonly proxyId: string;
5
+ readonly secret: string;
6
+ readonly isLanding: boolean;
7
+ readonly messageCount: number;
8
+ readonly createdAt: Date;
9
+ readonly lastAuthAt: Date;
10
+ static isNotNull: <T extends SessionModel>(model: T | null) => model is T;
11
+ constructor(campaignId: string, sessionId: string, proxyId: string, secret: string, isLanding: boolean, messageCount: number, createdAt: Date, lastAuthAt: Date);
12
+ get isNew(): boolean;
13
+ }
@@ -0,0 +1,27 @@
1
+ export class SessionModel {
2
+ campaignId;
3
+ sessionId;
4
+ proxyId;
5
+ secret;
6
+ isLanding;
7
+ messageCount;
8
+ createdAt;
9
+ lastAuthAt;
10
+ static isNotNull = (model) => {
11
+ return model != null;
12
+ };
13
+ constructor(campaignId, sessionId, proxyId, secret, isLanding, messageCount, createdAt, lastAuthAt) {
14
+ this.campaignId = campaignId;
15
+ this.sessionId = sessionId;
16
+ this.proxyId = proxyId;
17
+ this.secret = secret;
18
+ this.isLanding = isLanding;
19
+ this.messageCount = messageCount;
20
+ this.createdAt = createdAt;
21
+ this.lastAuthAt = lastAuthAt;
22
+ }
23
+ get isNew() {
24
+ return this.messageCount <= 1;
25
+ }
26
+ }
27
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/models/session/session.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAMZ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAZX,MAAM,CAAC,SAAS,GAAG,CAAyB,KAAe,EAAc,EAAE;QACzE,OAAO,KAAK,IAAI,IAAI,CAAA;IACtB,CAAC,CAAA;IAED,YACW,UAAkB,EAClB,SAAiB,EACjB,OAAe,EACf,MAAc,EACd,SAAkB,EAClB,YAAoB,EACpB,SAAe,EACf,UAAgB;QAPhB,eAAU,GAAV,UAAU,CAAQ;QAClB,cAAS,GAAT,SAAS,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAS;QAClB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAM;QACf,eAAU,GAAV,UAAU,CAAM;IACxB,CAAC;IAEJ,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC,CAAA;IAC/B,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './target.js';
@@ -0,0 +1,2 @@
1
+ export * from './target.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/target/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,51 @@
1
+ export declare const TARGET_SUB_ROOT = ".";
2
+ export declare class TargetModel {
3
+ readonly campaignId: string;
4
+ readonly targetId: string;
5
+ readonly isLanding: boolean;
6
+ readonly donorSecure: boolean;
7
+ readonly donorSub: string;
8
+ readonly donorDomain: string;
9
+ readonly donorPort: number;
10
+ readonly mirrorSecure: boolean;
11
+ readonly mirrorSub: string;
12
+ readonly mirrorDomain: string;
13
+ readonly mirrorPort: number;
14
+ readonly labels: string[];
15
+ readonly isEnabled: boolean;
16
+ readonly messageCount: number;
17
+ readonly createdAt: Date;
18
+ static isNotNull: <T extends TargetModel>(model: T | null) => model is T;
19
+ static isEnabled: <T extends TargetModel>(model: T) => model is T & {
20
+ isEnabled: true;
21
+ };
22
+ constructor(campaignId: string, targetId: string, isLanding: boolean, donorSecure: boolean, donorSub: string, donorDomain: string, donorPort: number, mirrorSecure: boolean, mirrorSub: string, mirrorDomain: string, mirrorPort: number, labels: string[], isEnabled: boolean, messageCount: number, createdAt: Date);
23
+ get donorProtocol(): string;
24
+ get donorHostname(): string;
25
+ get donorHost(): string;
26
+ get donorUrl(): string;
27
+ get mirrorProtocol(): string;
28
+ get mirrorHostname(): string;
29
+ get mirrorHost(): string;
30
+ get mirrorUrl(): string;
31
+ hasLabel(value: string): boolean;
32
+ }
33
+ export declare class FullTargetModel extends TargetModel {
34
+ readonly connectTimeout: number;
35
+ readonly simpleTimeout: number;
36
+ readonly streamTimeout: number;
37
+ readonly headersSizeLimit: number;
38
+ readonly bodySizeLimit: number;
39
+ readonly mainPage: string;
40
+ readonly notFoundPage: string;
41
+ readonly faviconIco: string;
42
+ readonly robotsTxt: string;
43
+ readonly sitemapXml: string;
44
+ constructor(campaignId: string, targetId: string, isLanding: boolean, donorSecure: boolean, donorSub: string, donorDomain: string, donorPort: number, mirrorSecure: boolean, mirrorSub: string, mirrorDomain: string, mirrorPort: number, labels: string[], connectTimeout: number, simpleTimeout: number, streamTimeout: number, headersSizeLimit: number, bodySizeLimit: number, mainPage: string, notFoundPage: string, faviconIco: string, robotsTxt: string, sitemapXml: string, isEnabled: boolean, messageCount: number, createdAt: Date);
45
+ }
46
+ export interface EnabledTargetModel extends TargetModel {
47
+ isEnabled: true;
48
+ }
49
+ export interface EnabledFullTargetModel extends FullTargetModel {
50
+ isEnabled: true;
51
+ }
@@ -0,0 +1,110 @@
1
+ export const TARGET_SUB_ROOT = '.';
2
+ export class TargetModel {
3
+ campaignId;
4
+ targetId;
5
+ isLanding;
6
+ donorSecure;
7
+ donorSub;
8
+ donorDomain;
9
+ donorPort;
10
+ mirrorSecure;
11
+ mirrorSub;
12
+ mirrorDomain;
13
+ mirrorPort;
14
+ labels;
15
+ isEnabled;
16
+ messageCount;
17
+ createdAt;
18
+ static isNotNull = (model) => {
19
+ return model != null;
20
+ };
21
+ static isEnabled = (model) => {
22
+ return model.isEnabled;
23
+ };
24
+ constructor(campaignId, targetId, isLanding, donorSecure, donorSub, donorDomain, donorPort, mirrorSecure, mirrorSub, mirrorDomain, mirrorPort, labels, isEnabled, messageCount, createdAt) {
25
+ this.campaignId = campaignId;
26
+ this.targetId = targetId;
27
+ this.isLanding = isLanding;
28
+ this.donorSecure = donorSecure;
29
+ this.donorSub = donorSub;
30
+ this.donorDomain = donorDomain;
31
+ this.donorPort = donorPort;
32
+ this.mirrorSecure = mirrorSecure;
33
+ this.mirrorSub = mirrorSub;
34
+ this.mirrorDomain = mirrorDomain;
35
+ this.mirrorPort = mirrorPort;
36
+ this.labels = labels;
37
+ this.isEnabled = isEnabled;
38
+ this.messageCount = messageCount;
39
+ this.createdAt = createdAt;
40
+ }
41
+ get donorProtocol() {
42
+ return this.donorSecure ? 'https:' : 'http:';
43
+ }
44
+ get donorHostname() {
45
+ return this.donorSub !== TARGET_SUB_ROOT
46
+ ? [this.donorSub, this.donorDomain].join('.')
47
+ : this.donorDomain;
48
+ }
49
+ get donorHost() {
50
+ if ((!this.donorSecure && this.donorPort === 80) ||
51
+ (this.donorSecure && this.donorPort === 443)) {
52
+ return this.donorHostname;
53
+ }
54
+ else {
55
+ return [this.donorHostname, this.donorPort.toString()].join(':');
56
+ }
57
+ }
58
+ get donorUrl() {
59
+ return [this.donorProtocol, '//', this.donorHost].join('');
60
+ }
61
+ get mirrorProtocol() {
62
+ return this.mirrorSecure ? 'https:' : 'http:';
63
+ }
64
+ get mirrorHostname() {
65
+ return this.mirrorSub !== TARGET_SUB_ROOT
66
+ ? [this.mirrorSub, this.mirrorDomain].join('.')
67
+ : this.mirrorDomain;
68
+ }
69
+ get mirrorHost() {
70
+ if ((!this.mirrorSecure && this.mirrorPort === 80) ||
71
+ (this.mirrorSecure && this.mirrorPort === 443)) {
72
+ return this.mirrorHostname;
73
+ }
74
+ else {
75
+ return [this.mirrorHostname, this.mirrorPort.toString()].join(':');
76
+ }
77
+ }
78
+ get mirrorUrl() {
79
+ return [this.mirrorProtocol, '//', this.mirrorHost].join('');
80
+ }
81
+ hasLabel(value) {
82
+ return this.labels.includes(value);
83
+ }
84
+ }
85
+ export class FullTargetModel extends TargetModel {
86
+ connectTimeout;
87
+ simpleTimeout;
88
+ streamTimeout;
89
+ headersSizeLimit;
90
+ bodySizeLimit;
91
+ mainPage;
92
+ notFoundPage;
93
+ faviconIco;
94
+ robotsTxt;
95
+ sitemapXml;
96
+ constructor(campaignId, targetId, isLanding, donorSecure, donorSub, donorDomain, donorPort, mirrorSecure, mirrorSub, mirrorDomain, mirrorPort, labels, connectTimeout, simpleTimeout, streamTimeout, headersSizeLimit, bodySizeLimit, mainPage, notFoundPage, faviconIco, robotsTxt, sitemapXml, isEnabled, messageCount, createdAt) {
97
+ super(campaignId, targetId, isLanding, donorSecure, donorSub, donorDomain, donorPort, mirrorSecure, mirrorSub, mirrorDomain, mirrorPort, labels, isEnabled, messageCount, createdAt);
98
+ this.connectTimeout = connectTimeout;
99
+ this.simpleTimeout = simpleTimeout;
100
+ this.streamTimeout = streamTimeout;
101
+ this.headersSizeLimit = headersSizeLimit;
102
+ this.bodySizeLimit = bodySizeLimit;
103
+ this.mainPage = mainPage;
104
+ this.notFoundPage = notFoundPage;
105
+ this.faviconIco = faviconIco;
106
+ this.robotsTxt = robotsTxt;
107
+ this.sitemapXml = sitemapXml;
108
+ }
109
+ }
110
+ //# sourceMappingURL=target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target.js","sourceRoot":"","sources":["../../../src/models/target/target.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { DIContainer } from '@famir/common';
2
+ import { Config } from '@famir/config';
3
+ import { Logger } from '@famir/logger';
4
+ import { DatabaseConnector, RedisDatabaseConfig, RedisDatabaseConnection, RedisDatabaseConnectorOptions } from './database.js';
5
+ export declare class RedisDatabaseConnector implements DatabaseConnector {
6
+ protected readonly logger: Logger;
7
+ static inject(container: DIContainer): void;
8
+ protected readonly options: RedisDatabaseConnectorOptions;
9
+ protected readonly redis: RedisDatabaseConnection;
10
+ constructor(config: Config<RedisDatabaseConfig>, logger: Logger);
11
+ connection<T>(): T;
12
+ connect(): Promise<void>;
13
+ close(): Promise<void>;
14
+ private buildOptions;
15
+ }
@@ -0,0 +1,47 @@
1
+ import { serializeError } from '@famir/common';
2
+ import { CONFIG } from '@famir/config';
3
+ import { LOGGER } from '@famir/logger';
4
+ import { createClient } from 'redis';
5
+ import { databaseFunctions } from './database.functions.js';
6
+ import { DATABASE_CONNECTOR } from './database.js';
7
+ export class RedisDatabaseConnector {
8
+ logger;
9
+ static inject(container) {
10
+ container.registerSingleton(DATABASE_CONNECTOR, (c) => new RedisDatabaseConnector(c.resolve(CONFIG), c.resolve(LOGGER)));
11
+ }
12
+ options;
13
+ redis;
14
+ constructor(config, logger) {
15
+ this.logger = logger;
16
+ this.options = this.buildOptions(config.data);
17
+ this.redis = createClient({
18
+ url: this.options.connectionUrl,
19
+ functions: databaseFunctions,
20
+ name: 'database',
21
+ RESP: 3
22
+ });
23
+ this.redis.on('error', (error) => {
24
+ this.logger.error(`Redis error event`, {
25
+ error: serializeError(error)
26
+ });
27
+ });
28
+ this.logger.debug(`DatabaseConnector initialized`);
29
+ }
30
+ connection() {
31
+ return this.redis;
32
+ }
33
+ async connect() {
34
+ await this.redis.connect();
35
+ this.logger.debug(`Database connected`);
36
+ }
37
+ async close() {
38
+ await this.redis.close();
39
+ this.logger.debug(`Database closed`);
40
+ }
41
+ buildOptions(config) {
42
+ return {
43
+ connectionUrl: config.DATABASE_CONNECTION_URL
44
+ };
45
+ }
46
+ }
47
+ //# sourceMappingURL=redis-database-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-database-connector.js","sourceRoot":"","sources":["../src/redis-database-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,cAAc,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,EAAU,MAAM,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAU,MAAM,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EACL,kBAAkB,EAKnB,MAAM,eAAe,CAAA;AAEtB,MAAM,OAAO,sBAAsB;IAiBZ;IAhBrB,MAAM,CAAC,MAAM,CAAC,SAAsB;QAClC,SAAS,CAAC,iBAAiB,CACzB,kBAAkB,EAClB,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,sBAAsB,CACxB,CAAC,CAAC,OAAO,CAA8B,MAAM,CAAC,EAC9C,CAAC,CAAC,OAAO,CAAS,MAAM,CAAC,CAC1B,CACJ,CAAA;IACH,CAAC;IAEkB,OAAO,CAA+B;IACtC,KAAK,CAAyB;IAEjD,YACE,MAAmC,EAChB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAEjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAE7C,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;YACxB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YAC/B,SAAS,EAAE,iBAAiB;YAC5B,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,CAAC;SACR,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBACrC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;aAC7B,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;IACpD,CAAC;IAGD,UAAU;QACR,OAAO,IAAI,CAAC,KAAU,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;QAE1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAExB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;IACtC,CAAC;IAEO,YAAY,CAAC,MAA2B;QAC9C,OAAO;YACL,aAAa,EAAE,MAAM,CAAC,uBAAuB;SAC9C,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import { DIContainer } from '@famir/common';
2
+ import { Logger } from '@famir/logger';
3
+ import { DatabaseManager, RedisDatabaseConnection } from './database.js';
4
+ export declare class RedisDatabaseManager implements DatabaseManager {
5
+ protected readonly logger: Logger;
6
+ protected readonly connection: RedisDatabaseConnection;
7
+ static inject(container: DIContainer): void;
8
+ constructor(logger: Logger, connection: RedisDatabaseConnection);
9
+ loadFunctions(): Promise<void>;
10
+ cleanup(): Promise<void>;
11
+ }
@@ -0,0 +1,27 @@
1
+ import { LOGGER } from '@famir/logger';
2
+ import { DATABASE_CONNECTOR, DATABASE_MANAGER } from './database.js';
3
+ import { makeRedisFunctions } from './redis-functions.js';
4
+ export class RedisDatabaseManager {
5
+ logger;
6
+ connection;
7
+ static inject(container) {
8
+ container.registerSingleton(DATABASE_MANAGER, (c) => new RedisDatabaseManager(c.resolve(LOGGER), c.resolve(DATABASE_CONNECTOR).connection()));
9
+ }
10
+ constructor(logger, connection) {
11
+ this.logger = logger;
12
+ this.connection = connection;
13
+ this.logger.debug(`DatabaseManager initialized`);
14
+ }
15
+ async loadFunctions() {
16
+ await this.connection.FUNCTION_FLUSH();
17
+ for (const [name, data] of makeRedisFunctions()) {
18
+ this.logger.info(`Load redis functions: ${name}`);
19
+ await this.connection.FUNCTION_LOAD(data);
20
+ }
21
+ }
22
+ async cleanup() {
23
+ await this.connection.FLUSHDB();
24
+ this.logger.warn(`Database cleaned up`);
25
+ }
26
+ }
27
+ //# sourceMappingURL=redis-database-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-database-manager.js","sourceRoot":"","sources":["../src/redis-database-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,MAAM,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAIjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,MAAM,OAAO,oBAAoB;IAaV;IACA;IAbrB,MAAM,CAAC,MAAM,CAAC,SAAsB;QAClC,SAAS,CAAC,iBAAiB,CACzB,gBAAgB,EAChB,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,oBAAoB,CACtB,CAAC,CAAC,OAAO,CAAS,MAAM,CAAC,EACzB,CAAC,CAAC,OAAO,CAAoB,kBAAkB,CAAC,CAAC,UAAU,EAA2B,CACvF,CACJ,CAAA;IACH,CAAC;IAED,YACqB,MAAc,EACd,UAAmC;QADnC,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAyB;QAEtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAA;QAEtC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,kBAAkB,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAA;YAEjD,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAA;QAE/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACzC,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ export declare function makeRedisFunctions(): [string, string][];