@momo-kits/native-kits 0.156.1-test.9-debug → 0.156.1-tracking.2-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 (26) hide show
  1. package/PUBLISH_GUIDE.md +410 -184
  2. package/compose/build.gradle.kts +1 -1
  3. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigation.kt +1 -0
  4. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/NavigationContainer.kt +2 -3
  5. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/Navigator.kt +46 -7
  6. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/StackScreen.kt +57 -1
  7. package/compose/src/commonMain/kotlin/vn/momo/kits/navigation/tracking/ScreenTracker.kt +218 -0
  8. package/example/ios/Example.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/Example.xcscheme +32 -0
  9. package/example/ios/Example.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  10. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  11. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/WorkspaceSettings.xcsettings +16 -0
  12. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +6 -0
  13. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +5 -0
  14. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +58 -0
  15. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/Pods-Example.xcscheme +58 -0
  16. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SDWebImage.xcscheme +58 -0
  17. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +58 -0
  18. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SkeletonUI.xcscheme +58 -0
  19. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/lottie-ios-LottiePrivacyInfo.xcscheme +58 -0
  20. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/lottie-ios.xcscheme +58 -0
  21. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +60 -0
  22. package/gradle.properties +1 -1
  23. package/local.properties +2 -2
  24. package/package.json +1 -1
  25. package/{publish_release.sh → publish.sh} +195 -128
  26. package/publish_beta.sh +0 -275
@@ -3,16 +3,45 @@
3
3
  set -e # Exit on error
4
4
 
5
5
  # ============================================================================
6
- # PUBLISH RELEASE SCRIPT WITH MULTIPLE PHASES
6
+ # UNIVERSAL PUBLISH SCRIPT
7
7
  # ============================================================================
8
8
  # Usage:
9
- # sh publish_release.sh # Run all phases
10
- # sh publish_release.sh check # Phase 1: Check and update version
11
- # sh publish_release.sh npm # Phase 2: Publish to NPM
12
- # sh publish_release.sh maven # Phase 3: Publish to Maven
9
+ # sh publish.sh beta # Run all phases for beta
10
+ # sh publish.sh release # Run all phases for release
11
+ # sh publish.sh beta check # Phase 1 only: Check version (beta)
12
+ # sh publish.sh beta npm # Phase 2 only: Publish to NPM (beta)
13
+ # sh publish.sh beta maven # Phase 3 only: Publish to Maven (beta)
14
+ # sh publish.sh release check # Phase 1 only: Check version (release)
15
+ # sh publish.sh release npm # Phase 2 only: Publish to NPM (release)
16
+ # sh publish.sh release maven # Phase 3 only: Publish to Maven (release)
13
17
  # ============================================================================
14
18
 
15
- PHASE="${1:-all}"
19
+ MODE="${1:-}"
20
+ PHASE="${2:-all}"
21
+
22
+ # Validate MODE
23
+ if [ -z "$MODE" ]; then
24
+ echo "❌ Error: MODE is required"
25
+ echo ""
26
+ echo "Usage:"
27
+ echo " sh publish.sh beta [phase] # Beta publishing"
28
+ echo " sh publish.sh release [phase] # Release publishing"
29
+ echo ""
30
+ echo "Phases: check | npm | maven | all (default: all)"
31
+ exit 1
32
+ fi
33
+
34
+ if [ "$MODE" != "beta" ] && [ "$MODE" != "release" ]; then
35
+ echo "❌ Error: Invalid MODE '$MODE'. Must be 'beta' or 'release'"
36
+ exit 1
37
+ fi
38
+
39
+ # Set NPM tag based on mode
40
+ if [ "$MODE" == "beta" ]; then
41
+ NPM_TAG="beta"
42
+ else
43
+ NPM_TAG="latest"
44
+ fi
16
45
 
17
46
  # ============================================================================
18
47
  # PHASE 1: CHECK AND UPDATE VERSION
@@ -20,105 +49,135 @@ PHASE="${1:-all}"
20
49
  phase_check_version() {
21
50
  echo ""
22
51
  echo "==============================================="
23
- echo "📋 PHASE 1: CHECK AND UPDATE VERSION"
52
+ echo "📋 PHASE 1: CHECK AND UPDATE VERSION ($MODE)"
24
53
  echo "==============================================="
25
-
54
+
26
55
  echo "🔍 Reading version from local package.json..."
27
-
56
+
28
57
  # Get the version from local package.json
29
58
  VERSION=$(node -p "require('./package.json').version")
30
-
59
+
31
60
  if [ -z "$VERSION" ]; then
32
61
  echo "❌ Error: Could not read version from package.json"
33
62
  exit 1
34
63
  fi
35
-
64
+
36
65
  echo "📦 Version from package.json: $VERSION"
37
-
38
- # Check if version has prerelease suffix and convert to beta format if needed
39
- if [[ "$VERSION" == *"-"* ]]; then
40
- # Extract base version (e.g., 0.156.1 from 0.156.1-test.5)
41
- BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
42
- PRERELEASE_SUFFIX=$(echo "$VERSION" | cut -d'-' -f2)
43
-
44
- # If it's not already in beta format, convert to beta.1
45
- if [[ "$PRERELEASE_SUFFIX" != "beta."* ]]; then
46
- BETA_VERSION="${BASE_VERSION}-beta.1"
47
- echo "🔄 Converting to beta format: $VERSION → $BETA_VERSION"
48
-
49
- # Update package.json with beta version
50
- if [[ "$OSTYPE" == "darwin"* ]]; then
51
- # macOS
52
- sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$BETA_VERSION\"/" package.json
53
- else
54
- # Linux
55
- sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$BETA_VERSION\"/" package.json
56
- fi
57
-
58
- VERSION="$BETA_VERSION"
59
- echo "✅ Version updated to beta format: $VERSION"
60
- fi
61
- fi
62
-
63
- # Check if this version already exists on npm and increment until we find one that doesn't
64
- PACKAGE_NAME=$(node -p "require('./package.json').name")
65
- echo "🔎 Checking if version $VERSION already exists on npm for package $PACKAGE_NAME..."
66
-
67
- # Loop until we find a version that doesn't exist on npm
68
- while true; do
69
- # Try to get the version info from npm
66
+
67
+ # ==============================================================
68
+ # BETA MODE: Fail if version exists
69
+ # ==============================================================
70
+ if [ "$MODE" == "beta" ]; then
71
+ # Check if this version already exists on npm
72
+ PACKAGE_NAME=$(node -p "require('./package.json').name")
73
+ echo "🔎 Checking if version $VERSION already exists on npm for package $PACKAGE_NAME..."
74
+
70
75
  NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
71
-
76
+
72
77
  if [ -n "$NPM_VERSION_INFO" ]; then
73
- echo "⚠️ Version $VERSION already exists on npm. Auto-incrementing version..."
74
-
75
- # Check if it's a beta version
76
- if [[ "$VERSION" == *"-beta."* ]]; then
77
- # Extract base version and beta number (e.g., 0.156.1-beta.5)
78
- BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
79
- BETA_NUMBER=$(echo "$VERSION" | cut -d'.' -f4)
80
-
81
- # Increment beta number
82
- NEW_BETA_NUMBER=$((BETA_NUMBER + 1))
83
- NEW_VERSION="${BASE_VERSION}-beta.${NEW_BETA_NUMBER}"
84
-
85
- echo " Version incremented: $VERSION → $NEW_VERSION"
86
- else
87
- # Regular version without beta suffix
88
- # Extract major.minor.patch
89
- MAJOR=$(echo "$VERSION" | cut -d'.' -f1)
90
- MINOR=$(echo "$VERSION" | cut -d'.' -f2)
91
- PATCH=$(echo "$VERSION" | cut -d'.' -f3 | cut -d'-' -f1)
92
-
93
- # Increment patch version
94
- NEW_PATCH=$((PATCH + 1))
95
- NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH"
96
-
97
- echo " Version incremented: $VERSION $NEW_VERSION"
78
+ echo ""
79
+ echo "❌ ERROR: Version $VERSION already exists on npm!"
80
+ echo ""
81
+ echo "Please update the version in package.json before publishing."
82
+ echo "You can increment the version manually, for example:"
83
+ echo " - Current: $VERSION"
84
+ echo " - Suggested: Increment patch, minor, or major version"
85
+ echo ""
86
+ exit 1
87
+ fi
88
+
89
+ echo "✅ Version $VERSION does not exist on npm. Safe to publish."
90
+ fi
91
+
92
+ # ==============================================================
93
+ # RELEASE MODE: Convert to beta format and auto-increment
94
+ # ==============================================================
95
+ if [ "$MODE" == "release" ]; then
96
+ # Check if version has prerelease suffix and convert to beta format if needed
97
+ if [[ "$VERSION" == *"-"* ]]; then
98
+ # Extract base version (e.g., 0.156.1 from 0.156.1-test.5)
99
+ BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
100
+ PRERELEASE_SUFFIX=$(echo "$VERSION" | cut -d'-' -f2)
101
+
102
+ # If it's not already in beta format, convert to beta.1
103
+ if [[ "$PRERELEASE_SUFFIX" != "beta."* ]]; then
104
+ BETA_VERSION="${BASE_VERSION}-beta.1"
105
+ echo "🔄 Converting to beta format: $VERSION → $BETA_VERSION"
106
+
107
+ # Update package.json with beta version
108
+ if [[ "$OSTYPE" == "darwin"* ]]; then
109
+ # macOS
110
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$BETA_VERSION\"/" package.json
111
+ else
112
+ # Linux
113
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$BETA_VERSION\"/" package.json
114
+ fi
115
+
116
+ VERSION="$BETA_VERSION"
117
+ echo "✅ Version updated to beta format: $VERSION"
98
118
  fi
99
-
100
- # Update package.json with new version
101
- if [[ "$OSTYPE" == "darwin"* ]]; then
102
- # macOS
103
- sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json
119
+ fi
120
+
121
+ # Check if this version already exists on npm and increment until we find one that doesn't
122
+ PACKAGE_NAME=$(node -p "require('./package.json').name")
123
+ echo "🔎 Checking if version $VERSION already exists on npm for package $PACKAGE_NAME..."
124
+
125
+ # Loop until we find a version that doesn't exist on npm
126
+ while true; do
127
+ # Try to get the version info from npm
128
+ NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
129
+
130
+ if [ -n "$NPM_VERSION_INFO" ]; then
131
+ echo "⚠️ Version $VERSION already exists on npm. Auto-incrementing version..."
132
+
133
+ # Check if it's a beta version
134
+ if [[ "$VERSION" == *"-beta."* ]]; then
135
+ # Extract base version and beta number (e.g., 0.156.1-beta.5)
136
+ BASE_VERSION=$(echo "$VERSION" | cut -d'-' -f1)
137
+ BETA_NUMBER=$(echo "$VERSION" | cut -d'.' -f4)
138
+
139
+ # Increment beta number
140
+ NEW_BETA_NUMBER=$((BETA_NUMBER + 1))
141
+ NEW_VERSION="${BASE_VERSION}-beta.${NEW_BETA_NUMBER}"
142
+
143
+ echo " Version incremented: $VERSION → $NEW_VERSION"
144
+ else
145
+ # Regular version without beta suffix
146
+ # Extract major.minor.patch
147
+ MAJOR=$(echo "$VERSION" | cut -d'.' -f1)
148
+ MINOR=$(echo "$VERSION" | cut -d'.' -f2)
149
+ PATCH=$(echo "$VERSION" | cut -d'.' -f3 | cut -d'-' -f1)
150
+
151
+ # Increment patch version
152
+ NEW_PATCH=$((PATCH + 1))
153
+ NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH"
154
+
155
+ echo " Version incremented: $VERSION → $NEW_VERSION"
156
+ fi
157
+
158
+ # Update package.json with new version
159
+ if [[ "$OSTYPE" == "darwin"* ]]; then
160
+ # macOS
161
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json
162
+ else
163
+ # Linux
164
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json
165
+ fi
166
+
167
+ VERSION="$NEW_VERSION"
168
+ echo "🔄 Checking version $VERSION on npm..."
104
169
  else
105
- # Linux
106
- sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$NEW_VERSION\"/" package.json
170
+ echo "✅ Version $VERSION does not exist on npm. Using this version."
171
+ break
107
172
  fi
108
-
109
- VERSION="$NEW_VERSION"
110
- echo "🔄 Checking version $VERSION on npm..."
111
- else
112
- echo "✅ Version $VERSION does not exist on npm. Using this version."
113
- break
114
- fi
115
- done
116
-
173
+ done
174
+ fi
175
+
117
176
  # Update gradle.properties with the same version
118
177
  echo "📝 Updating gradle.properties..."
119
178
  # Get current gradle version
120
179
  CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
121
-
180
+
122
181
  # Update version in gradle.properties using sed
123
182
  if [[ "$OSTYPE" == "darwin"* ]]; then
124
183
  # macOS
@@ -127,11 +186,11 @@ phase_check_version() {
127
186
  # Linux
128
187
  sed -i "s/^version=.*/version=$VERSION/" gradle.properties
129
188
  fi
130
-
189
+
131
190
  echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
132
-
191
+
133
192
  export VERSION="$VERSION"
134
-
193
+
135
194
  echo "✅ Using version: $VERSION"
136
195
  echo "✅ PHASE 1 COMPLETED"
137
196
  echo ""
@@ -143,31 +202,27 @@ phase_check_version() {
143
202
  phase_publish_npm() {
144
203
  echo ""
145
204
  echo "==============================================="
146
- echo "📦 PHASE 2: PUBLISH TO NPM"
205
+ echo "📦 PHASE 2: PUBLISH TO NPM ($MODE - tag: $NPM_TAG)"
147
206
  echo "==============================================="
148
-
207
+
149
208
  # Get version from package.json
150
209
  VERSION=$(node -p "require('./package.json').version")
151
210
  export VERSION="$VERSION"
152
-
211
+
153
212
  echo "📦 Publishing version: $VERSION"
154
-
213
+
155
214
  ./gradlew clean
156
-
157
- # First publish: normal version (compose/ is excluded via .npmignore)
158
- echo "📤 Publishing normal version (without compose)..."
159
- npm publish --tag latest --access=public
160
-
161
- echo "✅ Normal version published successfully!"
162
-
163
- # Second publish: debug version with compose kits included
215
+
216
+ # ============================================================
217
+ # FIRST PUBLISH: DEBUG VERSION (with compose kits included)
218
+ # ============================================================
164
219
  echo ""
165
220
  echo "🔧 Preparing debug version with compose kits..."
166
-
221
+
167
222
  # Create debug version
168
223
  DEBUG_VERSION="${VERSION}-debug"
169
224
  echo "📦 Debug version: $DEBUG_VERSION"
170
-
225
+
171
226
  # Update package.json version to debug version
172
227
  if [[ "$OSTYPE" == "darwin"* ]]; then
173
228
  # macOS
@@ -176,11 +231,11 @@ phase_publish_npm() {
176
231
  # Linux
177
232
  sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
178
233
  fi
179
-
234
+
180
235
  # Backup compose/build.gradle.kts
181
236
  echo "📦 Backing up compose/build.gradle.kts..."
182
237
  cp compose/build.gradle.kts compose/build.gradle.kts.backup
183
-
238
+
184
239
  # Comment out maven publish in compose/build.gradle.kts
185
240
  echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
186
241
  if [[ "$OSTYPE" == "darwin"* ]]; then
@@ -204,7 +259,7 @@ phase_publish_npm() {
204
259
  # Comment out entire mavenPublishing block
205
260
  sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
206
261
  fi
207
-
262
+
208
263
  # Modify android configuration for debug version
209
264
  echo "🔧 Modifying android configuration for debug version..."
210
265
  if [[ "$OSTYPE" == "darwin"* ]]; then
@@ -220,10 +275,10 @@ phase_publish_npm() {
220
275
  sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
221
276
  sed -i "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
222
277
  fi
223
-
278
+
224
279
  # Backup .npmignore
225
280
  cp .npmignore .npmignore.backup
226
-
281
+
227
282
  # Create minimal .npmignore for debug version (only exclude build artifacts and IDE configs)
228
283
  cat > .npmignore << 'EOF'
229
284
  sample/
@@ -239,18 +294,20 @@ build/
239
294
  .gitlab-ci.yml
240
295
  .npmignore.backup
241
296
  EOF
242
-
297
+
243
298
  echo "📤 Publishing debug version (with compose)..."
244
- npm publish --tag latest --access=public
245
-
299
+ npm publish --tag $NPM_TAG --access=public
300
+
301
+ echo "✅ Debug version published successfully!"
302
+
246
303
  # Restore .npmignore
247
304
  mv .npmignore.backup .npmignore
248
305
  echo "✅ .npmignore restored"
249
-
306
+
250
307
  # Restore compose/build.gradle.kts
251
308
  mv compose/build.gradle.kts.backup compose/build.gradle.kts
252
309
  echo "✅ compose/build.gradle.kts restored"
253
-
310
+
254
311
  # Restore package.json version to original
255
312
  if [[ "$OSTYPE" == "darwin"* ]]; then
256
313
  # macOS
@@ -259,13 +316,23 @@ EOF
259
316
  # Linux
260
317
  sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
261
318
  fi
262
-
319
+
263
320
  echo "✅ package.json version restored"
264
-
321
+
322
+ # ============================================================
323
+ # SECOND PUBLISH: NORMAL VERSION (without compose)
324
+ # ============================================================
325
+ echo ""
326
+ echo "📤 Publishing normal version (without compose)..."
327
+ npm publish --tag $NPM_TAG --access=public
328
+
329
+ echo "✅ Normal version published successfully!"
330
+
265
331
  echo ""
266
332
  echo "✅ PHASE 2 COMPLETED"
267
- echo " 📦 Normal version: $VERSION (without compose)"
268
- echo " 🐛 Debug version: $DEBUG_VERSION (with compose)"
333
+ echo " 🐛 Debug version: $DEBUG_VERSION (with compose) - Published first"
334
+ echo " 📦 Normal version: $VERSION (without compose) - Published second"
335
+ echo " 🏷️ NPM Tag: $NPM_TAG"
269
336
  echo ""
270
337
  }
271
338
 
@@ -275,17 +342,17 @@ EOF
275
342
  phase_publish_maven() {
276
343
  echo ""
277
344
  echo "==============================================="
278
- echo "🔧 PHASE 3: PUBLISH TO MAVEN"
345
+ echo "🔧 PHASE 3: PUBLISH TO MAVEN ($MODE)"
279
346
  echo "==============================================="
280
-
347
+
281
348
  # Get version from package.json
282
349
  VERSION=$(node -p "require('./package.json').version")
283
350
  export VERSION="$VERSION"
284
-
351
+
285
352
  echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
286
-
353
+
287
354
  ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
288
-
355
+
289
356
  echo "✅ Maven publishing completed successfully!"
290
357
  echo "✅ PHASE 3 COMPLETED"
291
358
  echo ""
@@ -296,7 +363,7 @@ phase_publish_maven() {
296
363
  # ============================================================================
297
364
 
298
365
  echo ""
299
- echo "🚀 PUBLISH RELEASE SCRIPT"
366
+ echo "🚀 PUBLISH SCRIPT - MODE: $(echo $MODE | tr '[:lower:]' '[:upper:]')"
300
367
  echo "================================================="
301
368
 
302
369
  case "$PHASE" in
@@ -325,10 +392,10 @@ case "$PHASE" in
325
392
  echo "❌ Error: Invalid phase '$PHASE'"
326
393
  echo ""
327
394
  echo "Usage:"
328
- echo " sh publish_release.sh # Run all phases"
329
- echo " sh publish_release.sh check # Phase 1: Check and update version"
330
- echo " sh publish_release.sh npm # Phase 2: Publish to NPM"
331
- echo " sh publish_release.sh maven # Phase 3: Publish to Maven"
395
+ echo " sh publish.sh $MODE # Run all phases"
396
+ echo " sh publish.sh $MODE check # Phase 1: Check and update version"
397
+ echo " sh publish.sh $MODE npm # Phase 2: Publish to NPM"
398
+ echo " sh publish.sh $MODE maven # Phase 3: Publish to Maven"
332
399
  exit 1
333
400
  ;;
334
401
  esac