@minimaltech/node-infra 0.5.9-22 → 0.5.9-24

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 (175) hide show
  1. package/dist/base/applications/base.application.js +40 -28
  2. package/dist/base/applications/default.application.js +8 -2
  3. package/dist/base/base.component.js +2 -2
  4. package/dist/base/base.helper.js +3 -4
  5. package/dist/base/base.provider.js +2 -2
  6. package/dist/base/base.sequence.js +26 -17
  7. package/dist/base/controllers/common.js +9 -8
  8. package/dist/base/controllers/crud.controller.js +67 -55
  9. package/dist/base/controllers/express-request-handler.js +0 -2
  10. package/dist/base/controllers/kv.controller.js +18 -7
  11. package/dist/base/controllers/relational.controller.d.ts +3 -1
  12. package/dist/base/controllers/relational.controller.js +57 -40
  13. package/dist/base/controllers/service-crud.controller.js +46 -46
  14. package/dist/base/datasources/base.datasource.js +0 -1
  15. package/dist/base/loopback/@lb/core/index.js +1 -0
  16. package/dist/base/loopback/@lb/repository/index.js +1 -0
  17. package/dist/base/loopback/authentication/index.js +2 -0
  18. package/dist/base/loopback/filter/index.js +2 -0
  19. package/dist/base/loopback/http-server/index.js +2 -0
  20. package/dist/base/models/base.model.d.ts +7 -0
  21. package/dist/base/models/base.model.js +23 -5
  22. package/dist/base/repositories/base.repository.d.ts +3 -0
  23. package/dist/base/repositories/base.repository.js +24 -5
  24. package/dist/base/repositories/relations/has-many-polymorphic/decorator.d.ts +8 -0
  25. package/dist/base/repositories/relations/has-many-polymorphic/decorator.js +10 -11
  26. package/dist/base/repositories/relations/has-many-polymorphic/factory.d.ts +9 -0
  27. package/dist/base/repositories/relations/has-many-polymorphic/factory.js +30 -12
  28. package/dist/base/repositories/searchable-tz-crud.repository.js +160 -129
  29. package/dist/base/repositories/tz-crud.repository.js +58 -23
  30. package/dist/base/services/base-crud.service.js +9 -6
  31. package/dist/base/services/base.service.js +2 -2
  32. package/dist/common/constants.js +89 -81
  33. package/dist/common/environments.js +25 -25
  34. package/dist/common/keys.js +2 -2
  35. package/dist/common/statuses.js +31 -28
  36. package/dist/common/types.d.ts +3 -0
  37. package/dist/components/authenticate/common/constants.js +13 -11
  38. package/dist/components/authenticate/common/keys.js +7 -7
  39. package/dist/components/authenticate/common/types.js +3 -11
  40. package/dist/components/authenticate/component.js +28 -20
  41. package/dist/components/authenticate/controllers/auth.controller.js +11 -13
  42. package/dist/components/authenticate/controllers/oauth2.controller.js +20 -18
  43. package/dist/components/authenticate/middleware.js +35 -25
  44. package/dist/components/authenticate/models/oauth2-client.model.js +3 -8
  45. package/dist/components/authenticate/models/oauth2-scope.model.js +0 -4
  46. package/dist/components/authenticate/models/oauth2-token.model.js +0 -7
  47. package/dist/components/authenticate/oauth2-handlers/authorization-code.handler.js +5 -4
  48. package/dist/components/authenticate/oauth2-handlers/base.js +110 -95
  49. package/dist/components/authenticate/oauth2-handlers/client-credential.handler.js +3 -2
  50. package/dist/components/authenticate/oauth2-handlers/oauth2.js +2 -3
  51. package/dist/components/authenticate/repositories/oauth2.repository.js +0 -2
  52. package/dist/components/authenticate/services/basic-token.service.js +29 -18
  53. package/dist/components/authenticate/services/basic.strategy.js +17 -7
  54. package/dist/components/authenticate/services/jwt-token.service.js +40 -27
  55. package/dist/components/authenticate/services/jwt.strategy.js +1 -2
  56. package/dist/components/authenticate/services/oauth2.service.js +110 -98
  57. package/dist/components/authenticate/services/oauth2.strategy.js +31 -19
  58. package/dist/components/authorize/adapters/adapter-builder.js +0 -1
  59. package/dist/components/authorize/adapters/base.adapter.js +9 -2
  60. package/dist/components/authorize/adapters/casbin-postgres-adapter.helper.js +55 -37
  61. package/dist/components/authorize/adapters/casbin-redis-adapter.helper.js +1 -0
  62. package/dist/components/authorize/common/constants.js +12 -10
  63. package/dist/components/authorize/common/keys.js +15 -15
  64. package/dist/components/authorize/common/types.js +2 -2
  65. package/dist/components/authorize/component.js +59 -44
  66. package/dist/components/authorize/decorators/index.d.ts +11 -0
  67. package/dist/components/authorize/decorators/index.js +14 -1
  68. package/dist/components/authorize/interceptor.js +80 -76
  69. package/dist/components/authorize/migrations/0000-create-view-policy.js +14 -3
  70. package/dist/components/authorize/models/defs.js +5 -24
  71. package/dist/components/authorize/models/role.model.js +1 -1
  72. package/dist/components/authorize/models/user-role.model.js +1 -0
  73. package/dist/components/authorize/models/view-authorize-policy.model.js +1 -4
  74. package/dist/components/authorize/provider.js +96 -81
  75. package/dist/components/authorize/repositories/authorize.repository.js +6 -3
  76. package/dist/components/authorize/services/enforcer.service.js +27 -20
  77. package/dist/components/authorize/services/generator.service.d.ts +20 -0
  78. package/dist/components/authorize/services/generator.service.js +96 -62
  79. package/dist/components/crash-report/common/keys.js +10 -8
  80. package/dist/components/crash-report/component.js +44 -31
  81. package/dist/components/crash-report/providers/provider.js +0 -1
  82. package/dist/components/crash-report/providers/third-parties/base.js +2 -2
  83. package/dist/components/crash-report/services/mt-crash-report.service.js +5 -5
  84. package/dist/components/grpc/common/keys.js +4 -4
  85. package/dist/components/grpc/components/server.component.js +8 -8
  86. package/dist/components/grpc/controllers/base.js +0 -1
  87. package/dist/components/grpc/helpers/grpc-client.js +3 -9
  88. package/dist/components/grpc/helpers/grpc-server.js +17 -14
  89. package/dist/components/grpc/persistents/grpc.connector.js +2 -8
  90. package/dist/components/grpc/persistents/grpc.datasource.js +3 -2
  91. package/dist/components/grpc/persistents/grpc.repository.js +2 -3
  92. package/dist/components/health-check/component.js +0 -1
  93. package/dist/components/migration/common/keys.js +3 -3
  94. package/dist/components/migration/component.js +8 -5
  95. package/dist/components/migration/models/migration.model.js +0 -2
  96. package/dist/components/socket-io/common/constants.js +10 -10
  97. package/dist/components/socket-io/common/keys.js +6 -6
  98. package/dist/components/socket-io/component.js +8 -9
  99. package/dist/components/socket-io/helpers/socket-io-client.helper.js +11 -7
  100. package/dist/components/socket-io/helpers/socket-io-server.helper.js +41 -26
  101. package/dist/components/static-asset/common/keys.js +4 -4
  102. package/dist/components/static-asset/component.js +8 -9
  103. package/dist/components/static-asset/controllers/asset.controller.d.ts +8 -0
  104. package/dist/components/static-asset/controllers/asset.controller.js +93 -71
  105. package/dist/components/static-asset/controllers/resource.controller.js +9 -8
  106. package/dist/datasources/memory/datasource.js +3 -3
  107. package/dist/datasources/postgres/datasource.js +10 -10
  108. package/dist/datasources/redis/connector.js +7 -18
  109. package/dist/datasources/redis/datasource.js +7 -7
  110. package/dist/helpers/application-environment.helper.js +3 -3
  111. package/dist/helpers/cron.helper.js +14 -9
  112. package/dist/helpers/crypto/algorithms/aes.algorithm.js +7 -8
  113. package/dist/helpers/crypto/algorithms/base.algorithm.js +4 -3
  114. package/dist/helpers/crypto/algorithms/rsa.algorithm.js +5 -4
  115. package/dist/helpers/database/query-builder.helper.js +5 -2
  116. package/dist/helpers/logger/application-logger.js +17 -7
  117. package/dist/helpers/logger/common/types.js +22 -20
  118. package/dist/helpers/logger/default-logger.js +12 -2
  119. package/dist/helpers/logger/factory.js +1 -1
  120. package/dist/helpers/logger/transports/dgram.transport.js +25 -16
  121. package/dist/helpers/network/http-request/base-network-request.helper.js +34 -36
  122. package/dist/helpers/network/http-request/fetcher/axios-fetcher.js +22 -10
  123. package/dist/helpers/network/http-request/fetcher/base-fetcher.js +36 -13
  124. package/dist/helpers/network/http-request/fetcher/node-fetcher.js +59 -37
  125. package/dist/helpers/network/tcp-socket/base-tcp-client.helper.js +27 -30
  126. package/dist/helpers/network/tcp-socket/base-tcp-server.helper.js +19 -21
  127. package/dist/helpers/network/tcp-socket/network-tcp-client.helper.js +1 -5
  128. package/dist/helpers/network/tcp-socket/network-tcp-server.helper.js +1 -5
  129. package/dist/helpers/network/tcp-socket/network-tls-tcp-client.helper.js +1 -5
  130. package/dist/helpers/network/tcp-socket/network-tls-tcp-server.helper.js +1 -5
  131. package/dist/helpers/network/udp-socket/network-udp-client.helper.js +18 -21
  132. package/dist/helpers/queue/bullmq.helper.js +22 -21
  133. package/dist/helpers/queue/mqtt.helper.js +17 -15
  134. package/dist/helpers/queue/queue.helper.js +145 -74
  135. package/dist/helpers/redis/default.helper.js +162 -117
  136. package/dist/helpers/redis/redis-cluster.helper.js +2 -7
  137. package/dist/helpers/redis/redis.helper.js +5 -8
  138. package/dist/helpers/storage/di-container.helper.js +0 -2
  139. package/dist/helpers/storage/minio.helper.js +128 -88
  140. package/dist/helpers/testing/common.js +3 -3
  141. package/dist/helpers/testing/describe.js +21 -14
  142. package/dist/helpers/testing/test-case.js +0 -5
  143. package/dist/helpers/testing/test-handler.js +30 -23
  144. package/dist/helpers/testing/test-plan/base.js +6 -9
  145. package/dist/helpers/worker-thread/base.js +20 -10
  146. package/dist/helpers/worker-thread/worker-bus.js +12 -11
  147. package/dist/helpers/worker-thread/worker-pool.js +25 -17
  148. package/dist/interceptors/content-range.interceptor.js +132 -115
  149. package/dist/middlewares/request-body-parser.middleware.js +16 -4
  150. package/dist/middlewares/request-spy.middleware.js +5 -4
  151. package/dist/migrations/handler.js +22 -13
  152. package/dist/mixins/data-type.mixin.js +0 -5
  153. package/dist/mixins/deprecated/user-audit.mixin.d.ts +3 -0
  154. package/dist/mixins/deprecated/user-audit.mixin.js +5 -2
  155. package/dist/mixins/duplicatable.mixin.js +0 -1
  156. package/dist/mixins/object-search.mixin.js +0 -1
  157. package/dist/mixins/principal.mixin.js +0 -2
  158. package/dist/mixins/soft-delete.mixin.js +0 -1
  159. package/dist/mixins/soft-persistent.mixin.js +0 -1
  160. package/dist/mixins/text-search.mixin.js +0 -1
  161. package/dist/mixins/tz.mixin.js +0 -2
  162. package/dist/mixins/user-audit.mixin.js +3 -5
  163. package/dist/mixins/vector.mixin.js +6 -9
  164. package/dist/tsconfig.base.json +6 -5
  165. package/dist/utilities/date.utility.js +23 -5
  166. package/dist/utilities/error.utility.js +0 -2
  167. package/dist/utilities/model.utility.js +6 -2
  168. package/dist/utilities/parse.utility.d.ts +16 -0
  169. package/dist/utilities/parse.utility.js +41 -6
  170. package/dist/utilities/performance.utility.js +2 -1
  171. package/dist/utilities/promise.utility.d.ts +17 -0
  172. package/dist/utilities/promise.utility.js +31 -5
  173. package/dist/utilities/query.utility.js +16 -8
  174. package/dist/utilities/request.utility.js +8 -2
  175. package/package.json +2 -3
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
13
  };
@@ -21,8 +30,6 @@ const get_1 = __importDefault(require("lodash/get"));
21
30
  const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
22
31
  const { NODE_ENV, RUN_MODE, ALLOW_EMPTY_ENV_VALUE = false, APPLICATION_ENV_PREFIX = 'APP_ENV', APP_ENV_APPLICATION_NAME = 'PNT', APP_ENV_APPLICATION_TIMEZONE = 'Asia/Ho_Chi_Minh', APP_ENV_DS_MIGRATION = 'postgres', APP_ENV_DS_AUTHORIZE = 'postgres', APP_ENV_LOGGER_FOLDER_PATH = './', } = process.env;
23
32
  class BaseApplication extends (0, boot_1.BootMixin)((0, service_proxy_1.ServiceMixin)((0, repository_1.RepositoryMixin)(rest_1.RestApplication))) {
24
- logger;
25
- models;
26
33
  constructor(opts) {
27
34
  const { scope = 'Application', serverOptions, sequence } = opts;
28
35
  super(serverOptions);
@@ -30,6 +37,7 @@ class BaseApplication extends (0, boot_1.BootMixin)((0, service_proxy_1.ServiceM
30
37
  this.initialize({ sequence });
31
38
  }
32
39
  initialize(opts) {
40
+ var _a;
33
41
  this.logger.info('[initialize] ------------------------------------------------------------------------');
34
42
  this.logger.info('[initialize] Starting application... | Name: %s | Env: %s', APP_ENV_APPLICATION_NAME, NODE_ENV);
35
43
  this.logger.info('[initialize] AllowEmptyEnv: %s | Prefix: %s', ALLOW_EMPTY_ENV_VALUE, APPLICATION_ENV_PREFIX);
@@ -41,14 +49,14 @@ class BaseApplication extends (0, boot_1.BootMixin)((0, service_proxy_1.ServiceM
41
49
  const { sequence } = opts;
42
50
  this.bind(common_2.AuthenticateKeys.ALWAYS_ALLOW_PATHS).to([]);
43
51
  this.bind(common_1.BindingKeys.APPLICATION_MIDDLEWARE_OPTIONS).to(rest_1.MiddlewareSequence.defaultOptions);
44
- this.sequence(sequence ?? base_sequence_1.BaseApplicationSequence);
52
+ this.sequence(sequence !== null && sequence !== void 0 ? sequence : base_sequence_1.BaseApplicationSequence);
45
53
  this.staticConfigure();
46
54
  this.projectRoot = this.getProjectRoot();
47
55
  this.component(rest_crud_1.CrudRestComponent);
48
56
  this.logger.info('[initialize] Validating application environments...');
49
57
  const envValidation = this.validateEnv();
50
58
  if (!envValidation.result) {
51
- throw (0, utilities_1.getError)({ message: envValidation?.message ?? 'Invalid application environment!' });
59
+ throw (0, utilities_1.getError)({ message: (_a = envValidation === null || envValidation === void 0 ? void 0 : envValidation.message) !== null && _a !== void 0 ? _a : 'Invalid application environment!' });
52
60
  }
53
61
  this.logger.info('[initialize] All application environments are valid...');
54
62
  this.logger.info('[initialize] Declare application models...');
@@ -89,7 +97,7 @@ class BaseApplication extends (0, boot_1.BootMixin)((0, service_proxy_1.ServiceM
89
97
  const valids = repoBindings.filter(b => {
90
98
  const key = b.key;
91
99
  const modelName = key.slice(key.indexOf('.') + 1, key.indexOf('Repository'));
92
- if (ignoreModels?.includes(modelName)) {
100
+ if (ignoreModels === null || ignoreModels === void 0 ? void 0 : ignoreModels.includes(modelName)) {
93
101
  return false;
94
102
  }
95
103
  if (migrateModels && !migrateModels.includes(modelName)) {
@@ -97,6 +105,7 @@ class BaseApplication extends (0, boot_1.BootMixin)((0, service_proxy_1.ServiceM
97
105
  }
98
106
  return true;
99
107
  });
108
+ // Load models
100
109
  return Promise.all(valids.map(b => this.get(b.key)));
101
110
  }
102
111
  classifyModelsByDatasource(opts) {
@@ -108,7 +117,7 @@ class BaseApplication extends (0, boot_1.BootMixin)((0, service_proxy_1.ServiceM
108
117
  continue;
109
118
  }
110
119
  const dsKey = `datasources.${dsName}`;
111
- if (!modelByDs?.[dsKey]) {
120
+ if (!(modelByDs === null || modelByDs === void 0 ? void 0 : modelByDs[dsKey])) {
112
121
  modelByDs[dsKey] = [];
113
122
  }
114
123
  const modelName = (0, get_1.default)(rep, 'entityClass.definition.name', '');
@@ -119,29 +128,32 @@ class BaseApplication extends (0, boot_1.BootMixin)((0, service_proxy_1.ServiceM
119
128
  }
120
129
  return modelByDs;
121
130
  }
122
- async migrateModels(opts) {
123
- const { existingSchema, ignoreModels = [], migrateModels } = opts;
124
- this.logger.info('[migrateModels] Loading legacy migratable models...!');
125
- const reps = await this.getMigrateModels({ ignoreModels, migrateModels });
126
- const classified = this.classifyModelsByDatasource({ reps });
127
- const operation = existingSchema === 'drop' ? 'automigrate' : 'autoupdate';
128
- const dsBindings = this.findByTag(repository_1.RepositoryTags.DATASOURCE);
129
- for (const b of dsBindings) {
130
- const t = new Date().getTime();
131
- this.logger.info('[migrateModels] START | Migrating datasource %s', b.key);
132
- const ds = await this.get(b.key);
133
- if (!ds) {
134
- this.logger.error('[migrateModels] Invalid datasource with key %s', b.key);
135
- continue;
136
- }
137
- const isDisableMigration = ds.settings?.disableMigration ?? false;
138
- if (!(operation in ds) || isDisableMigration) {
139
- this.logger.info('[migrateModels] Skip migrating datasource %s', b.key);
140
- continue;
131
+ migrateModels(opts) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ var _a, _b;
134
+ const { existingSchema, ignoreModels = [], migrateModels } = opts;
135
+ this.logger.info('[migrateModels] Loading legacy migratable models...!');
136
+ const reps = yield this.getMigrateModels({ ignoreModels, migrateModels });
137
+ const classified = this.classifyModelsByDatasource({ reps });
138
+ const operation = existingSchema === 'drop' ? 'automigrate' : 'autoupdate';
139
+ const dsBindings = this.findByTag(repository_1.RepositoryTags.DATASOURCE);
140
+ for (const b of dsBindings) {
141
+ const t = new Date().getTime();
142
+ this.logger.info('[migrateModels] START | Migrating datasource %s', b.key);
143
+ const ds = yield this.get(b.key);
144
+ if (!ds) {
145
+ this.logger.error('[migrateModels] Invalid datasource with key %s', b.key);
146
+ continue;
147
+ }
148
+ const isDisableMigration = (_b = (_a = ds.settings) === null || _a === void 0 ? void 0 : _a.disableMigration) !== null && _b !== void 0 ? _b : false;
149
+ if (!(operation in ds) || isDisableMigration) {
150
+ this.logger.info('[migrateModels] Skip migrating datasource %s', b.key);
151
+ continue;
152
+ }
153
+ yield ds[operation](classified === null || classified === void 0 ? void 0 : classified[b.key]);
154
+ this.logger.info('[migrateModels] DONE | Migrating datasource %s | Took: %d(ms)', b.key, new Date().getTime() - t);
141
155
  }
142
- await ds[operation](classified?.[b.key]);
143
- this.logger.info('[migrateModels] DONE | Migrating datasource %s | Took: %d(ms)', b.key, new Date().getTime() - t);
144
- }
156
+ });
145
157
  }
146
158
  grpcController(ctor, nameOrOptions) {
147
159
  return this.controller(ctor, nameOrOptions)
@@ -15,13 +15,14 @@ const rest_1 = require("@loopback/rest");
15
15
  const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
16
16
  const base_application_1 = require("./base.application");
17
17
  class DefaultRestApplication extends base_application_1.BaseApplication {
18
- applicationRoles = [];
19
18
  constructor(opts) {
20
19
  super(opts);
20
+ this.applicationRoles = [];
21
21
  }
22
22
  getApplicationRoles() {
23
+ var _a;
23
24
  const roleConf = helpers_1.applicationEnvironment.get(common_1.EnvironmentKeys.APP_ENV_APPLICATION_ROLES);
24
- return roleConf?.split(',')?.map((el) => el.trim());
25
+ return (_a = roleConf === null || roleConf === void 0 ? void 0 : roleConf.split(',')) === null || _a === void 0 ? void 0 : _a.map((el) => el.trim());
25
26
  }
26
27
  validateEnv() {
27
28
  const rs = { result: true, message: '' };
@@ -47,13 +48,18 @@ class DefaultRestApplication extends base_application_1.BaseApplication {
47
48
  this.bind(common_1.BindingKeys.APPLICATION_ENVIRONMENTS).to(helpers_1.applicationEnvironment);
48
49
  this.applicationRoles = this.getApplicationRoles();
49
50
  this.logger.info('[preConfigure] ApplicationRoles: %s', this.applicationRoles);
51
+ // Error Handler
50
52
  this.bind(rest_1.RestBindings.ERROR_WRITER_OPTIONS).to({
51
53
  safeFields: ['statusCode', 'name', 'message', 'messageCode'],
52
54
  });
55
+ // Configuring datasources
53
56
  this.dataSource(datasources_1.PostgresDataSource);
54
57
  this.dataSource(datasources_1.KvMemDataSource);
58
+ // Migration
55
59
  this.configureMigration();
60
+ // Interceptors
56
61
  this.interceptor(content_range_interceptor_1.ContentRangeInterceptor, { global: true });
62
+ // controllers
57
63
  this.bootOptions = {
58
64
  controllers: {
59
65
  dirs: ['controllers'],
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseComponent = void 0;
4
4
  const helpers_1 = require("../helpers");
5
5
  class BaseComponent {
6
- logger;
7
6
  constructor(opts) {
8
- this.logger = helpers_1.LoggerFactory.getLogger([opts?.scope ?? BaseComponent.name]);
7
+ var _a;
8
+ this.logger = helpers_1.LoggerFactory.getLogger([(_a = opts === null || opts === void 0 ? void 0 : opts.scope) !== null && _a !== void 0 ? _a : BaseComponent.name]);
9
9
  }
10
10
  }
11
11
  exports.BaseComponent = BaseComponent;
@@ -3,11 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseHelper = void 0;
4
4
  const helpers_1 = require("../helpers");
5
5
  class BaseHelper {
6
- identifier;
7
- logger;
8
6
  constructor(opts) {
9
- this.logger = helpers_1.LoggerFactory.getLogger([opts.scope, opts.identifier ?? ''].filter(el => el && el.length > 0));
10
- this.identifier = opts.identifier ?? '';
7
+ var _a, _b;
8
+ this.logger = helpers_1.LoggerFactory.getLogger([opts.scope, (_a = opts.identifier) !== null && _a !== void 0 ? _a : ''].filter(el => el && el.length > 0));
9
+ this.identifier = (_b = opts.identifier) !== null && _b !== void 0 ? _b : '';
11
10
  }
12
11
  }
13
12
  exports.BaseHelper = BaseHelper;
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseProvider = void 0;
4
4
  const helpers_1 = require("../helpers");
5
5
  class BaseProvider {
6
- logger;
7
6
  constructor(opts) {
8
- this.logger = helpers_1.LoggerFactory.getLogger([opts?.scope ?? BaseProvider.name]);
7
+ var _a;
8
+ this.logger = helpers_1.LoggerFactory.getLogger([(_a = opts === null || opts === void 0 ? void 0 : opts.scope) !== null && _a !== void 0 ? _a : BaseProvider.name]);
9
9
  }
10
10
  }
11
11
  exports.BaseProvider = BaseProvider;
@@ -11,6 +11,15 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
14
23
  var BaseApplicationSequence_1;
15
24
  Object.defineProperty(exports, "__esModule", { value: true });
16
25
  exports.BaseApplicationSequence = void 0;
@@ -20,28 +29,28 @@ const common_1 = require("../common");
20
29
  const helpers_1 = require("../helpers");
21
30
  const utilities_1 = require("../utilities");
22
31
  let BaseApplicationSequence = BaseApplicationSequence_1 = class BaseApplicationSequence {
23
- invokeMiddleware;
24
- middlewareOptions;
25
- logger;
26
32
  constructor(invokeMiddleware, middlewareOptions) {
27
33
  this.invokeMiddleware = invokeMiddleware;
28
34
  this.middlewareOptions = middlewareOptions;
29
35
  this.logger = helpers_1.LoggerFactory.getLogger([BaseApplicationSequence_1.name]);
30
36
  }
31
- async handle(context) {
32
- const t = performance.now();
33
- const { request } = context;
34
- try {
35
- await this.invokeMiddleware(context, this.middlewareOptions);
36
- }
37
- catch (error) {
38
- const requestId = (0, utilities_1.getRequestId)({ request });
39
- this.logger.error('[handle][%s] ERROR | Error: %s', requestId, error);
40
- }
41
- finally {
42
- const requestedRemark = (0, utilities_1.getRequestRemark)({ request });
43
- this.logger.info('[handle][%s] DONE | Took: %d(ms) | Url: %s', requestedRemark?.id, (0, utilities_1.getExecutedPerformance)({ from: t, digit: 6 }), requestedRemark?.url);
44
- }
37
+ // ----------------------------------------------------------------------------------------
38
+ handle(context) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ const t = performance.now();
41
+ const { request } = context;
42
+ try {
43
+ yield this.invokeMiddleware(context, this.middlewareOptions);
44
+ }
45
+ catch (error) {
46
+ const requestId = (0, utilities_1.getRequestId)({ request });
47
+ this.logger.error('[handle][%s] ERROR | Error: %s', requestId, error);
48
+ }
49
+ finally {
50
+ const requestedRemark = (0, utilities_1.getRequestRemark)({ request });
51
+ this.logger.info('[handle][%s] DONE | Took: %d(ms) | Url: %s', requestedRemark === null || requestedRemark === void 0 ? void 0 : requestedRemark.id, (0, utilities_1.getExecutedPerformance)({ from: t, digit: 6 }), requestedRemark === null || requestedRemark === void 0 ? void 0 : requestedRemark.url);
52
+ }
53
+ });
45
54
  }
46
55
  };
47
56
  exports.BaseApplicationSequence = BaseApplicationSequence;
@@ -3,20 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseController = exports.applyLimit = void 0;
4
4
  const common_1 = require("../../common");
5
5
  const helpers_1 = require("../../helpers");
6
+ // --------------------------------------------------------------------------------------------------------------
6
7
  const applyLimit = (filter) => {
7
- const rs = {
8
- ...(filter ?? {}),
9
- };
10
- rs['limit'] = rs['limit'] ?? common_1.App.DEFAULT_QUERY_LIMIT;
8
+ var _a;
9
+ const rs = Object.assign({}, (filter !== null && filter !== void 0 ? filter : {}));
10
+ rs['limit'] = (_a = rs['limit']) !== null && _a !== void 0 ? _a : common_1.App.DEFAULT_QUERY_LIMIT;
11
11
  return rs;
12
12
  };
13
13
  exports.applyLimit = applyLimit;
14
+ // --------------------------------------------------------------------------------------------------------------
14
15
  class BaseController {
15
- logger;
16
- defaultLimit = common_1.App.DEFAULT_QUERY_LIMIT;
17
16
  constructor(opts) {
18
- this.logger = helpers_1.LoggerFactory.getLogger([opts?.scope ?? BaseController.name]);
19
- this.defaultLimit = opts?.defaultLimit ?? common_1.App.DEFAULT_QUERY_LIMIT;
17
+ var _a, _b;
18
+ this.defaultLimit = common_1.App.DEFAULT_QUERY_LIMIT;
19
+ this.logger = helpers_1.LoggerFactory.getLogger([(_a = opts === null || opts === void 0 ? void 0 : opts.scope) !== null && _a !== void 0 ? _a : BaseController.name]);
20
+ this.defaultLimit = (_b = opts === null || opts === void 0 ? void 0 : opts.defaultLimit) !== null && _b !== void 0 ? _b : common_1.App.DEFAULT_QUERY_LIMIT;
20
21
  }
21
22
  }
22
23
  exports.BaseController = BaseController;
@@ -11,6 +11,15 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
14
23
  Object.defineProperty(exports, "__esModule", { value: true });
15
24
  exports.defineCrudController = void 0;
16
25
  const core_1 = require("@loopback/core");
@@ -20,7 +29,9 @@ const common_1 = require("../../common");
20
29
  const common_2 = require("./common");
21
30
  const security_1 = require("@loopback/security");
22
31
  const model_utility_1 = require("../../utilities/model.utility");
32
+ // --------------------------------------------------------------------------------------------------------------
23
33
  const defineCrudController = (opts) => {
34
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
24
35
  const { entity: entityOptions, repository: repositoryOptions, controller: controllerOptions, schema: schemaOptions, doInjectCurrentUser, } = opts;
25
36
  const idPathParam = {
26
37
  name: 'id',
@@ -28,21 +39,24 @@ const defineCrudController = (opts) => {
28
39
  schema: (0, model_utility_1.getIdSchema)(entityOptions),
29
40
  };
30
41
  class ReadController {
31
- repository;
32
- defaultLimit;
33
42
  constructor(repository) {
43
+ var _a;
34
44
  this.repository = repository;
35
- this.defaultLimit = controllerOptions?.defaultLimit ?? common_1.App.DEFAULT_QUERY_LIMIT;
45
+ this.defaultLimit = (_a = controllerOptions === null || controllerOptions === void 0 ? void 0 : controllerOptions.defaultLimit) !== null && _a !== void 0 ? _a : common_1.App.DEFAULT_QUERY_LIMIT;
36
46
  }
47
+ // ----------------------------------------------------------------------------------------------------------
37
48
  find(filter) {
38
49
  return this.repository.find((0, common_2.applyLimit)(filter));
39
50
  }
51
+ // ----------------------------------------------------------------------------------------------------------
40
52
  findById(id, filter) {
41
53
  return this.repository.findById(id, (0, common_2.applyLimit)(filter));
42
54
  }
55
+ // ----------------------------------------------------------------------------------------------------------
43
56
  findOne(filter) {
44
57
  return this.repository.findOne(filter);
45
58
  }
59
+ // ----------------------------------------------------------------------------------------------------------
46
60
  count(where) {
47
61
  return this.repository.count(where);
48
62
  }
@@ -56,8 +70,7 @@ const defineCrudController = (opts) => {
56
70
  'application/json': {
57
71
  schema: {
58
72
  type: 'array',
59
- items: schemaOptions?.find ??
60
- (0, rest_1.getModelSchemaRef)(entityOptions, { includeRelations: true }),
73
+ items: (_a = schemaOptions === null || schemaOptions === void 0 ? void 0 : schemaOptions.find) !== null && _a !== void 0 ? _a : (0, rest_1.getModelSchemaRef)(entityOptions, { includeRelations: true }),
61
74
  },
62
75
  },
63
76
  },
@@ -76,8 +89,7 @@ const defineCrudController = (opts) => {
76
89
  description: `Find ${entityOptions.name} model instance`,
77
90
  content: {
78
91
  'application/json': {
79
- schema: schemaOptions?.findById ??
80
- (0, rest_1.getModelSchemaRef)(entityOptions, { includeRelations: true }),
92
+ schema: (_b = schemaOptions === null || schemaOptions === void 0 ? void 0 : schemaOptions.findById) !== null && _b !== void 0 ? _b : (0, rest_1.getModelSchemaRef)(entityOptions, { includeRelations: true }),
81
93
  },
82
94
  },
83
95
  },
@@ -96,8 +108,7 @@ const defineCrudController = (opts) => {
96
108
  description: `Find one ${entityOptions.name} model instance`,
97
109
  content: {
98
110
  'application/json': {
99
- schema: schemaOptions?.findOne ??
100
- (0, rest_1.getModelSchemaRef)(entityOptions, { includeRelations: true }),
111
+ schema: (_c = schemaOptions === null || schemaOptions === void 0 ? void 0 : schemaOptions.findOne) !== null && _c !== void 0 ? _c : (0, rest_1.getModelSchemaRef)(entityOptions, { includeRelations: true }),
101
112
  },
102
113
  },
103
114
  },
@@ -127,17 +138,17 @@ const defineCrudController = (opts) => {
127
138
  __metadata("design:returntype", Promise)
128
139
  ], ReadController.prototype, "count", null);
129
140
  if (controllerOptions.readonly) {
130
- if (repositoryOptions?.name) {
141
+ if (repositoryOptions === null || repositoryOptions === void 0 ? void 0 : repositoryOptions.name) {
131
142
  (0, core_1.inject)(`repositories.${repositoryOptions.name}`)(ReadController, undefined, 0);
132
143
  }
133
144
  return ReadController;
134
145
  }
135
146
  class CrudController extends ReadController {
136
- getCurrentUser;
137
147
  constructor(repository, getCurrentUser) {
138
148
  super(repository);
139
149
  this.getCurrentUser = getCurrentUser;
140
150
  }
151
+ // ----------------------------------------------------------------------------------------------------------
141
152
  _getContextUser() {
142
153
  return new Promise((resolve, reject) => {
143
154
  if (!this.getCurrentUser) {
@@ -147,13 +158,14 @@ const defineCrudController = (opts) => {
147
158
  this.getCurrentUser().then(resolve).catch(reject);
148
159
  });
149
160
  }
161
+ // ----------------------------------------------------------------------------------------------------------
150
162
  create(data) {
151
163
  return new Promise((resolve, reject) => {
152
164
  this._getContextUser()
153
165
  .then(currentUser => {
154
166
  this.repository
155
167
  .create(data, {
156
- authorId: currentUser?.userId,
168
+ authorId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId,
157
169
  })
158
170
  .then(resolve)
159
171
  .catch(reject);
@@ -161,44 +173,50 @@ const defineCrudController = (opts) => {
161
173
  .catch(reject);
162
174
  });
163
175
  }
176
+ // ----------------------------------------------------------------------------------------------------------
164
177
  updateAll(data, where) {
165
178
  return new Promise((resolve, reject) => {
166
179
  this._getContextUser().then(currentUser => {
167
180
  this.repository
168
181
  .updateAll(data, where, {
169
- authorId: currentUser?.userId,
182
+ authorId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId,
170
183
  })
171
184
  .then(resolve)
172
185
  .catch(reject);
173
186
  });
174
187
  });
175
188
  }
189
+ // ----------------------------------------------------------------------------------------------------------
176
190
  updateById(id, data) {
177
191
  return new Promise((resolve, reject) => {
178
192
  this._getContextUser().then(currentUser => {
179
193
  this.repository
180
194
  .updateWithReturn(id, data, {
181
- authorId: currentUser?.userId,
195
+ authorId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId,
182
196
  })
183
197
  .then(resolve)
184
198
  .catch(reject);
185
199
  });
186
200
  });
187
201
  }
188
- async replaceById(id, data) {
189
- return new Promise((resolve, reject) => {
190
- this._getContextUser().then(currentUser => {
191
- this.repository
192
- .replaceById(id, data, {
193
- authorId: currentUser?.userId,
194
- })
195
- .then(() => {
196
- resolve({ ...data, id });
197
- })
198
- .catch(reject);
202
+ // ----------------------------------------------------------------------------------------------------------
203
+ replaceById(id, data) {
204
+ return __awaiter(this, void 0, void 0, function* () {
205
+ return new Promise((resolve, reject) => {
206
+ this._getContextUser().then(currentUser => {
207
+ this.repository
208
+ .replaceById(id, data, {
209
+ authorId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId,
210
+ })
211
+ .then(() => {
212
+ resolve(Object.assign(Object.assign({}, data), { id }));
213
+ })
214
+ .catch(reject);
215
+ });
199
216
  });
200
217
  });
201
218
  }
219
+ // ----------------------------------------------------------------------------------------------------------
202
220
  deleteById(id) {
203
221
  return new Promise((resolve, reject) => {
204
222
  this.repository
@@ -217,7 +235,7 @@ const defineCrudController = (opts) => {
217
235
  description: `Create ${entityOptions.name} model instance`,
218
236
  content: {
219
237
  'application/json': {
220
- schema: schemaOptions?.create ?? (0, rest_1.getModelSchemaRef)(entityOptions),
238
+ schema: (_d = schemaOptions === null || schemaOptions === void 0 ? void 0 : schemaOptions.create) !== null && _d !== void 0 ? _d : (0, rest_1.getModelSchemaRef)(entityOptions),
221
239
  },
222
240
  },
223
241
  },
@@ -226,11 +244,10 @@ const defineCrudController = (opts) => {
226
244
  __param(0, (0, rest_1.requestBody)({
227
245
  content: {
228
246
  'application/json': {
229
- schema: schemaOptions?.createRequestBody ??
230
- (0, rest_1.getModelSchemaRef)(entityOptions, {
231
- title: `New ${entityOptions.name} payload`,
232
- exclude: ['id', 'createdAt', 'modifiedAt'],
233
- }),
247
+ schema: (_e = schemaOptions === null || schemaOptions === void 0 ? void 0 : schemaOptions.createRequestBody) !== null && _e !== void 0 ? _e : (0, rest_1.getModelSchemaRef)(entityOptions, {
248
+ title: `New ${entityOptions.name} payload`,
249
+ exclude: ['id', 'createdAt', 'modifiedAt'],
250
+ }),
234
251
  },
235
252
  },
236
253
  })),
@@ -254,11 +271,10 @@ const defineCrudController = (opts) => {
254
271
  __param(0, (0, rest_1.requestBody)({
255
272
  content: {
256
273
  'application/json': {
257
- schema: schemaOptions?.updateAll ??
258
- (0, rest_1.getModelSchemaRef)(entityOptions, {
259
- title: `Partial fields of ${entityOptions.name}`,
260
- partial: true,
261
- }),
274
+ schema: (_f = schemaOptions === null || schemaOptions === void 0 ? void 0 : schemaOptions.updateAll) !== null && _f !== void 0 ? _f : (0, rest_1.getModelSchemaRef)(entityOptions, {
275
+ title: `Partial fields of ${entityOptions.name}`,
276
+ partial: true,
277
+ }),
262
278
  },
263
279
  },
264
280
  })),
@@ -274,10 +290,9 @@ const defineCrudController = (opts) => {
274
290
  description: `Updated ${entityOptions.name} models`,
275
291
  content: {
276
292
  'application/json': {
277
- schema: schemaOptions?.updateById ??
278
- (0, rest_1.getModelSchemaRef)(entityOptions, {
279
- title: `Updated ${entityOptions.name} models`,
280
- }),
293
+ schema: (_g = schemaOptions === null || schemaOptions === void 0 ? void 0 : schemaOptions.updateById) !== null && _g !== void 0 ? _g : (0, rest_1.getModelSchemaRef)(entityOptions, {
294
+ title: `Updated ${entityOptions.name} models`,
295
+ }),
281
296
  },
282
297
  },
283
298
  },
@@ -287,11 +302,10 @@ const defineCrudController = (opts) => {
287
302
  __param(1, (0, rest_1.requestBody)({
288
303
  content: {
289
304
  'application/json': {
290
- schema: schemaOptions?.updateByIdRequestBody ??
291
- (0, rest_1.getModelSchemaRef)(entityOptions, {
292
- title: `Partial fields of ${entityOptions.name}`,
293
- partial: true,
294
- }),
305
+ schema: (_h = schemaOptions === null || schemaOptions === void 0 ? void 0 : schemaOptions.updateByIdRequestBody) !== null && _h !== void 0 ? _h : (0, rest_1.getModelSchemaRef)(entityOptions, {
306
+ title: `Partial fields of ${entityOptions.name}`,
307
+ partial: true,
308
+ }),
295
309
  },
296
310
  },
297
311
  })),
@@ -309,10 +323,9 @@ const defineCrudController = (opts) => {
309
323
  __param(1, (0, rest_1.requestBody)({
310
324
  content: {
311
325
  'application/json': {
312
- schema: schemaOptions?.replaceById ??
313
- (0, rest_1.getModelSchemaRef)(entityOptions, {
314
- title: `Fields of ${entityOptions.name}`,
315
- }),
326
+ schema: (_j = schemaOptions === null || schemaOptions === void 0 ? void 0 : schemaOptions.replaceById) !== null && _j !== void 0 ? _j : (0, rest_1.getModelSchemaRef)(entityOptions, {
327
+ title: `Fields of ${entityOptions.name}`,
328
+ }),
316
329
  },
317
330
  },
318
331
  })),
@@ -327,11 +340,10 @@ const defineCrudController = (opts) => {
327
340
  description: `${entityOptions.name} was deleted`,
328
341
  content: {
329
342
  'application/json': {
330
- schema: schemaOptions?.deleteById ??
331
- (0, rest_1.getModelSchemaRef)(entityOptions, {
332
- partial: true,
333
- title: `Deleted ${entityOptions.name} models`,
334
- }),
343
+ schema: (_k = schemaOptions === null || schemaOptions === void 0 ? void 0 : schemaOptions.deleteById) !== null && _k !== void 0 ? _k : (0, rest_1.getModelSchemaRef)(entityOptions, {
344
+ partial: true,
345
+ title: `Deleted ${entityOptions.name} models`,
346
+ }),
335
347
  },
336
348
  },
337
349
  },
@@ -342,7 +354,7 @@ const defineCrudController = (opts) => {
342
354
  __metadata("design:paramtypes", [Object]),
343
355
  __metadata("design:returntype", Promise)
344
356
  ], CrudController.prototype, "deleteById", null);
345
- if (repositoryOptions?.name) {
357
+ if (repositoryOptions === null || repositoryOptions === void 0 ? void 0 : repositoryOptions.name) {
346
358
  (0, core_1.inject)(`repositories.${repositoryOptions.name}`)(CrudController, undefined, 0);
347
359
  }
348
360
  if (doInjectCurrentUser) {
@@ -4,8 +4,6 @@ exports.AbstractExpressRequestHandler = void 0;
4
4
  const logger_1 = require("../../helpers/logger");
5
5
  const rest_1 = require("@loopback/rest");
6
6
  class AbstractExpressRequestHandler extends rest_1.ExpressServer {
7
- logger;
8
- injectionGetter;
9
7
  constructor(opts) {
10
8
  const { scope, config, context } = opts;
11
9
  super(config, context);