fiberx-backend-toolkit 0.1.21 → 1.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 (67) hide show
  1. package/README.md +207 -139
  2. package/dist/code_templates/sequelize_code_template.d.ts +1 -1
  3. package/dist/code_templates/sequelize_code_template.js +127 -74
  4. package/dist/config/constants.d.ts +1 -0
  5. package/dist/config/constants.js +82 -15
  6. package/dist/database/connectors/sequelize_connector.d.ts +2 -0
  7. package/dist/database/connectors/sequelize_connector.js +43 -21
  8. package/dist/database/main.d.ts +3 -2
  9. package/dist/database/main.js +4 -2
  10. package/dist/database/schema/schema_diff_util.d.ts +0 -1
  11. package/dist/database/schema/schema_diff_util.js +7 -15
  12. package/dist/database/scripts/create_schema_script.js +6 -3
  13. package/dist/database/scripts/make_migrations_script.js +17 -10
  14. package/dist/database/scripts/migration_runner_script.d.ts +3 -1
  15. package/dist/database/scripts/migration_runner_script.js +58 -23
  16. package/dist/database/scripts/seeder_runner_script.d.ts +3 -1
  17. package/dist/database/scripts/seeder_runner_script.js +49 -17
  18. package/dist/database/scripts/sequelize_model_generator_script.d.ts +2 -2
  19. package/dist/database/scripts/sequelize_model_generator_script.js +11 -5
  20. package/dist/index.d.ts +7 -0
  21. package/dist/index.js +7 -0
  22. package/dist/mailer/main.d.ts +1 -1
  23. package/dist/mailer/processors/email_delivery_processor.js +45 -13
  24. package/dist/mailer/processors/email_enqueue_processor.js +23 -7
  25. package/dist/mailer/utils/mailer_data_loader_util.d.ts +4 -4
  26. package/dist/mailer/utils/mailer_data_loader_util.js +5 -5
  27. package/dist/middle_ware/authentication_middle_ware.d.ts +3 -3
  28. package/dist/middle_ware/authentication_middle_ware.js +27 -25
  29. package/dist/middle_ware/cookie_manager_middle_ware.js +1 -1
  30. package/dist/middle_ware/main.d.ts +3 -2
  31. package/dist/middle_ware/main.js +4 -2
  32. package/dist/middle_ware/rate_limiter_middle_ware.js +0 -1
  33. package/dist/middle_ware/request_logger_middle_ware.js +2 -1
  34. package/dist/middle_ware/response_formatter_middle_ware.js +5 -4
  35. package/dist/middle_ware/secure_headers_middle_ware.js +2 -1
  36. package/dist/rbac/rbac_loader_util.js +2 -2
  37. package/dist/storage/drivers/gcs_storage_driver.js +5 -5
  38. package/dist/storage/drivers/local_storage_driver.js +2 -2
  39. package/dist/storage/main.d.ts +1 -1
  40. package/dist/storage/processors/file_upload_processor.js +4 -4
  41. package/dist/storage/utils/storage_driver_util.d.ts +1 -1
  42. package/dist/storage/utils/storage_driver_util.js +12 -10
  43. package/dist/types/express_decelaration.d.ts +1 -1
  44. package/dist/types/express_decelaration.js +0 -1
  45. package/dist/types/middle_ware_type.d.ts +14 -12
  46. package/dist/types/middle_ware_type.js +0 -2
  47. package/dist/types/schema_type.js +0 -1
  48. package/dist/types/util_type.js +0 -1
  49. package/dist/utils/content_manager_util.js +11 -9
  50. package/dist/utils/crypto_key_util.js +9 -10
  51. package/dist/utils/encryptor_decryptor_util.js +19 -9
  52. package/dist/utils/env_manager_util.d.ts +1 -0
  53. package/dist/utils/env_manager_util.js +10 -2
  54. package/dist/utils/fs_actions_util.js +1 -1
  55. package/dist/utils/input_transformer_util.js +11 -25
  56. package/dist/utils/input_validator_util.d.ts +1 -1
  57. package/dist/utils/input_validator_util.js +75 -27
  58. package/dist/utils/logger_util.d.ts +2 -2
  59. package/dist/utils/logger_util.js +23 -9
  60. package/dist/utils/main.d.ts +1 -1
  61. package/dist/utils/safe_execute_util.js +21 -11
  62. package/dist/utils/sql_formatter_util.js +1 -5
  63. package/dist/utils/totp_service_util.js +3 -7
  64. package/dist/utils/uuid_gen_util.js +6 -2
  65. package/dist/validators/file_validator_util.js +2 -2
  66. package/dist/validators/query_validator_util.js +3 -3
  67. package/package.json +68 -2
@@ -18,13 +18,17 @@ class EmailDeliveryProcessor {
18
18
  this.adapter = adapter;
19
19
  this.options = options || {};
20
20
  }
21
- // EMial Render method
21
+ // EMial Render method
22
22
  async render(template, payload) {
23
23
  try {
24
24
  return await main_1.EJSRenderUtil.safeRenderString(template, payload);
25
25
  }
26
26
  catch (error) {
27
- this.logger.error(`Failed to render string with given payload`, { template, payload, error });
27
+ this.logger.error(`Failed to render string with given payload`, {
28
+ template,
29
+ payload,
30
+ error,
31
+ });
28
32
  return null;
29
33
  }
30
34
  }
@@ -57,7 +61,7 @@ class EmailDeliveryProcessor {
57
61
  };
58
62
  });
59
63
  this.logger.info(`Done preparing ${email_attachments?.length} Email attachments for Record with ID ${record_id}`);
60
- const { from_email_address, reply_to_email_address, host, port, username, decrypted_password, tls_reject_unauthorized = false } = await this.adapter.getMailerTransporterConfig(record, mailer_config);
64
+ const { from_email_address, reply_to_email_address, host, port, username, decrypted_password, tls_reject_unauthorized = false, } = await this.adapter.getMailerTransporterConfig(record, mailer_config);
61
65
  const transporter = nodemailer_1.default.createTransport({
62
66
  host,
63
67
  port,
@@ -66,7 +70,7 @@ class EmailDeliveryProcessor {
66
70
  user: username,
67
71
  pass: decrypted_password,
68
72
  },
69
- tls: { rejectUnauthorized: tls_reject_unauthorized }
73
+ tls: { rejectUnauthorized: tls_reject_unauthorized },
70
74
  });
71
75
  this.logger.info(`Mailer transporter Config has been set for Record with ID ${record_id}`);
72
76
  await transporter.sendMail({
@@ -107,20 +111,35 @@ class EmailDeliveryProcessor {
107
111
  async processSingleRecord(record) {
108
112
  const { id: record_id, recipient_email } = this.adapter.getEmailRecordIdAndRecipient(record);
109
113
  try {
110
- this.logger.info(`Processing email queue Record ${record_id}`, { record_id, recipient_email });
114
+ this.logger.info(`Processing email queue Record ${record_id}`, {
115
+ record_id,
116
+ recipient_email,
117
+ });
111
118
  const template = await this.adapter.getEmailRecordTemplate(record);
112
119
  if (!template) {
113
- this.logger.error(`Missing Email Template for Record ${record_id}`, { record_id, recipient_email, template });
120
+ this.logger.error(`Missing Email Template for Record ${record_id}`, {
121
+ record_id,
122
+ recipient_email,
123
+ template,
124
+ });
114
125
  throw new Error(`Missing Email Template for Record ${record_id}`);
115
126
  }
116
127
  const base_template = await this.adapter.getEmailRecordBaseTemplate(record, template);
117
128
  if (!base_template) {
118
- this.logger.error(`Missing Base Email Template for Record ${record_id}`, { record_id, recipient_email, base_template });
129
+ this.logger.error(`Missing Base Email Template for Record ${record_id}`, {
130
+ record_id,
131
+ recipient_email,
132
+ base_template,
133
+ });
119
134
  throw new Error(`Missing Base Email Template for Record ${record_id}`);
120
135
  }
121
136
  const mailer_config = await this.adapter.getEmailRecordMailerConfig(record, base_template);
122
137
  if (!mailer_config) {
123
- this.logger.error(`Missing Mailer Config for Record ${record_id}`, { record_id, recipient_email, mailer_config });
138
+ this.logger.error(`Missing Mailer Config for Record ${record_id}`, {
139
+ record_id,
140
+ recipient_email,
141
+ mailer_config,
142
+ });
124
143
  throw new Error(`Missing Mailer Config for Record ${record_id}`);
125
144
  }
126
145
  const subject_value = this.adapter.getEmailRecordSubjectValue(record);
@@ -136,7 +155,11 @@ class EmailDeliveryProcessor {
136
155
  const full_email_payload = await this.adapter.getFullEmailPayload(record, rendered_subject, rendered_body, email_payload);
137
156
  const full_email_render = await this.render(base_email_value, full_email_payload);
138
157
  if (!full_email_render) {
139
- this.logger.error(`Failed to render Full Email for Record ${record_id}`, { base_email_value, full_email_render, full_email_payload });
158
+ this.logger.error(`Failed to render Full Email for Record ${record_id}`, {
159
+ base_email_value,
160
+ full_email_render,
161
+ full_email_payload,
162
+ });
140
163
  throw new Error(`Failed to render Full Email for Record ${record_id}`);
141
164
  }
142
165
  let email_sent = false;
@@ -147,16 +170,25 @@ class EmailDeliveryProcessor {
147
170
  email_sent = await this.sendEmail(record, mailer_config, rendered_subject, full_email_render, email_payload?.attachments);
148
171
  }
149
172
  if (!email_sent) {
150
- this.logger.error(`Failed to Send email for Record ${record_id}`, { email_sent, recipient_email });
173
+ this.logger.error(`Failed to Send email for Record ${record_id}`, {
174
+ email_sent,
175
+ recipient_email,
176
+ });
151
177
  throw new Error(`Failed to Send email for Record ${record_id}`);
152
178
  }
153
179
  await this.adapter.updateEmailRecordAsCompleted(record, rendered_subject, rendered_body);
154
- this.logger.success(`Completed Processing email queue Record ${record_id}`, { record_id, recipient_email });
180
+ this.logger.success(`Completed Processing email queue Record ${record_id}`, {
181
+ record_id,
182
+ recipient_email,
183
+ });
155
184
  }
156
185
  catch (error) {
157
186
  const message = error?.message ?? "Unknown error";
158
187
  await this.adapter.updateEmailRecordAsFailed(record, message);
159
- this.logger.error(`Failed to Process email queue Record ${record_id}`, { record_id, recipient_email });
188
+ this.logger.error(`Failed to Process email queue Record ${record_id}`, {
189
+ record_id,
190
+ recipient_email,
191
+ });
160
192
  }
161
193
  }
162
194
  // ==============================
@@ -170,7 +202,7 @@ class EmailDeliveryProcessor {
170
202
  const concurrency = this.options?.concurrency ?? 5;
171
203
  for (let i = 0; i < records.length; i += concurrency) {
172
204
  const batch = records.slice(i, i + concurrency);
173
- await Promise.all(batch.map(r => this.processSingleRecord(r)));
205
+ await Promise.all(batch.map((r) => this.processSingleRecord(r)));
174
206
  }
175
207
  this.logger.info(`Done Processing ${records.length} queued email(s)`);
176
208
  }
@@ -67,8 +67,12 @@ class EmailEnqueueProcessor {
67
67
  // ==============================
68
68
  async enqueue(input) {
69
69
  try {
70
- const { notification_code, payload: data_payload, recipient_email, created_by, scheduled_at = null, attachments = [] } = input;
71
- this.logger.info("Enqueue email request received", { notification_code, recipient_email, scheduled_at });
70
+ const { notification_code, payload: data_payload, recipient_email, created_by, scheduled_at = null, attachments = [], } = input;
71
+ this.logger.info("Enqueue email request received", {
72
+ notification_code,
73
+ recipient_email,
74
+ scheduled_at,
75
+ });
72
76
  // 1️⃣ Resolve notification
73
77
  const template = await this.provider.fetchActiveTemplate(notification_code);
74
78
  if (!template) {
@@ -78,12 +82,18 @@ class EmailEnqueueProcessor {
78
82
  this.logger.info("Template record resolved", { notification_code });
79
83
  const notification = this.provider.getNotificationFromTemplate(template);
80
84
  if (!template) {
81
- this.logger.error("Failed to fetch notification record from template", { notification });
85
+ this.logger.error("Failed to fetch notification record from template", {
86
+ notification,
87
+ });
82
88
  throw new Error("Failed to fetch notification record from template");
83
89
  }
84
90
  this.logger.info("Notification record resolved", { notification_code });
85
91
  const content_payload = await this.LoadEmailContentPayload(`${notification_code}_email`);
86
- const full_payload = { static_content: content_payload, db_content: data_payload, attachments };
92
+ const full_payload = {
93
+ static_content: content_payload,
94
+ db_content: data_payload,
95
+ attachments,
96
+ };
87
97
  // 4️⃣ Validate
88
98
  this.validate(this.provider.getRequiredPlaceholders(template), full_payload);
89
99
  // 5️⃣ Resolve mailer config
@@ -101,13 +111,19 @@ class EmailEnqueueProcessor {
101
111
  recipient_email,
102
112
  payload: full_payload,
103
113
  scheduled_at,
104
- created_by
114
+ created_by,
105
115
  });
106
116
  if (!queue_entity) {
107
- this.logger.error("Failed to enqueue email", { notification_code, recipient_email });
117
+ this.logger.error("Failed to enqueue email", {
118
+ notification_code,
119
+ recipient_email,
120
+ });
108
121
  throw new Error("Failed to enqueue email");
109
122
  }
110
- this.logger.info("✅ Email successfully enqueued", { notification_code, recipient_email });
123
+ this.logger.info("✅ Email successfully enqueued", {
124
+ notification_code,
125
+ recipient_email,
126
+ });
111
127
  return queue_entity;
112
128
  }
113
129
  catch (error) {
@@ -23,10 +23,10 @@ declare class MailerDataLoaderUtil<TMailerConfig, TBaseTemplate, TNotificationTy
23
23
  */
24
24
  load(force_refresh?: boolean): Promise<void>;
25
25
  /**
26
- * ===============================
27
- * ACCESSORS
28
- * ===============================
29
- */
26
+ * ===============================
27
+ * ACCESSORS
28
+ * ===============================
29
+ */
30
30
  private getSnapshot;
31
31
  getMailerConfig(): Promise<TMailerConfig | null>;
32
32
  getBaseTemplate(): Promise<TBaseTemplate | null>;
@@ -42,7 +42,7 @@ class MailerDataLoaderUtil {
42
42
  notification_types,
43
43
  email_contents,
44
44
  notification_by_code,
45
- templates_by_notification_code
45
+ templates_by_notification_code,
46
46
  };
47
47
  }
48
48
  // Method to Initialize singleton (MUST be called once)
@@ -88,10 +88,10 @@ class MailerDataLoaderUtil {
88
88
  return this.loading_promise;
89
89
  }
90
90
  /**
91
- * ===============================
92
- * ACCESSORS
93
- * ===============================
94
- */
91
+ * ===============================
92
+ * ACCESSORS
93
+ * ===============================
94
+ */
95
95
  async getSnapshot() {
96
96
  let snapshot = this.cache.get(this.CACHE_KEY);
97
97
  // ✅ If exists → return immediately
@@ -1,7 +1,7 @@
1
1
  import { Model } from "sequelize";
2
2
  import { Request, Response, NextFunction, RequestHandler } from "express";
3
3
  import { AuthenticatorOptions, DefaultRequestInfo, DefaultAccessTokenPayload, DefaultRefreshTokenPayload } from "../types/middle_ware_type";
4
- declare class AuthenicationMiddleWare<TRequestInfo extends DefaultRequestInfo = DefaultRequestInfo, TAccessPayload extends DefaultAccessTokenPayload = DefaultAccessTokenPayload, TRefreshPayload extends DefaultRefreshTokenPayload = DefaultRefreshTokenPayload, TSessionModel extends Model = Model, TLoginChallengeModel extends Model = Model, TActorModel extends Model = Model> {
4
+ declare class AuthenticationMiddleWare<TRequestInfo extends DefaultRequestInfo = DefaultRequestInfo, TAccessPayload extends DefaultAccessTokenPayload = DefaultAccessTokenPayload, TRefreshPayload extends DefaultRefreshTokenPayload = DefaultRefreshTokenPayload, TSessionModel extends Model = Model, TLoginChallengeModel extends Model = Model, TActorModel extends Model = Model> {
5
5
  private name;
6
6
  private logger;
7
7
  private readonly options;
@@ -14,11 +14,11 @@ declare class AuthenicationMiddleWare<TRequestInfo extends DefaultRequestInfo =
14
14
  protected loadMemberSession(member_id: number | string, session_id: number | string, request_info?: TRequestInfo, is_2fa_validated?: boolean): Promise<Model | null>;
15
15
  protected loadMemberLoginChallenge(member_id: number | string, challenge_id: number | string, request_info?: TRequestInfo, is_2fa_validated?: boolean): Promise<Model | null>;
16
16
  protected getActorPermissions(actor_id: number | string, role_ids: (number | string)[]): Promise<string[]>;
17
- protected validateHasPermission(request_info: TRequestInfo): Promise<boolean>;
17
+ protected validateHasPermission(request_info: TRequestInfo, req?: Request): Promise<boolean>;
18
18
  setPermissionName: (permission_name: string) => RequestHandler;
19
19
  requireNoAuth(req: Request, res: Response, next: NextFunction): Promise<void | Response>;
20
20
  requirePartialAuth(req: Request, res: Response, next: NextFunction): Promise<void | Response>;
21
21
  requireFullAuth(req: Request, res: Response, next: NextFunction): Promise<void | Response>;
22
22
  requireAppAuthMiddleWareMethod(req: Request, res: Response, next: NextFunction): Promise<void | Response>;
23
23
  }
24
- export default AuthenicationMiddleWare;
24
+ export default AuthenticationMiddleWare;
@@ -10,7 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const main_1 = require("../utils/main");
13
- class AuthenicationMiddleWare {
13
+ class AuthenticationMiddleWare {
14
14
  name = "authentication_middle_ware";
15
15
  logger = new main_1.LoggerUtil(this.name);
16
16
  options;
@@ -55,10 +55,12 @@ class AuthenicationMiddleWare {
55
55
  }
56
56
  // Method to load member login challenge
57
57
  async loadMemberLoginChallenge(member_id, challenge_id, request_info, is_2fa_validated = true) {
58
- if (!this.options?.loadMemberLoginChallenegeMethod) {
58
+ const load_challenge_method = this.options?.loadMemberLoginChallengeMethod ??
59
+ this.options?.loadMemberLoginChallenegeMethod;
60
+ if (!load_challenge_method) {
59
61
  return null;
60
62
  }
61
- return this.options?.loadMemberLoginChallenegeMethod(member_id, challenge_id, request_info, is_2fa_validated);
63
+ return load_challenge_method(member_id, challenge_id, request_info, is_2fa_validated);
62
64
  }
63
65
  // Method to load member login challenge
64
66
  async getActorPermissions(actor_id, role_ids) {
@@ -68,11 +70,11 @@ class AuthenicationMiddleWare {
68
70
  return this.options?.getActorPermissionsMethod(actor_id, role_ids);
69
71
  }
70
72
  // Method to validate refresh token payload
71
- async validateHasPermission(request_info) {
73
+ async validateHasPermission(request_info, req) {
72
74
  if (!this.options?.validateActorHasPermissionMethod) {
73
75
  return false;
74
76
  }
75
- return this.options?.validateActorHasPermissionMethod(request_info);
77
+ return this.options?.validateActorHasPermissionMethod(request_info, req);
76
78
  }
77
79
  // -----------------------------------
78
80
  // GENERIC MIDDLEWARES
@@ -81,8 +83,12 @@ class AuthenicationMiddleWare {
81
83
  return async (req, res, next) => {
82
84
  req.permission_name = permission_name;
83
85
  this.logger.info(`[${this.name}] 🔐 Route permission set as ${permission_name} for request ${req.request_id}`);
84
- const request_info = await this.extractRequestInfo(req) || req;
85
- const has_permission = await this.validateHasPermission(request_info);
86
+ const request_info = (await this.extractRequestInfo(req)) || req;
87
+ if (request_info && typeof request_info === "object") {
88
+ request_info.permission_name =
89
+ permission_name;
90
+ }
91
+ const has_permission = await this.validateHasPermission(request_info, req);
86
92
  if (!has_permission) {
87
93
  this.logger.info(`[${this.name}] ⛔ Permission denied for request ${req.request_id} with required permission ${permission_name}`);
88
94
  return res.errResponse(403, "unauthorized_access_permission");
@@ -97,99 +103,95 @@ class AuthenicationMiddleWare {
97
103
  }
98
104
  return this.options?.requireNoAuthMiddleWareMethod(req, res, next);
99
105
  }
100
- ;
101
106
  async requirePartialAuth(req, res, next) {
102
107
  if (!this.options?.requirePartialAuthMiddleWareMethod) {
103
108
  return next();
104
109
  }
105
110
  return this.options?.requirePartialAuthMiddleWareMethod(req, res, next);
106
111
  }
107
- ;
108
112
  async requireFullAuth(req, res, next) {
109
113
  if (!this.options?.requireFullAuthMiddleWareMethod) {
110
114
  return next();
111
115
  }
112
116
  return this.options?.requireFullAuthMiddleWareMethod(req, res, next);
113
117
  }
114
- ;
115
118
  async requireAppAuthMiddleWareMethod(req, res, next) {
116
119
  if (!this.options?.requireAppAuthMiddleWareMethod) {
117
120
  return next();
118
121
  }
119
122
  return this.options?.requireAppAuthMiddleWareMethod(req, res, next);
120
123
  }
121
- ;
122
124
  }
123
125
  __decorate([
124
126
  main_1.SafeExecuteUtil.safeExecuteReturn("authentication_middle_ware", null),
125
127
  __metadata("design:type", Function),
126
128
  __metadata("design:paramtypes", [Object]),
127
129
  __metadata("design:returntype", Promise)
128
- ], AuthenicationMiddleWare.prototype, "extractRequestInfo", null);
130
+ ], AuthenticationMiddleWare.prototype, "extractRequestInfo", null);
129
131
  __decorate([
130
132
  main_1.SafeExecuteUtil.safeExecuteReturn("authentication_middle_ware", null),
131
133
  __metadata("design:type", Function),
132
134
  __metadata("design:paramtypes", [String, Object]),
133
135
  __metadata("design:returntype", Promise)
134
- ], AuthenicationMiddleWare.prototype, "validateAccessToken", null);
136
+ ], AuthenticationMiddleWare.prototype, "validateAccessToken", null);
135
137
  __decorate([
136
138
  main_1.SafeExecuteUtil.safeExecuteReturn("authentication_middle_ware", null),
137
139
  __metadata("design:type", Function),
138
140
  __metadata("design:paramtypes", [String, Object]),
139
141
  __metadata("design:returntype", Promise)
140
- ], AuthenicationMiddleWare.prototype, "validateRefreshToken", null);
142
+ ], AuthenticationMiddleWare.prototype, "validateRefreshToken", null);
141
143
  __decorate([
142
144
  main_1.SafeExecuteUtil.safeExecuteReturn("authentication_middle_ware", null),
143
145
  __metadata("design:type", Function),
144
146
  __metadata("design:paramtypes", [String, Object, Object]),
145
147
  __metadata("design:returntype", Promise)
146
- ], AuthenicationMiddleWare.prototype, "LoadActor", null);
148
+ ], AuthenticationMiddleWare.prototype, "LoadActor", null);
147
149
  __decorate([
148
150
  main_1.SafeExecuteUtil.safeExecuteReturn("authentication_middle_ware", null),
149
151
  __metadata("design:type", Function),
150
152
  __metadata("design:paramtypes", [Object, Object, Object, Boolean]),
151
153
  __metadata("design:returntype", Promise)
152
- ], AuthenicationMiddleWare.prototype, "loadMemberSession", null);
154
+ ], AuthenticationMiddleWare.prototype, "loadMemberSession", null);
153
155
  __decorate([
154
156
  main_1.SafeExecuteUtil.safeExecuteReturn("authentication_middle_ware", null),
155
157
  __metadata("design:type", Function),
156
158
  __metadata("design:paramtypes", [Object, Object, Object, Boolean]),
157
159
  __metadata("design:returntype", Promise)
158
- ], AuthenicationMiddleWare.prototype, "loadMemberLoginChallenge", null);
160
+ ], AuthenticationMiddleWare.prototype, "loadMemberLoginChallenge", null);
159
161
  __decorate([
160
162
  main_1.SafeExecuteUtil.safeExecuteReturn("authentication_middle_ware", []),
161
163
  __metadata("design:type", Function),
162
164
  __metadata("design:paramtypes", [Object, Array]),
163
165
  __metadata("design:returntype", Promise)
164
- ], AuthenicationMiddleWare.prototype, "getActorPermissions", null);
166
+ ], AuthenticationMiddleWare.prototype, "getActorPermissions", null);
165
167
  __decorate([
166
168
  main_1.SafeExecuteUtil.safeExecuteReturn("authentication_middle_ware", false),
167
169
  __metadata("design:type", Function),
168
- __metadata("design:paramtypes", [Object]),
170
+ __metadata("design:paramtypes", [Object, Object]),
169
171
  __metadata("design:returntype", Promise)
170
- ], AuthenicationMiddleWare.prototype, "validateHasPermission", null);
172
+ ], AuthenticationMiddleWare.prototype, "validateHasPermission", null);
171
173
  __decorate([
172
174
  main_1.SafeExecuteUtil.safeExecuteThrow("authentication_middle_ware"),
173
175
  __metadata("design:type", Function),
174
176
  __metadata("design:paramtypes", [Object, Object, Function]),
175
177
  __metadata("design:returntype", Promise)
176
- ], AuthenicationMiddleWare.prototype, "requireNoAuth", null);
178
+ ], AuthenticationMiddleWare.prototype, "requireNoAuth", null);
177
179
  __decorate([
178
180
  main_1.SafeExecuteUtil.safeExecuteThrow("authentication_middle_ware"),
179
181
  __metadata("design:type", Function),
180
182
  __metadata("design:paramtypes", [Object, Object, Function]),
181
183
  __metadata("design:returntype", Promise)
182
- ], AuthenicationMiddleWare.prototype, "requirePartialAuth", null);
184
+ ], AuthenticationMiddleWare.prototype, "requirePartialAuth", null);
183
185
  __decorate([
184
186
  main_1.SafeExecuteUtil.safeExecuteThrow("authentication_middle_ware"),
185
187
  __metadata("design:type", Function),
186
188
  __metadata("design:paramtypes", [Object, Object, Function]),
187
189
  __metadata("design:returntype", Promise)
188
- ], AuthenicationMiddleWare.prototype, "requireFullAuth", null);
190
+ ], AuthenticationMiddleWare.prototype, "requireFullAuth", null);
189
191
  __decorate([
190
192
  main_1.SafeExecuteUtil.safeExecuteThrow("authentication_middle_ware"),
191
193
  __metadata("design:type", Function),
192
194
  __metadata("design:paramtypes", [Object, Object, Function]),
193
195
  __metadata("design:returntype", Promise)
194
- ], AuthenicationMiddleWare.prototype, "requireAppAuthMiddleWareMethod", null);
195
- exports.default = AuthenicationMiddleWare;
196
+ ], AuthenticationMiddleWare.prototype, "requireAppAuthMiddleWareMethod", null);
197
+ exports.default = AuthenticationMiddleWare;
@@ -82,7 +82,7 @@ class CookieManagerMiddleWare {
82
82
  }
83
83
  /** Set cookie with enforced defaults */
84
84
  set(res, name, value, options = {}) {
85
- const cookie_options = { ...this.default_cookie_options, maxAge: options.max_age, };
85
+ const cookie_options = { ...this.default_cookie_options, maxAge: options.max_age };
86
86
  res.cookie(name, value, cookie_options);
87
87
  }
88
88
  /** Clear cookie */
@@ -5,5 +5,6 @@ import HTTPSEnforcementMiddleWare from "./https_enforcement_middle_ware";
5
5
  import SecureHeadersMiddleWare from "./secure_headers_middle_ware";
6
6
  import RequestLoggerMiddleWare from "./request_logger_middle_ware";
7
7
  import ResponseFormatterMiddleWare from "./response_formatter_middle_ware";
8
- import AuthenicationMiddleWare from "./authentication_middle_ware";
9
- export { CookieManagerMiddleWare, CorsMiddleWare, RateLimiterMiddleWare, HTTPSEnforcementMiddleWare, SecureHeadersMiddleWare, RequestLoggerMiddleWare, ResponseFormatterMiddleWare, AuthenicationMiddleWare };
8
+ import AuthenticationMiddleWare from "./authentication_middle_ware";
9
+ declare const AuthenicationMiddleWare: typeof AuthenticationMiddleWare;
10
+ export { CookieManagerMiddleWare, CorsMiddleWare, RateLimiterMiddleWare, HTTPSEnforcementMiddleWare, SecureHeadersMiddleWare, RequestLoggerMiddleWare, ResponseFormatterMiddleWare, AuthenticationMiddleWare, AuthenicationMiddleWare, };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AuthenicationMiddleWare = exports.ResponseFormatterMiddleWare = exports.RequestLoggerMiddleWare = exports.SecureHeadersMiddleWare = exports.HTTPSEnforcementMiddleWare = exports.RateLimiterMiddleWare = exports.CorsMiddleWare = exports.CookieManagerMiddleWare = void 0;
6
+ exports.AuthenicationMiddleWare = exports.AuthenticationMiddleWare = exports.ResponseFormatterMiddleWare = exports.RequestLoggerMiddleWare = exports.SecureHeadersMiddleWare = exports.HTTPSEnforcementMiddleWare = exports.RateLimiterMiddleWare = exports.CorsMiddleWare = exports.CookieManagerMiddleWare = void 0;
7
7
  const cookie_manager_middle_ware_1 = __importDefault(require("./cookie_manager_middle_ware"));
8
8
  exports.CookieManagerMiddleWare = cookie_manager_middle_ware_1.default;
9
9
  const cors_middle_ware_1 = __importDefault(require("./cors_middle_ware"));
@@ -19,4 +19,6 @@ exports.RequestLoggerMiddleWare = request_logger_middle_ware_1.default;
19
19
  const response_formatter_middle_ware_1 = __importDefault(require("./response_formatter_middle_ware"));
20
20
  exports.ResponseFormatterMiddleWare = response_formatter_middle_ware_1.default;
21
21
  const authentication_middle_ware_1 = __importDefault(require("./authentication_middle_ware"));
22
- exports.AuthenicationMiddleWare = authentication_middle_ware_1.default;
22
+ exports.AuthenticationMiddleWare = authentication_middle_ware_1.default;
23
+ const AuthenicationMiddleWare = authentication_middle_ware_1.default;
24
+ exports.AuthenicationMiddleWare = AuthenicationMiddleWare;
@@ -74,7 +74,6 @@ class RateLimiterMiddleWare {
74
74
  }
75
75
  return next();
76
76
  }
77
- ;
78
77
  }
79
78
  __decorate([
80
79
  main_1.SafeExecuteUtil.safeExecuteThrow("rate_limiter_middle_ware"),
@@ -20,7 +20,8 @@ class RequestLoggerMiddleWare {
20
20
  // Middleware
21
21
  // -------------------------
22
22
  async middleWare(req, res, next) {
23
- const origin = req.headers.origin || (req.headers.referer ? new URL(req.headers.referer).origin : "unknown");
23
+ const origin = req.headers.origin ||
24
+ (req.headers.referer ? new URL(req.headers.referer).origin : "unknown");
24
25
  const device_id = req.cookies?.device_id || req.headers["x-device-id"] || "unknown";
25
26
  const device_name = req.headers["x-device-name"] || "unknown";
26
27
  const user_agent = req.headers["user-agent"] || "unknown";
@@ -13,7 +13,6 @@ const main_1 = require("../utils/main");
13
13
  class ResponseFormatterMiddleWare {
14
14
  name = "response_formatter_middle_ware";
15
15
  logger = new main_1.LoggerUtil(this.name);
16
- ;
17
16
  include_request_id;
18
17
  default_success_message;
19
18
  default_error_message;
@@ -24,7 +23,8 @@ class ResponseFormatterMiddleWare {
24
23
  this.default_success_message = options.default_success_message ?? "operation_successful";
25
24
  this.default_error_message = options.default_error_message ?? "server_error";
26
25
  this.default_info_message = options.default_info_message ?? "operation_information";
27
- this.default_not_found_message = options.default_not_found_message ?? "invalid_request_resource_not_found";
26
+ this.default_not_found_message =
27
+ options.default_not_found_message ?? "invalid_request_resource_not_found";
28
28
  main_1.SafeExecuteUtil.setNamedInstance(this.name, this);
29
29
  }
30
30
  // Method to handle 404 error
@@ -42,9 +42,10 @@ class ResponseFormatterMiddleWare {
42
42
  res.locals.message = error_message;
43
43
  res.locals.error = is_development ? error : {};
44
44
  this.logger.error(`[${this.name}] Unhandled error for request ${request_id} Message ${error_message}`, { error_stack, error });
45
- return res.status(500).json({ status: "error", code: 500, msg: this.default_error_message });
45
+ return res
46
+ .status(500)
47
+ .json({ status: "error", code: 500, msg: this.default_error_message });
46
48
  }
47
- ;
48
49
  // -------------------------
49
50
  // Middleware
50
51
  // -------------------------
@@ -35,7 +35,8 @@ class SecureHeadersMiddleWare {
35
35
  this.xss_protection = options.xss_protection ?? true;
36
36
  this.content_type_options = options.content_type_options ?? true;
37
37
  this.referrer_policy = options.referrer_policy ?? "no-referrer-when-downgrade";
38
- this.content_security_policy = options.content_security_policy ?? this.getDefaultContentSecurityPolicy();
38
+ this.content_security_policy =
39
+ options.content_security_policy ?? this.getDefaultContentSecurityPolicy();
39
40
  this.cors_policy = options.cors_policy ?? "same-origin";
40
41
  this.cors_opener_policy = options.cors_opener_policy ?? "same-origin";
41
42
  this.headers_key_name = options.headers_key_name ?? constants_1.HEADERS_KEY_NAME;
@@ -101,7 +101,7 @@ class RBACLoaderUtil {
101
101
  role_by_id,
102
102
  role_by_symbol,
103
103
  permission_by_id,
104
- permissions_by_role_id
104
+ permissions_by_role_id,
105
105
  };
106
106
  }
107
107
  /**
@@ -137,7 +137,7 @@ class RBACLoaderUtil {
137
137
  }
138
138
  async roleHasPermission(role_id, permission_key) {
139
139
  const snapshot = await this.getSnapshot();
140
- return (snapshot.permissions_by_role_id.get(role_id)?.has(permission_key) ?? false);
140
+ return snapshot.permissions_by_role_id.get(role_id)?.has(permission_key) ?? false;
141
141
  }
142
142
  async refresh() {
143
143
  await this.load(true);
@@ -14,7 +14,7 @@ class GCSStorageDriver extends base_storage_driver_1.default {
14
14
  }
15
15
  const storage = new storage_1.Storage({
16
16
  projectId: config.project_id,
17
- credentials: config.credentials
17
+ credentials: config.credentials,
18
18
  });
19
19
  this.bucket_name = config.bucket_name;
20
20
  this.bucket = storage.bucket(config.bucket_name);
@@ -32,7 +32,7 @@ class GCSStorageDriver extends base_storage_driver_1.default {
32
32
  const bucket = this.getBucket();
33
33
  const file_ref = bucket.file(key);
34
34
  await file_ref.save(file, {
35
- contentType: mime_type
35
+ contentType: mime_type,
36
36
  });
37
37
  if (is_public) {
38
38
  await file_ref.makePublic();
@@ -41,7 +41,7 @@ class GCSStorageDriver extends base_storage_driver_1.default {
41
41
  key,
42
42
  url: this.getPublicUrl(key),
43
43
  mime_type,
44
- size: file.length
44
+ size: file.length,
45
45
  };
46
46
  }
47
47
  getPublicUrl(key) {
@@ -62,7 +62,7 @@ class GCSStorageDriver extends base_storage_driver_1.default {
62
62
  return null;
63
63
  return {
64
64
  key,
65
- url: this.getPublicUrl(key)
65
+ url: this.getPublicUrl(key),
66
66
  };
67
67
  }
68
68
  async list(prefix = "") {
@@ -70,7 +70,7 @@ class GCSStorageDriver extends base_storage_driver_1.default {
70
70
  const [files] = await bucket.getFiles({ prefix });
71
71
  return files.map((f) => ({
72
72
  key: f.name,
73
- url: this.getPublicUrl(f.name)
73
+ url: this.getPublicUrl(f.name),
74
74
  }));
75
75
  }
76
76
  }
@@ -25,7 +25,7 @@ class LocalStorageDriver extends base_storage_driver_1.default {
25
25
  key,
26
26
  url: this.getPublicUrl(key),
27
27
  mime_type,
28
- size: file.length
28
+ size: file.length,
29
29
  };
30
30
  }
31
31
  async exists(key) {
@@ -46,7 +46,7 @@ class LocalStorageDriver extends base_storage_driver_1.default {
46
46
  return null;
47
47
  return {
48
48
  key,
49
- url: this.getPublicUrl(key)
49
+ url: this.getPublicUrl(key),
50
50
  };
51
51
  }
52
52
  async delete(key) {
@@ -3,4 +3,4 @@ import GCSStorageDriver from "./drivers/gcs_storage_driver";
3
3
  import LocalStorageDriver from "./drivers/local_storage_driver";
4
4
  import FileUploadProcessor from "./processors/file_upload_processor";
5
5
  import StorageDriverUtil from "./utils/storage_driver_util";
6
- export { BaseStorageDriver, GCSStorageDriver, LocalStorageDriver, FileUploadProcessor, StorageDriverUtil };
6
+ export { BaseStorageDriver, GCSStorageDriver, LocalStorageDriver, FileUploadProcessor, StorageDriverUtil, };
@@ -70,12 +70,12 @@ class FileUploadProcessor {
70
70
  size: input.size,
71
71
  url: stored.url,
72
72
  provider: this.driver.constructor.name,
73
- bucket_name: this.driver?.bucket_name || null
73
+ bucket_name: this.driver?.bucket_name || null,
74
74
  };
75
75
  this.logger.info("File uploaded successfully", {
76
76
  key,
77
77
  category,
78
- size: input.size
78
+ size: input.size,
79
79
  });
80
80
  return { status: true, msg: "file_uploaded_successfully", data: result };
81
81
  }
@@ -85,8 +85,8 @@ class FileUploadProcessor {
85
85
  input_meta: {
86
86
  name: input.original_name,
87
87
  size: input.size,
88
- mime: input.mime_type
89
- }
88
+ mime: input.mime_type,
89
+ },
90
90
  });
91
91
  return { status: false, msg: "file_upload_error_occured" };
92
92
  }
@@ -2,7 +2,7 @@ import BaseStorageDriver from "../../storage/drivers/base_storage_driver";
2
2
  declare class StorageDriverUtil {
3
3
  private static instance;
4
4
  private static logger;
5
- private static env_manager;
5
+ private static get env_manager();
6
6
  /**
7
7
  * Get initialized storage driver (singleton)
8
8
  */