@momo-kits/native-kits 0.156.1-test.2 → 0.156.1-test.20

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 (17) hide show
  1. package/PUBLISH_GUIDE.md +544 -0
  2. package/example/ios/Example.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/Example.xcscheme +32 -0
  3. package/example/ios/Example.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  4. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  5. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/WorkspaceSettings.xcsettings +16 -0
  6. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +6 -0
  7. package/example/ios/Example.xcworkspace/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +5 -0
  8. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +58 -0
  9. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/Pods-Example.xcscheme +58 -0
  10. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SDWebImage.xcscheme +58 -0
  11. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +58 -0
  12. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/SkeletonUI.xcscheme +58 -0
  13. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/lottie-ios-LottiePrivacyInfo.xcscheme +58 -0
  14. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/lottie-ios.xcscheme +58 -0
  15. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sonnguyen.xcuserdatad/xcschemes/xcschememanagement.plist +60 -0
  16. package/package.json +1 -1
  17. package/publish.sh +401 -0
package/publish.sh ADDED
@@ -0,0 +1,401 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e # Exit on error
4
+
5
+ # ============================================================================
6
+ # UNIVERSAL PUBLISH SCRIPT
7
+ # ============================================================================
8
+ # Usage:
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)
17
+ # ============================================================================
18
+
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
45
+
46
+ # ============================================================================
47
+ # PHASE 1: CHECK AND UPDATE VERSION
48
+ # ============================================================================
49
+ phase_check_version() {
50
+ echo ""
51
+ echo "==============================================="
52
+ echo "📋 PHASE 1: CHECK AND UPDATE VERSION ($MODE)"
53
+ echo "==============================================="
54
+
55
+ echo "🔍 Reading version from local package.json..."
56
+
57
+ # Get the version from local package.json
58
+ VERSION=$(node -p "require('./package.json').version")
59
+
60
+ if [ -z "$VERSION" ]; then
61
+ echo "❌ Error: Could not read version from package.json"
62
+ exit 1
63
+ fi
64
+
65
+ echo "📦 Version from package.json: $VERSION"
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
+
75
+ NPM_VERSION_INFO=$(npm view "$PACKAGE_NAME@$VERSION" version 2>/dev/null || echo "")
76
+
77
+ if [ -n "$NPM_VERSION_INFO" ]; then
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"
118
+ fi
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..."
169
+ else
170
+ echo "✅ Version $VERSION does not exist on npm. Using this version."
171
+ break
172
+ fi
173
+ done
174
+ fi
175
+
176
+ # Update gradle.properties with the same version
177
+ echo "📝 Updating gradle.properties..."
178
+ # Get current gradle version
179
+ CURRENT_GRADLE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2 | tr -d '"')
180
+
181
+ # Update version in gradle.properties using sed
182
+ if [[ "$OSTYPE" == "darwin"* ]]; then
183
+ # macOS
184
+ sed -i '' "s/^version=.*/version=$VERSION/" gradle.properties
185
+ else
186
+ # Linux
187
+ sed -i "s/^version=.*/version=$VERSION/" gradle.properties
188
+ fi
189
+
190
+ echo " Gradle version updated: $CURRENT_GRADLE_VERSION → $VERSION"
191
+
192
+ export VERSION="$VERSION"
193
+
194
+ echo "✅ Using version: $VERSION"
195
+ echo "✅ PHASE 1 COMPLETED"
196
+ echo ""
197
+ }
198
+
199
+ # ============================================================================
200
+ # PHASE 2: PUBLISH TO NPM
201
+ # ============================================================================
202
+ phase_publish_npm() {
203
+ echo ""
204
+ echo "==============================================="
205
+ echo "📦 PHASE 2: PUBLISH TO NPM ($MODE - tag: $NPM_TAG)"
206
+ echo "==============================================="
207
+
208
+ # Get version from package.json
209
+ VERSION=$(node -p "require('./package.json').version")
210
+ export VERSION="$VERSION"
211
+
212
+ echo "📦 Publishing version: $VERSION"
213
+
214
+ ./gradlew clean
215
+
216
+ # ============================================================
217
+ # FIRST PUBLISH: DEBUG VERSION (with compose kits included)
218
+ # ============================================================
219
+ echo ""
220
+ echo "🔧 Preparing debug version with compose kits..."
221
+
222
+ # Create debug version
223
+ DEBUG_VERSION="${VERSION}-debug"
224
+ echo "📦 Debug version: $DEBUG_VERSION"
225
+
226
+ # Update package.json version to debug version
227
+ if [[ "$OSTYPE" == "darwin"* ]]; then
228
+ # macOS
229
+ sed -i '' "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
230
+ else
231
+ # Linux
232
+ sed -i "s/\"version\": \"$VERSION\"/\"version\": \"$DEBUG_VERSION\"/" package.json
233
+ fi
234
+
235
+ # Backup compose/build.gradle.kts
236
+ echo "📦 Backing up compose/build.gradle.kts..."
237
+ cp compose/build.gradle.kts compose/build.gradle.kts.backup
238
+
239
+ # Comment out maven publish in compose/build.gradle.kts
240
+ echo "💬 Commenting out maven publish in compose/build.gradle.kts..."
241
+ if [[ "$OSTYPE" == "darwin"* ]]; then
242
+ # macOS - Comment out imports
243
+ sed -i '' 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
244
+ sed -i '' 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
245
+ # Comment out plugin
246
+ sed -i '' 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
247
+ # Comment out publishing block
248
+ sed -i '' '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
249
+ # Comment out entire mavenPublishing block (lines starting from mavenPublishing { to its closing })
250
+ sed -i '' '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
251
+ else
252
+ # Linux - Comment out imports
253
+ sed -i 's/^import com\.vanniktech\.maven\.publish\.JavadocJar$/\/\/ &/' compose/build.gradle.kts
254
+ sed -i 's/^import com\.vanniktech\.maven\.publish\.KotlinMultiplatform$/\/\/ &/' compose/build.gradle.kts
255
+ # Comment out plugin
256
+ sed -i 's/^ alias(libs\.plugins\.vanniktech\.mavenPublish)$/\/\/ &/' compose/build.gradle.kts
257
+ # Comment out publishing block
258
+ sed -i '/^publishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
259
+ # Comment out entire mavenPublishing block
260
+ sed -i '/^mavenPublishing {$/,/^}$/s/^/\/\/ /' compose/build.gradle.kts
261
+ fi
262
+
263
+ # Modify android configuration for debug version
264
+ echo "🔧 Modifying android configuration for debug version..."
265
+ if [[ "$OSTYPE" == "darwin"* ]]; then
266
+ # macOS
267
+ sed -i '' 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
268
+ sed -i '' 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
269
+ sed -i '' 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
270
+ sed -i '' "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
271
+ else
272
+ # Linux
273
+ sed -i 's/namespace = "\$gitlabGroup\.\$gitlabArtifactId"/namespace = "vn.momo.kits.kits"/' compose/build.gradle.kts
274
+ sed -i 's/compileSdk = libs\.versions\.android\.compileSdk\.get()\.toInt()/compileSdk = 35/' compose/build.gradle.kts
275
+ sed -i 's/minSdk = libs\.versions\.android\.minSdk\.get()\.toInt()/minSdk = 24/' compose/build.gradle.kts
276
+ sed -i "s/version = gitlabVersion/version = \"$DEBUG_VERSION\"/" compose/build.gradle.kts
277
+ fi
278
+
279
+ # Backup .npmignore
280
+ cp .npmignore .npmignore.backup
281
+
282
+ # Create minimal .npmignore for debug version (only exclude build artifacts and IDE configs)
283
+ cat > .npmignore << 'EOF'
284
+ sample/
285
+ build/
286
+
287
+ .fleet
288
+ .gradle
289
+ .idea
290
+ .kotlin
291
+ .run
292
+
293
+ .gitattributes
294
+ .gitlab-ci.yml
295
+ .npmignore.backup
296
+ EOF
297
+
298
+ echo "📤 Publishing debug version (with compose)..."
299
+ npm publish --tag $NPM_TAG --access=public
300
+
301
+ echo "✅ Debug version published successfully!"
302
+
303
+ # Restore .npmignore
304
+ mv .npmignore.backup .npmignore
305
+ echo "✅ .npmignore restored"
306
+
307
+ # Restore compose/build.gradle.kts
308
+ mv compose/build.gradle.kts.backup compose/build.gradle.kts
309
+ echo "✅ compose/build.gradle.kts restored"
310
+
311
+ # Restore package.json version to original
312
+ if [[ "$OSTYPE" == "darwin"* ]]; then
313
+ # macOS
314
+ sed -i '' "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
315
+ else
316
+ # Linux
317
+ sed -i "s/\"version\": \"$DEBUG_VERSION\"/\"version\": \"$VERSION\"/" package.json
318
+ fi
319
+
320
+ echo "✅ package.json version restored"
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
+
331
+ echo ""
332
+ echo "✅ PHASE 2 COMPLETED"
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"
336
+ echo ""
337
+ }
338
+
339
+ # ============================================================================
340
+ # PHASE 3: PUBLISH TO MAVEN
341
+ # ============================================================================
342
+ phase_publish_maven() {
343
+ echo ""
344
+ echo "==============================================="
345
+ echo "🔧 PHASE 3: PUBLISH TO MAVEN ($MODE)"
346
+ echo "==============================================="
347
+
348
+ # Get version from package.json
349
+ VERSION=$(node -p "require('./package.json').version")
350
+ export VERSION="$VERSION"
351
+
352
+ echo "📦 Publishing KMP artifacts to Maven (version ${VERSION})..."
353
+
354
+ ./gradlew :compose:publishAllPublicationsToGitLabPackagesRepository
355
+
356
+ echo "✅ Maven publishing completed successfully!"
357
+ echo "✅ PHASE 3 COMPLETED"
358
+ echo ""
359
+ }
360
+
361
+ # ============================================================================
362
+ # MAIN EXECUTION
363
+ # ============================================================================
364
+
365
+ echo ""
366
+ echo "🚀 PUBLISH SCRIPT - MODE: $(echo $MODE | tr '[:lower:]' '[:upper:]')"
367
+ echo "================================================="
368
+
369
+ case "$PHASE" in
370
+ "check")
371
+ echo "Running PHASE 1 only: Check and update version"
372
+ phase_check_version
373
+ ;;
374
+ "npm")
375
+ echo "Running PHASE 2 only: Publish to NPM"
376
+ phase_publish_npm
377
+ ;;
378
+ "maven")
379
+ echo "Running PHASE 3 only: Publish to Maven"
380
+ phase_publish_maven
381
+ ;;
382
+ "all")
383
+ echo "Running ALL PHASES"
384
+ phase_check_version
385
+ phase_publish_npm
386
+ phase_publish_maven
387
+ echo ""
388
+ echo "🎉 ALL PHASES COMPLETED SUCCESSFULLY!"
389
+ echo "================================================="
390
+ ;;
391
+ *)
392
+ echo "❌ Error: Invalid phase '$PHASE'"
393
+ echo ""
394
+ echo "Usage:"
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"
399
+ exit 1
400
+ ;;
401
+ esac