@warriorteam/redai-zalo-sdk 1.28.0 → 1.29.0

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,68 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.29.0] - 2025-01-05
6
+
7
+ ### 🚀 Major Type Safety Improvements
8
+
9
+ #### ZNS Service Type Safety Enhancement
10
+ - **Feature**: Completely removed `any` types from ZNS Service validation functions
11
+ - **Impact**: Full type safety for all ZNS template components and validation
12
+ - **Benefits**: Better IDE support, compile-time error detection, improved developer experience
13
+
14
+ #### New Type Definitions Added
15
+ - `ZNSValidationComponent` - Union type for all ZNS components
16
+ - `ZNSTitleComponent` - Type-safe TITLE component (9-65 chars, max 4 params)
17
+ - `ZNSParagraphComponent` - Type-safe PARAGRAPH component (9-400 chars, max 10 params)
18
+ - `ZNSOTPComponent` - Type-safe OTP component (1-10 chars)
19
+ - `ZNSTableComponent` & `ZNSTableRow` - Type-safe TABLE component (2-8 rows)
20
+ - `ZNSLogoComponent` - Type-safe LOGO component with light/dark attachments
21
+ - `ZNSImagesComponent` - Type-safe IMAGES component (1-3 attachments)
22
+ - `ZNSButtonsComponent` & `ZNSButtonItem` - Type-safe BUTTONS component (1-2 buttons)
23
+ - `ZNSPaymentComponent` - Type-safe PAYMENT component with bank details
24
+ - `ZNSVoucherComponent` - Type-safe VOUCHER component with display options
25
+ - `ZNSRatingComponent` & `ZNSRatingItem` - Type-safe RATING component (exactly 5 items)
26
+ - `ZNSAttachment` - Type-safe attachment object for images
27
+
28
+ #### Updated Validation Functions
29
+ All validation functions now use specific types instead of `any`:
30
+ - `validateLayoutStructure()` - Uses `ZNSValidationComponent[]`
31
+ - `validateTitleComponent()` - Uses `ZNSTitleComponent`
32
+ - `validateParagraphComponent()` - Uses `ZNSParagraphComponent`
33
+ - `validateOTPComponent()` - Uses `ZNSOTPComponent`
34
+ - `validateTableComponent()` - Uses `ZNSTableComponent`
35
+ - `validateLogoComponent()` - Uses `ZNSLogoComponent`
36
+ - `validateImagesComponent()` - Uses `ZNSImagesComponent`
37
+ - `validateButtonsComponent()` - Uses `ZNSButtonsComponent`
38
+ - `validatePaymentComponent()` - Uses `ZNSPaymentComponent`
39
+ - `validateVoucherComponent()` - Uses `ZNSVoucherComponent`
40
+ - `validateRatingComponent()` - Uses `ZNSRatingComponent`
41
+ - `validateAttachment()` - Uses `ZNSAttachment`
42
+
43
+ #### Developer Experience Improvements
44
+ - **IntelliSense**: Full autocomplete support for all ZNS components
45
+ - **Error Detection**: Compile-time validation of component structures
46
+ - **Type Safety**: Eliminated runtime errors from incorrect component usage
47
+ - **Documentation**: Type definitions serve as inline documentation
48
+
49
+ #### Files Added/Modified
50
+ - `src/types/zns.ts` - Added comprehensive component type definitions
51
+ - `src/services/zns.service.ts` - Updated all validation functions with proper types
52
+ - `examples/zns-validation-example.ts` - Complete usage examples for all template types
53
+ - `ZNS-TYPE-IMPROVEMENTS.md` - Detailed documentation of improvements
54
+
55
+ #### Migration Guide
56
+ Existing code continues to work, but developers can now benefit from:
57
+ ```typescript
58
+ // Before: No type safety
59
+ const component: any = { TITLE: { value: "Hello" } };
60
+
61
+ // After: Full type safety
62
+ const component: ZNSValidationComponent = {
63
+ TITLE: { value: "Hello {{customer_name}}!" }
64
+ };
65
+ ```
66
+
5
67
  ## [1.27.3] - 2025-08-31
6
68
 
7
69
  ### 🐛 Critical Bug Fixes
@@ -0,0 +1,220 @@
1
+ # ZNS Service Type Improvements
2
+
3
+ ## Tổng quan
4
+
5
+ Đã cập nhật ZNS Service để sử dụng các type cụ thể thay vì `any` type, cải thiện type safety và developer experience.
6
+
7
+ ## Những thay đổi chính
8
+
9
+ ### 1. Thêm các interface validation components mới trong `src/types/zns.ts`
10
+
11
+ ```typescript
12
+ // Attachment object cho LOGO và IMAGES
13
+ export interface ZNSAttachment {
14
+ type: "IMAGE";
15
+ media_id: string;
16
+ }
17
+
18
+ // TITLE component
19
+ export interface ZNSTitleComponent {
20
+ value: string; // 9-65 ký tự, tối đa 4 params
21
+ }
22
+
23
+ // PARAGRAPH component
24
+ export interface ZNSParagraphComponent {
25
+ value: string; // 9-400 ký tự, tối đa 10 params
26
+ }
27
+
28
+ // OTP component
29
+ export interface ZNSOTPComponent {
30
+ value: string; // 1-10 ký tự
31
+ }
32
+
33
+ // TABLE component
34
+ export interface ZNSTableComponent {
35
+ rows: ZNSTableRow[]; // 2-8 rows
36
+ }
37
+
38
+ export interface ZNSTableRow {
39
+ title: string; // 3-36 ký tự, chỉ text cố định
40
+ value: string; // 3-90 ký tự, có thể có params
41
+ row_type?: 0 | 1 | 2 | 3 | 4 | 5; // Hiệu ứng row
42
+ }
43
+
44
+ // LOGO component
45
+ export interface ZNSLogoComponent {
46
+ light: ZNSAttachment;
47
+ dark: ZNSAttachment;
48
+ }
49
+
50
+ // IMAGES component
51
+ export interface ZNSImagesComponent {
52
+ items: ZNSAttachment[]; // 1-3 attachments
53
+ }
54
+
55
+ // BUTTONS component
56
+ export interface ZNSButtonsComponent {
57
+ items: ZNSButtonItem[]; // 1-2 buttons
58
+ }
59
+
60
+ export interface ZNSButtonItem {
61
+ type: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9; // Button types
62
+ title: string; // 5-30 ký tự, chỉ text cố định
63
+ content: string; // URL/phone, có thể có params
64
+ }
65
+
66
+ // PAYMENT component
67
+ export interface ZNSPaymentComponent {
68
+ bank_code: string; // Bank code cố định
69
+ account_name: string; // 1-100 ký tự, text cố định
70
+ bank_account: string; // 1-100 ký tự, text cố định
71
+ amount: string | number; // Số tiền hoặc param
72
+ note?: string; // 1-90 ký tự, có thể có params
73
+ }
74
+
75
+ // VOUCHER component
76
+ export interface ZNSVoucherComponent {
77
+ name: string; // 1-30 ký tự, có thể có params
78
+ condition: string; // 1-40 ký tự, có thể có params
79
+ start_date?: string; // Có thể có params
80
+ end_date: string; // Có thể có params
81
+ voucher_code: string; // 1-25 ký tự, có thể có params
82
+ display_code?: 1 | 2 | 3; // QR code, Bar code, Text only
83
+ }
84
+
85
+ // RATING component
86
+ export interface ZNSRatingComponent {
87
+ items: ZNSRatingItem[]; // Đúng 5 items
88
+ }
89
+
90
+ export interface ZNSRatingItem {
91
+ star: 1 | 2 | 3 | 4 | 5; // Số sao
92
+ title: string; // 1-50 ký tự
93
+ question?: string; // 1-100 ký tự
94
+ answers?: string[]; // 1-5 câu trả lời, mỗi câu 1-50 ký tự
95
+ thanks: string; // 1-100 ký tự
96
+ description: string; // 1-200 ký tự
97
+ }
98
+
99
+ // Union type cho tất cả các component
100
+ export type ZNSValidationComponent =
101
+ | { TITLE: ZNSTitleComponent }
102
+ | { PARAGRAPH: ZNSParagraphComponent }
103
+ | { OTP: ZNSOTPComponent }
104
+ | { TABLE: ZNSTableComponent }
105
+ | { LOGO: ZNSLogoComponent }
106
+ | { IMAGES: ZNSImagesComponent }
107
+ | { BUTTONS: ZNSButtonsComponent }
108
+ | { PAYMENT: ZNSPaymentComponent }
109
+ | { VOUCHER: ZNSVoucherComponent }
110
+ | { RATING: ZNSRatingComponent };
111
+ ```
112
+
113
+ ### 2. Cập nhật ZNS Service validation functions
114
+
115
+ Tất cả các function validation trong `src/services/zns.service.ts` đã được cập nhật để sử dụng type cụ thể:
116
+
117
+ - `validateLayoutStructure()`: Sử dụng `ZNSValidationComponent[]` thay vì `any[]`
118
+ - `isHeaderComponent()`, `isBodyComponent()`, `isFooterComponent()`: Sử dụng `ZNSValidationComponent`
119
+ - `validateComponent()`: Sử dụng `ZNSValidationComponent`
120
+ - `validateTitleComponent()`: Sử dụng `ZNSTitleComponent`
121
+ - `validateParagraphComponent()`: Sử dụng `ZNSParagraphComponent`
122
+ - `validateOTPComponent()`: Sử dụng `ZNSOTPComponent`
123
+ - `validateTableComponent()`: Sử dụng `ZNSTableComponent`
124
+ - `validateLogoComponent()`: Sử dụng `ZNSLogoComponent`
125
+ - `validateImagesComponent()`: Sử dụng `ZNSImagesComponent`
126
+ - `validateButtonsComponent()`: Sử dụng `ZNSButtonsComponent`
127
+ - `validatePaymentComponent()`: Sử dụng `ZNSPaymentComponent`
128
+ - `validateVoucherComponent()`: Sử dụng `ZNSVoucherComponent`
129
+ - `validateRatingComponent()`: Sử dụng `ZNSRatingComponent`
130
+ - `validateAttachment()`: Sử dụng `ZNSAttachment`
131
+
132
+ ### 3. Lợi ích của việc cập nhật
133
+
134
+ #### Type Safety
135
+ - Loại bỏ hoàn toàn việc sử dụng `any` type
136
+ - IDE có thể detect lỗi type ngay khi code
137
+ - Autocomplete tốt hơn khi viết code
138
+
139
+ #### Developer Experience
140
+ - IntelliSense hiển thị đúng các property có sẵn
141
+ - Validation tự động khi compile TypeScript
142
+ - Dễ dàng refactor code mà không lo lỗi runtime
143
+
144
+ #### Maintainability
145
+ - Code dễ đọc và hiểu hơn
146
+ - Ít bug hơn do type checking
147
+ - Dễ dàng thêm feature mới
148
+
149
+ ### 4. Ví dụ sử dụng
150
+
151
+ Xem file `examples/zns-validation-example.ts` để biết cách sử dụng các type mới.
152
+
153
+ #### Trước khi cập nhật:
154
+ ```typescript
155
+ // Không có type safety
156
+ private validateTitleComponent(title: any): void {
157
+ if (!title.value || typeof title.value !== 'string') {
158
+ // Có thể có lỗi runtime nếu title không đúng cấu trúc
159
+ }
160
+ }
161
+ ```
162
+
163
+ #### Sau khi cập nhật:
164
+ ```typescript
165
+ // Type safety đầy đủ
166
+ private validateTitleComponent(title: ZNSTitleComponent): void {
167
+ if (!title.value || typeof title.value !== 'string') {
168
+ // IDE sẽ báo lỗi ngay nếu title không đúng type
169
+ }
170
+ }
171
+ ```
172
+
173
+ ### 5. Cách sử dụng trong dự án
174
+
175
+ ```typescript
176
+ import {
177
+ ZNSValidationComponent,
178
+ ZNSTitleComponent,
179
+ ZNSButtonsComponent
180
+ } from "./src/types/zns";
181
+
182
+ // Tạo component với type safety
183
+ const titleComponent: ZNSValidationComponent = {
184
+ TITLE: {
185
+ value: "Xin chào {{customer_name}}!"
186
+ }
187
+ };
188
+
189
+ const buttonsComponent: ZNSValidationComponent = {
190
+ BUTTONS: {
191
+ items: [
192
+ {
193
+ type: 1, // URL
194
+ title: "Xem chi tiết",
195
+ content: "https://example.com"
196
+ }
197
+ ]
198
+ }
199
+ };
200
+ ```
201
+
202
+ ### 6. Migration Guide
203
+
204
+ Nếu bạn đang sử dụng code cũ với `any` type:
205
+
206
+ 1. Import các type mới từ `src/types/zns`
207
+ 2. Thay thế `any` bằng type cụ thể tương ứng
208
+ 3. TypeScript compiler sẽ báo lỗi nếu có vấn đề về type
209
+ 4. Fix các lỗi type để đảm bảo code chạy đúng
210
+
211
+ ### 7. Kết luận
212
+
213
+ Việc cập nhật này giúp:
214
+ - ✅ Loại bỏ hoàn toàn `any` type
215
+ - ✅ Cải thiện type safety
216
+ - ✅ Tăng developer experience
217
+ - ✅ Giảm bugs và lỗi runtime
218
+ - ✅ Code dễ maintain hơn
219
+
220
+ Tất cả validation functions trong ZNS Service giờ đây đều có type safety đầy đủ và tuân thủ đúng chuẩn TypeScript best practices.
@@ -1 +1 @@
1
- {"version":3,"file":"zns.service.d.ts","sourceRoot":"","sources":["../../src/services/zns.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zns.service.d.ts","sourceRoot":"","sources":["../../src/services/zns.service.ts"],"names":[],"mappings":"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"}