@momo-kits/native-kits 0.156.1-test.5 → 0.156.1-test.6-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 (118) hide show
  1. package/PUBLISH_GUIDE.md +675 -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/local.properties +8 -0
  115. package/package.json +1 -1
  116. package/publish.sh +431 -0
  117. package/settings.gradle.kts +52 -0
  118. package/publish_beta.sh +0 -153
@@ -0,0 +1,675 @@
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/alpha 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 Maven**: Publish lên GitLab Maven repository
17
+ 3. **Publish NPM**: Publish lên NPM registry
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 Maven
50
+ sh publish.sh beta maven
51
+
52
+ # Phase 3: Publish NPM
53
+ sh publish.sh beta npm
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
+ ---
76
+
77
+ ## 📦 Version Types (Beta Mode)
78
+
79
+ Beta mode hỗ trợ 2 loại version:
80
+
81
+ ### **1. Specific Version (Tag: alpha)**
82
+
83
+ **Định nghĩa:** Version có suffix KHÔNG phải "beta"
84
+
85
+ **Ví dụ:**
86
+ - `0.156.2-test.1`
87
+ - `0.156.2-alpha.1`
88
+ - `0.156.2-rc.1`
89
+
90
+ **Behavior:**
91
+ - NPM tag: `alpha`
92
+ - Check existence: ❌ **FAIL** nếu version đã tồn tại
93
+ - Không auto-increment
94
+ - Developer phải tự quản lý version
95
+
96
+ **Use case:** Testing specific features, hotfix testing
97
+
98
+ ### **2. Normal Version (Tag: beta)**
99
+
100
+ **Định nghĩa:** Version có suffix "beta" HOẶC không có suffix
101
+
102
+ **Ví dụ:**
103
+ - `0.156.2` (no suffix)
104
+ - `0.156.2-beta.1`
105
+ - `0.156.2-beta.5`
106
+
107
+ **Behavior:**
108
+ - NPM tag: `beta`
109
+ - Auto-format: `0.156.2` → `0.156.2-beta.1`
110
+ - Auto-increment nếu tồn tại: `.beta.1` → `.beta.2` → `.beta.3`...
111
+
112
+ **Use case:** Regular beta testing, continuous development
113
+
114
+ ---
115
+
116
+ ## 🔍 Version Detection Examples
117
+
118
+ ### **Example 1: Specific Version**
119
+
120
+ ```bash
121
+ # package.json
122
+ {
123
+ "version": "0.156.2-test.1"
124
+ }
125
+
126
+ # Run
127
+ $ sh publish.sh beta check
128
+
129
+ # Output
130
+ 🏷️ Detected: SPECIFIC version (tag: alpha)
131
+ 🔎 Checking if specific version 0.156.2-test.1 exists on npm...
132
+ ✅ Specific version 0.156.2-test.1 does not exist on npm. Safe to publish.
133
+ ✅ NPM tag: alpha
134
+ ```
135
+
136
+ **Kết quả trên NPM:**
137
+ - `@momo-kits/native-kits@0.156.2-test.1` (tag: **alpha**)
138
+ - `@momo-kits/native-kits@0.156.2-test.1-debug` (tag: **alpha**)
139
+
140
+ ### **Example 2: Normal Version (No Suffix)**
141
+
142
+ ```bash
143
+ # package.json
144
+ {
145
+ "version": "0.156.2"
146
+ }
147
+
148
+ # Run
149
+ $ sh publish.sh beta check
150
+
151
+ # Output
152
+ 🏷️ Detected: NORMAL version (tag: beta)
153
+ 🔄 Adding beta suffix: 0.156.2 → 0.156.2-beta.1
154
+ 🔎 Checking version 0.156.2-beta.1 on npm...
155
+ ✅ Version 0.156.2-beta.1 does not exist on npm. Using this version.
156
+ ✅ NPM tag: beta
157
+ ```
158
+
159
+ **Kết quả trên NPM:**
160
+ - `@momo-kits/native-kits@0.156.2-beta.1` (tag: **beta**)
161
+ - `@momo-kits/native-kits@0.156.2-beta.1-debug` (tag: **beta**)
162
+
163
+ ### **Example 3: Normal Version (With Beta Suffix)**
164
+
165
+ ```bash
166
+ # package.json
167
+ {
168
+ "version": "0.156.2-beta.1"
169
+ }
170
+
171
+ # Giả sử npm đã có: beta.1, beta.2
172
+
173
+ # Run
174
+ $ sh publish.sh beta check
175
+
176
+ # Output
177
+ 🏷️ Detected: NORMAL version (tag: beta)
178
+ 🔎 Checking version 0.156.2-beta.1 on npm...
179
+ ⚠️ Version 0.156.2-beta.1 already exists on npm. Auto-incrementing...
180
+ Version incremented: 0.156.2-beta.1 → 0.156.2-beta.2
181
+ ⚠️ Version 0.156.2-beta.2 already exists on npm. Auto-incrementing...
182
+ Version incremented: 0.156.2-beta.2 → 0.156.2-beta.3
183
+ ✅ Version 0.156.2-beta.3 does not exist on npm. Using this version.
184
+ ✅ NPM tag: beta
185
+ ```
186
+
187
+ **Kết quả trên NPM:**
188
+ - `@momo-kits/native-kits@0.156.2-beta.3` (tag: **beta**)
189
+ - `@momo-kits/native-kits@0.156.2-beta.3-debug` (tag: **beta**)
190
+
191
+ ### **Example 4: Specific Version Already Exists (FAIL)**
192
+
193
+ ```bash
194
+ # package.json
195
+ {
196
+ "version": "0.156.2-test.1"
197
+ }
198
+
199
+ # Version đã tồn tại trên npm
200
+
201
+ # Run
202
+ $ sh publish.sh beta check
203
+
204
+ # Output
205
+ 🏷️ Detected: SPECIFIC version (tag: alpha)
206
+ 🔎 Checking if specific version 0.156.2-test.1 exists on npm...
207
+
208
+ ❌ ERROR: Specific version 0.156.2-test.1 already exists on npm!
209
+
210
+ Please update the version in package.json before publishing.
211
+ # Exit code: 1
212
+ ```
213
+
214
+ ---
215
+
216
+ ## 🟢 Publish Release Từ Local
217
+
218
+ ### **Đặc Điểm Quan Trọng**
219
+
220
+ ⚠️ **Release mode KHÔNG đọc version từ `package.json`**
221
+
222
+ ✅ **Release mode đọc version từ `npm@latest`**
223
+
224
+ ### **Cách Publish**
225
+
226
+ ```bash
227
+ # Publish tất cả phases
228
+ sh publish.sh release
229
+
230
+ # Hoặc từng phase
231
+ sh publish.sh release check
232
+ sh publish.sh release maven
233
+ sh publish.sh release npm
234
+ ```
235
+
236
+ ### **Quy Trình Release Publishing**
237
+
238
+ 1. **Script đọc version từ npm@latest:**
239
+ ```bash
240
+ npm view @momo-kits/native-kits@latest version
241
+ # Output: 0.156.2
242
+ ```
243
+
244
+ 2. **Auto-increment patch version:**
245
+ ```
246
+ 0.156.2 → 0.156.3
247
+ ```
248
+
249
+ 3. **Check existence và tiếp tục increment nếu cần:**
250
+ ```
251
+ 0.156.3 exists? → 0.156.4
252
+ 0.156.4 exists? → 0.156.5
253
+ ...
254
+ ```
255
+
256
+ 4. **Update `package.json` với version mới**
257
+
258
+ 5. **Publish với tag `latest`**
259
+
260
+ ### **Example: Release Publishing**
261
+
262
+ ```bash
263
+ $ sh publish.sh release check
264
+
265
+ # Output
266
+ 🔍 Reading latest version from npm@latest (NOT from package.json)...
267
+ 📦 Current @latest version on npm: 0.156.2
268
+ 🔼 Auto-incremented version: 0.156.2 → 0.156.3
269
+ 🔎 Checking if version 0.156.3 exists on npm...
270
+ ✅ Version 0.156.3 does not exist on npm. Using this version.
271
+ 📝 Updated package.json: 0.156.2-beta.5 → 0.156.3
272
+ ✅ Using version: 0.156.3
273
+ ✅ NPM tag: latest
274
+ ```
275
+
276
+ **Kết quả trên NPM:**
277
+ - `@momo-kits/native-kits@0.156.3` (tag: **latest**)
278
+ - `@momo-kits/native-kits@0.156.3-debug` (tag: **latest**)
279
+
280
+ ---
281
+
282
+ ## 🤖 Publish Tự Động Trên GitLab CI
283
+
284
+ ### 🔵 Beta Publishing (GitLab CI)
285
+
286
+ **Trigger:** Commit message chứa `[ci build]` (KHÔNG trên nhánh `main`)
287
+
288
+ ```bash
289
+ git checkout develop
290
+ git add .
291
+ git commit -m "feat: add new feature [ci build]"
292
+ git push
293
+ ```
294
+
295
+ **Pipeline sẽ chạy 3 stages:**
296
+ 1. `beta_check_version` (Phase 1)
297
+ 2. `beta_publish_maven` (Phase 2)
298
+ 3. `beta_publish_npm` (Phase 3)
299
+
300
+ ### 🟢 Release Publishing (GitLab CI)
301
+
302
+ **Trigger:** Push vào nhánh `main`
303
+
304
+ ```bash
305
+ git checkout main
306
+ git merge develop
307
+ git push origin main
308
+ ```
309
+
310
+ **Pipeline sẽ chạy 3 stages:**
311
+ 1. `release_check_version` (Phase 1)
312
+ 2. `release_publish_maven` (Phase 2)
313
+ 3. `release_publish_npm` (Phase 3)
314
+
315
+ ---
316
+
317
+ ## 📊 So Sánh Beta vs Release
318
+
319
+ | Tiêu chí | Beta Mode | Release Mode |
320
+ |----------|-----------|--------------|
321
+ | **Script** | `sh publish.sh beta` | `sh publish.sh release` |
322
+ | **Trigger CI** | Commit có `[ci build]` (không trên main) | Push vào `main` |
323
+ | **Read Version** | Từ `package.json` | Từ `npm@latest` |
324
+ | **Version Types** | Specific (alpha) / Normal (beta) | N/A |
325
+ | **NPM Tag** | `alpha` hoặc `beta` | `latest` |
326
+ | **If Exists** | Specific: FAIL / Normal: Auto-increment | Auto-increment |
327
+ | **Phase Order** | Check → Maven → NPM | Check → Maven → NPM |
328
+
329
+ ---
330
+
331
+ ## 🔧 NPM Tags Explained
332
+
333
+ ### **Tag: alpha**
334
+
335
+ **Khi nào:** Beta mode + Specific version
336
+
337
+ **Cài đặt:**
338
+ ```bash
339
+ npm install @momo-kits/native-kits@alpha
340
+ npm install @momo-kits/native-kits@0.156.2-test.1
341
+ ```
342
+
343
+ **Use case:** Testing specific features, experimental builds
344
+
345
+ ### **Tag: beta**
346
+
347
+ **Khi nào:** Beta mode + Normal version
348
+
349
+ **Cài đặt:**
350
+ ```bash
351
+ npm install @momo-kits/native-kits@beta
352
+ npm install @momo-kits/native-kits@0.156.2-beta.1
353
+ ```
354
+
355
+ **Use case:** Regular beta testing, pre-release versions
356
+
357
+ ### **Tag: latest**
358
+
359
+ **Khi nào:** Release mode
360
+
361
+ **Cài đặt:**
362
+ ```bash
363
+ npm install @momo-kits/native-kits@latest
364
+ npm install @momo-kits/native-kits
365
+ npm install @momo-kits/native-kits@0.156.3
366
+ ```
367
+
368
+ **Use case:** Production releases, stable versions
369
+
370
+ ---
371
+
372
+ ## 🔍 Chi Tiết Các Phases
373
+
374
+ ### **Phase 1: Check Version**
375
+
376
+ **Beta Mode:**
377
+ 1. Đọc version từ `package.json`
378
+ 2. Phát hiện version type (specific vs normal)
379
+ 3. Set NPM tag (alpha vs beta)
380
+ 4. Format version:
381
+ - Specific: Check existence, fail if exists
382
+ - Normal: Add beta suffix, auto-increment if exists
383
+ 5. Update `gradle.properties`
384
+
385
+ **Release Mode:**
386
+ 1. Đọc version từ `npm@latest` (KHÔNG từ package.json)
387
+ 2. Increment patch version
388
+ 3. Check existence, auto-increment if exists
389
+ 4. Update `package.json` và `gradle.properties`
390
+ 5. Set NPM tag = `latest`
391
+
392
+ ### **Phase 2: Publish Maven**
393
+
394
+ **Thứ tự:** Chạy SAU phase 1, TRƯỚC phase 3
395
+
396
+ **Hành động:**
397
+ - Publish Kotlin Multiplatform artifacts
398
+ - Lên GitLab Packages Repository
399
+ - Dành cho `compose` module
400
+
401
+ ### **Phase 3: Publish NPM**
402
+
403
+ **Thứ tự:** Chạy SAU phase 2 (Maven)
404
+
405
+ **Publish 2 versions theo thứ tự:**
406
+
407
+ 1. **Debug version** (với compose) - FIRST
408
+ - Version: `X.Y.Z-debug`
409
+ - Bao gồm thư mục `compose/`
410
+ - Tag: `alpha` / `beta` / `latest`
411
+
412
+ 2. **Normal version** (không compose) - SECOND
413
+ - Version: `X.Y.Z`
414
+ - Không bao gồm `compose/`
415
+ - Tag: `alpha` / `beta` / `latest`
416
+
417
+ ---
418
+
419
+ ## 🎯 Workflow Khuyến Nghị
420
+
421
+ ### Development Flow
422
+
423
+ ```
424
+ ┌──────────────────────────────────────────────────┐
425
+ │ 1. Develop Feature │
426
+ │ - Code changes │
427
+ │ - Update version in package.json (beta only) │
428
+ └─────────────────┬────────────────────────────────┘
429
+
430
+ ┌──────────────────────────────────────────────────┐
431
+ │ 2. Beta Testing │
432
+ │ Local: sh publish.sh beta │
433
+ │ CI: git commit -m "feat: xxx [ci build]" │
434
+ │ Tag: alpha (specific) or beta (normal) │
435
+ └─────────────────┬────────────────────────────────┘
436
+
437
+ ┌──────────────────────────────────────────────────┐
438
+ │ 3. Team Testing │
439
+ │ npm install @momo-kits/native-kits@beta │
440
+ │ npm install @momo-kits/native-kits@alpha │
441
+ └─────────────────┬────────────────────────────────┘
442
+
443
+ ┌──────┴──────┐
444
+ │ Approved? │
445
+ └──────┬───────┘
446
+ │ Yes
447
+
448
+ ┌──────────────────────────────────────────────────┐
449
+ │ 4. Release Production │
450
+ │ Local: sh publish.sh release │
451
+ │ CI: merge to main │
452
+ │ Reads from npm@latest, auto-increment │
453
+ └─────────────────┬────────────────────────────────┘
454
+
455
+ ┌──────────────────────────────────────────────────┐
456
+ │ 5. Production │
457
+ │ npm install @momo-kits/native-kits@latest │
458
+ └──────────────────────────────────────────────────┘
459
+ ```
460
+
461
+ ---
462
+
463
+ ## ⚠️ Lưu Ý Quan Trọng
464
+
465
+ ### 1. Version Management
466
+
467
+ **Beta Mode:**
468
+ - Specific version: Phải unique, fail nếu tồn tại
469
+ - Normal version: Auto-increment, không cần lo
470
+ - Version trong `package.json` được sử dụng
471
+
472
+ **Release Mode:**
473
+ - ⚠️ **KHÔNG đọc từ `package.json`**
474
+ - ✅ **Đọc từ `npm@latest`**
475
+ - Auto-increment patch version
476
+ - `package.json` được UPDATE với version mới
477
+
478
+ ### 2. NPM Tags
479
+
480
+ **Cài đặt theo tag:**
481
+ ```bash
482
+ npm install @momo-kits/native-kits@alpha # Specific versions
483
+ npm install @momo-kits/native-kits@beta # Normal beta versions
484
+ npm install @momo-kits/native-kits@latest # Release versions
485
+ ```
486
+
487
+ ### 3. Phase Execution Order
488
+
489
+ **Cả Beta và Release:**
490
+ 1. Check Version
491
+ 2. ✅ **Publish Maven** (FIRST)
492
+ 3. ✅ **Publish NPM** (SECOND)
493
+
494
+ **Lý do:** Maven artifacts cần được publish trước để NPM debug version có thể reference
495
+
496
+ ### 4. File Modifications
497
+
498
+ Script tạm thời modify các file (restore sau publish):
499
+ - `package.json` (version)
500
+ - `gradle.properties` (version)
501
+ - `.npmignore` (cho debug version)
502
+ - `compose/build.gradle.kts` (cho debug version)
503
+
504
+ ---
505
+
506
+ ## 🐛 Troubleshooting
507
+
508
+ ### Lỗi: "Specific version already exists on npm"
509
+
510
+ **Nguyên nhân:** Specific version đã được publish
511
+
512
+ **Giải pháp:**
513
+ ```bash
514
+ # Option 1: Tăng version thủ công
515
+ vim package.json
516
+ # "version": "0.156.2-test.1" → "0.156.2-test.2"
517
+
518
+ # Option 2: Chuyển sang normal version
519
+ vim package.json
520
+ # "version": "0.156.2-test.1" → "0.156.2"
521
+ # Script sẽ auto-format thành 0.156.2-beta.1
522
+ ```
523
+
524
+ ### Lỗi: "Could not read version from npm@latest"
525
+
526
+ **Nguyên nhân:** Package chưa tồn tại trên npm hoặc chưa có version @latest
527
+
528
+ **Giải pháp:**
529
+ ```bash
530
+ # Kiểm tra package trên npm
531
+ npm view @momo-kits/native-kits
532
+
533
+ # Nếu chưa có, publish beta trước
534
+ sh publish.sh beta
535
+ ```
536
+
537
+ ### Beta không trigger trên GitLab CI
538
+
539
+ **Kiểm tra:**
540
+ - ✅ Commit message có `[ci build]`
541
+ - ✅ Branch KHÔNG phải `main`
542
+ - ✅ Branch KHÔNG match `engine/w*`
543
+
544
+ ### Release không trigger trên GitLab CI
545
+
546
+ **Kiểm tra:**
547
+ - ✅ Đang push vào `main` branch
548
+ - ✅ GitLab CI settings enabled
549
+
550
+ ---
551
+
552
+ ## 📦 Sử Dụng Packages
553
+
554
+ ### Cài Đặt Beta/Alpha Versions
555
+
556
+ ```bash
557
+ # Latest alpha (specific versions)
558
+ npm install @momo-kits/native-kits@alpha
559
+
560
+ # Latest beta (normal versions)
561
+ npm install @momo-kits/native-kits@beta
562
+
563
+ # Specific version
564
+ npm install @momo-kits/native-kits@0.156.2-beta.1
565
+ npm install @momo-kits/native-kits@0.156.2-test.1
566
+
567
+ # Debug version (with compose)
568
+ npm install @momo-kits/native-kits@0.156.2-beta.1-debug
569
+ ```
570
+
571
+ ### Cài Đặt Release Versions
572
+
573
+ ```bash
574
+ # Latest release
575
+ npm install @momo-kits/native-kits@latest
576
+ # hoặc
577
+ npm install @momo-kits/native-kits
578
+
579
+ # Specific release version
580
+ npm install @momo-kits/native-kits@0.156.3
581
+ ```
582
+
583
+ ---
584
+
585
+ ## 🎓 Best Practices
586
+
587
+ ### 1. Beta Testing
588
+
589
+ **Specific versions (alpha tag):**
590
+ - Dùng cho testing features cụ thể
591
+ - Phải unique, không duplicate
592
+ - Ví dụ: `0.156.2-hotfix.1`, `0.156.2-experiment.1`
593
+
594
+ **Normal versions (beta tag):**
595
+ - Dùng cho continuous development
596
+ - Auto-increment, dễ quản lý
597
+ - Ví dụ: `0.156.2`, `0.156.2-beta.1`
598
+
599
+ ### 2. Release
600
+
601
+ - Luôn merge vào `main` để trigger release
602
+ - Không cần lo version trong `package.json`
603
+ - Script tự động đọc từ npm@latest và increment
604
+
605
+ ### 3. Version Naming
606
+
607
+ **Good:**
608
+ - `0.156.2-test.1` (specific, clear purpose)
609
+ - `0.156.2-beta.1` (normal, standard format)
610
+ - `0.156.2` (normal, will auto-format)
611
+
612
+ **Avoid:**
613
+ - `0.156.2-beta-test.1` (confusing)
614
+ - `0.156.2-v1` (unclear)
615
+
616
+ ---
617
+
618
+ ## 📞 Support
619
+
620
+ Nếu có vấn đề, liên hệ team hoặc tạo issue trên GitLab.
621
+
622
+ ---
623
+
624
+ ## 🔗 Quick Reference
625
+
626
+ ```bash
627
+ # Beta - Local (Specific version → alpha tag)
628
+ # package.json: "version": "0.156.2-test.1"
629
+ sh publish.sh beta
630
+
631
+ # Beta - Local (Normal version → beta tag)
632
+ # package.json: "version": "0.156.2"
633
+ sh publish.sh beta
634
+
635
+ # Release - Local (reads from npm@latest)
636
+ sh publish.sh release
637
+
638
+ # Individual phases
639
+ sh publish.sh beta check # Phase 1
640
+ sh publish.sh beta maven # Phase 2
641
+ sh publish.sh beta npm # Phase 3
642
+
643
+ # Beta - CI
644
+ git commit -m "feat: xxx [ci build]" # Trigger beta (not on main)
645
+
646
+ # Release - CI
647
+ git push origin main # Trigger release
648
+ ```
649
+
650
+ ---
651
+
652
+ ## 📋 Version Type Decision Tree
653
+
654
+ ```
655
+ Start: Publish Beta
656
+
657
+ Check version in package.json
658
+
659
+ Has suffix? (contains "-")
660
+ ├─ No → Normal Version
661
+ │ ├─ Auto-add: 0.156.2 → 0.156.2-beta.1
662
+ │ ├─ Tag: beta
663
+ │ └─ Auto-increment if exists
664
+
665
+ └─ Yes → Check suffix type
666
+ ├─ Contains "beta" → Normal Version
667
+ │ ├─ Keep format: 0.156.2-beta.1
668
+ │ ├─ Tag: beta
669
+ │ └─ Auto-increment if exists
670
+
671
+ └─ Other suffix → Specific Version
672
+ ├─ Keep format: 0.156.2-test.1
673
+ ├─ Tag: alpha
674
+ └─ FAIL if exists
675
+ ```
@@ -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
+ }