@momo-kits/native-kits 0.155.2-test.1 → 0.156.1-beta.12-debug

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 (122) hide show
  1. package/PUBLISH_GUIDE.md +544 -0
  2. package/build.gradle.kts +11 -0
  3. package/compose/build.gradle.kts +180 -0
  4. package/compose/build.gradle.kts.backup +180 -0
  5. package/compose/compose.podspec +54 -0
  6. package/compose/src/androidMain/kotlin/vn/momo/kits/platform/Platform.android.kt +113 -0
  7. package/compose/src/commonMain/composeResources/font/momosignature.otf +0 -0
  8. package/compose/src/commonMain/composeResources/font/momotrustdisplay.otf +0 -0
  9. package/compose/src/commonMain/composeResources/font/sfprotext_black.otf +0 -0
  10. package/compose/src/commonMain/composeResources/font/sfprotext_black.ttf +0 -0
  11. package/compose/src/commonMain/composeResources/font/sfprotext_bold.ttf +0 -0
  12. package/compose/src/commonMain/composeResources/font/sfprotext_heavy.ttf +0 -0
  13. package/compose/src/commonMain/composeResources/font/sfprotext_light.ttf +0 -0
  14. package/compose/src/commonMain/composeResources/font/sfprotext_medium.ttf +0 -0
  15. package/compose/src/commonMain/composeResources/font/sfprotext_regular.ttf +0 -0
  16. package/compose/src/commonMain/composeResources/font/sfprotext_semibold.ttf +0 -0
  17. package/compose/src/commonMain/composeResources/font/sfprotext_thin.otf +0 -0
  18. package/compose/src/commonMain/composeResources/font/sfprotext_thin.ttf +0 -0
  19. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.otf +0 -0
  20. package/compose/src/commonMain/composeResources/font/sfprotext_ultralight.ttf +0 -0
  21. package/compose/src/commonMain/kotlin/vn/momo/kits/application/AnimationSearchInput.kt +57 -0
  22. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Context.kt +95 -0
  23. package/compose/src/commonMain/kotlin/vn/momo/kits/application/FloatingButton.kt +201 -0
  24. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Header.kt +222 -0
  25. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderAnimated.kt +48 -0
  26. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderBackground.kt +86 -0
  27. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderDefault.kt +76 -0
  28. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderExtended.kt +76 -0
  29. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderRight.kt +305 -0
  30. package/compose/src/commonMain/kotlin/vn/momo/kits/application/HeaderTitle.kt +33 -0
  31. package/compose/src/commonMain/kotlin/vn/momo/kits/application/LiteScreen.kt +715 -0
  32. package/compose/src/commonMain/kotlin/vn/momo/kits/application/NavigationContainer.kt +121 -0
  33. package/compose/src/commonMain/kotlin/vn/momo/kits/application/Screen.kt +405 -0
  34. package/compose/src/commonMain/kotlin/vn/momo/kits/application/useHeaderSearchAnimation.kt +69 -0
  35. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Badge.kt +83 -0
  36. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeDot.kt +32 -0
  37. package/compose/src/commonMain/kotlin/vn/momo/kits/components/BadgeRibbon.kt +340 -0
  38. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Button.kt +348 -0
  39. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CheckBox.kt +94 -0
  40. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Chip.kt +136 -0
  41. package/compose/src/commonMain/kotlin/vn/momo/kits/components/CupertinoOverscroll.kt +543 -0
  42. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Divider.kt +23 -0
  43. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Icon.kt +76 -0
  44. package/compose/src/commonMain/kotlin/vn/momo/kits/components/IconButton.kt +148 -0
  45. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Image.kt +188 -0
  46. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Information.kt +116 -0
  47. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Input.kt +447 -0
  48. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputDropDown.kt +172 -0
  49. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputMoney.kt +244 -0
  50. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputOTP.kt +231 -0
  51. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputPhoneNumber.kt +234 -0
  52. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputSearch.kt +254 -0
  53. package/compose/src/commonMain/kotlin/vn/momo/kits/components/InputTextArea.kt +241 -0
  54. package/compose/src/commonMain/kotlin/vn/momo/kits/components/LazyColumnWithBouncing.kt +364 -0
  55. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationDot.kt +56 -0
  56. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationNumber.kt +41 -0
  57. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationScroll.kt +92 -0
  58. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PaginationWhiteDot.kt +40 -0
  59. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupNotify.kt +352 -0
  60. package/compose/src/commonMain/kotlin/vn/momo/kits/components/PopupPromotion.kt +103 -0
  61. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Radio.kt +70 -0
  62. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ScaleSizeScope.kt +17 -0
  63. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Skeleton.kt +96 -0
  64. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Switch.kt +96 -0
  65. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tag.kt +92 -0
  66. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Text.kt +130 -0
  67. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Title.kt +214 -0
  68. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TrustBanner.kt +177 -0
  69. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePicker.kt +205 -0
  70. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerTypes.kt +29 -0
  71. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/DateTimePickerUtils.kt +239 -0
  72. package/compose/src/commonMain/kotlin/vn/momo/kits/components/datetimepicker/WheelPicker.kt +191 -0
  73. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Colors.kt +306 -0
  74. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Radius.kt +12 -0
  75. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Spacing.kt +13 -0
  76. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Theme.kt +189 -0
  77. package/compose/src/commonMain/kotlin/vn/momo/kits/const/Typography.kt +285 -0
  78. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Card.kt +2 -0
  79. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Item.kt +35 -0
  80. package/compose/src/commonMain/kotlin/vn/momo/kits/layout/Section.kt +2 -0
  81. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/AutomationId.kt +59 -0
  82. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Clickable.kt +68 -0
  83. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Conditional.kt +11 -0
  84. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/DeprecatedModifier.kt +14 -0
  85. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Shadow.kt +50 -0
  86. package/compose/src/commonMain/kotlin/vn/momo/kits/modifier/Size.kt +51 -0
  87. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/BottomSheet.kt +239 -0
  88. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/ModalScreen.kt +119 -0
  89. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +98 -0
  90. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +163 -0
  91. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +331 -0
  92. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +497 -0
  93. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTab.kt +162 -0
  94. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/BottomTabBar.kt +226 -0
  95. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/bottomtab/CurvedContainer.kt +86 -0
  96. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/FloatingButton.kt +187 -0
  97. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/Header.kt +274 -0
  98. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderBackground.kt +80 -0
  99. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderRight.kt +306 -0
  100. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderTitle.kt +31 -0
  101. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/HeaderUser.kt +370 -0
  102. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/component/SnackBar.kt +132 -0
  103. package/compose/src/commonMain/kotlin/vn/momo/kits/platform/Platform.kt +42 -0
  104. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Icons.kt +1329 -0
  105. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Resources.kt +62 -0
  106. package/compose/src/commonMain/kotlin/vn/momo/kits/utils/Utils.kt +88 -0
  107. package/compose/src/iosMain/kotlin/vn/momo/kits/platform/Platform.ios.kt +152 -0
  108. package/gradle/libs.versions.toml +57 -0
  109. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  110. package/gradle/wrapper/gradle-wrapper.properties +8 -0
  111. package/gradle.properties +26 -0
  112. package/gradlew +252 -0
  113. package/gradlew.bat +94 -0
  114. package/ios/Input/Input.swift +247 -149
  115. package/ios/Input/InputPhoneNumber.swift +14 -0
  116. package/ios/Popup/PopupDisplay.swift +6 -1
  117. package/ios/Popup/PopupInput.swift +1 -1
  118. package/ios/Popup/PopupPromotion.swift +2 -3
  119. package/local.properties +8 -0
  120. package/package.json +1 -1
  121. package/publish.sh +431 -0
  122. package/settings.gradle.kts +52 -0
@@ -0,0 +1,544 @@
1
+ # Hướng Dẫn Publish NPM Package
2
+
3
+ Tài liệu này hướng dẫn cách sử dụng script publish cho `@momo-kits/native-kits`.
4
+
5
+ ---
6
+
7
+ ## 📋 Tổng Quan
8
+
9
+ Dự án sử dụng **`publish.sh`** - một script thống nhất hỗ trợ 2 modes:
10
+
11
+ - **`beta`**: Publish phiên bản beta cho testing
12
+ - **`release`**: Publish phiên bản release chính thức
13
+
14
+ Script có 3 phases riêng biệt:
15
+ 1. **Check Version**: Kiểm tra và chuẩn bị version
16
+ 2. **Publish NPM**: Publish lên NPM registry
17
+ 3. **Publish Maven**: Publish lên GitLab Maven repository
18
+
19
+ ---
20
+
21
+ ## 🚀 Publish Từ Local
22
+
23
+ ### Yêu Cầu Trước Khi Publish
24
+
25
+ 1. **Login NPM:**
26
+ ```bash
27
+ npm login
28
+ ```
29
+
30
+ 2. **Kiểm tra version hiện tại:**
31
+ ```bash
32
+ cat package.json | grep version
33
+ ```
34
+
35
+ ### 🔵 Publish Beta Từ Local
36
+
37
+ #### **Cách 1: Publish tất cả phases (Khuyến nghị)**
38
+
39
+ ```bash
40
+ sh publish.sh beta
41
+ ```
42
+
43
+ #### **Cách 2: Chạy từng phase riêng**
44
+
45
+ ```bash
46
+ # Phase 1: Check version
47
+ sh publish.sh beta check
48
+
49
+ # Phase 2: Publish NPM
50
+ sh publish.sh beta npm
51
+
52
+ # Phase 3: Publish Maven
53
+ sh publish.sh beta maven
54
+ ```
55
+
56
+ #### **Quy Trình Beta Publishing**
57
+
58
+ 1. **Update version trong `package.json`:**
59
+ ```json
60
+ {
61
+ "version": "0.156.2"
62
+ }
63
+ ```
64
+
65
+ 2. **Chạy check version trước (optional nhưng khuyến nghị):**
66
+ ```bash
67
+ sh publish.sh beta check
68
+ ```
69
+
70
+ 3. **Nếu check thành công, publish:**
71
+ ```bash
72
+ sh publish.sh beta
73
+ ```
74
+
75
+ #### **Ví Dụ Beta Publishing**
76
+
77
+ ```bash
78
+ # 1. Kiểm tra version
79
+ $ cat package.json | grep version
80
+ "version": "0.156.2"
81
+
82
+ # 2. Test check version
83
+ $ sh publish.sh beta check
84
+ 📦 Version from package.json: 0.156.2
85
+ 🔎 Checking if version 0.156.2 already exists on npm...
86
+ ✅ Version 0.156.2 does not exist on npm. Safe to publish.
87
+ ✅ PHASE 1 COMPLETED
88
+
89
+ # 3. Publish
90
+ $ sh publish.sh beta
91
+ 🚀 PUBLISH SCRIPT - MODE: BETA
92
+ Running ALL PHASES
93
+ [... Phase 1: Check version ...]
94
+ [... Phase 2: Publish NPM ...]
95
+ 🐛 Debug version: 0.156.2-debug (with compose) - Published first
96
+ 📦 Normal version: 0.156.2 (without compose) - Published second
97
+ 🏷️ NPM Tag: beta
98
+ [... Phase 3: Publish Maven ...]
99
+ 🎉 ALL PHASES COMPLETED SUCCESSFULLY!
100
+ ```
101
+
102
+ #### **⚠️ Nếu Version Đã Tồn Tại**
103
+
104
+ ```bash
105
+ $ sh publish.sh beta check
106
+ ❌ ERROR: Version 0.156.1 already exists on npm!
107
+
108
+ Please update the version in package.json before publishing.
109
+ ```
110
+
111
+ **Giải pháp:** Tăng version trong `package.json`:
112
+ ```bash
113
+ # Mở và edit file
114
+ vim package.json
115
+ # hoặc
116
+ code package.json
117
+
118
+ # Thay đổi: "version": "0.156.1" → "0.156.2"
119
+ ```
120
+
121
+ ### 🟢 Publish Release Từ Local
122
+
123
+ #### **Cách 1: Publish tất cả phases (Khuyến nghị)**
124
+
125
+ ```bash
126
+ sh publish.sh release
127
+ ```
128
+
129
+ #### **Cách 2: Chạy từng phase riêng**
130
+
131
+ ```bash
132
+ # Phase 1: Check version
133
+ sh publish.sh release check
134
+
135
+ # Phase 2: Publish NPM
136
+ sh publish.sh release npm
137
+
138
+ # Phase 3: Publish Maven
139
+ sh publish.sh release maven
140
+ ```
141
+
142
+ #### **Quy Trình Release Publishing**
143
+
144
+ 1. **Version trong `package.json` có thể là bất kỳ format nào:**
145
+ ```json
146
+ {
147
+ "version": "0.156.1-test.5"
148
+ }
149
+ ```
150
+
151
+ 2. **Chạy publish:**
152
+ ```bash
153
+ sh publish.sh release
154
+ ```
155
+
156
+ 3. **Script sẽ tự động:**
157
+ - Convert sang format beta: `0.156.1-test.5` → `0.156.1-beta.1`
158
+ - Check version trên npm
159
+ - Auto-increment nếu đã tồn tại: `0.156.1-beta.1` → `0.156.1-beta.2`
160
+ - Publish với tag `latest`
161
+
162
+ ---
163
+
164
+ ## 🤖 Publish Tự Động Trên GitLab CI
165
+
166
+ ### 🔵 Beta Publishing (GitLab CI)
167
+
168
+ **Trigger:** Commit message chứa `[ci build]`
169
+
170
+ ```bash
171
+ git add .
172
+ git commit -m "feat: add new feature [ci build]"
173
+ git push
174
+ ```
175
+
176
+ **Pipeline sẽ chạy 3 stages:**
177
+ 1. `beta_check_version`
178
+ 2. `beta_publish_npm`
179
+ 3. `beta_publish_maven`
180
+
181
+ ### 🟢 Release Publishing (GitLab CI)
182
+
183
+ **Trigger:** Push vào nhánh `main`
184
+
185
+ ```bash
186
+ git checkout main
187
+ git merge develop
188
+ git push origin main
189
+ ```
190
+
191
+ **Pipeline sẽ chạy 3 stages:**
192
+ 1. `release_check_version`
193
+ 2. `release_publish_npm`
194
+ 3. `release_publish_maven`
195
+
196
+ ---
197
+
198
+ ## 📊 So Sánh Beta vs Release
199
+
200
+ | Tiêu chí | Beta Mode | Release Mode |
201
+ |----------|-----------|--------------|
202
+ | **Script** | `sh publish.sh beta` | `sh publish.sh release` |
203
+ | **Trigger CI** | Commit có `[ci build]` | Push vào `main` |
204
+ | **Version Check** | **Fail** nếu tồn tại | **Auto-increment** |
205
+ | **Format Version** | Giữ nguyên | Convert → `-beta.*` |
206
+ | **NPM Tag** | `beta` | `latest` |
207
+ | **Publish Order** | Debug first → Normal | Debug first → Normal |
208
+
209
+ ---
210
+
211
+ ## 🔍 Chi Tiết Các Phases
212
+
213
+ ### **Phase 1: Check Version**
214
+
215
+ **Beta Mode:**
216
+ - Đọc version từ `package.json`
217
+ - Check version trên npm
218
+ - ❌ **FAIL** nếu version đã tồn tại
219
+ - Update `gradle.properties`
220
+
221
+ **Release Mode:**
222
+ - Đọc version từ `package.json`
223
+ - Convert sang format `-beta.*` nếu cần
224
+ - Check version trên npm
225
+ - ✅ **Auto-increment** nếu đã tồn tại
226
+ - Update `gradle.properties`
227
+
228
+ ### **Phase 2: Publish NPM**
229
+
230
+ **Thứ tự publish (cả Beta và Release):**
231
+
232
+ 1. **Debug version** (với compose) - Published FIRST
233
+ - Version: `X.Y.Z-debug`
234
+ - Bao gồm thư mục `compose/`
235
+ - Dành cho development/testing
236
+
237
+ 2. **Normal version** (không compose) - Published SECOND
238
+ - Version: `X.Y.Z`
239
+ - Không bao gồm `compose/`
240
+ - Dành cho React Native apps
241
+
242
+ ### **Phase 3: Publish Maven**
243
+
244
+ - Publish Kotlin Multiplatform artifacts
245
+ - Lên GitLab Packages Repository
246
+ - Dành cho `compose` module
247
+
248
+ ---
249
+
250
+ ## 📝 Ví Dụ Chi Tiết
251
+
252
+ ### **Ví dụ 1: Beta - Version chưa tồn tại**
253
+
254
+ ```bash
255
+ $ sh publish.sh beta
256
+
257
+ 📦 Version from package.json: 0.156.2
258
+ 🔎 Checking if version 0.156.2 already exists on npm...
259
+ ✅ Version 0.156.2 does not exist on npm. Safe to publish.
260
+
261
+ # Phase 2
262
+ 🐛 Debug version: 0.156.2-debug (with compose) - Published first
263
+ 📦 Normal version: 0.156.2 (without compose) - Published second
264
+ 🏷️ NPM Tag: beta
265
+ ```
266
+
267
+ **Kết quả trên NPM:**
268
+ - `@momo-kits/native-kits@0.156.2-debug` (tag: beta)
269
+ - `@momo-kits/native-kits@0.156.2` (tag: beta)
270
+
271
+ ### **Ví dụ 2: Beta - Version đã tồn tại (FAIL)**
272
+
273
+ ```bash
274
+ $ sh publish.sh beta check
275
+
276
+ 📦 Version from package.json: 0.156.1
277
+ 🔎 Checking if version 0.156.1 already exists on npm...
278
+
279
+ ❌ ERROR: Version 0.156.1 already exists on npm!
280
+
281
+ Please update the version in package.json before publishing.
282
+ # Exit code: 1
283
+ ```
284
+
285
+ ### **Ví dụ 3: Release - Auto-convert và increment**
286
+
287
+ ```bash
288
+ $ sh publish.sh release
289
+
290
+ 📦 Version from package.json: 0.156.1-test.5
291
+ 🔄 Converting to beta format: 0.156.1-test.5 → 0.156.1-beta.1
292
+ ✅ Version updated to beta format: 0.156.1-beta.1
293
+ 🔎 Checking if version 0.156.1-beta.1 already exists on npm...
294
+ ⚠️ Version 0.156.1-beta.1 already exists on npm. Auto-incrementing...
295
+ Version incremented: 0.156.1-beta.1 → 0.156.1-beta.2
296
+ 🔄 Checking version 0.156.1-beta.2 on npm...
297
+ ✅ Version 0.156.1-beta.2 does not exist on npm. Using this version.
298
+ ```
299
+
300
+ **Kết quả trên NPM:**
301
+ - `@momo-kits/native-kits@0.156.1-beta.2-debug` (tag: latest)
302
+ - `@momo-kits/native-kits@0.156.1-beta.2` (tag: latest)
303
+
304
+ ### **Ví dụ 4: Release - Multiple increments**
305
+
306
+ ```bash
307
+ $ sh publish.sh release
308
+
309
+ 📦 Version from package.json: 0.156.1-beta.5
310
+
311
+ # Giả sử NPM đã có: beta.5, beta.6, beta.7
312
+ ⚠️ Version 0.156.1-beta.5 already exists on npm...
313
+ Version incremented: 0.156.1-beta.5 → 0.156.1-beta.6
314
+ ⚠️ Version 0.156.1-beta.6 already exists on npm...
315
+ Version incremented: 0.156.1-beta.6 → 0.156.1-beta.7
316
+ ⚠️ Version 0.156.1-beta.7 already exists on npm...
317
+ Version incremented: 0.156.1-beta.7 → 0.156.1-beta.8
318
+ ✅ Version 0.156.1-beta.8 does not exist on npm. Using this version.
319
+ ```
320
+
321
+ ---
322
+
323
+ ## 🎯 Workflow Khuyến Nghị
324
+
325
+ ### Development Flow
326
+
327
+ ```
328
+ ┌──────────────────────────────────────────────────┐
329
+ │ 1. Develop Feature │
330
+ │ - Code changes │
331
+ │ - Update version in package.json │
332
+ └─────────────────┬────────────────────────────────┘
333
+
334
+ ┌──────────────────────────────────────────────────┐
335
+ │ 2. Beta Testing │
336
+ │ Local: sh publish.sh beta │
337
+ │ CI: git commit -m "feat: xxx [ci build]" │
338
+ └─────────────────┬────────────────────────────────┘
339
+
340
+ ┌──────────────────────────────────────────────────┐
341
+ │ 3. Team Testing │
342
+ │ npm install @momo-kits/native-kits@beta │
343
+ └─────────────────┬────────────────────────────────┘
344
+
345
+ ┌──────┴──────┐
346
+ │ Approved? │
347
+ └──────┬───────┘
348
+ │ Yes
349
+
350
+ ┌──────────────────────────────────────────────────┐
351
+ │ 4. Release Production │
352
+ │ Local: sh publish.sh release │
353
+ │ CI: merge to main │
354
+ └─────────────────┬────────────────────────────────┘
355
+
356
+ ┌──────────────────────────────────────────────────┐
357
+ │ 5. Production │
358
+ │ npm install @momo-kits/native-kits@latest │
359
+ └──────────────────────────────────────────────────┘
360
+ ```
361
+
362
+ ---
363
+
364
+ ## ⚠️ Lưu Ý Quan Trọng
365
+
366
+ ### 1. Publishing Order
367
+
368
+ **NPM publish theo thứ tự:**
369
+ 1. ✅ Debug version (`X.Y.Z-debug`) - FIRST
370
+ 2. ✅ Normal version (`X.Y.Z`) - SECOND
371
+
372
+ **Lý do:** Đảm bảo debug version luôn available trước
373
+
374
+ ### 2. Version Format
375
+
376
+ **Beta Mode:**
377
+ - Giữ nguyên format trong `package.json`
378
+ - Fail nếu đã tồn tại trên npm
379
+ - ⚠️ Developer phải tự quản lý version
380
+
381
+ **Release Mode:**
382
+ - Auto-convert sang `-beta.*` format:
383
+ - `0.156.1-test.5` → `0.156.1-beta.1`
384
+ - `0.156.1-alpha.2` → `0.156.1-beta.1`
385
+ - `0.156.1-rc.3` → `0.156.1-beta.1`
386
+ - Auto-increment nếu tồn tại:
387
+ - Beta: `-beta.5` → `-beta.6`
388
+ - Regular: `1.0.0` → `1.0.1`
389
+
390
+ ### 3. File Modifications
391
+
392
+ Script tạm thời modify các file (restore sau publish):
393
+ - `package.json` (version)
394
+ - `gradle.properties` (version)
395
+ - `.npmignore` (cho debug version)
396
+ - `compose/build.gradle.kts` (cho debug version)
397
+
398
+ ### 4. NPM Permissions
399
+
400
+ ```bash
401
+ # Check account hiện tại
402
+ npm whoami
403
+
404
+ # Login nếu cần
405
+ npm login
406
+
407
+ # Verify permissions
408
+ npm access ls-packages @momo-kits
409
+ ```
410
+
411
+ ---
412
+
413
+ ## 🐛 Troubleshooting
414
+
415
+ ### Lỗi: "Could not read version from package.json"
416
+
417
+ **Nguyên nhân:** File `package.json` không hợp lệ
418
+
419
+ **Giải pháp:**
420
+ ```bash
421
+ # Kiểm tra syntax
422
+ cat package.json | jq .
423
+
424
+ # Kiểm tra version field
425
+ cat package.json | grep version
426
+ ```
427
+
428
+ ### Lỗi: "Version already exists on npm" (Beta)
429
+
430
+ **Nguyên nhân:** Version đã được publish
431
+
432
+ **Giải pháp:**
433
+ ```bash
434
+ # Option 1: Tăng version thủ công
435
+ vim package.json
436
+ # "version": "0.156.1" → "0.156.2"
437
+
438
+ # Option 2: Sử dụng release mode (auto-increment)
439
+ sh publish.sh release
440
+ ```
441
+
442
+ ### Lỗi: "Permission denied"
443
+
444
+ **Nguyên nhân:** Không có quyền publish package
445
+
446
+ **Giải pháp:**
447
+ ```bash
448
+ # 1. Kiểm tra account
449
+ npm whoami
450
+
451
+ # 2. Login với account có quyền
452
+ npm login
453
+
454
+ # 3. Liên hệ admin để cấp quyền
455
+ ```
456
+
457
+ ### Script không chạy trên GitLab CI
458
+
459
+ **Beta không trigger:**
460
+ - ✅ Check commit message có `[ci build]`
461
+ - ✅ Check branch không match `engine/w*`
462
+
463
+ **Release không trigger:**
464
+ - ✅ Check đang push vào `main` branch
465
+ - ✅ Check GitLab CI settings
466
+
467
+ ---
468
+
469
+ ## 📦 Sử Dụng Packages
470
+
471
+ ### Cài Đặt Beta Version
472
+
473
+ ```bash
474
+ # Latest beta
475
+ npm install @momo-kits/native-kits@beta
476
+
477
+ # Specific beta version
478
+ npm install @momo-kits/native-kits@0.156.2
479
+
480
+ # Debug version (with compose)
481
+ npm install @momo-kits/native-kits@0.156.2-debug
482
+ ```
483
+
484
+ ### Cài Đặt Release Version
485
+
486
+ ```bash
487
+ # Latest release
488
+ npm install @momo-kits/native-kits@latest
489
+ # hoặc
490
+ npm install @momo-kits/native-kits
491
+
492
+ # Specific release version
493
+ npm install @momo-kits/native-kits@0.156.1-beta.2
494
+ ```
495
+
496
+ ---
497
+
498
+ ## 🎓 Best Practices
499
+
500
+ 1. **Development:**
501
+ - Luôn test với beta trước khi release
502
+ - Dùng version có ý nghĩa (semantic versioning)
503
+
504
+ 2. **Beta Testing:**
505
+ - Update version mỗi lần publish beta
506
+ - Kiểm tra version trước khi commit
507
+
508
+ 3. **Release:**
509
+ - Chỉ release từ nhánh `main`
510
+ - Đảm bảo tất cả tests pass
511
+
512
+ 4. **Version Management:**
513
+ - Beta: Tự quản lý version, tăng thủ công
514
+ - Release: Để script auto-increment
515
+
516
+ ---
517
+
518
+ ## 📞 Support
519
+
520
+ Nếu có vấn đề, liên hệ team hoặc tạo issue trên GitLab.
521
+
522
+ ---
523
+
524
+ ## 🔗 Quick Reference
525
+
526
+ ```bash
527
+ # Beta - Local
528
+ sh publish.sh beta # All phases
529
+ sh publish.sh beta check # Check only
530
+ sh publish.sh beta npm # NPM only
531
+ sh publish.sh beta maven # Maven only
532
+
533
+ # Release - Local
534
+ sh publish.sh release # All phases
535
+ sh publish.sh release check # Check only
536
+ sh publish.sh release npm # NPM only
537
+ sh publish.sh release maven # Maven only
538
+
539
+ # Beta - CI
540
+ git commit -m "feat: xxx [ci build]" # Trigger beta
541
+
542
+ # Release - CI
543
+ git push origin main # Trigger release
544
+ ```
@@ -0,0 +1,11 @@
1
+ plugins {
2
+ // this is necessary to avoid the plugins to be loaded multiple times
3
+ // in each subproject's classloader
4
+ alias(libs.plugins.android.application) apply false
5
+ alias(libs.plugins.android.library) apply false
6
+ alias(libs.plugins.compose) apply false
7
+ alias(libs.plugins.kotlin.compose.compiler) apply false
8
+ alias(libs.plugins.jetbrains.kotlin.multiplatform) apply false
9
+ alias(libs.plugins.jetbrains.kotlin.serialization) apply false
10
+ alias(libs.plugins.vanniktech.mavenPublish) apply false
11
+ }