@triproject/nestjs-core 1.0.29 → 1.0.30

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 (68) hide show
  1. package/dist/bootstrap.js +39 -1
  2. package/dist/config.js +257 -1
  3. package/dist/controllers/controller.js +53 -1
  4. package/dist/drivers/cache/cache.js +79 -1
  5. package/dist/drivers/cache/cache.module.js +30 -1
  6. package/dist/drivers/cache/index.js +14 -1
  7. package/dist/drivers/cache/redis.js +76 -1
  8. package/dist/drivers/db/db.helper.d.ts +1 -1
  9. package/dist/drivers/db/db.helper.js +276 -1
  10. package/dist/drivers/db/db.module.js +64 -1
  11. package/dist/drivers/db/db.service.js +52 -1
  12. package/dist/drivers/db/index.js +14 -1
  13. package/dist/drivers/db/migration.js +119 -1
  14. package/dist/drivers/db/repository.js +258 -1
  15. package/dist/drivers/encryptions/encryption.js +55 -1
  16. package/dist/drivers/encryptions/encryption.module.js +34 -1
  17. package/dist/drivers/encryptions/index.js +14 -1
  18. package/dist/drivers/encryptions/jwt.js +62 -1
  19. package/dist/drivers/encryptions/password-hash.js +48 -1
  20. package/dist/drivers/encryptions/snap.signature.js +111 -1
  21. package/dist/drivers/logger/app.logger.js +121 -2
  22. package/dist/drivers/logger/cloudwatch.js +73 -1
  23. package/dist/drivers/logger/index.js +12 -1
  24. package/dist/drivers/logger/logger.contract.js +29 -1
  25. package/dist/drivers/logger/logger.driver.js +49 -1
  26. package/dist/drivers/logger/slack.logger.js +42 -1
  27. package/dist/drivers/mail/index.js +14 -1
  28. package/dist/drivers/mail/mail-template.js +39 -6
  29. package/dist/drivers/mail/mail.config.js +10 -1
  30. package/dist/drivers/mail/mail.js +58 -13
  31. package/dist/drivers/mail/mail.module.js +36 -1
  32. package/dist/drivers/mail/mail.queue.js +45 -1
  33. package/dist/drivers/mail/mailer.js +64 -1
  34. package/dist/drivers/message-broker/index.js +14 -1
  35. package/dist/drivers/message-broker/kafka.js +104 -1
  36. package/dist/drivers/message-broker/message-broker.contract.js +24 -1
  37. package/dist/drivers/message-broker/message-broker.module.js +28 -1
  38. package/dist/drivers/message-broker/message.broker.js +67 -1
  39. package/dist/drivers/message-broker/rabbitmq.js +115 -1
  40. package/dist/drivers/notifications/index.js +14 -1
  41. package/dist/drivers/notifications/notification.config.js +10 -1
  42. package/dist/drivers/notifications/notification.module.js +34 -1
  43. package/dist/drivers/notifications/notification.queue.js +45 -1
  44. package/dist/drivers/notifications/push-notification.js +81 -1
  45. package/dist/drivers/notifications/slack.js +74 -1
  46. package/dist/drivers/queues/app.queue.js +77 -1
  47. package/dist/drivers/queues/index.js +14 -1
  48. package/dist/drivers/queues/queue.module.js +51 -1
  49. package/dist/drivers/secret-manager/aws-secret-manager.js +40 -1
  50. package/dist/drivers/secret-manager/index.js +50 -1
  51. package/dist/drivers/storage/csv.storage.js +71 -1
  52. package/dist/drivers/storage/excel.storage.js +57 -1
  53. package/dist/drivers/storage/index.js +14 -1
  54. package/dist/drivers/storage/local.storage.js +94 -1
  55. package/dist/drivers/storage/minio.storage.js +82 -1
  56. package/dist/drivers/storage/s3-storage.js +122 -1
  57. package/dist/drivers/storage/storage.contract.js +31 -1
  58. package/dist/drivers/storage/storage.module.js +32 -1
  59. package/dist/drivers/storage/storage.service.js +59 -1
  60. package/dist/helpers/exception.helper.js +132 -1
  61. package/dist/helpers/http.helper.js +163 -1
  62. package/dist/helpers/swagger.helper.js +474 -1
  63. package/dist/index.js +14 -1
  64. package/dist/types.d.js +4 -1
  65. package/dist/utils/redlock.js +51 -1
  66. package/dist/utils/throttle.js +68 -1
  67. package/dist/utils/totp.js +56 -1
  68. package/package.json +1 -1
@@ -1 +1,276 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get BooleanCol(){return BooleanCol},get CreatedAtCol(){return CreatedAtCol},get Entity(){return Entity},get EnumCol(){return EnumCol},get ForeignUuidCol(){return ForeignUuidCol},get NameCol(){return NameCol},get NumberCol(){return NumberCol},get PaginateRequest(){return PaginateRequest},get PaginateResponse(){return PaginateResponse},get PrimaryCodeCol(){return PrimaryCodeCol},get PrimaryNumberCol(){return PrimaryNumberCol},get PrimaryUuidCol(){return PrimaryUuidCol},get RelationEntity(){return RelationEntity},get SchedulerCol(){return SchedulerCol},get UpdatedAtCol(){return UpdatedAtCol}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});let _swagger=require("@nestjs/swagger"),_helpers=require("@triproject/helpers"),_classvalidator=require("class-validator"),_sequelizetypescript=require("sequelize-typescript");function _ts_decorate(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let PaginateResponse=class PaginateResponse{data;timestamp;meta};_ts_decorate([(0,_swagger.ApiProperty)({example:"2025-06-01T12:00:00Z",description:"Timestamp of the response"}),_ts_metadata("design:type",String)],PaginateResponse.prototype,"timestamp",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:{total:100,totalPage:10,perPage:10,prevPage:null,page:1,nextPage:2}}),_ts_metadata("design:type",Object)],PaginateResponse.prototype,"meta",void 0);let PaginateRequest=class PaginateRequest{perPage;page;q;orderBy;sort;searchKey;order;include;where;orWhere;andWhere;attributes;groupBy};function PrimaryUuidCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.UUID,allowNull:!1,primaryKey:!0,defaultValue:()=>(0,_helpers.generateId)()})}function PrimaryCodeCol(){return(0,_sequelizetypescript.Column)({allowNull:!1,primaryKey:!0,type:_sequelizetypescript.DataType.STRING(100),defaultValue:()=>(0,_helpers.generateCode)()})}function PrimaryNumberCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.BIGINT,allowNull:!1,primaryKey:!0,autoIncrement:!0,get(){return+this.getDataValue("id")}})}function CreatedAtCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.DATE,defaultValue:()=>(0,_helpers.dateUtil)().utc().getTime()})}function UpdatedAtCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.DATE,defaultValue:()=>(0,_helpers.dateUtil)().utc().getTime(),onUpdate:"UPDATE CURRENT_TIMESTAMP"})}function ForeignUuidCol(params){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.UUID,allowNull:params?.allowNull??!1})}function NumberCol(precision=5,scale=0,options={}){return options.type=_sequelizetypescript.DataType.INTEGER,precision<=5&&(options.type=_sequelizetypescript.DataType.MEDIUMINT),precision<=3&&(options.type=_sequelizetypescript.DataType.SMALLINT),precision<=2&&(options.type=_sequelizetypescript.DataType.TINYINT),precision>10&&(options.type=_sequelizetypescript.DataType.BIGINT),scale>0&&(options.type=_sequelizetypescript.DataType.DECIMAL(precision,scale),options.get=function(){let value=this.getDataValue(options.field??"");return null!=value?+value:value}),(0,_sequelizetypescript.Column)({...options,defaultValue:0})}function BooleanCol(defaultValue=!0){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.BOOLEAN,defaultValue})}function NameCol(){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.STRING(100),allowNull:!1})}function EnumCol(data){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.ENUM(...data.enum),allowNull:!1})}function SchedulerCol(options){return(0,_sequelizetypescript.Column)({type:_sequelizetypescript.DataType.STRING(512),get(){if(!options?.field)return[];try{let rawValue=this.getDataValue(options.field)??"[]";return JSON.parse(rawValue).map(([start,end])=>({start:(0,_helpers.dateUtil)(start).toDate(),end:(0,_helpers.dateUtil)(end).toDate()}))}catch(error){return[]}},set(value){options?.field&&this.setDataValue(options.field,JSON.stringify(value.map(({start,end})=>[(0,_helpers.dateUtil)(start).toISOString(),(0,_helpers.dateUtil)(end).toISOString()])))}})}_ts_decorate([(0,_swagger.ApiProperty)({example:10,description:"Number of items per page"}),(0,_classvalidator.IsOptional)(),(0,_classvalidator.IsNumber)(),_ts_metadata("design:type",Number)],PaginateRequest.prototype,"perPage",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:1,description:"Current page number"}),(0,_classvalidator.IsOptional)(),(0,_classvalidator.IsNumber)(),_ts_metadata("design:type",Number)],PaginateRequest.prototype,"page",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"search query",description:"Search query"}),(0,_classvalidator.IsOptional)(),(0,_classvalidator.IsString)(),_ts_metadata("design:type",String)],PaginateRequest.prototype,"q",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"createdAt",description:"Order by field"}),(0,_classvalidator.IsString)(),(0,_classvalidator.IsOptional)(),_ts_metadata("design:type","u"<typeof KeyOfModel?Object:KeyOfModel)],PaginateRequest.prototype,"orderBy",void 0),_ts_decorate([(0,_swagger.ApiProperty)({example:"ASC",enum:["ASC","DESC"],description:"Sort order"}),(0,_classvalidator.IsEnum)(["ASC","DESC"]),_ts_metadata("design:type","u"<typeof OrderDataType?Object:OrderDataType)],PaginateRequest.prototype,"sort",void 0);let Entity=class Entity extends _sequelizetypescript.Model{};_ts_decorate([PrimaryUuidCol(),_ts_metadata("design:type",String)],Entity.prototype,"id",void 0),_ts_decorate([CreatedAtCol(),_ts_metadata("design:type","u"<typeof Date?Object:Date)],Entity.prototype,"createdAt",void 0),_ts_decorate([UpdatedAtCol(),_ts_metadata("design:type","u"<typeof Date?Object:Date)],Entity.prototype,"updatedAt",void 0),Entity=_ts_decorate([(0,_sequelizetypescript.Table)({underscored:!1,timestamps:!0})],Entity);let RelationEntity=class RelationEntity extends _sequelizetypescript.Model{};_ts_decorate([PrimaryNumberCol(),_ts_metadata("design:type",Number)],RelationEntity.prototype,"id",void 0),RelationEntity=_ts_decorate([(0,_sequelizetypescript.Table)({underscored:!1,timestamps:!1})],RelationEntity);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: !0
4
+ });
5
+ var target = exports, all = {
6
+ get BooleanCol () {
7
+ return BooleanCol;
8
+ },
9
+ get CreatedAtCol () {
10
+ return CreatedAtCol;
11
+ },
12
+ get Entity () {
13
+ return Entity;
14
+ },
15
+ get EnumCol () {
16
+ return EnumCol;
17
+ },
18
+ get ForeignUuidCol () {
19
+ return ForeignUuidCol;
20
+ },
21
+ get NameCol () {
22
+ return NameCol;
23
+ },
24
+ get NumberCol () {
25
+ return NumberCol;
26
+ },
27
+ get PaginateRequest () {
28
+ return PaginateRequest;
29
+ },
30
+ get PaginateResponse () {
31
+ return PaginateResponse;
32
+ },
33
+ get PrimaryCodeCol () {
34
+ return PrimaryCodeCol;
35
+ },
36
+ get PrimaryNumberCol () {
37
+ return PrimaryNumberCol;
38
+ },
39
+ get PrimaryUuidCol () {
40
+ return PrimaryUuidCol;
41
+ },
42
+ get RelationEntity () {
43
+ return RelationEntity;
44
+ },
45
+ get SchedulerCol () {
46
+ return SchedulerCol;
47
+ },
48
+ get UpdatedAtCol () {
49
+ return UpdatedAtCol;
50
+ }
51
+ };
52
+ for(var name in all)Object.defineProperty(target, name, {
53
+ enumerable: !0,
54
+ get: Object.getOwnPropertyDescriptor(all, name).get
55
+ });
56
+ let _common = require("@nestjs/common"), _swagger = require("@nestjs/swagger"), _helpers = require("@triproject/helpers"), _classvalidator = require("class-validator"), _sequelizetypescript = require("sequelize-typescript");
57
+ function _ts_decorate(decorators, target, key, desc) {
58
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
59
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
60
+ else for(var i = decorators.length - 1; i >= 0; i--)(d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
61
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
62
+ }
63
+ function _ts_metadata(k, v) {
64
+ if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
65
+ }
66
+ let PaginateResponse = class PaginateResponse {
67
+ data;
68
+ timestamp;
69
+ meta;
70
+ };
71
+ _ts_decorate([
72
+ (0, _swagger.ApiProperty)({
73
+ example: '2025-06-01T12:00:00Z',
74
+ description: 'Timestamp of the response'
75
+ }),
76
+ _ts_metadata("design:type", String)
77
+ ], PaginateResponse.prototype, "timestamp", void 0), _ts_decorate([
78
+ (0, _swagger.ApiProperty)({
79
+ example: {
80
+ total: 100,
81
+ totalPage: 10,
82
+ perPage: 10,
83
+ prevPage: null,
84
+ page: 1,
85
+ nextPage: 2
86
+ }
87
+ }),
88
+ _ts_metadata("design:type", Object)
89
+ ], PaginateResponse.prototype, "meta", void 0);
90
+ let PaginateRequest = class PaginateRequest {
91
+ perPage;
92
+ page;
93
+ q;
94
+ orderBy;
95
+ sort;
96
+ searchKey;
97
+ order;
98
+ include;
99
+ where;
100
+ orWhere;
101
+ andWhere;
102
+ attributes;
103
+ groupBy;
104
+ };
105
+ function PrimaryUuidCol() {
106
+ return (0, _sequelizetypescript.Column)({
107
+ type: _sequelizetypescript.DataType.UUID,
108
+ allowNull: !1,
109
+ primaryKey: !0,
110
+ defaultValue: ()=>(0, _helpers.generateId)()
111
+ });
112
+ }
113
+ function PrimaryCodeCol() {
114
+ return (0, _sequelizetypescript.Column)({
115
+ allowNull: !1,
116
+ primaryKey: !0,
117
+ type: _sequelizetypescript.DataType.STRING(100),
118
+ defaultValue: ()=>(0, _helpers.generateCode)()
119
+ });
120
+ }
121
+ function PrimaryNumberCol() {
122
+ return (0, _sequelizetypescript.Column)({
123
+ type: _sequelizetypescript.DataType.BIGINT,
124
+ allowNull: !1,
125
+ primaryKey: !0,
126
+ autoIncrement: !0,
127
+ get () {
128
+ return +this.getDataValue('id');
129
+ }
130
+ });
131
+ }
132
+ function CreatedAtCol() {
133
+ return (0, _sequelizetypescript.Column)({
134
+ type: _sequelizetypescript.DataType.DATE,
135
+ defaultValue: ()=>(0, _helpers.dateUtil)().utc().getTime()
136
+ });
137
+ }
138
+ function UpdatedAtCol() {
139
+ return (0, _sequelizetypescript.Column)({
140
+ type: _sequelizetypescript.DataType.DATE,
141
+ defaultValue: ()=>(0, _helpers.dateUtil)().utc().getTime(),
142
+ onUpdate: 'UPDATE CURRENT_TIMESTAMP'
143
+ });
144
+ }
145
+ function ForeignUuidCol(params) {
146
+ return (0, _sequelizetypescript.Column)({
147
+ type: _sequelizetypescript.DataType.UUID,
148
+ allowNull: params?.allowNull ?? !1
149
+ });
150
+ }
151
+ function NumberCol(precision = 5, scale = 0, options = {}) {
152
+ return options.type = _sequelizetypescript.DataType.INTEGER, precision <= 5 && (options.type = _sequelizetypescript.DataType.MEDIUMINT), precision <= 3 && (options.type = _sequelizetypescript.DataType.SMALLINT), precision <= 2 && (options.type = _sequelizetypescript.DataType.TINYINT), precision > 10 && (options.type = _sequelizetypescript.DataType.BIGINT), scale > 0 && (options.type = _sequelizetypescript.DataType.DECIMAL(precision, scale), options.get = function() {
153
+ let value = this.getDataValue(options.field ?? '');
154
+ return null != value ? +value : value;
155
+ }), (0, _sequelizetypescript.Column)({
156
+ ...options,
157
+ defaultValue: 0
158
+ });
159
+ }
160
+ function BooleanCol(defaultValue = !0) {
161
+ return (0, _sequelizetypescript.Column)({
162
+ type: _sequelizetypescript.DataType.BOOLEAN,
163
+ defaultValue
164
+ });
165
+ }
166
+ function NameCol() {
167
+ return (0, _sequelizetypescript.Column)({
168
+ type: _sequelizetypescript.DataType.STRING(100),
169
+ allowNull: !1
170
+ });
171
+ }
172
+ function EnumCol(data) {
173
+ return (0, _sequelizetypescript.Column)({
174
+ type: _sequelizetypescript.DataType.ENUM(...data.enum),
175
+ allowNull: !1
176
+ });
177
+ }
178
+ function SchedulerCol() {
179
+ return (target, propertyName)=>(0, _sequelizetypescript.Column)({
180
+ type: _sequelizetypescript.DataType.STRING(1000),
181
+ get () {
182
+ if (!propertyName) throw new _common.InternalServerErrorException('Field name is required for SchedulerCol');
183
+ try {
184
+ let rawValue = this.getDataValue(propertyName) ?? '[]';
185
+ return JSON.parse(rawValue).map(([start, end])=>(0, _helpers.removeEmptyValues)({
186
+ start,
187
+ end
188
+ }));
189
+ } catch (error) {
190
+ return [];
191
+ }
192
+ },
193
+ set (value) {
194
+ if (!propertyName) throw new _common.InternalServerErrorException('Field name is required for SchedulerCol');
195
+ this.setDataValue(propertyName, JSON.stringify(value.map(({ start, end })=>[
196
+ start,
197
+ end
198
+ ])));
199
+ }
200
+ })(target, propertyName);
201
+ }
202
+ _ts_decorate([
203
+ (0, _swagger.ApiProperty)({
204
+ example: 10,
205
+ description: 'Number of items per page'
206
+ }),
207
+ (0, _classvalidator.IsOptional)(),
208
+ (0, _classvalidator.IsNumber)(),
209
+ _ts_metadata("design:type", Number)
210
+ ], PaginateRequest.prototype, "perPage", void 0), _ts_decorate([
211
+ (0, _swagger.ApiProperty)({
212
+ example: 1,
213
+ description: 'Current page number'
214
+ }),
215
+ (0, _classvalidator.IsOptional)(),
216
+ (0, _classvalidator.IsNumber)(),
217
+ _ts_metadata("design:type", Number)
218
+ ], PaginateRequest.prototype, "page", void 0), _ts_decorate([
219
+ (0, _swagger.ApiProperty)({
220
+ example: 'search query',
221
+ description: 'Search query'
222
+ }),
223
+ (0, _classvalidator.IsOptional)(),
224
+ (0, _classvalidator.IsString)(),
225
+ _ts_metadata("design:type", String)
226
+ ], PaginateRequest.prototype, "q", void 0), _ts_decorate([
227
+ (0, _swagger.ApiProperty)({
228
+ example: 'createdAt',
229
+ description: 'Order by field'
230
+ }),
231
+ (0, _classvalidator.IsString)(),
232
+ (0, _classvalidator.IsOptional)(),
233
+ _ts_metadata("design:type", "u" < typeof KeyOfModel ? Object : KeyOfModel)
234
+ ], PaginateRequest.prototype, "orderBy", void 0), _ts_decorate([
235
+ (0, _swagger.ApiProperty)({
236
+ example: 'ASC',
237
+ enum: [
238
+ 'ASC',
239
+ 'DESC'
240
+ ],
241
+ description: 'Sort order'
242
+ }),
243
+ (0, _classvalidator.IsEnum)([
244
+ 'ASC',
245
+ 'DESC'
246
+ ]),
247
+ _ts_metadata("design:type", "u" < typeof OrderDataType ? Object : OrderDataType)
248
+ ], PaginateRequest.prototype, "sort", void 0);
249
+ let Entity = class Entity extends _sequelizetypescript.Model {
250
+ };
251
+ _ts_decorate([
252
+ PrimaryUuidCol(),
253
+ _ts_metadata("design:type", String)
254
+ ], Entity.prototype, "id", void 0), _ts_decorate([
255
+ CreatedAtCol(),
256
+ _ts_metadata("design:type", "u" < typeof Date ? Object : Date)
257
+ ], Entity.prototype, "createdAt", void 0), _ts_decorate([
258
+ UpdatedAtCol(),
259
+ _ts_metadata("design:type", "u" < typeof Date ? Object : Date)
260
+ ], Entity.prototype, "updatedAt", void 0), Entity = _ts_decorate([
261
+ (0, _sequelizetypescript.Table)({
262
+ underscored: !1,
263
+ timestamps: !0
264
+ })
265
+ ], Entity);
266
+ let RelationEntity = class RelationEntity extends _sequelizetypescript.Model {
267
+ };
268
+ _ts_decorate([
269
+ PrimaryNumberCol(),
270
+ _ts_metadata("design:type", Number)
271
+ ], RelationEntity.prototype, "id", void 0), RelationEntity = _ts_decorate([
272
+ (0, _sequelizetypescript.Table)({
273
+ underscored: !1,
274
+ timestamps: !1
275
+ })
276
+ ], RelationEntity);
@@ -1 +1,64 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DBModule",{enumerable:!0,get:function(){return DBModule}});let _common=require("@nestjs/common"),_sequelize=require("@nestjs/sequelize"),_path=require("path"),_secretmanager=require("../secret-manager"),_dbservice=require("./db.service");let DBModule=class DBModule{};DBModule=function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}([(0,_common.Global)(),(0,_common.Module)({imports:[_sequelize.SequelizeModule.forRootAsync({useFactory:async()=>{let{DB_DIALECT,DB_ENTITIES_PATH,DB_HOST,DB_MAX_POOL_SIZE,DB_NAME,DB_PASSWORD,DB_PORT,DB_SSL,DB_USER}=await (0,_secretmanager.getSecret)();return{host:DB_HOST,port:DB_PORT,username:DB_USER,password:DB_PASSWORD,database:DB_NAME,dialect:DB_DIALECT,pool:{min:2,max:DB_MAX_POOL_SIZE},models:[(0,_path.resolve)(DB_ENTITIES_PATH)],define:{charset:"utf8",underscored:!1},synchronize:!1,logging:!1,dialectOptions:DB_SSL?{ssl:{require:!0,rejectUnauthorized:!1}}:{}}}})],providers:[_sequelize.SequelizeModule,_dbservice.DbService],exports:[_sequelize.SequelizeModule,_dbservice.DbService]})],DBModule);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: !0
4
+ }), Object.defineProperty(exports, "DBModule", {
5
+ enumerable: !0,
6
+ get: function() {
7
+ return DBModule;
8
+ }
9
+ });
10
+ let _common = require("@nestjs/common"), _sequelize = require("@nestjs/sequelize"), _path = require("path"), _secretmanager = require("../secret-manager"), _dbservice = require("./db.service");
11
+ let DBModule = class DBModule {
12
+ };
13
+ DBModule = function(decorators, target, key, desc) {
14
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
15
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
16
+ else for(var i = decorators.length - 1; i >= 0; i--)(d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
17
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
18
+ }([
19
+ (0, _common.Global)(),
20
+ (0, _common.Module)({
21
+ imports: [
22
+ _sequelize.SequelizeModule.forRootAsync({
23
+ useFactory: async ()=>{
24
+ let { DB_DIALECT, DB_ENTITIES_PATH, DB_HOST, DB_MAX_POOL_SIZE, DB_NAME, DB_PASSWORD, DB_PORT, DB_SSL, DB_USER } = await (0, _secretmanager.getSecret)();
25
+ return {
26
+ host: DB_HOST,
27
+ port: DB_PORT,
28
+ username: DB_USER,
29
+ password: DB_PASSWORD,
30
+ database: DB_NAME,
31
+ dialect: DB_DIALECT,
32
+ pool: {
33
+ min: 2,
34
+ max: DB_MAX_POOL_SIZE
35
+ },
36
+ models: [
37
+ (0, _path.resolve)(DB_ENTITIES_PATH)
38
+ ],
39
+ define: {
40
+ charset: 'utf8',
41
+ underscored: !1
42
+ },
43
+ synchronize: !1,
44
+ logging: !1,
45
+ dialectOptions: DB_SSL ? {
46
+ ssl: {
47
+ require: !0,
48
+ rejectUnauthorized: !1
49
+ }
50
+ } : {}
51
+ };
52
+ }
53
+ })
54
+ ],
55
+ providers: [
56
+ _sequelize.SequelizeModule,
57
+ _dbservice.DbService
58
+ ],
59
+ exports: [
60
+ _sequelize.SequelizeModule,
61
+ _dbservice.DbService
62
+ ]
63
+ })
64
+ ], DBModule);
@@ -1 +1,52 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DbService",{enumerable:!0,get:function(){return DbService}});let _common=require("@nestjs/common"),_sequelizetypescript=require("sequelize-typescript"),_applogger=require("../../drivers/logger/app.logger"),_secretmanager=require("../secret-manager");function _ts_metadata(k,v){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(k,v)}let DbService=class DbService{db;logger=new _applogger.AppLogger(DbService.name);constructor(db){this.db=db}async onModuleInit(){await this.authenticate()}async authenticate(){let env=await (0,_secretmanager.getSecret)();await this.db.authenticate({retry:{max:1}}).then(()=>this.logger.log(`Database connected successfully to ${env.DB_NAME}:${env.DB_DIALECT}`)).catch(err=>{throw this.logger.error("Unable to connect to the database:",err),err})}async checkConnection(){return await this.db.authenticate({retry:{max:1}}).then(()=>!0).catch(err=>(this.logger.error("Database connection failed",err),!1))}};DbService=function(decorators,target,key,desc){var d,c=arguments.length,r=c<3?target:null===desc?desc=Object.getOwnPropertyDescriptor(target,key):desc;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}([(0,_common.Injectable)(),_ts_metadata("design:type",Function),_ts_metadata("design:paramtypes",[void 0===_sequelizetypescript.Sequelize?Object:_sequelizetypescript.Sequelize])],DbService);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: !0
4
+ }), Object.defineProperty(exports, "DbService", {
5
+ enumerable: !0,
6
+ get: function() {
7
+ return DbService;
8
+ }
9
+ });
10
+ let _common = require("@nestjs/common"), _sequelizetypescript = require("sequelize-typescript"), _applogger = require("../../drivers/logger/app.logger"), _secretmanager = require("../secret-manager");
11
+ function _ts_metadata(k, v) {
12
+ if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
13
+ }
14
+ let DbService = class DbService {
15
+ db;
16
+ logger = new _applogger.AppLogger(DbService.name);
17
+ constructor(db){
18
+ this.db = db;
19
+ }
20
+ async onModuleInit() {
21
+ await this.authenticate();
22
+ }
23
+ async authenticate() {
24
+ let env = await (0, _secretmanager.getSecret)();
25
+ await this.db.authenticate({
26
+ retry: {
27
+ max: 1
28
+ }
29
+ }).then(()=>this.logger.log(`Database connected successfully to ${env.DB_NAME}:${env.DB_DIALECT}`)).catch((err)=>{
30
+ throw this.logger.error('Unable to connect to the database:', err), err;
31
+ });
32
+ }
33
+ async checkConnection() {
34
+ return await this.db.authenticate({
35
+ retry: {
36
+ max: 1
37
+ }
38
+ }).then(()=>!0).catch((err)=>(this.logger.error('Database connection failed', err), !1));
39
+ }
40
+ };
41
+ DbService = function(decorators, target, key, desc) {
42
+ var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
43
+ if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc);
44
+ else for(var i = decorators.length - 1; i >= 0; i--)(d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
45
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
46
+ }([
47
+ (0, _common.Injectable)(),
48
+ _ts_metadata("design:type", Function),
49
+ _ts_metadata("design:paramtypes", [
50
+ void 0 === _sequelizetypescript.Sequelize ? Object : _sequelizetypescript.Sequelize
51
+ ])
52
+ ], DbService);
@@ -1 +1,14 @@
1
- "use strict";function _export_star(from,to){return Object.keys(from).forEach(function(k){"default"===k||Object.prototype.hasOwnProperty.call(to,k)||Object.defineProperty(to,k,{enumerable:!0,get:function(){return from[k]}})}),from}Object.defineProperty(exports,"__esModule",{value:!0}),_export_star(require("./db.helper"),exports),_export_star(require("./db.module"),exports),_export_star(require("./db.service"),exports),_export_star(require("./migration"),exports),_export_star(require("./repository"),exports);
1
+ "use strict";
2
+ function _export_star(from, to) {
3
+ return Object.keys(from).forEach(function(k) {
4
+ "default" === k || Object.prototype.hasOwnProperty.call(to, k) || Object.defineProperty(to, k, {
5
+ enumerable: !0,
6
+ get: function() {
7
+ return from[k];
8
+ }
9
+ });
10
+ }), from;
11
+ }
12
+ Object.defineProperty(exports, "__esModule", {
13
+ value: !0
14
+ }), _export_star(require("./db.helper"), exports), _export_star(require("./db.module"), exports), _export_star(require("./db.service"), exports), _export_star(require("./migration"), exports), _export_star(require("./repository"), exports);
@@ -1 +1,119 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get addIndexes(){return addIndexes},get addUniqueIndexes(){return addUniqueIndexes},get defaultCols(){return defaultCols},get deleteIndexes(){return deleteIndexes},get deleteUniqueIndexes(){return deleteUniqueIndexes},get migrationConfig(){return migrationConfig},get relationCols(){return relationCols}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});let _helpers=require("@triproject/helpers"),_sequelize=require("sequelize"),_secretmanager=require("../secret-manager"),defaultCols=()=>({id:{type:(0,_sequelize.STRING)(36),primaryKey:!0,autoIncrement:!1,defaultValue:()=>(0,_helpers.generateId)()},createdAt:{type:_sequelize.DATE,defaultValue:(0,_sequelize.fn)("now")},updatedAt:{type:_sequelize.DATE,defaultValue:(0,_sequelize.fn)("now")}}),relationCols=(...args)=>({id:{type:_sequelize.BIGINT,primaryKey:!0,autoIncrement:!0},...args.reduce((acc,curr)=>(acc[curr]={type:(0,_sequelize.STRING)(36),allowNull:!1},acc),{})}),index=(tableName,column)=>[tableName,(0,_helpers.md5)(Array.isArray(column)?column.sort().join("_"):column).substring(0,8),"idx"].join("_"),addIndexes=async params=>{let{tableName,columns,options={},queryInterface}=params;for(let col of columns)await queryInterface.addIndex(tableName,[col],{name:index(tableName,col),...options})},deleteIndexes=async params=>{let{tableName,columns,queryInterface}=params;for(let col of columns)await queryInterface.removeIndex(tableName,index(tableName,col))},addUniqueIndexes=async params=>{let{tableName,columns,options={},queryInterface}=params;queryInterface.addIndex(tableName,columns,{unique:!0,name:index(tableName,columns),...options})},deleteUniqueIndexes=async params=>{let{tableName,columns,queryInterface}=params;await queryInterface.removeIndex(tableName,index(tableName,columns))},migrationConfig=async migrationTableName=>{let env=await (0,_secretmanager.getSecret)(),common={host:env.DB_HOST??"127.0.0.1",port:+(env.DB_PORT??5432),username:env.DB_USER??"postgres",database:env.DB_NAME??"app_db",password:env.DB_PASSWORD??"",dialect:env.DB_DIALECT??"postgres",logging:!1,pool:{max:env.DB_MAX_POOL_SIZE??10,min:env.DB_POOL_MIN??0,acquire:env.DB_POOL_ACQUIRE??3e4,idle:env.DB_POOL_IDLE??1e4},dialectOptions:env.DB_SSL?{ssl:{require:!0,rejectUnauthorized:!0}}:{}};return{development:{...common,migrationStorageTableName:migrationTableName},staging:{...common,migrationStorageTableName:migrationTableName},test:{},production:{...common,migrationStorageTableName:migrationTableName}}};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: !0
4
+ });
5
+ var target = exports, all = {
6
+ get addIndexes () {
7
+ return addIndexes;
8
+ },
9
+ get addUniqueIndexes () {
10
+ return addUniqueIndexes;
11
+ },
12
+ get defaultCols () {
13
+ return defaultCols;
14
+ },
15
+ get deleteIndexes () {
16
+ return deleteIndexes;
17
+ },
18
+ get deleteUniqueIndexes () {
19
+ return deleteUniqueIndexes;
20
+ },
21
+ get migrationConfig () {
22
+ return migrationConfig;
23
+ },
24
+ get relationCols () {
25
+ return relationCols;
26
+ }
27
+ };
28
+ for(var name in all)Object.defineProperty(target, name, {
29
+ enumerable: !0,
30
+ get: Object.getOwnPropertyDescriptor(all, name).get
31
+ });
32
+ let _helpers = require("@triproject/helpers"), _sequelize = require("sequelize"), _secretmanager = require("../secret-manager"), defaultCols = ()=>({
33
+ id: {
34
+ type: (0, _sequelize.STRING)(36),
35
+ primaryKey: !0,
36
+ autoIncrement: !1,
37
+ defaultValue: ()=>(0, _helpers.generateId)()
38
+ },
39
+ createdAt: {
40
+ type: _sequelize.DATE,
41
+ defaultValue: (0, _sequelize.fn)('now')
42
+ },
43
+ updatedAt: {
44
+ type: _sequelize.DATE,
45
+ defaultValue: (0, _sequelize.fn)('now')
46
+ }
47
+ }), relationCols = (...args)=>({
48
+ id: {
49
+ type: _sequelize.BIGINT,
50
+ primaryKey: !0,
51
+ autoIncrement: !0
52
+ },
53
+ ...args.reduce((acc, curr)=>(acc[curr] = {
54
+ type: (0, _sequelize.STRING)(36),
55
+ allowNull: !1
56
+ }, acc), {})
57
+ }), index = (tableName, column)=>[
58
+ tableName,
59
+ (0, _helpers.md5)(Array.isArray(column) ? column.sort().join('_') : column).substring(0, 8),
60
+ 'idx'
61
+ ].join('_'), addIndexes = async (params)=>{
62
+ let { tableName, columns, options = {}, queryInterface } = params;
63
+ for (let col of columns)await queryInterface.addIndex(tableName, [
64
+ col
65
+ ], {
66
+ name: index(tableName, col),
67
+ ...options
68
+ });
69
+ }, deleteIndexes = async (params)=>{
70
+ let { tableName, columns, queryInterface } = params;
71
+ for (let col of columns)await queryInterface.removeIndex(tableName, index(tableName, col));
72
+ }, addUniqueIndexes = async (params)=>{
73
+ let { tableName, columns, options = {}, queryInterface } = params;
74
+ queryInterface.addIndex(tableName, columns, {
75
+ unique: !0,
76
+ name: index(tableName, columns),
77
+ ...options
78
+ });
79
+ }, deleteUniqueIndexes = async (params)=>{
80
+ let { tableName, columns, queryInterface } = params;
81
+ await queryInterface.removeIndex(tableName, index(tableName, columns));
82
+ }, migrationConfig = async (migrationTableName)=>{
83
+ let env = await (0, _secretmanager.getSecret)(), common = {
84
+ host: env.DB_HOST ?? '127.0.0.1',
85
+ port: +(env.DB_PORT ?? 5432),
86
+ username: env.DB_USER ?? 'postgres',
87
+ database: env.DB_NAME ?? 'app_db',
88
+ password: env.DB_PASSWORD ?? '',
89
+ dialect: env.DB_DIALECT ?? 'postgres',
90
+ logging: !1,
91
+ pool: {
92
+ max: env.DB_MAX_POOL_SIZE ?? 10,
93
+ min: env.DB_POOL_MIN ?? 0,
94
+ acquire: env.DB_POOL_ACQUIRE ?? 30000,
95
+ idle: env.DB_POOL_IDLE ?? 10000
96
+ },
97
+ dialectOptions: env.DB_SSL ? {
98
+ ssl: {
99
+ require: !0,
100
+ rejectUnauthorized: !0
101
+ }
102
+ } : {}
103
+ };
104
+ return {
105
+ development: {
106
+ ...common,
107
+ migrationStorageTableName: migrationTableName
108
+ },
109
+ staging: {
110
+ ...common,
111
+ migrationStorageTableName: migrationTableName
112
+ },
113
+ test: {},
114
+ production: {
115
+ ...common,
116
+ migrationStorageTableName: migrationTableName
117
+ }
118
+ };
119
+ };