@swyng/react-native-code-push 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/AlertAdapter.js +24 -0
  2. package/CLAUDE.md +57 -0
  3. package/CONTRIBUTING.md +134 -0
  4. package/CodePush.js +671 -0
  5. package/CodePush.podspec +28 -0
  6. package/LICENSE.md +13 -0
  7. package/README.md +323 -0
  8. package/SECURITY.md +24 -0
  9. package/android/app/build.gradle +48 -0
  10. package/android/app/proguard-rules.pro +33 -0
  11. package/android/app/src/main/AndroidManifest.xml +5 -0
  12. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePush.java +426 -0
  13. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushConstants.java +35 -0
  14. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushDialog.java +102 -0
  15. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushInstallMode.java +16 -0
  16. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushInvalidPublicKeyException.java +12 -0
  17. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushInvalidUpdateException.java +7 -0
  18. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushMalformedDataException.java +12 -0
  19. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushNativeModule.java +781 -0
  20. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushNotInitializedException.java +12 -0
  21. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushTelemetryManager.java +175 -0
  22. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushUnknownException.java +12 -0
  23. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushUpdateManager.java +383 -0
  24. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushUpdateState.java +15 -0
  25. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushUpdateUtils.java +275 -0
  26. package/android/app/src/main/java/com/swyngpush/codepush/react/CodePushUtils.java +238 -0
  27. package/android/app/src/main/java/com/swyngpush/codepush/react/DownloadProgress.java +30 -0
  28. package/android/app/src/main/java/com/swyngpush/codepush/react/DownloadProgressCallback.java +5 -0
  29. package/android/app/src/main/java/com/swyngpush/codepush/react/FileUtils.java +203 -0
  30. package/android/app/src/main/java/com/swyngpush/codepush/react/ReactHostHolder.java +11 -0
  31. package/android/app/src/main/java/com/swyngpush/codepush/react/SettingsManager.java +173 -0
  32. package/android/app/src/main/java/com/swyngpush/codepush/react/TLSSocketFactory.java +72 -0
  33. package/android/build.gradle +23 -0
  34. package/android/codepush.gradle +162 -0
  35. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  36. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  37. package/android/gradle.properties +18 -0
  38. package/android/gradlew +164 -0
  39. package/android/gradlew.bat +90 -0
  40. package/android/settings.gradle +2 -0
  41. package/docs/LOAD_BUNDLE_DELAY_ANALYSIS.md +68 -0
  42. package/docs/api-android.md +52 -0
  43. package/docs/api-ios.md +31 -0
  44. package/docs/api-js.md +592 -0
  45. package/docs/multi-deployment-testing-android.md +55 -0
  46. package/docs/multi-deployment-testing-ios.md +59 -0
  47. package/docs/setup-android.md +121 -0
  48. package/docs/setup-ios.md +141 -0
  49. package/docs/setup-windows.md +121 -0
  50. package/expo.js +347 -0
  51. package/ios/CodePush/Base64/Base64/MF_Base64Additions.h +34 -0
  52. package/ios/CodePush/Base64/Base64/MF_Base64Additions.m +252 -0
  53. package/ios/CodePush/Base64/README.md +47 -0
  54. package/ios/CodePush/CodePush.h +235 -0
  55. package/ios/CodePush/CodePush.m +1131 -0
  56. package/ios/CodePush/CodePushConfig.m +115 -0
  57. package/ios/CodePush/CodePushDownloadHandler.m +130 -0
  58. package/ios/CodePush/CodePushErrorUtils.m +20 -0
  59. package/ios/CodePush/CodePushPackage.m +602 -0
  60. package/ios/CodePush/CodePushTelemetryManager.m +175 -0
  61. package/ios/CodePush/CodePushUpdateUtils.m +376 -0
  62. package/ios/CodePush/CodePushUtils.m +9 -0
  63. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithm.h +69 -0
  64. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.h +16 -0
  65. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.m +51 -0
  66. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.h +15 -0
  67. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.m +55 -0
  68. package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.h +24 -0
  69. package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.m +41 -0
  70. package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.h +28 -0
  71. package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.m +205 -0
  72. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.h +103 -0
  73. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.m +322 -0
  74. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.h +37 -0
  75. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.m +145 -0
  76. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.h +35 -0
  77. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.m +551 -0
  78. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTRSAlgorithm.h +23 -0
  79. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.h +43 -0
  80. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.m +230 -0
  81. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.h +31 -0
  82. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.m +113 -0
  83. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.h +38 -0
  84. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.m +500 -0
  85. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.h +18 -0
  86. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.m +214 -0
  87. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.h +23 -0
  88. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.m +29 -0
  89. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.h +19 -0
  90. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.m +68 -0
  91. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.h +18 -0
  92. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.m +72 -0
  93. package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.h +67 -0
  94. package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.m +111 -0
  95. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.h +119 -0
  96. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.m +307 -0
  97. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.h +94 -0
  98. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.m +619 -0
  99. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.h +164 -0
  100. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.m +514 -0
  101. package/ios/CodePush/JWT/Core/Coding/JWTCoding.h +24 -0
  102. package/ios/CodePush/JWT/Core/Coding/JWTCoding.m +11 -0
  103. package/ios/CodePush/JWT/Core/FrameworkSupplement/JWT.h +52 -0
  104. package/ios/CodePush/JWT/Core/FrameworkSupplement/Map.modulemap +5 -0
  105. package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.h +28 -0
  106. package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.m +70 -0
  107. package/ios/CodePush/JWT/Core/Supplement/JWTDeprecations.h +22 -0
  108. package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.h +34 -0
  109. package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.m +73 -0
  110. package/ios/CodePush/JWT/LICENSE +19 -0
  111. package/ios/CodePush/JWT/README.md +489 -0
  112. package/ios/CodePush/RCTConvert+CodePushInstallMode.m +20 -0
  113. package/ios/CodePush/RCTConvert+CodePushUpdateState.m +20 -0
  114. package/ios/CodePush/SSZipArchive/Info.plist +26 -0
  115. package/ios/CodePush/SSZipArchive/README.md +1 -0
  116. package/ios/CodePush/SSZipArchive/SSZipArchive.h +178 -0
  117. package/ios/CodePush/SSZipArchive/SSZipArchive.m +1496 -0
  118. package/ios/CodePush/SSZipArchive/SSZipCommon.h +71 -0
  119. package/ios/CodePush/SSZipArchive/Supporting Files/PrivacyInfo.xcprivacy +23 -0
  120. package/ios/CodePush/SSZipArchive/include/ZipArchive.h +25 -0
  121. package/ios/CodePush/SSZipArchive/minizip/LICENSE +17 -0
  122. package/ios/CodePush/SSZipArchive/minizip/mz.h +273 -0
  123. package/ios/CodePush/SSZipArchive/minizip/mz_compat.c +1306 -0
  124. package/ios/CodePush/SSZipArchive/minizip/mz_compat.h +346 -0
  125. package/ios/CodePush/SSZipArchive/minizip/mz_crypt.c +187 -0
  126. package/ios/CodePush/SSZipArchive/minizip/mz_crypt.h +65 -0
  127. package/ios/CodePush/SSZipArchive/minizip/mz_crypt_apple.c +526 -0
  128. package/ios/CodePush/SSZipArchive/minizip/mz_os.c +348 -0
  129. package/ios/CodePush/SSZipArchive/minizip/mz_os.h +176 -0
  130. package/ios/CodePush/SSZipArchive/minizip/mz_os_posix.c +350 -0
  131. package/ios/CodePush/SSZipArchive/minizip/mz_strm.c +556 -0
  132. package/ios/CodePush/SSZipArchive/minizip/mz_strm.h +132 -0
  133. package/ios/CodePush/SSZipArchive/minizip/mz_strm_buf.c +383 -0
  134. package/ios/CodePush/SSZipArchive/minizip/mz_strm_buf.h +42 -0
  135. package/ios/CodePush/SSZipArchive/minizip/mz_strm_mem.c +269 -0
  136. package/ios/CodePush/SSZipArchive/minizip/mz_strm_mem.h +48 -0
  137. package/ios/CodePush/SSZipArchive/minizip/mz_strm_os.h +40 -0
  138. package/ios/CodePush/SSZipArchive/minizip/mz_strm_os_posix.c +203 -0
  139. package/ios/CodePush/SSZipArchive/minizip/mz_strm_pkcrypt.c +334 -0
  140. package/ios/CodePush/SSZipArchive/minizip/mz_strm_pkcrypt.h +46 -0
  141. package/ios/CodePush/SSZipArchive/minizip/mz_strm_split.c +429 -0
  142. package/ios/CodePush/SSZipArchive/minizip/mz_strm_split.h +43 -0
  143. package/ios/CodePush/SSZipArchive/minizip/mz_strm_wzaes.c +360 -0
  144. package/ios/CodePush/SSZipArchive/minizip/mz_strm_wzaes.h +46 -0
  145. package/ios/CodePush/SSZipArchive/minizip/mz_strm_zlib.c +389 -0
  146. package/ios/CodePush/SSZipArchive/minizip/mz_strm_zlib.h +43 -0
  147. package/ios/CodePush/SSZipArchive/minizip/mz_zip.c +2782 -0
  148. package/ios/CodePush/SSZipArchive/minizip/mz_zip.h +262 -0
  149. package/ios/CodePush/SSZipArchive/minizip/mz_zip_rw.c +1942 -0
  150. package/ios/CodePush/SSZipArchive/minizip/mz_zip_rw.h +285 -0
  151. package/ios/CodePush.xcodeproj/project.pbxproj +1052 -0
  152. package/ios/CodePush.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  153. package/ios/CodePush.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  154. package/ios/PrivacyInfo.xcprivacy +31 -0
  155. package/logging.js +6 -0
  156. package/package-mixins.js +68 -0
  157. package/package.json +91 -0
  158. package/react-native.config.js +11 -0
  159. package/request-fetch-adapter.js +52 -0
  160. package/scripts/generateBundledResourcesHash.js +125 -0
  161. package/scripts/getFilesInFolder.js +19 -0
  162. package/scripts/postlink/android/postlink.js +87 -0
  163. package/scripts/postlink/ios/postlink.js +116 -0
  164. package/scripts/postlink/run.js +11 -0
  165. package/scripts/postunlink/android/postunlink.js +74 -0
  166. package/scripts/postunlink/ios/postunlink.js +87 -0
  167. package/scripts/postunlink/run.js +11 -0
  168. package/scripts/recordFilesBeforeBundleCommand.js +41 -0
  169. package/scripts/tools/linkToolsAndroid.js +57 -0
  170. package/scripts/tools/linkToolsIos.js +130 -0
  171. package/tsconfig.json +17 -0
  172. package/tslint.json +32 -0
  173. package/typings/react-native-code-push.d.ts +455 -0
  174. package/windows/CodePush/.!12419!CodePushNativeModule.h +154 -0
  175. package/windows/CodePush/.!12440!CodePushNativeModule.h +154 -0
  176. package/windows/CodePush/CodePush.def +3 -0
  177. package/windows/CodePush/CodePush.vcxproj +198 -0
  178. package/windows/CodePush/CodePush.vcxproj.filters +91 -0
  179. package/windows/CodePush/CodePushConfig.cpp +99 -0
  180. package/windows/CodePush/CodePushConfig.h +66 -0
  181. package/windows/CodePush/CodePushConfig.idl +12 -0
  182. package/windows/CodePush/CodePushDownloadHandler.cpp +73 -0
  183. package/windows/CodePush/CodePushDownloadHandler.h +32 -0
  184. package/windows/CodePush/CodePushNativeModule.cpp +934 -0
  185. package/windows/CodePush/CodePushNativeModule.h +247 -0
  186. package/windows/CodePush/CodePushPackage.cpp +456 -0
  187. package/windows/CodePush/CodePushPackage.h +49 -0
  188. package/windows/CodePush/CodePushTelemetryManager.cpp +213 -0
  189. package/windows/CodePush/CodePushTelemetryManager.h +29 -0
  190. package/windows/CodePush/CodePushUpdateUtils.cpp +86 -0
  191. package/windows/CodePush/CodePushUpdateUtils.h +38 -0
  192. package/windows/CodePush/CodePushUtils.cpp +29 -0
  193. package/windows/CodePush/CodePushUtils.h +18 -0
  194. package/windows/CodePush/FileUtils.cpp +131 -0
  195. package/windows/CodePush/FileUtils.h +28 -0
  196. package/windows/CodePush/PropertySheet.props +16 -0
  197. package/windows/CodePush/ReactPackageProvider.cpp +15 -0
  198. package/windows/CodePush/ReactPackageProvider.h +22 -0
  199. package/windows/CodePush/ReactPackageProvider.idl +9 -0
  200. package/windows/CodePush/miniz/LICENSE +22 -0
  201. package/windows/CodePush/miniz/miniz.c +7657 -0
  202. package/windows/CodePush/miniz/miniz.h +1338 -0
  203. package/windows/CodePush/miniz/readme.md +37 -0
  204. package/windows/CodePush/packages.config +4 -0
  205. package/windows/CodePush/pch.cpp +1 -0
  206. package/windows/CodePush/pch.h +4 -0
  207. package/windows-legacy/CodePush/CodePush.csproj +128 -0
  208. package/windows-legacy/CodePush/CodePushUtils.cs +47 -0
  209. package/windows-legacy/CodePush/FileUtils.cs +40 -0
  210. package/windows-legacy/CodePush/Properties/AssemblyInfo.cs +29 -0
  211. package/windows-legacy/CodePush/Properties/CodePush.rd.xml +33 -0
  212. package/windows-legacy/CodePush/UpdateManager.cs +305 -0
  213. package/windows-legacy/CodePush/UpdateUtils.cs +46 -0
  214. package/windows-legacy/CodePush.Net46/Adapters/Http/HttpProgress.cs +28 -0
  215. package/windows-legacy/CodePush.Net46/Adapters/Storage/ApplicationDataContainer.cs +106 -0
  216. package/windows-legacy/CodePush.Net46/CodePush.Net46.csproj +103 -0
  217. package/windows-legacy/CodePush.Net46/CodePushUtils.cs +158 -0
  218. package/windows-legacy/CodePush.Net46/FileUtils.cs +55 -0
  219. package/windows-legacy/CodePush.Net46/Properties/AssemblyInfo.cs +36 -0
  220. package/windows-legacy/CodePush.Net46/UpdateManager.cs +330 -0
  221. package/windows-legacy/CodePush.Net46/UpdateUtils.cs +70 -0
  222. package/windows-legacy/CodePush.Net46/packages.config +5 -0
  223. package/windows-legacy/CodePush.Net46.Test/ApplicationDataContainerTest.cs +105 -0
  224. package/windows-legacy/CodePush.Net46.Test/CodePush.Net46.Test.csproj +137 -0
  225. package/windows-legacy/CodePush.Net46.Test/Properties/AssemblyInfo.cs +36 -0
  226. package/windows-legacy/CodePush.Net46.Test/TelemetryManagerTest.cs +117 -0
  227. package/windows-legacy/CodePush.Net46.Test/app.config +11 -0
  228. package/windows-legacy/CodePush.Net46.Test/packages.config +4 -0
  229. package/windows-legacy/CodePush.Shared/CodePush.Shared.projitems +22 -0
  230. package/windows-legacy/CodePush.Shared/CodePush.Shared.shproj +13 -0
  231. package/windows-legacy/CodePush.Shared/CodePushConstants.cs +35 -0
  232. package/windows-legacy/CodePush.Shared/CodePushNativeModule.cs +329 -0
  233. package/windows-legacy/CodePush.Shared/CodePushReactPackage.cs +235 -0
  234. package/windows-legacy/CodePush.Shared/CodePushUtils.cs +70 -0
  235. package/windows-legacy/CodePush.Shared/InstallMode.cs +9 -0
  236. package/windows-legacy/CodePush.Shared/MinimumBackgroundListener.cs +44 -0
  237. package/windows-legacy/CodePush.Shared/SettingsManager.cs +148 -0
  238. package/windows-legacy/CodePush.Shared/TelemetryManager.cs +250 -0
  239. package/windows-legacy/CodePush.Shared/UpdateState.cs +9 -0
@@ -0,0 +1,24 @@
1
+ import React, { Platform } from "react-native";
2
+ let { Alert } = React;
3
+
4
+ if (Platform.OS === "android") {
5
+ const { NativeModules: { CodePushDialog } } = React;
6
+
7
+ Alert = {
8
+ alert(title, message, buttons) {
9
+ if (buttons.length > 2) {
10
+ throw "Can only show 2 buttons for Android dialog.";
11
+ }
12
+
13
+ const button1Text = buttons[0] ? buttons[0].text : null,
14
+ button2Text = buttons[1] ? buttons[1].text : null;
15
+
16
+ CodePushDialog.showDialog(
17
+ title, message, button1Text, button2Text,
18
+ (buttonId) => { buttons[buttonId].onPress && buttons[buttonId].onPress(); },
19
+ (error) => { throw error; });
20
+ }
21
+ };
22
+ }
23
+
24
+ module.exports = { Alert };
package/CLAUDE.md ADDED
@@ -0,0 +1,57 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ SwyngPush React Native (`@swyng/react-native-code-push`) is a native module that enables over-the-air updates for React Native apps. It consists of native implementations for iOS (Objective-C), Android (Java), and Windows (C++), unified through a JavaScript bridge layer. The server-side is hosted at swyngpush.site.
8
+
9
+ ## Development Commands
10
+
11
+ ### Testing
12
+ - `npm test` - Run all tests with TypeScript compilation
13
+ - `npm run test:android` - Run Android-specific tests
14
+ - `npm run test:ios` - Run iOS-specific tests
15
+ - `npm run test:setup:android` - Set up Android emulator for testing
16
+ - `npm run test:setup:ios` - Set up iOS simulator for testing
17
+
18
+ ### Build
19
+ - `npm run build:tests` - Build TypeScript tests to bin/ directory
20
+ - `npm run tslint` - Run linter
21
+
22
+ ### Platform Testing
23
+ - Tests run on actual emulators/simulators with real React Native apps
24
+ - Test apps are created dynamically in `test/` directory
25
+ - Both old and new React Native architecture testing supported
26
+
27
+ ## Architecture
28
+
29
+ ### Core Components
30
+ - **JavaScript Bridge** (`CodePush.js`): Main API layer exposing update methods
31
+ - **Native Modules**: Platform-specific implementations handling file operations, bundle management
32
+ - **Update Manager**: Handles download, installation, and rollback logic
33
+ - **Acquisition SDK**: Manages server communication and update metadata
34
+
35
+ ### Platform Structure
36
+ - **iOS**: `ios/` - Objective-C implementation with CocoaPods integration
37
+ - **Android**: `android/` - Java implementation with Gradle plugin
38
+ - **Windows**: `windows/` - C++ implementation for Windows React Native
39
+ - **JavaScript**: Root level - TypeScript definitions and bridge code
40
+
41
+ ### Key Patterns
42
+ - **Higher-Order Component**: `codePush()` wrapper for automatic update management
43
+ - **Promise-based Native Bridge**: All native operations return promises
44
+ - **Platform Abstraction**: Unified JavaScript API with platform-specific implementations
45
+ - **Error Handling**: Automatic rollback on failed updates with telemetry
46
+
47
+ ### Build Integration
48
+ - **Android Gradle Plugin**: Automatically generates bundle hashes and processes assets
49
+ - **iOS CocoaPods**: Manages native dependencies and build configuration
50
+ - **Bundle Processing**: Automated zip creation and hash calculation for OTA updates
51
+
52
+ ## Key Files
53
+ - `CodePush.js` - Main JavaScript API
54
+ - `CodePush.podspec` - iOS CocoaPods specification
55
+ - `android/build.gradle` - Android build configuration
56
+ - `expo.js` - Expo plugin integration
57
+ - `typings/react-native-code-push.d.ts` - TypeScript definitions
@@ -0,0 +1,134 @@
1
+ # Contributing
2
+
3
+ ## Using the plugin
4
+
5
+ ### Environment setup
6
+
7
+ `node.js` and `npm` are needed for using this project. `npm` comes bundled with the `node.js` installer. You can download the `node.js` installer here: https://nodejs.org/download/.
8
+
9
+ Once you have installed `node.js` and `npm`, install the dev dependencies for the project.
10
+
11
+ ```
12
+ npm install
13
+ ```
14
+
15
+ ### Using the plugin manually
16
+
17
+ Follow these steps to test your modifications to the plugin manually:
18
+ - clone this repository
19
+ - install the dependencies
20
+
21
+ Navigate to the root folder from your command line console and run:
22
+ ```
23
+ npm install
24
+ ```
25
+ - install the plugin in a React-Native project
26
+
27
+ Navigate to the root folder of your React-Native project from your command line console and run:
28
+ ```
29
+ npm install local_path_to_your_clone_of_this_repo
30
+ ```
31
+ - configure the plugin using the steps in the README.md
32
+ - build and run your app on an emulator or device
33
+
34
+ ## Test
35
+
36
+ ### Environment setup
37
+
38
+ First, make sure you have installed the dependencies for the plugin by following the steps above.
39
+
40
+ Then, make sure you have installed `react-native`.
41
+
42
+ ```
43
+ npm install -g react-native
44
+ ```
45
+
46
+ To run Android tests, make sure you have `sdk\tools`, `sdk\emulator` and `sdk\platform-tools` in your PATH.
47
+
48
+ To run iOS tests, make sure you've installed CocoaPods and have `.gem/bin` in your PATH.
49
+
50
+ ### Supported platforms
51
+
52
+ The plugin has end to end tests for Android and iOS. Depending on your development machine OS, you can run some or all the tests.
53
+
54
+ OS | Supported tests
55
+ ------------- | -------------
56
+ OS X | Android, iOS
57
+ Windows | Android
58
+
59
+ ### Test descriptions
60
+
61
+ The tests first build the app.
62
+
63
+ They then check if the required emulators are currently running.
64
+
65
+ If an Android emulator is not running, it attempts to boot the latest Android emulator. You can specify an emulator by adding env variable `ANDROID_EMU=yourEmulatorNameHere` to the npm command. For example: `ANDROID_EMU=yourEmulatorNameHere npm run test:android`.
66
+
67
+ If an iOS simulator is not running, it attempts to boot the latest iOS iPhone simulator. You can specify a simulator by adding env variable `IOS_EMU=yourSimulatorNameHere` to the npm command. For example: `IOS_EMU="iPhone 8 (0567DFF8-329E-41A3-BD6D-E48E9DD5EF39)" npm run test:ios`.
68
+
69
+ If all the required emulators are not running and the tests fail to boot them, the tests will fail.
70
+
71
+ If you would like the tests to always restart the necessary emulators (killing them if they are currently running), setup a env variable `CLEAN=true` to the command. For example: `CLEAN=true npm run test`.
72
+
73
+ The desired unit tests are then run.
74
+
75
+ If you would like to skip building, add a `:fast` in the command you'd like to run. For example, `npm run test:ios` becomes `npm run test:fast:ios` or `npm run test:android` becomes `npm run test:fast:android`.
76
+
77
+ There is a both a full unit test suite and a "core" set of unit tests that you may run. If you would like to run only the core tests, setup a env variable `CORE=true` to the command. For example: `CORE=true npm run test:android`.
78
+
79
+ If you would like to pull the plugin from NPM rather than running the tests on the local version, setup a env variable `NPM=true` to the command. For example: `NPM=true npm run test:ios`.
80
+
81
+ #### Default
82
+
83
+ To run all of the unit tests on Android and iOS:
84
+ ```
85
+ npm run test
86
+ ```
87
+
88
+ #### iOS
89
+
90
+ To run all of the unit tests on iOS:
91
+ ```
92
+ npm run test:ios
93
+ ```
94
+
95
+ #### Android
96
+
97
+ To run all of the unit tests on Android:
98
+ ```
99
+ npm run test:android
100
+ ```
101
+
102
+ #### More examples
103
+
104
+ All possible testing configurations have tasks!
105
+
106
+ The platforms are ordered as follows, and ran in that order:
107
+ android, ios
108
+
109
+ To run the core unit tests on Android:
110
+ ```
111
+ CORE=true npm run test:android
112
+ ```
113
+
114
+ To run all of the unit tests on iOS and pull the plugin from NPM:
115
+ ```
116
+ NPM=true npm run test:ios
117
+ ```
118
+
119
+ To run all of the unit tests on Android and iOS without building first:
120
+ ```
121
+ npm run test:fast
122
+ ```
123
+
124
+ To run all of the unit tests on iOS and restart the emulators:
125
+ ```
126
+ CLEAN=true npm run test:ios
127
+ ```
128
+
129
+ To run the core unit tests on Android and pull the plugin from NPM:
130
+ ```
131
+ NPM=true CORE=true npm run test:android
132
+ ```
133
+
134
+ ...and so on!