akeyless-server-commons 1.0.200 → 1.0.204

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 (189) hide show
  1. package/dist/cjs/helpers/boards_helpers.js +1 -2
  2. package/dist/cjs/helpers/boards_helpers.js.map +1 -1
  3. package/dist/cjs/helpers/email_helpers.js +35 -35
  4. package/dist/cjs/helpers/email_helpers.js.map +1 -1
  5. package/dist/cjs/helpers/firebase_helpers.js +112 -107
  6. package/dist/cjs/helpers/firebase_helpers.js.map +1 -1
  7. package/dist/cjs/helpers/global_helpers.d.ts +1 -1
  8. package/dist/cjs/helpers/global_helpers.js +8 -19
  9. package/dist/cjs/helpers/global_helpers.js.map +1 -1
  10. package/dist/cjs/helpers/login_helpers.js +7 -16
  11. package/dist/cjs/helpers/login_helpers.js.map +1 -1
  12. package/dist/cjs/helpers/notification_helpers.js +36 -46
  13. package/dist/cjs/helpers/notification_helpers.js.map +1 -1
  14. package/dist/cjs/helpers/rabbitmq_helpers.d.ts +64 -0
  15. package/dist/cjs/helpers/rabbitmq_helpers.js +193 -0
  16. package/dist/cjs/helpers/rabbitmq_helpers.js.map +1 -0
  17. package/dist/cjs/helpers/redis/helpers.js +42 -52
  18. package/dist/cjs/helpers/redis/helpers.js.map +1 -1
  19. package/dist/cjs/helpers/redis/initialize.js +2 -1
  20. package/dist/cjs/helpers/redis/initialize.js.map +1 -1
  21. package/dist/cjs/helpers/redis/keys.js +3 -12
  22. package/dist/cjs/helpers/redis/keys.js.map +1 -1
  23. package/dist/cjs/helpers/redis/snapshot.js +38 -52
  24. package/dist/cjs/helpers/redis/snapshot.js.map +1 -1
  25. package/dist/cjs/helpers/start.js +26 -19
  26. package/dist/cjs/helpers/start.js.map +1 -1
  27. package/dist/cjs/helpers/tasks_helpers.js +20 -29
  28. package/dist/cjs/helpers/tasks_helpers.js.map +1 -1
  29. package/dist/cjs/helpers/time_helpers.js +12 -14
  30. package/dist/cjs/helpers/time_helpers.js.map +1 -1
  31. package/dist/cjs/index.js +17 -7
  32. package/dist/cjs/index.js.map +1 -1
  33. package/dist/cjs/managers/cache_manager.js +3 -3
  34. package/dist/cjs/managers/cache_manager.js.map +1 -1
  35. package/dist/cjs/managers/index.d.ts +1 -0
  36. package/dist/cjs/managers/index.js +1 -0
  37. package/dist/cjs/managers/index.js.map +1 -1
  38. package/dist/cjs/managers/logger_manager.js +2 -2
  39. package/dist/cjs/managers/logger_manager.js.map +1 -1
  40. package/dist/cjs/managers/rabbitmq_manager.d.ts +60 -0
  41. package/dist/cjs/managers/rabbitmq_manager.js +190 -0
  42. package/dist/cjs/managers/rabbitmq_manager.js.map +1 -0
  43. package/dist/cjs/managers/translation_manager.js +3 -3
  44. package/dist/cjs/managers/translation_manager.js.map +1 -1
  45. package/dist/cjs/middlewares/auth_mw.js +11 -20
  46. package/dist/cjs/middlewares/auth_mw.js.map +1 -1
  47. package/dist/cjs/middlewares/global_mw.js +9 -10
  48. package/dist/cjs/middlewares/global_mw.js.map +1 -1
  49. package/dist/cjs/types/interfaces/global.d.ts +1 -0
  50. package/dist/esm/helpers/boards_helpers.js +1 -2
  51. package/dist/esm/helpers/boards_helpers.js.map +1 -1
  52. package/dist/esm/helpers/email_helpers.js +18 -28
  53. package/dist/esm/helpers/email_helpers.js.map +1 -1
  54. package/dist/esm/helpers/firebase_helpers.js +112 -107
  55. package/dist/esm/helpers/firebase_helpers.js.map +1 -1
  56. package/dist/esm/helpers/global_helpers.d.ts +1 -1
  57. package/dist/esm/helpers/global_helpers.js +8 -19
  58. package/dist/esm/helpers/global_helpers.js.map +1 -1
  59. package/dist/esm/helpers/login_helpers.js +7 -16
  60. package/dist/esm/helpers/login_helpers.js.map +1 -1
  61. package/dist/esm/helpers/notification_helpers.js +36 -46
  62. package/dist/esm/helpers/notification_helpers.js.map +1 -1
  63. package/dist/esm/helpers/rabbitmq_helpers.d.ts +64 -0
  64. package/dist/esm/helpers/rabbitmq_helpers.js +186 -0
  65. package/dist/esm/helpers/rabbitmq_helpers.js.map +1 -0
  66. package/dist/esm/helpers/redis/helpers.js +42 -52
  67. package/dist/esm/helpers/redis/helpers.js.map +1 -1
  68. package/dist/esm/helpers/redis/initialize.js +2 -1
  69. package/dist/esm/helpers/redis/initialize.js.map +1 -1
  70. package/dist/esm/helpers/redis/keys.js +3 -12
  71. package/dist/esm/helpers/redis/keys.js.map +1 -1
  72. package/dist/esm/helpers/redis/snapshot.js +38 -52
  73. package/dist/esm/helpers/redis/snapshot.js.map +1 -1
  74. package/dist/esm/helpers/start.js +26 -19
  75. package/dist/esm/helpers/start.js.map +1 -1
  76. package/dist/esm/helpers/tasks_helpers.js +20 -29
  77. package/dist/esm/helpers/tasks_helpers.js.map +1 -1
  78. package/dist/esm/helpers/time_helpers.js +12 -14
  79. package/dist/esm/helpers/time_helpers.js.map +1 -1
  80. package/dist/esm/managers/cache_manager.js +3 -3
  81. package/dist/esm/managers/cache_manager.js.map +1 -1
  82. package/dist/esm/managers/index.d.ts +1 -0
  83. package/dist/esm/managers/index.js +1 -0
  84. package/dist/esm/managers/index.js.map +1 -1
  85. package/dist/esm/managers/logger_manager.js +2 -2
  86. package/dist/esm/managers/logger_manager.js.map +1 -1
  87. package/dist/esm/managers/rabbitmq_manager.d.ts +60 -0
  88. package/dist/esm/managers/rabbitmq_manager.js +183 -0
  89. package/dist/esm/managers/rabbitmq_manager.js.map +1 -0
  90. package/dist/esm/managers/translation_manager.js +3 -3
  91. package/dist/esm/managers/translation_manager.js.map +1 -1
  92. package/dist/esm/middlewares/auth_mw.js +11 -20
  93. package/dist/esm/middlewares/auth_mw.js.map +1 -1
  94. package/dist/esm/middlewares/global_mw.js +9 -10
  95. package/dist/esm/middlewares/global_mw.js.map +1 -1
  96. package/dist/esm/types/interfaces/global.d.ts +1 -0
  97. package/dist/helpers/boards_helpers.js +62 -0
  98. package/dist/helpers/email_helpers.js +153 -0
  99. package/dist/helpers/firebase_helpers.js +601 -0
  100. package/dist/helpers/global_helpers.js +147 -0
  101. package/dist/helpers/index.js +12 -0
  102. package/dist/helpers/location_helpers.js +15 -0
  103. package/dist/helpers/login_helpers.js +18 -0
  104. package/dist/helpers/notification_helpers.js +248 -0
  105. package/dist/helpers/phone_number_helpers.js +96 -0
  106. package/dist/helpers/redis/helpers.js +215 -0
  107. package/dist/helpers/redis/index.js +4 -0
  108. package/dist/helpers/redis/initialize.js +139 -0
  109. package/dist/helpers/redis/keys.js +23 -0
  110. package/dist/helpers/redis/snapshot.js +166 -0
  111. package/dist/helpers/start.js +83 -0
  112. package/dist/helpers/tasks_helpers.js +139 -0
  113. package/dist/helpers/time_helpers.js +167 -0
  114. package/dist/index.js +5 -0
  115. package/dist/managers/cache_manager.js +37 -0
  116. package/dist/managers/index.js +4 -0
  117. package/dist/managers/logger_manager.js +68 -0
  118. package/dist/managers/rabbitmq_manager.js +179 -0
  119. package/dist/managers/translation_manager.js +38 -0
  120. package/dist/middlewares/auth_mw.js +50 -0
  121. package/dist/middlewares/error_handling.js +20 -0
  122. package/dist/middlewares/global_mw.js +119 -0
  123. package/dist/middlewares/index.js +4 -0
  124. package/dist/middlewares/trim_mw.js +7 -0
  125. package/dist/test.js +1 -0
  126. package/dist/types/enums/global.js +8 -0
  127. package/dist/types/enums/index.js +1 -0
  128. package/dist/types/helpers/boards_helpers.d.ts +10 -0
  129. package/dist/types/helpers/email_helpers.d.ts +12 -0
  130. package/dist/types/helpers/firebase_helpers.d.ts +56 -0
  131. package/dist/types/helpers/global_helpers.d.ts +16 -0
  132. package/dist/types/helpers/index.d.ts +12 -0
  133. package/dist/types/helpers/location_helpers.d.ts +3 -0
  134. package/dist/types/helpers/login_helpers.d.ts +4 -0
  135. package/dist/types/helpers/notification_helpers.d.ts +11 -0
  136. package/dist/types/helpers/phone_number_helpers.d.ts +19 -0
  137. package/dist/types/helpers/redis/helpers.d.ts +11 -0
  138. package/dist/types/helpers/redis/index.d.ts +4 -0
  139. package/dist/types/helpers/redis/initialize.d.ts +6 -0
  140. package/dist/types/helpers/redis/keys.d.ts +5 -0
  141. package/dist/types/helpers/redis/snapshot.d.ts +2 -0
  142. package/dist/types/helpers/start.d.ts +4 -0
  143. package/dist/types/helpers/tasks_helpers.d.ts +25 -0
  144. package/dist/types/helpers/time_helpers.d.ts +40 -0
  145. package/dist/types/index.d.ts +5 -0
  146. package/dist/types/index.js +3 -0
  147. package/dist/types/interfaces/index.js +2 -0
  148. package/dist/types/managers/cache_manager.d.ts +12 -0
  149. package/dist/types/managers/index.d.ts +4 -0
  150. package/dist/types/managers/logger_manager.d.ts +14 -0
  151. package/dist/types/managers/rabbitmq_manager.d.ts +60 -0
  152. package/dist/types/managers/translation_manager.d.ts +14 -0
  153. package/dist/types/middlewares/auth_mw.d.ts +4 -0
  154. package/dist/types/middlewares/error_handling.d.ts +11 -0
  155. package/dist/types/middlewares/global_mw.d.ts +5 -0
  156. package/dist/types/middlewares/index.d.ts +4 -0
  157. package/dist/types/middlewares/trim_mw.d.ts +2 -0
  158. package/dist/types/test.d.ts +0 -0
  159. package/dist/types/types/enums/global.d.ts +9 -0
  160. package/dist/types/types/enums/index.d.ts +1 -0
  161. package/dist/types/types/firebase_types.js +1 -0
  162. package/dist/types/types/global.js +1 -0
  163. package/dist/types/types/index.d.ts +3 -0
  164. package/dist/types/types/index.js +2 -0
  165. package/dist/types/types/interfaces/email.d.ts +33 -0
  166. package/dist/types/types/interfaces/global.d.ts +27 -0
  167. package/dist/types/types/interfaces/index.d.ts +2 -0
  168. package/dist/types/types/types/firebase_types.d.ts +50 -0
  169. package/dist/types/types/types/global.d.ts +17 -0
  170. package/dist/types/types/types/index.d.ts +2 -0
  171. package/package.json +5 -2
  172. package/dist/cjs/helpers/tasks.d.ts +0 -12
  173. package/dist/cjs/helpers/tasks.js +0 -62
  174. package/dist/cjs/helpers/tasks.js.map +0 -1
  175. package/dist/cjs/managers/cacche_manager2.d.ts +0 -18
  176. package/dist/cjs/managers/cacche_manager2.js +0 -41
  177. package/dist/cjs/managers/cacche_manager2.js.map +0 -1
  178. package/dist/cjs/managers/socket_manager.js +0 -245
  179. package/dist/cjs/managers/socket_manager.js.map +0 -1
  180. package/dist/esm/helpers/tasks.d.ts +0 -12
  181. package/dist/esm/helpers/tasks.js +0 -58
  182. package/dist/esm/helpers/tasks.js.map +0 -1
  183. package/dist/esm/managers/cacche_manager2.d.ts +0 -18
  184. package/dist/esm/managers/cacche_manager2.js +0 -37
  185. package/dist/esm/managers/cacche_manager2.js.map +0 -1
  186. package/dist/esm/managers/socket_manager.js +0 -243
  187. package/dist/esm/managers/socket_manager.js.map +0 -1
  188. /package/dist/{cjs/managers/socket_manager.d.ts → types/interfaces/email.js} +0 -0
  189. /package/dist/{esm/managers/socket_manager.d.ts → types/interfaces/global.js} +0 -0
@@ -0,0 +1,50 @@
1
+ import { verify_token, json_failed, query_document_optional, get_user_by_identifier } from "../helpers";
2
+ import { logger } from "../managers";
3
+ export const verify_user_auth = async (req, res, next) => {
4
+ try {
5
+ const user = await verify_token(req.headers.authorization);
6
+ req.body.firebase_user = user;
7
+ next();
8
+ }
9
+ catch (error) {
10
+ logger.error("error from verify user auth", error);
11
+ res.status(403).send(json_failed(error));
12
+ }
13
+ };
14
+ export const nx_user_login = async (req, res, next) => {
15
+ try {
16
+ const authorization = req.headers.authorization;
17
+ const user_data = await verify_token(authorization);
18
+ const { phone_number, email } = user_data;
19
+ if (!phone_number && !email) {
20
+ throw "Invalid authorization token";
21
+ }
22
+ const nx_user = await get_user_by_identifier(phone_number || email);
23
+ if (!nx_user) {
24
+ throw `No user found with phone number: ${phone_number} or email: ${email}.`;
25
+ }
26
+ const full_name = `${nx_user.first_name || ""} ${nx_user.last_name || ""}`.trim();
27
+ req.body.user = { ...nx_user, full_name };
28
+ next();
29
+ }
30
+ catch (error) {
31
+ res.status(403).send(json_failed(error));
32
+ }
33
+ };
34
+ export const client_login = async (req, res, next) => {
35
+ try {
36
+ const token = req.headers.authorization;
37
+ if (!token) {
38
+ throw new Error("Authorization token not found.");
39
+ }
40
+ const client_data = (await query_document_optional("nx-clients", "api_token", "==", token));
41
+ if (!client_data) {
42
+ throw new Error(`No client found with token: ${token} .`);
43
+ }
44
+ req.body.client = client_data;
45
+ next();
46
+ }
47
+ catch (error) {
48
+ res.status(403).send(json_failed(error.message || error));
49
+ }
50
+ };
@@ -0,0 +1,20 @@
1
+ import { logger } from "../managers";
2
+ /**
3
+ * Utility to handle async errors
4
+ */
5
+ const async_error_handler = (service) => {
6
+ return (req, res, next) => {
7
+ Promise.resolve(service(req, res)).catch(next);
8
+ };
9
+ };
10
+ /**
11
+ * Global error-handling middleware.
12
+ */
13
+ const error_handler = (err, req, res, next) => {
14
+ logger.error("Global Error Handler:", err.stack);
15
+ res.status(500).json({
16
+ status: "error",
17
+ message: err.message || "Internal Server Error",
18
+ });
19
+ };
20
+ export { error_handler, async_error_handler };
@@ -0,0 +1,119 @@
1
+ import { json_failed } from "../helpers";
2
+ import { logger } from "../managers";
3
+ const validateParameter = (data, parameter, is_mandatory) => {
4
+ if (data[parameter.key] === undefined) {
5
+ if (is_mandatory) {
6
+ throw `missing mandatory parameter: ${parameter.key}`;
7
+ }
8
+ else {
9
+ return;
10
+ }
11
+ }
12
+ if (parameter.type === "array" && !Array.isArray(data[parameter.key])) {
13
+ throw `parameter ${parameter.key} must be of type: Array`;
14
+ }
15
+ if (typeof data[parameter.key] !== parameter.type && parameter.type !== "array") {
16
+ throw `parameter ${parameter.key} must be of type: ${parameter.type}`;
17
+ }
18
+ if (parameter.type === "string" && parameter.length && data[parameter.key].length < parameter.length) {
19
+ throw `parameter ${parameter.key} must be string and must have minimum length of: ${parameter.length}`;
20
+ }
21
+ const is_array = Array.isArray(data[parameter.key]);
22
+ if (is_array) {
23
+ if (parameter.length && data[parameter.key].length < parameter.length) {
24
+ throw `parameter ${parameter.key} must be array and must have minimum length of: ${parameter.length}`;
25
+ }
26
+ if (Array.isArray(parameter.array_types) && parameter.array_types.length > 0) {
27
+ data[parameter.key].forEach((item, index) => {
28
+ const item_type = typeof item;
29
+ if (!parameter.array_types.includes(item_type)) {
30
+ throw `item at index ${index} in parameter ${parameter.key} must be of type: ${parameter.array_types.join(" | ")}`;
31
+ }
32
+ });
33
+ }
34
+ }
35
+ if (parameter.type === "object" && parameter.required_keys) {
36
+ const missingKeys = parameter.required_keys.filter((key) => data[parameter.key][key] === undefined);
37
+ if (missingKeys.length > 0) {
38
+ throw `parameter ${parameter.key} is missing required keys: ${missingKeys.join(", ")}`;
39
+ }
40
+ parameter.required_keys.forEach((key) => {
41
+ const value = data[parameter.key][key];
42
+ if ((typeof value === "string" || Array.isArray(value)) && value.length === 0) {
43
+ throw `parameter ${key} in ${parameter.key} must have some length `;
44
+ }
45
+ });
46
+ }
47
+ };
48
+ export const mandatory = ({ body, headers }) => {
49
+ return (req, res, next) => {
50
+ try {
51
+ const body_data = req.body;
52
+ const headers_data = req.headers;
53
+ if (body) {
54
+ body.forEach((parameter) => {
55
+ validateParameter(body_data, parameter, true);
56
+ });
57
+ }
58
+ if (headers) {
59
+ headers.forEach((parameter) => {
60
+ validateParameter(headers_data, parameter, true);
61
+ });
62
+ }
63
+ next();
64
+ }
65
+ catch (error) {
66
+ return res.send(json_failed(error));
67
+ }
68
+ };
69
+ };
70
+ export const optional = ({ body, headers }) => {
71
+ return (req, res, next) => {
72
+ try {
73
+ const body_data = req.body;
74
+ const headers_data = req.headers;
75
+ if (body) {
76
+ body.forEach((parameter) => {
77
+ validateParameter(body_data, parameter, false);
78
+ });
79
+ }
80
+ if (headers) {
81
+ headers.forEach((parameter) => {
82
+ validateParameter(headers_data, parameter, false);
83
+ });
84
+ }
85
+ next();
86
+ }
87
+ catch (error) {
88
+ return res.send(json_failed(error));
89
+ }
90
+ };
91
+ };
92
+ const is_gcp_request = (req) => {
93
+ const user_agent = req.get("user-agent")?.toLowerCase();
94
+ return !!(user_agent?.startsWith("googlehc") ||
95
+ user_agent?.startsWith("kube-probe") ||
96
+ user_agent?.startsWith("googlestackdrivermonitoring"));
97
+ };
98
+ export const request_logger = (log_requests) => {
99
+ return (req, res, next) => {
100
+ if (!log_requests?.gcp && is_gcp_request(req)) {
101
+ return next();
102
+ }
103
+ if (log_requests?.url || log_requests?.headers || log_requests?.query || log_requests?.body) {
104
+ logger.log(`${req.method} ${req.originalUrl}`);
105
+ }
106
+ if (log_requests?.headers) {
107
+ logger.log("Headers:", req.headers);
108
+ }
109
+ if (log_requests?.query) {
110
+ logger.log("Query:", req.query);
111
+ }
112
+ if (log_requests?.body) {
113
+ if (["POST", "PUT", "PATCH"].includes(req.method)) {
114
+ logger.log("Body:", req.body);
115
+ }
116
+ }
117
+ next();
118
+ };
119
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./global_mw";
2
+ export * from "./auth_mw";
3
+ export * from "./error_handling";
4
+ export * from "./trim_mw";
@@ -0,0 +1,7 @@
1
+ import { trim_strings } from "../helpers";
2
+ export const trim_body_middleware = () => (req, res, next) => {
3
+ if (req.body && typeof req.body === "object") {
4
+ req.body = trim_strings(req.body);
5
+ }
6
+ return next();
7
+ };
package/dist/test.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,8 @@
1
+ export var SimProvider;
2
+ (function (SimProvider) {
3
+ SimProvider["partner"] = "partner";
4
+ SimProvider["pelephone"] = "pelephone";
5
+ SimProvider["celcom"] = "celcom";
6
+ SimProvider["monogoto"] = "monogoto";
7
+ SimProvider["unknown"] = "unknown";
8
+ })(SimProvider || (SimProvider = {}));
@@ -0,0 +1 @@
1
+ export * from "./global";
@@ -0,0 +1,10 @@
1
+ import { Car, TObject } from "akeyless-types-commons";
2
+ interface BoardProviderWithBoardTypes {
3
+ board_provider: "erm" | "jimi" | "ruptela" | "servision" | "jimi_iothub";
4
+ board_types: string[];
5
+ }
6
+ export declare const extract_board_types_from_settings: (settings: TObject<any>) => BoardProviderWithBoardTypes[];
7
+ export type BoardMakerResult = "erm" | "jimi" | "ruptela" | "servision" | "jimi_iothub";
8
+ export declare const get_board_maker_by_board_type: (type: string) => BoardMakerResult;
9
+ export declare const get_board_maker_by_car: (car: Car) => BoardMakerResult;
10
+ export {};
@@ -0,0 +1,12 @@
1
+ import { EmailData, EmailAttachment } from "../types";
2
+ export declare const create_attachment_from_file: (file_path: string, filename?: string, disposition?: "attachment" | "inline") => Promise<EmailAttachment>;
3
+ export declare const create_attachment_from_buffer: (buffer: Buffer | Uint8Array, filename: string, mime_type: string, disposition?: "attachment" | "inline") => EmailAttachment;
4
+ export declare const create_attachment_from_url: (url: string, filename: string) => Promise<{
5
+ content: string;
6
+ filename: string;
7
+ type: string;
8
+ disposition: string;
9
+ }>;
10
+ export declare const send_email: (email_data: EmailData, options?: {
11
+ debug?: boolean;
12
+ }) => Promise<void>;
@@ -0,0 +1,56 @@
1
+ import firebase_admin from "firebase-admin";
2
+ import { AddAuditRecord, ExtraSnapshotConfig, InitSnapshotsOptions, OnSnapshotCallback, OnSnapshotParsers, QueryDocument, QueryDocumentByConditions, QueryDocumentOptional, QueryDocuments, QueryDocumentsByConditions, Snapshot, SnapshotBulk, SnapshotBulkByNames } from "../types";
3
+ import { DecodedIdToken } from "firebase-admin/auth";
4
+ import { TObject } from "akeyless-types-commons";
5
+ export declare const service_account_firebase: {
6
+ type: string;
7
+ project_id: string;
8
+ private_key_id: string;
9
+ private_key: string;
10
+ client_email: string;
11
+ client_id: string;
12
+ auth_uri: string;
13
+ token_uri: string;
14
+ auth_provider_x509_cert_url: string;
15
+ client_x509_cert_url: string;
16
+ universe_domain: string;
17
+ };
18
+ export declare const db: firebase_admin.firestore.Firestore;
19
+ export declare const messaging: import("firebase-admin/messaging").Messaging;
20
+ export declare const auth: import("firebase-admin/auth").Auth;
21
+ export declare const storage: import("firebase-admin/lib/storage/storage").Storage;
22
+ export declare const simple_extract_data: (doc: FirebaseFirestore.DocumentSnapshot) => TObject<any>;
23
+ export declare const get_all_documents: (collection_path: string) => Promise<any[]>;
24
+ export declare const query_documents: QueryDocuments;
25
+ export declare const query_documents_by_conditions: QueryDocumentsByConditions;
26
+ export declare const query_document_by_conditions: QueryDocumentByConditions;
27
+ export declare const query_document: QueryDocument;
28
+ export declare const query_document_optional: QueryDocumentOptional;
29
+ export declare const get_document_by_id: (collection_path: string, doc_id: string) => Promise<TObject<any>>;
30
+ export declare const get_document_by_id_optional: (collection_path: string, doc_id: string) => Promise<TObject<any> | null>;
31
+ export declare const set_document: (collection_path: string, doc_id: string, data: {}, merge?: boolean) => Promise<void>;
32
+ export declare const add_document: (collection_path: string, data: {}, include_id?: boolean, custom_id?: string) => Promise<string>;
33
+ export declare const delete_document: (collection_path: string, doc_id: string) => Promise<void>;
34
+ export declare const verify_token: (authorization: string | undefined, ignore_log?: boolean) => Promise<DecodedIdToken>;
35
+ export declare const parse_add_update_as_object: OnSnapshotCallback;
36
+ export declare const parse_delete_as_object: OnSnapshotCallback;
37
+ export declare const parse_add_update_as_array: OnSnapshotCallback;
38
+ export declare const parse_delete_as_array: OnSnapshotCallback;
39
+ export declare const snapshot: Snapshot;
40
+ export declare const init_snapshots: (options?: InitSnapshotsOptions) => Promise<void>;
41
+ export declare const snapshot_bulk: SnapshotBulk;
42
+ export declare const get_default_parsers: (parse_as: ExtraSnapshotConfig["parse_as"]) => OnSnapshotParsers;
43
+ export declare const snapshot_bulk_by_names: SnapshotBulkByNames;
44
+ export declare const add_audit_record: AddAuditRecord;
45
+ export declare const add_nx_problem: (problem: string, key: string, details: TObject<any>) => Promise<void>;
46
+ export interface SaveFileOptions {
47
+ content_type?: string;
48
+ content_disposition?: string;
49
+ cache_control?: string;
50
+ make_public?: boolean;
51
+ signed_url_ttl_ms?: number;
52
+ resumable?: boolean;
53
+ }
54
+ export declare const save_file_in_storage: (file_path: string, buffer: Buffer | Uint8Array, options?: SaveFileOptions) => Promise<string>;
55
+ export declare const get_file_url_from_storage: (file_path: string) => Promise<string>;
56
+ export declare const get_nx_settings: () => Promise<any>;
@@ -0,0 +1,16 @@
1
+ import { JsonFailed, JsonOK, NxServiceNameMap } from "../types";
2
+ import { Geo, LanguageOptions, TObject } from "akeyless-types-commons";
3
+ import { AxiosRequestConfig } from "axios";
4
+ export declare const init_env_variables: (required_vars?: string[]) => TObject<string>;
5
+ export declare const json_ok: JsonOK<TObject<any> | TObject<any>[]>;
6
+ export declare const json_failed: JsonFailed;
7
+ export declare const parse_error: (error: any) => any;
8
+ export declare const get_version: (packageJsonPath: string) => string;
9
+ export declare const sleep: (ms?: number) => Promise<unknown>;
10
+ export declare function get_nx_service_urls(env_name?: string): NxServiceNameMap;
11
+ export declare const get_address_by_geo: ({ lat, lng }: Geo, currentLanguage: LanguageOptions) => Promise<string>;
12
+ export declare const validate_and_cast: <T extends any>(variable: any, condition: Boolean) => variable is T;
13
+ export declare const get_or_default: <T>(value: T | undefined, default_value: T | (() => T)) => T;
14
+ export declare const trim_strings: <T>(input: any) => any;
15
+ export declare const remove_nulls_and_undefined: (obj: Record<string, any>) => Record<string, any>;
16
+ export declare const ignore_ssl_request: (config: AxiosRequestConfig) => Promise<import("axios").AxiosResponse<any, any>>;
@@ -0,0 +1,12 @@
1
+ export * from "./global_helpers";
2
+ export * from "./firebase_helpers";
3
+ export * from "./start";
4
+ export * from "./time_helpers";
5
+ export * from "./login_helpers";
6
+ export * from "./notification_helpers";
7
+ export * from "./email_helpers";
8
+ export * from "./phone_number_helpers";
9
+ export * from "./tasks_helpers";
10
+ export * from "./boards_helpers";
11
+ export * from "./redis";
12
+ export * from "./location_helpers";
@@ -0,0 +1,3 @@
1
+ import { Geo } from "akeyless-types-commons";
2
+ export declare const get_distance_in_meters_between_geo_points: (location1: Geo, location2: Geo) => number;
3
+ export declare const get_location_url: (location: Geo) => string;
@@ -0,0 +1,4 @@
1
+ import { NxUser, MobileAppUser } from "akeyless-types-commons";
2
+ export declare const convert_to_short_phone_number: (phone_number: string) => string;
3
+ export declare const get_user_by_identifier: (identifier: string, ignore_log?: boolean) => Promise<NxUser | null>;
4
+ export declare const get_mobile_app_user_by_uid: (uid: string, ignore_log?: boolean) => Promise<MobileAppUser | null>;
@@ -0,0 +1,11 @@
1
+ import { EventFromDevice, TObject } from "akeyless-types-commons";
2
+ export declare const send_sms: (recepient: string, text: string, entity_for_audit: string, details?: TObject<any>) => Promise<void>;
3
+ export declare const push_event_to_mobile_users: (event: EventFromDevice) => Promise<void>;
4
+ type FuncSendFcmMessage = (title: string, body: string, fcm_tokens: string[], custom_sound?: string) => Promise<{
5
+ success: boolean;
6
+ response: string;
7
+ success_count?: number;
8
+ failure_count?: number;
9
+ }>;
10
+ export declare const send_fcm_message: FuncSendFcmMessage;
11
+ export {};
@@ -0,0 +1,19 @@
1
+ import { SimProvider } from "../types/enums";
2
+ export declare const is_long_phone_number: (phone_number: string) => boolean;
3
+ export declare const is_israel_long_phone_number: (phone_number: string) => boolean;
4
+ export declare const is_thailand_long_phone_number: (phone_number: string) => boolean;
5
+ export declare const is_international_phone_number: (phone_number: string) => boolean;
6
+ export declare const is_iccid: (number: string) => boolean;
7
+ export declare const convert_to_short_israel_phone: (international_number: string) => string;
8
+ export declare const is_sim_provider_partner: (phone_number: string) => boolean;
9
+ export declare const is_sim_provider_pelephone: (phone_number: string) => boolean;
10
+ export declare const is_sim_provider_celcom: (phone_number: string) => boolean;
11
+ export declare const is_sim_provider_monogoto: (phone_number: string) => boolean;
12
+ export declare const get_sim_provider: (phone_number: string) => SimProvider;
13
+ interface LongShortPhoneNumbers {
14
+ short_phone_number: string;
15
+ long_phone_number: string;
16
+ is_israeli: boolean;
17
+ }
18
+ export declare const long_short_phone_numbers: (phone_number: string) => LongShortPhoneNumbers;
19
+ export {};
@@ -0,0 +1,11 @@
1
+ import { TObject } from "akeyless-types-commons";
2
+ import { WhereCondition } from "../../types";
3
+ export declare const redis_simple_extract_data: (raw: string) => TObject<any>;
4
+ export declare const redis_get_all_documents: (collection_path: string) => Promise<TObject<any>[]>;
5
+ export declare const redis_query_documents: (collection_path: string, field_name: string, operator: FirebaseFirestore.WhereFilterOp, value: any) => Promise<TObject<any>[]>;
6
+ export declare const redis_query_documents_by_conditions: (collection_path: string, where_conditions: WhereCondition[]) => Promise<TObject<any>[]>;
7
+ export declare const redis_query_document_by_conditions: (collection_path: string, where_conditions: WhereCondition[], ignore_logs?: boolean) => Promise<TObject<any>>;
8
+ export declare const redis_query_document: (collection_path: string, field_name: string, operator: FirebaseFirestore.WhereFilterOp, value: any, ignore_log?: boolean) => Promise<TObject<any>>;
9
+ export declare const redis_query_document_optional: (collection_path: string, field_name: string, operator: FirebaseFirestore.WhereFilterOp, value: any, ignore_log?: boolean) => Promise<TObject<any> | null>;
10
+ export declare const redis_get_document_by_id: (collection_path: string, doc_id: string) => Promise<TObject<any>>;
11
+ export declare const redis_get_document_by_id_optional: (collection_path: string, doc_id: string) => Promise<TObject<any> | null>;
@@ -0,0 +1,4 @@
1
+ export * from "./initialize";
2
+ export * from "./keys";
3
+ export * from "./snapshot";
4
+ export * from "./helpers";
@@ -0,0 +1,6 @@
1
+ import Redis from "ioredis";
2
+ export declare let redis_commander_connected: boolean;
3
+ export declare let redis_listener_connected: boolean;
4
+ export declare const init_redis: () => Promise<void>;
5
+ export declare const get_redis_commander: () => Redis;
6
+ export declare const get_redis_listener: () => Redis;
@@ -0,0 +1,5 @@
1
+ import Redis from "ioredis";
2
+ export declare const get_doc_key: (collection: string, doc_id: string) => string;
3
+ export declare const get_collection_keys: (collection: string) => string;
4
+ export declare const get_channel: (...args: string[]) => string;
5
+ export declare const scan_redis_keys: (pattern: string, redis_publisher: Redis) => Promise<string[]>;
@@ -0,0 +1,2 @@
1
+ import { OnSnapshotConfig } from "../../types";
2
+ export declare const redis_snapshots_bulk: (configs: OnSnapshotConfig[]) => Promise<void>;
@@ -0,0 +1,4 @@
1
+ import { Express } from "express";
2
+ import { AppOptions, MainRouter } from "../types";
3
+ export declare const start_server: (main_router: MainRouter, project_name: string, version: string, options?: AppOptions) => Promise<Express>;
4
+ export declare const basic_init: (main_router: MainRouter, project_name: string, version: string, options?: AppOptions) => Promise<Express>;
@@ -0,0 +1,25 @@
1
+ import { TObject } from "akeyless-types-commons";
2
+ export declare enum TaskName {
3
+ send_reset_sms = "send_reset_sms",
4
+ collect_devices_health = "collect_devices_health",
5
+ collect_charge_locations = "collect_charge_locations",
6
+ collect_charge_cdrs = "collect_charge_cdrs",
7
+ auto_connect_to_call_center = "auto_connect_to_call_center",
8
+ make_erm_ev_events = "make_erm_ev_events",
9
+ collect_jimi_cars_odometer = "collect_jimi_cars_odometer"
10
+ }
11
+ export declare enum TaskStatus {
12
+ running = "running",
13
+ completed = "completed",
14
+ failed = "failed",
15
+ suspeneded = "suspeneded"
16
+ }
17
+ export type TaskSaveOptions = "storage" | "db" | "none";
18
+ export interface ExecuteTaskOptions {
19
+ save_in?: TaskSaveOptions;
20
+ debug_logs?: boolean;
21
+ }
22
+ export declare const execute_task: <T = any>(source: string, task_name: TaskName, task: () => Promise<T>, options?: ExecuteTaskOptions) => Promise<void>;
23
+ export declare const get_task_data: <T = any>(task_name: TaskName) => Promise<T>;
24
+ export declare const get_task_data_from_storage: <T = any>(task_name: TaskName) => Promise<T | null>;
25
+ export declare const keep_task_data_in_storage: (task_name: TaskName, data: any[] | TObject<any>) => Promise<string>;
@@ -0,0 +1,40 @@
1
+ import { Timestamp } from "firebase-admin/firestore";
2
+ import { firebase_timestamp } from "akeyless-types-commons";
3
+ export declare function sort_by_timestamp(a: Timestamp, b: Timestamp, reverse?: boolean): number;
4
+ export interface TimePassedByDate {
5
+ seconds_passed: number;
6
+ minutes_passed: number;
7
+ hours_passed: number;
8
+ days_passed: number;
9
+ time_passed_formatted_short: string;
10
+ time_passed_formatted_long: string;
11
+ }
12
+ export declare const calculate_time_passed: (datetime: Date) => TimePassedByDate;
13
+ interface TimeToStringOptions {
14
+ format?: string;
15
+ fromFormat?: string;
16
+ tz?: string;
17
+ defaultReturnedValue?: string;
18
+ debug?: boolean;
19
+ }
20
+ export declare function any_datetime_to_string(firebaseTimestamp: Timestamp | Date | string | firebase_timestamp | number, options?: TimeToStringOptions): string;
21
+ interface TimeToMillisOptions extends Omit<TimeToStringOptions, "defaultReturnedValue" | "format"> {
22
+ defaultReturnedValue?: number;
23
+ }
24
+ export declare function any_datetime_to_millis(firebaseTimestamp: Timestamp | Date | string | number | firebase_timestamp, options?: TimeToMillisOptions): number;
25
+ /**
26
+ * Converts a Firebase Timestamp object into a formatted string.
27
+ *
28
+ * @param {firebase_timestamp} firebaseTimestamp - The Firebase timestamp object containing _seconds and _nanoseconds.
29
+ * @param {string} [format="DD-MM-YYYY HH:mm:ss"] - Optional the format string used to format the date. Default is "DD-MM-YYYY HH:mm:ss".
30
+ * @returns {string} - A formatted date string according to the specified format or the default format.
31
+ */
32
+ export declare function timestamp_to_string(firebaseTimestamp: firebase_timestamp, format?: string): string;
33
+ /**
34
+ * Converts a Firebase Timestamp object into milliseconds since the Unix epoch.
35
+ *
36
+ * @param {firebase_timestamp} firebaseTimestamp - The Firebase timestamp object containing _seconds and _nanoseconds.
37
+ * @returns {number} - Time in milliseconds
38
+ */
39
+ export declare function timestamp_to_millis(firebaseTimestamp: firebase_timestamp): number;
40
+ export {};
@@ -0,0 +1,5 @@
1
+ import * as helpers from "./helpers";
2
+ import * as managers from "./managers";
3
+ import * as middlewares from "./middlewares";
4
+ import * as types from "./types";
5
+ export { helpers, managers, middlewares, types };
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './interfaces';
3
+ export * from './enums';
@@ -0,0 +1,2 @@
1
+ export * from './global';
2
+ export * from './email';
@@ -0,0 +1,12 @@
1
+ export declare class CacheManager {
2
+ private static instance;
3
+ private data;
4
+ private constructor();
5
+ static getInstance(): CacheManager;
6
+ setArrayData(key: string, data: any[]): void;
7
+ getArrayData(key: string): any[];
8
+ setObjectData(key: string, data: any): void;
9
+ getObjectData(key: string, default_value?: any): any;
10
+ getObjectDataAsArray(key: string, default_value?: any): any[];
11
+ }
12
+ export declare const cache_manager: CacheManager;
@@ -0,0 +1,4 @@
1
+ export * from "./cache_manager";
2
+ export * from "./translation_manager";
3
+ export * from "./logger_manager";
4
+ export * from "./rabbitmq_manager";
@@ -0,0 +1,14 @@
1
+ import { TObject } from "akeyless-types-commons";
2
+ declare class LoggerManager {
3
+ private static instance;
4
+ private constructor();
5
+ static getInstance(): LoggerManager;
6
+ private get_date;
7
+ private is_gcp;
8
+ private emit;
9
+ log(msg: string, data?: TObject<any> | any[]): void;
10
+ error(msg: string, data?: any): void;
11
+ warn(msg: string, data?: any): void;
12
+ }
13
+ export declare const logger: LoggerManager;
14
+ export {};
@@ -0,0 +1,60 @@
1
+ export type JsonValue = null | boolean | number | string | JsonValue[] | {
2
+ [key: string]: JsonValue;
3
+ };
4
+ export type EventHeaderValue = string | number | boolean;
5
+ export interface RabbitEvent<T extends JsonValue = JsonValue> {
6
+ body: T;
7
+ event_id?: string;
8
+ created_at?: string;
9
+ redelivered: boolean;
10
+ headers: Record<string, unknown>;
11
+ }
12
+ export interface PushEventOptions {
13
+ /** RabbitMQ message time-to-live, in seconds. */
14
+ ttl_seconds?: number;
15
+ headers?: Record<string, EventHeaderValue>;
16
+ }
17
+ export interface SubscribeOptions {
18
+ /** Requeue messages when the handler throws or rejects. Defaults to true. */
19
+ requeue_on_error?: boolean;
20
+ }
21
+ export interface Subscription {
22
+ queue_name: string;
23
+ consumer_tag: string;
24
+ cancel(): Promise<void>;
25
+ }
26
+ export type EventHandler<T extends JsonValue = JsonValue> = (event: RabbitEvent<T>) => void | Promise<void>;
27
+ /**
28
+ * JSON event transport backed by durable fanout exchanges and durable queues.
29
+ *
30
+ * Each channel name maps to an exchange. Each distinct subscriber name gets a
31
+ * queue and therefore its own copy of every event. Instances sharing the same
32
+ * subscriber name compete for work, which supports horizontal scaling.
33
+ */
34
+ export declare class RabbitManager {
35
+ readonly prefetch_count: number;
36
+ private connection;
37
+ private channel;
38
+ private connecting;
39
+ constructor();
40
+ connect(): Promise<void>;
41
+ close(): Promise<void>;
42
+ push_event<T extends JsonValue>(channel_name: string, payload: T, options?: PushEventOptions): Promise<string>;
43
+ private subscriptions;
44
+ subscribe_for_channel<T extends JsonValue>(channel_name: string, subscriber_name: string, handler: EventHandler<T>, options?: SubscribeOptions): Promise<Subscription>;
45
+ cancel_subscriptions(): Promise<void>;
46
+ pull_and_delete<T extends JsonValue>(channel_name: string, subscriber_name: string): Promise<RabbitEvent<T> | undefined>;
47
+ /**
48
+ * Diagnostic peek implemented as get + nack + requeue.
49
+ * It is not a reliable queue browser: the same event can repeat or move.
50
+ */
51
+ pull_and_leave<T extends JsonValue>(channel_name: string, subscriber_name: string): Promise<RabbitEvent<T> | undefined>;
52
+ private open_connection;
53
+ private get_channel;
54
+ private declare_exchange;
55
+ private declare_subscription;
56
+ private handle_message;
57
+ private to_event;
58
+ private validate_name;
59
+ }
60
+ export declare const rabbitmq: RabbitManager;
@@ -0,0 +1,14 @@
1
+ import { TObject } from "akeyless-types-commons";
2
+ import { EntityOptions, LangOptions } from "../types";
3
+ export declare class TranslationManager {
4
+ private static instance;
5
+ private data;
6
+ private constructor();
7
+ static getInstance(): TranslationManager;
8
+ setTranslationData(data: TObject<any>): void;
9
+ getTranslationData(): TObject<any>;
10
+ get_translation(scope: string, lang: string, entity: string, key: string): string;
11
+ get_sms(lang: LangOptions, entity: EntityOptions, key: string): string;
12
+ get_email(lang: LangOptions, entity: EntityOptions, key: string): string;
13
+ }
14
+ export declare const translation_manager: TranslationManager;
@@ -0,0 +1,4 @@
1
+ import { MW } from "../types";
2
+ export declare const verify_user_auth: MW;
3
+ export declare const nx_user_login: MW;
4
+ export declare const client_login: MW;
@@ -0,0 +1,11 @@
1
+ import { Request, Response, NextFunction } from "express";
2
+ import { Service } from "../types";
3
+ /**
4
+ * Utility to handle async errors
5
+ */
6
+ declare const async_error_handler: (service: Service) => (req: Request, res: Response, next: NextFunction) => void;
7
+ /**
8
+ * Global error-handling middleware.
9
+ */
10
+ declare const error_handler: (err: Error, req: Request, res: Response, next: NextFunction) => void;
11
+ export { error_handler, async_error_handler };