@gennext/lb-infra 0.0.9 → 0.0.11

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 (2) hide show
  1. package/README.md +146 -0
  2. package/package.json +7 -6
package/README.md ADDED
@@ -0,0 +1,146 @@
1
+ # @gennext/lb-infra
2
+
3
+ `@gennext/lb-infra` là bộ khung cơ sở (infrastructure framework) được phát triển bởi Gennex Technology dựa trên LoopBack 4. Thư viện này cung cấp các công cụ, tiện ích và các lớp cơ sở giúp tăng tốc độ phát triển các ứng dụng backend một cách nhất quán và bảo mật.
4
+
5
+ ## Tính năng chính
6
+
7
+ - ✅ **Enhanced Logger**: Hệ thống logging mạnh mẽ hỗ trợ ghi log truy cập HTTP, ẩn thông tin nhạy cảm (data masking), theo dõi Request ID và đo lường hiệu suất.
8
+ - ✅ **Base Models & Datasources**: Cung cấp các lớp cơ sở như `BaseEntity`, `BaseDataSource` giúp chuẩn hóa cấu trúc dữ liệu và kết nối DB.
9
+ - ✅ **Datasources**: Hỗ trợ sẵn các cấu hình và lớp kết nối cho PostgreSQL và Redis.
10
+ - ✅ **Redis Helpers**: Tiện ích giúp tương tác với Redis một cách dễ dàng và hiệu quả.
11
+ - ✅ **Common Utilities**: Tập hợp các hàm tiện ích cho Crypto, Date, Error, Promises, Query Builder, URL, v.v.
12
+ - ✅ **LoopBack 4 Overrides**: Re-export và tùy chỉnh các module cốt lõi của LoopBack 4 (@lb/auth, @lb/core, @lb/rest, @lb/repo).
13
+
14
+ ---
15
+
16
+ ## Cài đặt
17
+
18
+ Sử dụng `bun` hoặc `npm`/`yarn`:
19
+
20
+ ```bash
21
+ bun add @gennext/lb-infra
22
+ ```
23
+
24
+ ---
25
+
26
+ ## Hướng dẫn sử dụng
27
+
28
+ ### 1. Cấu hình Logger
29
+
30
+ Hệ thống logger hỗ trợ hai chế độ: `legacy` (tương thích ngược) và `modern`. Bạn nên cấu hình logger ngay khi khởi tạo ứng dụng.
31
+
32
+ ```typescript
33
+ import { LoggerFactory } from '@gennext/lb-infra';
34
+
35
+ // Cấu hình toàn cục (thực hiện một lần tại entry point)
36
+ LoggerFactory.config({
37
+ mode: 'modern',
38
+ defaultDataMasking: {
39
+ useMaskdataLib: true,
40
+ maskdataOptions: {
41
+ genericStrings: [
42
+ {
43
+ config: { maskWith: '*', fixedOutputLength: 8 },
44
+ fields: ['*password', '*secret', '*token'],
45
+ },
46
+ ],
47
+ },
48
+ },
49
+ defaultRequestIDSystem: 'asyncLocalStorage',
50
+ defaultLogFormat: 'modern',
51
+ });
52
+
53
+ const logger = LoggerFactory.getLogger(['UserModule']);
54
+ logger.info('Ứng dụng đã khởi chạy thành công');
55
+ ```
56
+
57
+ ### 2. Sử dụng Base Model
58
+
59
+ Kế thừa các lớp cơ sở để chuẩn hóa các Entity trong LoopBack 4.
60
+
61
+ ```typescript
62
+ import { BaseNumberIdEntity } from '@gennext/lb-infra';
63
+ import { property } from '@loopback/repository';
64
+
65
+ export class User extends BaseNumberIdEntity {
66
+ @property({ type: 'string', required: true })
67
+ username: string;
68
+
69
+ @property({ type: 'string' })
70
+ email?: string;
71
+ }
72
+ ```
73
+
74
+ ### 3. Kết nối PostgreSQL
75
+
76
+ `PostgresDataSource` tự động đọc cấu hình từ biến môi trường.
77
+
78
+ ```typescript
79
+ import { PostgresDataSource } from '@gennext/lb-infra';
80
+
81
+ // Tự động kết nối dựa trên APP_ENV_POSTGRES_* env
82
+ const dataSource = new PostgresDataSource();
83
+ ```
84
+
85
+ ### 4. Sử dụng Redis Helper
86
+
87
+ ```typescript
88
+ import { RedisHelper } from '@gennext/lb-infra';
89
+
90
+ const redis = new RedisHelper({
91
+ name: 'my-redis',
92
+ host: 'localhost',
93
+ port: 6379,
94
+ password: 'your-password'
95
+ });
96
+
97
+ await redis.set('key', 'value');
98
+ const val = await redis.get('key');
99
+ ```
100
+
101
+ ### 5. Sử dụng Common Utilities
102
+
103
+ ```typescript
104
+ import { cryptoUtility, dateUtility, queryUtility } from '@gennext/lb-infra';
105
+
106
+ // Crypto
107
+ const hash = cryptoUtility.md5('password');
108
+
109
+ // Date
110
+ const now = dateUtility.now();
111
+
112
+ // Query Utility
113
+ const tableDef = queryUtility.getTableDefinition({ model: User });
114
+ ```
115
+
116
+ ---
117
+
118
+ ## Cấu hình Biến môi trường (Environment Variables)
119
+
120
+ Thư viện hỗ trợ các biến môi trường sau để cấu hình Datasource:
121
+
122
+ ### PostgreSQL
123
+ - `APP_ENV_POSTGRES_HOST`: Host của DB (mặc định: `0.0.0.0`)
124
+ - `APP_ENV_POSTGRES_PORT`: Port (mặc định: `5432`)
125
+ - `APP_ENV_POSTGRES_USERNAME`: Username (mặc định: `postgres`)
126
+ - `APP_ENV_POSTGRES_PASSWORD`: Password (mặc định: `password`)
127
+ - `APP_ENV_POSTGRES_DATABASE`: Database name (mặc định: `postgres`)
128
+
129
+ ### Logger
130
+ - `APP_ENV_ENABLE_ACCESS_LOG`: Bật/tắt log truy cập (true/false)
131
+ - `APP_ENV_LOG_FORMAT`: Định dạng log (`legacy` hoặc `modern`)
132
+
133
+ ---
134
+
135
+ ## Tài liệu chi tiết
136
+
137
+ Xem thêm các hướng dẫn chi tiết tại thư mục `docs/`:
138
+
139
+ - [Cấu hình hệ thống Logger](./docs/CONFIG_USAGE.md)
140
+ - [Hướng dẫn Logger nâng cao](./docs/ENHANCED_LOGGER_USAGE.md)
141
+ - [Chi tiết về infra](./docs/lb-infra.md)
142
+
143
+ ---
144
+
145
+ ## Liên hệ
146
+ **Gennex Technology Team**
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@gennext/lb-infra",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "dependencies": {
5
- "@gennext/dev-configs": "^0.0.2",
5
+ "@gennext/dev-configs": "^0.0.3",
6
6
  "@loopback/authentication": "^12.0.6",
7
7
  "@loopback/authentication-jwt": "^0.16.6",
8
8
  "@loopback/authorization": "^0.16.5",
@@ -28,17 +28,17 @@
28
28
  "winston-transport": "^4.9.0"
29
29
  },
30
30
  "devDependencies": {
31
- "@gennext/eslint-node": "^0.0.1",
31
+ "@gennext/eslint-node": "^0.0.2",
32
32
  "@types/lodash": "^4.17.23",
33
33
  "@types/multer": "^2.0.0",
34
- "@types/node": "^24.7.2",
35
- "eslint": "^9.36.0",
34
+ "@types/node": "25.6.0",
35
+ "eslint": "10.2.0",
36
36
  "prettier": "^3.6.2",
37
37
  "source-map-support": "^0.5.21",
38
38
  "ts-node": "^10.9.2",
39
39
  "tsc-alias": "^1.8.16",
40
40
  "tsconfig-paths": "^4.2.0",
41
- "typescript": "~5.9.3"
41
+ "typescript": "6.0.2"
42
42
  },
43
43
  "exports": {
44
44
  ".": {
@@ -118,6 +118,7 @@
118
118
  "clean": "sh ./scripts/clean.sh",
119
119
  "rebuild": "sh ./scripts/rebuild.sh",
120
120
  "eslint": "eslint --report-unused-disable-directives .",
121
+ "test": "TS_NODE_PROJECT=tsconfig.test.json node --require ts-node/register/transpile-only --require tsconfig-paths/register --test \"tests/**/*.test.ts\"",
121
122
  "lint": "bun run eslint && bun run prettier:cli",
122
123
  "lint:fix": "bun run eslint --fix && bun run prettier:fix",
123
124
  "prettier:cli": "prettier \"**/*.{js,ts}\" -l",