@appzung/react-native-code-push 9.0.2 → 10.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 (473) hide show
  1. package/CodePush.podspec +1 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +169 -329
  4. package/android/app/.gradle/config.properties +2 -0
  5. package/android/app/build.gradle +63 -19
  6. package/android/app/local.properties +8 -0
  7. package/android/app/src/main/AndroidManifest.xml +2 -3
  8. package/android/app/src/main/AndroidManifestNew.xml +3 -0
  9. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePush.java +35 -97
  10. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushConstants.java +1 -1
  11. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushInstallMode.java +2 -2
  12. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushInvalidPublicKeyException.java +2 -2
  13. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushInvalidUpdateException.java +1 -1
  14. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushMalformedDataException.java +2 -2
  15. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushNativeModule.java +37 -8
  16. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushNotInitializedException.java +2 -2
  17. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushTelemetryManager.java +14 -14
  18. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushUnknownException.java +2 -2
  19. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushUpdateManager.java +3 -3
  20. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushUpdateState.java +2 -2
  21. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushUpdateUtils.java +1 -1
  22. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/CodePushUtils.java +1 -1
  23. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/DownloadProgress.java +1 -1
  24. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/DownloadProgressCallback.java +1 -1
  25. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/FileUtils.java +1 -1
  26. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/ReactInstanceHolder.java +1 -1
  27. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/SettingsManager.java +1 -1
  28. package/android/app/src/main/java/com/{microsoft → appzung}/codepush/react/TLSSocketFactory.java +1 -1
  29. package/android/build.gradle +1 -11
  30. package/android/codepush.gradle +3 -3
  31. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  32. package/android/gradle.properties +4 -20
  33. package/docs/advanced-usage.md +56 -0
  34. package/docs/api-android.md +16 -77
  35. package/docs/api-ios.md +9 -21
  36. package/docs/api-js.md +184 -219
  37. package/docs/code-signing.md +62 -0
  38. package/docs/migrating-to-v10.md +31 -0
  39. package/docs/setup-android.md +54 -463
  40. package/docs/setup-ios.md +37 -208
  41. package/docs/setup-windows.md +8 -74
  42. package/ios/CodePush/CodePush.h +4 -4
  43. package/ios/CodePush/CodePush.m +21 -65
  44. package/ios/CodePush/CodePushConfig.m +14 -11
  45. package/ios/CodePush/CodePushPackage.m +60 -60
  46. package/ios/CodePush/CodePushTelemetryManager.m +13 -13
  47. package/ios/CodePush.xcodeproj/project.pbxproj +1 -562
  48. package/lib/commonjs/CodePush.js +90 -0
  49. package/lib/commonjs/CodePush.js.map +1 -0
  50. package/lib/commonjs/allowRestart.js +12 -0
  51. package/lib/commonjs/allowRestart.js.map +1 -0
  52. package/lib/commonjs/checkForUpdates.js +105 -0
  53. package/lib/commonjs/checkForUpdates.js.map +1 -0
  54. package/lib/commonjs/clearUpdates.js +15 -0
  55. package/lib/commonjs/clearUpdates.js.map +1 -0
  56. package/lib/commonjs/disallowRestart.js +12 -0
  57. package/lib/commonjs/disallowRestart.js.map +1 -0
  58. package/lib/commonjs/enums/CheckFrequency.enum.js +25 -0
  59. package/lib/commonjs/enums/CheckFrequency.enum.js.map +1 -0
  60. package/lib/commonjs/enums/DeploymentStatus.enum.js +21 -0
  61. package/lib/commonjs/enums/DeploymentStatus.enum.js.map +1 -0
  62. package/lib/commonjs/enums/InstallMode.enum.js +35 -0
  63. package/lib/commonjs/enums/InstallMode.enum.js.map +1 -0
  64. package/lib/commonjs/enums/SyncStatus.enum.js +53 -0
  65. package/lib/commonjs/enums/SyncStatus.enum.js.map +1 -0
  66. package/lib/commonjs/enums/UpdateState.enum.js +29 -0
  67. package/lib/commonjs/enums/UpdateState.enum.js.map +1 -0
  68. package/lib/commonjs/getUpdateMetadata.js +25 -0
  69. package/lib/commonjs/getUpdateMetadata.js.map +1 -0
  70. package/lib/commonjs/index.js +195 -0
  71. package/lib/commonjs/index.js.map +1 -0
  72. package/lib/commonjs/internals/AcquisitionSdk.js +9 -0
  73. package/lib/commonjs/internals/AcquisitionSdk.js.map +1 -0
  74. package/lib/commonjs/internals/LocalPackageImplementation.js +29 -0
  75. package/lib/commonjs/internals/LocalPackageImplementation.js.map +1 -0
  76. package/lib/commonjs/internals/NativeRNAppZungCodePushModule.js +8 -0
  77. package/lib/commonjs/internals/NativeRNAppZungCodePushModule.js.map +1 -0
  78. package/lib/commonjs/internals/RNAppZungCodePushModuleSpec.js +6 -0
  79. package/lib/commonjs/internals/RNAppZungCodePushModuleSpec.js.map +1 -0
  80. package/lib/commonjs/internals/RemotePackageImplementation.js +49 -0
  81. package/lib/commonjs/internals/RemotePackageImplementation.js.map +1 -0
  82. package/lib/commonjs/internals/getConfiguration.js +15 -0
  83. package/lib/commonjs/internals/getConfiguration.js.map +1 -0
  84. package/lib/commonjs/internals/getCurrentPackage.js +12 -0
  85. package/lib/commonjs/internals/getCurrentPackage.js.map +1 -0
  86. package/lib/commonjs/internals/getPromisifiedSdk.js +49 -0
  87. package/lib/commonjs/internals/getPromisifiedSdk.js.map +1 -0
  88. package/lib/commonjs/internals/shouldUpdateBeIgnored.js +62 -0
  89. package/lib/commonjs/internals/shouldUpdateBeIgnored.js.map +1 -0
  90. package/lib/commonjs/internals/types.js +6 -0
  91. package/lib/commonjs/internals/types.js.map +1 -0
  92. package/lib/commonjs/internals/utils/log.js +11 -0
  93. package/lib/commonjs/internals/utils/log.js.map +1 -0
  94. package/lib/commonjs/internals/utils/request-fetch-adapter.js +50 -0
  95. package/lib/commonjs/internals/utils/request-fetch-adapter.js.map +1 -0
  96. package/lib/commonjs/internals/version.js +9 -0
  97. package/lib/commonjs/internals/version.js.map +1 -0
  98. package/lib/commonjs/notifyAppReady.js +83 -0
  99. package/lib/commonjs/notifyAppReady.js.map +1 -0
  100. package/lib/commonjs/reactNative.d.js +2 -0
  101. package/lib/commonjs/reactNative.d.js.map +1 -0
  102. package/lib/commonjs/restartApp.js +16 -0
  103. package/lib/commonjs/restartApp.js.map +1 -0
  104. package/lib/commonjs/sync.js +219 -0
  105. package/lib/commonjs/sync.js.map +1 -0
  106. package/lib/commonjs/types.js +6 -0
  107. package/lib/commonjs/types.js.map +1 -0
  108. package/lib/module/CodePush.js +84 -0
  109. package/lib/module/CodePush.js.map +1 -0
  110. package/lib/module/allowRestart.js +9 -0
  111. package/lib/module/allowRestart.js.map +1 -0
  112. package/lib/module/checkForUpdates.js +101 -0
  113. package/lib/module/checkForUpdates.js.map +1 -0
  114. package/lib/module/clearUpdates.js +12 -0
  115. package/lib/module/clearUpdates.js.map +1 -0
  116. package/lib/module/disallowRestart.js +9 -0
  117. package/lib/module/disallowRestart.js.map +1 -0
  118. package/lib/module/enums/CheckFrequency.enum.js +21 -0
  119. package/lib/module/enums/CheckFrequency.enum.js.map +1 -0
  120. package/lib/module/enums/DeploymentStatus.enum.js +17 -0
  121. package/lib/module/enums/DeploymentStatus.enum.js.map +1 -0
  122. package/lib/module/enums/InstallMode.enum.js +32 -0
  123. package/lib/module/enums/InstallMode.enum.js.map +1 -0
  124. package/lib/module/enums/SyncStatus.enum.js +49 -0
  125. package/lib/module/enums/SyncStatus.enum.js.map +1 -0
  126. package/lib/module/enums/UpdateState.enum.js +26 -0
  127. package/lib/module/enums/UpdateState.enum.js.map +1 -0
  128. package/lib/module/getUpdateMetadata.js +21 -0
  129. package/lib/module/getUpdateMetadata.js.map +1 -0
  130. package/lib/module/index.js +19 -0
  131. package/lib/module/index.js.map +1 -0
  132. package/lib/module/internals/AcquisitionSdk.js +5 -0
  133. package/lib/module/internals/AcquisitionSdk.js.map +1 -0
  134. package/lib/module/internals/LocalPackageImplementation.js +24 -0
  135. package/lib/module/internals/LocalPackageImplementation.js.map +1 -0
  136. package/lib/module/internals/NativeRNAppZungCodePushModule.js +4 -0
  137. package/lib/module/internals/NativeRNAppZungCodePushModule.js.map +1 -0
  138. package/lib/module/internals/RNAppZungCodePushModuleSpec.js +4 -0
  139. package/lib/module/internals/RNAppZungCodePushModuleSpec.js.map +1 -0
  140. package/lib/module/internals/RemotePackageImplementation.js +44 -0
  141. package/lib/module/internals/RemotePackageImplementation.js.map +1 -0
  142. package/lib/module/internals/getConfiguration.js +11 -0
  143. package/lib/module/internals/getConfiguration.js.map +1 -0
  144. package/lib/module/internals/getCurrentPackage.js +8 -0
  145. package/lib/module/internals/getCurrentPackage.js.map +1 -0
  146. package/lib/module/internals/getPromisifiedSdk.js +45 -0
  147. package/lib/module/internals/getPromisifiedSdk.js.map +1 -0
  148. package/lib/module/internals/shouldUpdateBeIgnored.js +58 -0
  149. package/lib/module/internals/shouldUpdateBeIgnored.js.map +1 -0
  150. package/lib/module/internals/types.js +4 -0
  151. package/lib/module/internals/types.js.map +1 -0
  152. package/lib/module/internals/utils/log.js +7 -0
  153. package/lib/module/internals/utils/log.js.map +1 -0
  154. package/lib/module/internals/utils/request-fetch-adapter.js +46 -0
  155. package/lib/module/internals/utils/request-fetch-adapter.js.map +1 -0
  156. package/lib/module/internals/version.js +5 -0
  157. package/lib/module/internals/version.js.map +1 -0
  158. package/lib/module/notifyAppReady.js +79 -0
  159. package/lib/module/notifyAppReady.js.map +1 -0
  160. package/lib/module/reactNative.d.js +2 -0
  161. package/lib/module/reactNative.d.js.map +1 -0
  162. package/lib/module/restartApp.js +13 -0
  163. package/lib/module/restartApp.js.map +1 -0
  164. package/lib/module/sync.js +215 -0
  165. package/lib/module/sync.js.map +1 -0
  166. package/lib/module/types.js +4 -0
  167. package/lib/module/types.js.map +1 -0
  168. package/lib/typescript/commonjs/package.json +1 -0
  169. package/lib/typescript/commonjs/src/CodePush.d.ts +24 -0
  170. package/lib/typescript/commonjs/src/CodePush.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/src/allowRestart.d.ts +5 -0
  172. package/lib/typescript/commonjs/src/allowRestart.d.ts.map +1 -0
  173. package/lib/typescript/commonjs/src/checkForUpdates.d.ts +9 -0
  174. package/lib/typescript/commonjs/src/checkForUpdates.d.ts.map +1 -0
  175. package/lib/typescript/commonjs/src/clearUpdates.d.ts +8 -0
  176. package/lib/typescript/commonjs/src/clearUpdates.d.ts.map +1 -0
  177. package/lib/typescript/commonjs/src/disallowRestart.d.ts +5 -0
  178. package/lib/typescript/commonjs/src/disallowRestart.d.ts.map +1 -0
  179. package/lib/typescript/commonjs/src/enums/CheckFrequency.enum.d.ts +18 -0
  180. package/lib/typescript/commonjs/src/enums/CheckFrequency.enum.d.ts.map +1 -0
  181. package/lib/typescript/commonjs/src/enums/DeploymentStatus.enum.d.ts +14 -0
  182. package/lib/typescript/commonjs/src/enums/DeploymentStatus.enum.d.ts.map +1 -0
  183. package/lib/typescript/commonjs/src/enums/InstallMode.enum.d.ts +27 -0
  184. package/lib/typescript/commonjs/src/enums/InstallMode.enum.d.ts.map +1 -0
  185. package/lib/typescript/commonjs/src/enums/SyncStatus.enum.d.ts +46 -0
  186. package/lib/typescript/commonjs/src/enums/SyncStatus.enum.d.ts.map +1 -0
  187. package/lib/typescript/commonjs/src/enums/UpdateState.enum.d.ts +21 -0
  188. package/lib/typescript/commonjs/src/enums/UpdateState.enum.d.ts.map +1 -0
  189. package/lib/typescript/commonjs/src/getUpdateMetadata.d.ts +9 -0
  190. package/lib/typescript/commonjs/src/getUpdateMetadata.d.ts.map +1 -0
  191. package/lib/typescript/commonjs/src/index.d.ts +17 -0
  192. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  193. package/lib/typescript/commonjs/src/internals/AcquisitionSdk.d.ts +3 -0
  194. package/lib/typescript/commonjs/src/internals/AcquisitionSdk.d.ts.map +1 -0
  195. package/lib/typescript/commonjs/src/internals/LocalPackageImplementation.d.ts +17 -0
  196. package/lib/typescript/commonjs/src/internals/LocalPackageImplementation.d.ts.map +1 -0
  197. package/lib/typescript/commonjs/src/internals/NativeRNAppZungCodePushModule.d.ts +3 -0
  198. package/lib/typescript/commonjs/src/internals/NativeRNAppZungCodePushModule.d.ts.map +1 -0
  199. package/lib/typescript/commonjs/src/internals/RNAppZungCodePushModuleSpec.d.ts +36 -0
  200. package/lib/typescript/commonjs/src/internals/RNAppZungCodePushModuleSpec.d.ts.map +1 -0
  201. package/lib/typescript/commonjs/src/internals/RemotePackageImplementation.d.ts +18 -0
  202. package/lib/typescript/commonjs/src/internals/RemotePackageImplementation.d.ts.map +1 -0
  203. package/lib/typescript/commonjs/src/internals/getConfiguration.d.ts +3 -0
  204. package/lib/typescript/commonjs/src/internals/getConfiguration.d.ts.map +1 -0
  205. package/lib/typescript/commonjs/src/internals/getCurrentPackage.d.ts +2 -0
  206. package/lib/typescript/commonjs/src/internals/getCurrentPackage.d.ts.map +1 -0
  207. package/lib/typescript/commonjs/src/internals/getPromisifiedSdk.d.ts +13 -0
  208. package/lib/typescript/commonjs/src/internals/getPromisifiedSdk.d.ts.map +1 -0
  209. package/lib/typescript/commonjs/src/internals/shouldUpdateBeIgnored.d.ts +3 -0
  210. package/lib/typescript/commonjs/src/internals/shouldUpdateBeIgnored.d.ts.map +1 -0
  211. package/lib/typescript/commonjs/src/internals/types.d.ts +16 -0
  212. package/lib/typescript/commonjs/src/internals/types.d.ts.map +1 -0
  213. package/lib/typescript/commonjs/src/internals/utils/log.d.ts +2 -0
  214. package/lib/typescript/commonjs/src/internals/utils/log.d.ts.map +1 -0
  215. package/lib/typescript/commonjs/src/internals/utils/request-fetch-adapter.d.ts +3 -0
  216. package/lib/typescript/commonjs/src/internals/utils/request-fetch-adapter.d.ts.map +1 -0
  217. package/lib/typescript/commonjs/src/internals/version.d.ts +2 -0
  218. package/lib/typescript/commonjs/src/internals/version.d.ts.map +1 -0
  219. package/lib/typescript/commonjs/src/notifyAppReady.d.ts +6 -0
  220. package/lib/typescript/commonjs/src/notifyAppReady.d.ts.map +1 -0
  221. package/lib/typescript/commonjs/src/restartApp.d.ts +7 -0
  222. package/lib/typescript/commonjs/src/restartApp.d.ts.map +1 -0
  223. package/lib/typescript/commonjs/src/sync.d.ts +17 -0
  224. package/lib/typescript/commonjs/src/sync.d.ts.map +1 -0
  225. package/lib/typescript/commonjs/src/types.d.ts +196 -0
  226. package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
  227. package/lib/typescript/module/package.json +1 -0
  228. package/lib/typescript/module/src/CodePush.d.ts +24 -0
  229. package/lib/typescript/module/src/CodePush.d.ts.map +1 -0
  230. package/lib/typescript/module/src/allowRestart.d.ts +5 -0
  231. package/lib/typescript/module/src/allowRestart.d.ts.map +1 -0
  232. package/lib/typescript/module/src/checkForUpdates.d.ts +9 -0
  233. package/lib/typescript/module/src/checkForUpdates.d.ts.map +1 -0
  234. package/lib/typescript/module/src/clearUpdates.d.ts +8 -0
  235. package/lib/typescript/module/src/clearUpdates.d.ts.map +1 -0
  236. package/lib/typescript/module/src/disallowRestart.d.ts +5 -0
  237. package/lib/typescript/module/src/disallowRestart.d.ts.map +1 -0
  238. package/lib/typescript/module/src/enums/CheckFrequency.enum.d.ts +18 -0
  239. package/lib/typescript/module/src/enums/CheckFrequency.enum.d.ts.map +1 -0
  240. package/lib/typescript/module/src/enums/DeploymentStatus.enum.d.ts +14 -0
  241. package/lib/typescript/module/src/enums/DeploymentStatus.enum.d.ts.map +1 -0
  242. package/lib/typescript/module/src/enums/InstallMode.enum.d.ts +27 -0
  243. package/lib/typescript/module/src/enums/InstallMode.enum.d.ts.map +1 -0
  244. package/lib/typescript/module/src/enums/SyncStatus.enum.d.ts +46 -0
  245. package/lib/typescript/module/src/enums/SyncStatus.enum.d.ts.map +1 -0
  246. package/lib/typescript/module/src/enums/UpdateState.enum.d.ts +21 -0
  247. package/lib/typescript/module/src/enums/UpdateState.enum.d.ts.map +1 -0
  248. package/lib/typescript/module/src/getUpdateMetadata.d.ts +9 -0
  249. package/lib/typescript/module/src/getUpdateMetadata.d.ts.map +1 -0
  250. package/lib/typescript/module/src/index.d.ts +17 -0
  251. package/lib/typescript/module/src/index.d.ts.map +1 -0
  252. package/lib/typescript/module/src/internals/AcquisitionSdk.d.ts +3 -0
  253. package/lib/typescript/module/src/internals/AcquisitionSdk.d.ts.map +1 -0
  254. package/lib/typescript/module/src/internals/LocalPackageImplementation.d.ts +17 -0
  255. package/lib/typescript/module/src/internals/LocalPackageImplementation.d.ts.map +1 -0
  256. package/lib/typescript/module/src/internals/NativeRNAppZungCodePushModule.d.ts +3 -0
  257. package/lib/typescript/module/src/internals/NativeRNAppZungCodePushModule.d.ts.map +1 -0
  258. package/lib/typescript/module/src/internals/RNAppZungCodePushModuleSpec.d.ts +36 -0
  259. package/lib/typescript/module/src/internals/RNAppZungCodePushModuleSpec.d.ts.map +1 -0
  260. package/lib/typescript/module/src/internals/RemotePackageImplementation.d.ts +18 -0
  261. package/lib/typescript/module/src/internals/RemotePackageImplementation.d.ts.map +1 -0
  262. package/lib/typescript/module/src/internals/getConfiguration.d.ts +3 -0
  263. package/lib/typescript/module/src/internals/getConfiguration.d.ts.map +1 -0
  264. package/lib/typescript/module/src/internals/getCurrentPackage.d.ts +2 -0
  265. package/lib/typescript/module/src/internals/getCurrentPackage.d.ts.map +1 -0
  266. package/lib/typescript/module/src/internals/getPromisifiedSdk.d.ts +13 -0
  267. package/lib/typescript/module/src/internals/getPromisifiedSdk.d.ts.map +1 -0
  268. package/lib/typescript/module/src/internals/shouldUpdateBeIgnored.d.ts +3 -0
  269. package/lib/typescript/module/src/internals/shouldUpdateBeIgnored.d.ts.map +1 -0
  270. package/lib/typescript/module/src/internals/types.d.ts +16 -0
  271. package/lib/typescript/module/src/internals/types.d.ts.map +1 -0
  272. package/lib/typescript/module/src/internals/utils/log.d.ts +2 -0
  273. package/lib/typescript/module/src/internals/utils/log.d.ts.map +1 -0
  274. package/lib/typescript/module/src/internals/utils/request-fetch-adapter.d.ts +3 -0
  275. package/lib/typescript/module/src/internals/utils/request-fetch-adapter.d.ts.map +1 -0
  276. package/lib/typescript/module/src/internals/version.d.ts +2 -0
  277. package/lib/typescript/module/src/internals/version.d.ts.map +1 -0
  278. package/lib/typescript/module/src/notifyAppReady.d.ts +6 -0
  279. package/lib/typescript/module/src/notifyAppReady.d.ts.map +1 -0
  280. package/lib/typescript/module/src/restartApp.d.ts +7 -0
  281. package/lib/typescript/module/src/restartApp.d.ts.map +1 -0
  282. package/lib/typescript/module/src/sync.d.ts +17 -0
  283. package/lib/typescript/module/src/sync.d.ts.map +1 -0
  284. package/lib/typescript/module/src/types.d.ts +196 -0
  285. package/lib/typescript/module/src/types.d.ts.map +1 -0
  286. package/package.json +79 -29
  287. package/react-native.config.js +8 -8
  288. package/scripts/generateBundledResourcesHash.js +1 -1
  289. package/scripts/getFilesInFolder.js +1 -1
  290. package/scripts/recordFilesBeforeBundleCommand.js +1 -1
  291. package/src/CodePush.tsx +108 -0
  292. package/src/allowRestart.ts +6 -0
  293. package/src/checkForUpdates.ts +109 -0
  294. package/src/clearUpdates.ts +9 -0
  295. package/src/disallowRestart.ts +6 -0
  296. package/src/enums/CheckFrequency.enum.ts +19 -0
  297. package/src/enums/DeploymentStatus.enum.ts +14 -0
  298. package/src/enums/InstallMode.enum.ts +31 -0
  299. package/src/enums/SyncStatus.enum.ts +53 -0
  300. package/src/enums/UpdateState.enum.ts +24 -0
  301. package/src/getUpdateMetadata.ts +23 -0
  302. package/src/index.ts +18 -0
  303. package/src/internals/AcquisitionSdk.ts +3 -0
  304. package/src/internals/LocalPackageImplementation.ts +45 -0
  305. package/src/internals/NativeRNAppZungCodePushModule.ts +3 -0
  306. package/src/internals/RNAppZungCodePushModuleSpec.ts +54 -0
  307. package/src/internals/RemotePackageImplementation.ts +69 -0
  308. package/src/internals/getConfiguration.ts +12 -0
  309. package/src/internals/getCurrentPackage.ts +6 -0
  310. package/src/internals/getPromisifiedSdk.ts +72 -0
  311. package/src/internals/shouldUpdateBeIgnored.ts +76 -0
  312. package/src/internals/types.ts +18 -0
  313. package/{logging.js → src/internals/utils/log.ts} +1 -3
  314. package/src/internals/utils/request-fetch-adapter.ts +58 -0
  315. package/src/internals/version.ts +2 -0
  316. package/src/notifyAppReady.ts +94 -0
  317. package/src/reactNative.d.ts +34 -0
  318. package/src/restartApp.ts +10 -0
  319. package/src/sync.ts +272 -0
  320. package/src/types.ts +237 -0
  321. package/tsconfig.build.json +4 -0
  322. package/tsconfig.json +29 -12
  323. package/windows/CodePush/CodePushConfig.cpp +3 -3
  324. package/windows/CodePush/CodePushConfig.h +3 -3
  325. package/windows/CodePush/CodePushNativeModule.cpp +27 -27
  326. package/windows/CodePush/CodePushNativeModule.h +4 -4
  327. package/windows/CodePush/CodePushTelemetryManager.cpp +12 -12
  328. package/windows/CodePush/CodePushTelemetryManager.h +1 -1
  329. package/.azurepipelines/build-rn-code-push-1es.yml +0 -104
  330. package/.azurepipelines/test-rn-code-push.yml +0 -94
  331. package/.config/CredScanSuppressions.json +0 -14
  332. package/AlertAdapter.js +0 -24
  333. package/CONTRIBUTING.md +0 -134
  334. package/CodePush.js +0 -671
  335. package/SECURITY.md +0 -41
  336. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushBuilder.java +0 -37
  337. package/android/app/src/main/java/com/microsoft/codepush/react/CodePushDialog.java +0 -102
  338. package/docs/multi-deployment-testing-android.md +0 -148
  339. package/docs/multi-deployment-testing-ios.md +0 -59
  340. package/ios/CodePush/Base64/Base64/MF_Base64Additions.h +0 -34
  341. package/ios/CodePush/Base64/Base64/MF_Base64Additions.m +0 -252
  342. package/ios/CodePush/Base64/README.md +0 -47
  343. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithm.h +0 -69
  344. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.h +0 -16
  345. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.m +0 -51
  346. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.h +0 -15
  347. package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.m +0 -55
  348. package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.h +0 -24
  349. package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.m +0 -41
  350. package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.h +0 -28
  351. package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.m +0 -205
  352. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.h +0 -103
  353. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.m +0 -322
  354. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.h +0 -37
  355. package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.m +0 -145
  356. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.h +0 -35
  357. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.m +0 -551
  358. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTRSAlgorithm.h +0 -23
  359. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.h +0 -43
  360. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.m +0 -230
  361. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.h +0 -31
  362. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.m +0 -113
  363. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.h +0 -38
  364. package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.m +0 -500
  365. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.h +0 -18
  366. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.m +0 -214
  367. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.h +0 -23
  368. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.m +0 -29
  369. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.h +0 -19
  370. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.m +0 -68
  371. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.h +0 -18
  372. package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.m +0 -72
  373. package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.h +0 -67
  374. package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.m +0 -111
  375. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.h +0 -119
  376. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.m +0 -307
  377. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.h +0 -94
  378. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.m +0 -619
  379. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.h +0 -164
  380. package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.m +0 -514
  381. package/ios/CodePush/JWT/Core/Coding/JWTCoding.h +0 -24
  382. package/ios/CodePush/JWT/Core/Coding/JWTCoding.m +0 -11
  383. package/ios/CodePush/JWT/Core/FrameworkSupplement/JWT.h +0 -52
  384. package/ios/CodePush/JWT/Core/FrameworkSupplement/Map.modulemap +0 -5
  385. package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.h +0 -28
  386. package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.m +0 -70
  387. package/ios/CodePush/JWT/Core/Supplement/JWTDeprecations.h +0 -22
  388. package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.h +0 -34
  389. package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.m +0 -73
  390. package/ios/CodePush/JWT/LICENSE +0 -19
  391. package/ios/CodePush/JWT/README.md +0 -489
  392. package/ios/CodePush/SSZipArchive/Info.plist +0 -26
  393. package/ios/CodePush/SSZipArchive/README.md +0 -1
  394. package/ios/CodePush/SSZipArchive/SSZipArchive.h +0 -178
  395. package/ios/CodePush/SSZipArchive/SSZipArchive.m +0 -1496
  396. package/ios/CodePush/SSZipArchive/SSZipCommon.h +0 -71
  397. package/ios/CodePush/SSZipArchive/Supporting Files/PrivacyInfo.xcprivacy +0 -23
  398. package/ios/CodePush/SSZipArchive/include/ZipArchive.h +0 -25
  399. package/ios/CodePush/SSZipArchive/minizip/LICENSE +0 -17
  400. package/ios/CodePush/SSZipArchive/minizip/mz.h +0 -273
  401. package/ios/CodePush/SSZipArchive/minizip/mz_compat.c +0 -1306
  402. package/ios/CodePush/SSZipArchive/minizip/mz_compat.h +0 -346
  403. package/ios/CodePush/SSZipArchive/minizip/mz_crypt.c +0 -187
  404. package/ios/CodePush/SSZipArchive/minizip/mz_crypt.h +0 -65
  405. package/ios/CodePush/SSZipArchive/minizip/mz_crypt_apple.c +0 -526
  406. package/ios/CodePush/SSZipArchive/minizip/mz_os.c +0 -348
  407. package/ios/CodePush/SSZipArchive/minizip/mz_os.h +0 -176
  408. package/ios/CodePush/SSZipArchive/minizip/mz_os_posix.c +0 -350
  409. package/ios/CodePush/SSZipArchive/minizip/mz_strm.c +0 -556
  410. package/ios/CodePush/SSZipArchive/minizip/mz_strm.h +0 -132
  411. package/ios/CodePush/SSZipArchive/minizip/mz_strm_buf.c +0 -383
  412. package/ios/CodePush/SSZipArchive/minizip/mz_strm_buf.h +0 -42
  413. package/ios/CodePush/SSZipArchive/minizip/mz_strm_mem.c +0 -269
  414. package/ios/CodePush/SSZipArchive/minizip/mz_strm_mem.h +0 -48
  415. package/ios/CodePush/SSZipArchive/minizip/mz_strm_os.h +0 -40
  416. package/ios/CodePush/SSZipArchive/minizip/mz_strm_os_posix.c +0 -203
  417. package/ios/CodePush/SSZipArchive/minizip/mz_strm_pkcrypt.c +0 -334
  418. package/ios/CodePush/SSZipArchive/minizip/mz_strm_pkcrypt.h +0 -46
  419. package/ios/CodePush/SSZipArchive/minizip/mz_strm_split.c +0 -429
  420. package/ios/CodePush/SSZipArchive/minizip/mz_strm_split.h +0 -43
  421. package/ios/CodePush/SSZipArchive/minizip/mz_strm_wzaes.c +0 -360
  422. package/ios/CodePush/SSZipArchive/minizip/mz_strm_wzaes.h +0 -46
  423. package/ios/CodePush/SSZipArchive/minizip/mz_strm_zlib.c +0 -389
  424. package/ios/CodePush/SSZipArchive/minizip/mz_strm_zlib.h +0 -43
  425. package/ios/CodePush/SSZipArchive/minizip/mz_zip.c +0 -2782
  426. package/ios/CodePush/SSZipArchive/minizip/mz_zip.h +0 -262
  427. package/ios/CodePush/SSZipArchive/minizip/mz_zip_rw.c +0 -1942
  428. package/ios/CodePush/SSZipArchive/minizip/mz_zip_rw.h +0 -285
  429. package/package-mixins.js +0 -68
  430. package/request-fetch-adapter.js +0 -52
  431. package/scripts/postlink/android/postlink.js +0 -87
  432. package/scripts/postlink/ios/postlink.js +0 -116
  433. package/scripts/postlink/run.js +0 -11
  434. package/scripts/postunlink/android/postunlink.js +0 -74
  435. package/scripts/postunlink/ios/postunlink.js +0 -87
  436. package/scripts/postunlink/run.js +0 -11
  437. package/scripts/tools/linkToolsAndroid.js +0 -57
  438. package/scripts/tools/linkToolsIos.js +0 -130
  439. package/tslint.json +0 -32
  440. package/typings/react-native-code-push.d.ts +0 -455
  441. package/windows-legacy/CodePush/CodePush.csproj +0 -128
  442. package/windows-legacy/CodePush/CodePushUtils.cs +0 -47
  443. package/windows-legacy/CodePush/FileUtils.cs +0 -40
  444. package/windows-legacy/CodePush/Properties/AssemblyInfo.cs +0 -29
  445. package/windows-legacy/CodePush/Properties/CodePush.rd.xml +0 -33
  446. package/windows-legacy/CodePush/UpdateManager.cs +0 -305
  447. package/windows-legacy/CodePush/UpdateUtils.cs +0 -46
  448. package/windows-legacy/CodePush.Net46/Adapters/Http/HttpProgress.cs +0 -28
  449. package/windows-legacy/CodePush.Net46/Adapters/Storage/ApplicationDataContainer.cs +0 -106
  450. package/windows-legacy/CodePush.Net46/CodePush.Net46.csproj +0 -103
  451. package/windows-legacy/CodePush.Net46/CodePushUtils.cs +0 -158
  452. package/windows-legacy/CodePush.Net46/FileUtils.cs +0 -55
  453. package/windows-legacy/CodePush.Net46/Properties/AssemblyInfo.cs +0 -36
  454. package/windows-legacy/CodePush.Net46/UpdateManager.cs +0 -330
  455. package/windows-legacy/CodePush.Net46/UpdateUtils.cs +0 -70
  456. package/windows-legacy/CodePush.Net46/packages.config +0 -5
  457. package/windows-legacy/CodePush.Net46.Test/ApplicationDataContainerTest.cs +0 -105
  458. package/windows-legacy/CodePush.Net46.Test/CodePush.Net46.Test.csproj +0 -137
  459. package/windows-legacy/CodePush.Net46.Test/Properties/AssemblyInfo.cs +0 -36
  460. package/windows-legacy/CodePush.Net46.Test/TelemetryManagerTest.cs +0 -117
  461. package/windows-legacy/CodePush.Net46.Test/app.config +0 -11
  462. package/windows-legacy/CodePush.Net46.Test/packages.config +0 -4
  463. package/windows-legacy/CodePush.Shared/CodePush.Shared.projitems +0 -22
  464. package/windows-legacy/CodePush.Shared/CodePush.Shared.shproj +0 -13
  465. package/windows-legacy/CodePush.Shared/CodePushConstants.cs +0 -35
  466. package/windows-legacy/CodePush.Shared/CodePushNativeModule.cs +0 -329
  467. package/windows-legacy/CodePush.Shared/CodePushReactPackage.cs +0 -235
  468. package/windows-legacy/CodePush.Shared/CodePushUtils.cs +0 -70
  469. package/windows-legacy/CodePush.Shared/InstallMode.cs +0 -9
  470. package/windows-legacy/CodePush.Shared/MinimumBackgroundListener.cs +0 -44
  471. package/windows-legacy/CodePush.Shared/SettingsManager.cs +0 -148
  472. package/windows-legacy/CodePush.Shared/TelemetryManager.cs +0 -250
  473. package/windows-legacy/CodePush.Shared/UpdateState.cs +0 -9
@@ -1,329 +0,0 @@
1
- using Newtonsoft.Json.Linq;
2
- using ReactNative;
3
- using ReactNative.Bridge;
4
- using ReactNative.Modules.Core;
5
- using System;
6
- using System.Collections.Generic;
7
- using System.IO;
8
- using System.Reflection;
9
- using System.Threading;
10
- using System.Threading.Tasks;
11
- #if WINDOWS_UWP
12
- using Windows.Web.Http;
13
- #else
14
- using CodePush.Net46.Adapters.Http;
15
- #endif
16
-
17
- namespace CodePush.ReactNative
18
- {
19
- internal class CodePushNativeModule : ReactContextNativeModuleBase
20
- {
21
- private CodePushReactPackage _codePush;
22
- private MinimumBackgroundListener _minimumBackgroundListener;
23
- private ReactContext _reactContext;
24
-
25
- public CodePushNativeModule(ReactContext reactContext, CodePushReactPackage codePush)
26
- : base(reactContext)
27
- {
28
- _reactContext = reactContext;
29
- _codePush = codePush;
30
- }
31
-
32
- public override string Name
33
- {
34
- get
35
- {
36
- return "CodePush";
37
- }
38
- }
39
-
40
- public override IReadOnlyDictionary<string, object> Constants
41
- {
42
- get
43
- {
44
- return new Dictionary<string, object>
45
- {
46
- { "codePushInstallModeImmediate", InstallMode.Immediate },
47
- { "codePushInstallModeOnNextResume", InstallMode.OnNextResume },
48
- { "codePushInstallModeOnNextRestart", InstallMode.OnNextRestart },
49
- { "codePushUpdateStateRunning", UpdateState.Running },
50
- { "codePushUpdateStatePending", UpdateState.Pending },
51
- { "codePushUpdateStateLatest", UpdateState.Latest },
52
- };
53
- }
54
- }
55
-
56
- public override void Initialize()
57
- {
58
- _codePush.InitializeUpdateAfterRestart();
59
- }
60
-
61
- [ReactMethod]
62
- public async void downloadUpdate(JObject updatePackage, bool notifyProgress, IPromise promise)
63
- {
64
- try
65
- {
66
- updatePackage[CodePushConstants.BinaryModifiedTimeKey] = "" + await FileUtils.GetBinaryResourcesModifiedTimeAsync(_codePush.AssetsBundleFileName).ConfigureAwait(false);
67
- await _codePush.UpdateManager.DownloadPackageAsync(
68
- updatePackage,
69
- _codePush.AssetsBundleFileName,
70
- new Progress<HttpProgress>(
71
- (HttpProgress progress) =>
72
- {
73
- if (!notifyProgress)
74
- {
75
- return;
76
- }
77
-
78
- var downloadProgress = new JObject()
79
- {
80
- { "totalBytes", progress.TotalBytesToReceive },
81
- { "receivedBytes", progress.BytesReceived }
82
- };
83
-
84
- _reactContext
85
- .GetJavaScriptModule<RCTDeviceEventEmitter>()
86
- .emit(CodePushConstants.DownloadProgressEventName, downloadProgress);
87
- }
88
- )
89
- ).ConfigureAwait(false);
90
-
91
- JObject newPackage = await _codePush.UpdateManager.GetPackageAsync((string)updatePackage[CodePushConstants.PackageHashKey]).ConfigureAwait(false);
92
- promise.Resolve(newPackage);
93
- }
94
- catch (InvalidDataException e)
95
- {
96
- CodePushUtils.Log(e.ToString());
97
- SettingsManager.SaveFailedUpdate(updatePackage);
98
- promise.Reject(e);
99
- }
100
- catch (Exception e)
101
- {
102
- CodePushUtils.Log(e.ToString());
103
- promise.Reject(e);
104
- }
105
- }
106
-
107
- [ReactMethod]
108
- public void getConfiguration(IPromise promise)
109
- {
110
- var config = new JObject
111
- {
112
- { "appVersion", _codePush.AppVersion },
113
- { "clientUniqueId", CodePushUtils.GetDeviceId() },
114
- { "deploymentKey", _codePush.DeploymentKey },
115
- { "serverUrl", CodePushConstants.CodePushServerUrl }
116
- };
117
-
118
- // TODO generate binary hash
119
- // string binaryHash = CodePushUpdateUtils.getHashForBinaryContents(mainActivity, isDebugMode);
120
- /*if (binaryHash != null)
121
- {
122
- configMap.putString(PACKAGE_HASH_KEY, binaryHash);
123
- }*/
124
- promise.Resolve(config);
125
- }
126
-
127
- [ReactMethod]
128
- public async void getUpdateMetadata(UpdateState updateState, IPromise promise)
129
- {
130
- JObject currentPackage = await _codePush.UpdateManager.GetCurrentPackageAsync().ConfigureAwait(false);
131
- if (currentPackage == null)
132
- {
133
- promise.Resolve("");
134
- return;
135
- }
136
-
137
- var currentUpdateIsPending = false;
138
-
139
- if (currentPackage[CodePushConstants.PackageHashKey] != null)
140
- {
141
- var currentHash = (string)currentPackage[CodePushConstants.PackageHashKey];
142
- currentUpdateIsPending = SettingsManager.IsPendingUpdate(currentHash);
143
- }
144
-
145
- if (updateState == UpdateState.Pending && !currentUpdateIsPending)
146
- {
147
- // The caller wanted a pending update
148
- // but there isn't currently one.
149
- promise.Resolve("");
150
- }
151
- else if (updateState == UpdateState.Running && currentUpdateIsPending)
152
- {
153
- // The caller wants the running update, but the current
154
- // one is pending, so we need to grab the previous.
155
- promise.Resolve(await _codePush.UpdateManager.GetPreviousPackageAsync().ConfigureAwait(false));
156
- }
157
- else
158
- {
159
- // The current package satisfies the request:
160
- // 1) Caller wanted a pending, and there is a pending update
161
- // 2) Caller wanted the running update, and there isn't a pending
162
- // 3) Caller wants the latest update, regardless if it's pending or not
163
- if (_codePush.IsRunningBinaryVersion)
164
- {
165
- // This only matters in Debug builds. Since we do not clear "outdated" updates,
166
- // we need to indicate to the JS side that somehow we have a current update on
167
- // disk that is not actually running.
168
- currentPackage["_isDebugOnly"] = true;
169
- }
170
-
171
- // Enable differentiating pending vs. non-pending updates
172
- currentPackage["isPending"] = currentUpdateIsPending;
173
- promise.Resolve(currentPackage);
174
- }
175
- }
176
-
177
-
178
- [ReactMethod]
179
- public async void getNewStatusReport(IPromise promise)
180
- {
181
- await Task.Run(() =>
182
- {
183
- if (_codePush.NeedToReportRollback)
184
- {
185
- _codePush.NeedToReportRollback = false;
186
-
187
- var failedUpdates = SettingsManager.GetFailedUpdates();
188
- if (failedUpdates != null && failedUpdates.Count > 0)
189
- {
190
- var lastFailedPackage = (JObject)failedUpdates[failedUpdates.Count - 1];
191
- var failedStatusReport = TelemetryManager.GetRollbackReport(lastFailedPackage);
192
- if (failedStatusReport != null)
193
- {
194
- promise.Resolve(failedStatusReport);
195
- return;
196
- }
197
- }
198
- }
199
- else if (_codePush.DidUpdate)
200
- {
201
- var currentPackage = _codePush.UpdateManager.GetCurrentPackageAsync().Result;
202
- if (currentPackage != null)
203
- {
204
- var newPackageStatusReport = TelemetryManager.GetUpdateReport(currentPackage);
205
- if (newPackageStatusReport != null)
206
- {
207
- promise.Resolve(newPackageStatusReport);
208
- return;
209
- }
210
- }
211
- }
212
- else if (_codePush.IsRunningBinaryVersion)
213
- {
214
- var newAppVersionStatusReport = TelemetryManager.GetBinaryUpdateReport(_codePush.AppVersion);
215
- if (newAppVersionStatusReport != null)
216
- {
217
- promise.Resolve(newAppVersionStatusReport);
218
- return;
219
- }
220
- }
221
- else
222
- {
223
- var retryStatusReport = TelemetryManager.GetRetryStatusReport();
224
- if (retryStatusReport != null)
225
- {
226
- promise.Resolve(retryStatusReport);
227
- return;
228
- }
229
- }
230
-
231
- promise.Resolve("");
232
- }).ConfigureAwait(false);
233
- }
234
-
235
- [ReactMethod]
236
- public async void installUpdate(JObject updatePackage, InstallMode installMode, int minimumBackgroundDuration, IPromise promise)
237
- {
238
- await _codePush.UpdateManager.InstallPackageAsync(updatePackage, SettingsManager.IsPendingUpdate(null)).ConfigureAwait(false);
239
- var pendingHash = (string)updatePackage[CodePushConstants.PackageHashKey];
240
- SettingsManager.SavePendingUpdate(pendingHash, /* isLoading */false);
241
- if (installMode == InstallMode.OnNextResume)
242
- {
243
- if (_minimumBackgroundListener == null)
244
- {
245
- // Ensure we do not add the listener twice.
246
- Action loadBundleAction = () =>
247
- {
248
- Context.RunOnNativeModulesQueueThread(async () =>
249
- {
250
- await LoadBundleAsync().ConfigureAwait(false);
251
- });
252
- };
253
-
254
- _minimumBackgroundListener = new MinimumBackgroundListener(loadBundleAction, minimumBackgroundDuration);
255
- _reactContext.AddLifecycleEventListener(_minimumBackgroundListener);
256
- }
257
- else
258
- {
259
- _minimumBackgroundListener.MinimumBackgroundDuration = minimumBackgroundDuration;
260
- }
261
- }
262
-
263
- promise.Resolve("");
264
- }
265
-
266
- [ReactMethod]
267
- public void isFailedUpdate(string packageHash, IPromise promise)
268
- {
269
- promise.Resolve(SettingsManager.IsFailedHash(packageHash));
270
- }
271
-
272
- [ReactMethod]
273
- public async void isFirstRun(string packageHash, IPromise promise)
274
- {
275
- bool isFirstRun = _codePush.DidUpdate
276
- && packageHash != null
277
- && packageHash.Length > 0
278
- && packageHash.Equals(await _codePush.UpdateManager.GetCurrentPackageHashAsync().ConfigureAwait(false));
279
- promise.Resolve(isFirstRun);
280
- }
281
-
282
- [ReactMethod]
283
- public void notifyApplicationReady(IPromise promise)
284
- {
285
- SettingsManager.RemovePendingUpdate();
286
- promise.Resolve("");
287
- }
288
-
289
- [ReactMethod]
290
- public async void restartApp(bool onlyIfUpdateIsPending)
291
- {
292
- // If this is an unconditional restart request, or there
293
- // is current pending update, then reload the app.
294
- if (!onlyIfUpdateIsPending || SettingsManager.IsPendingUpdate(null))
295
- {
296
- await LoadBundleAsync().ConfigureAwait(false);
297
- }
298
- }
299
-
300
- [ReactMethod]
301
- public async void recordStatusReported(JObject statusReport)
302
- {
303
- await Task.Run(() => TelemetryManager.RecordStatusReported(statusReport)).ConfigureAwait(false);
304
- }
305
-
306
- [ReactMethod]
307
- public async void saveStatusReportForRetry(JObject statusReport)
308
- {
309
- await Task.Run(() => TelemetryManager.SaveStatusReportForRetry(statusReport)).ConfigureAwait(false);
310
- }
311
-
312
- internal async Task LoadBundleAsync()
313
- {
314
- // #1) Get the private ReactInstanceManager, which is what includes
315
- // the logic to reload the current React context.
316
- var reactInstanceManager = _codePush.ReactInstanceManager;
317
-
318
- // #2) Update the locally stored JS bundle file path
319
- Type reactInstanceManagerType = typeof(ReactInstanceManager);
320
- string latestJSBundleFile = await _codePush.GetJavaScriptBundleFileAsync(_codePush.AssetsBundleFileName).ConfigureAwait(false);
321
- reactInstanceManagerType
322
- .GetField("_jsBundleFile", BindingFlags.NonPublic | BindingFlags.Instance)
323
- .SetValue(reactInstanceManager, latestJSBundleFile);
324
-
325
- // #3) Get the context creation method and fire it on the UI thread (which RN enforces)
326
- Context.RunOnDispatcherQueueThread(() => reactInstanceManager.RecreateReactContextAsync(CancellationToken.None));
327
- }
328
- }
329
- }
@@ -1,235 +0,0 @@
1
- using Newtonsoft.Json.Linq;
2
- using ReactNative;
3
- using ReactNative.Bridge;
4
- using ReactNative.Modules.Core;
5
- using ReactNative.UIManager;
6
- using System;
7
- using System.Collections.Generic;
8
- using System.Reflection;
9
- using System.Threading.Tasks;
10
-
11
-
12
- namespace CodePush.ReactNative
13
- {
14
- public sealed class CodePushReactPackage : IReactPackage
15
- {
16
- private static CodePushReactPackage CurrentInstance;
17
-
18
- internal string AppVersion { get; private set; }
19
- internal string DeploymentKey { get; private set; }
20
- internal string AssetsBundleFileName { get; private set; }
21
- internal bool NeedToReportRollback { get; set; } = false;
22
- internal bool DidUpdate { get; private set; } = false;
23
- internal bool IsRunningBinaryVersion { get; private set; } = false;
24
- #pragma warning disable CS0618 // Keeping for backward compatibility
25
- internal ReactPage MainPage { get; private set; }
26
- #pragma warning restore CS0618 // Keeping for backward compatibility
27
- internal ReactNativeHost Host { get; private set; }
28
- internal UpdateManager UpdateManager { get; private set; }
29
-
30
- internal ReactInstanceManager ReactInstanceManager
31
- {
32
- get
33
- {
34
- if (Host != null)
35
- {
36
- return Host.ReactInstanceManager;
37
- }
38
-
39
- #if WINDOWS_UWP
40
- #pragma warning disable CS0618 // Keeping for backward compatibility
41
- return (ReactInstanceManager)typeof(ReactPage)
42
- #pragma warning restore CS0618 // Keeping for backward compatibility
43
- .GetField("_reactInstanceManager", BindingFlags.NonPublic | BindingFlags.Instance)
44
- .GetValue(MainPage);
45
- #else
46
- return ((Lazy<ReactInstanceManager>)typeof(ReactPage)
47
- .GetField("_reactInstanceManager", BindingFlags.NonPublic | BindingFlags.Instance)
48
- .GetValue(MainPage)).Value as ReactInstanceManager;
49
- #endif
50
- }
51
- }
52
-
53
- internal bool UseDeveloperSupport
54
- {
55
- get
56
- {
57
- return Host?.UseDeveloperSupport ?? MainPage.UseDeveloperSupport;
58
- }
59
- }
60
-
61
-
62
- #pragma warning disable CS0618 // Keeping for backward compatibility
63
- public CodePushReactPackage(string deploymentKey, ReactPage mainPage)
64
- #pragma warning restore CS0618 // Keeping for backward compatibility
65
- {
66
- AppVersion = CodePushUtils.GetAppVersion();
67
- DeploymentKey = deploymentKey;
68
- MainPage = mainPage;
69
- UpdateManager = new UpdateManager();
70
-
71
- if (CurrentInstance != null)
72
- {
73
- CodePushUtils.Log("More than one CodePush instance has been initialized. Please use the instance method codePush.getBundleUrlInternal() to get the correct bundleURL for a particular instance.");
74
- }
75
-
76
- CurrentInstance = this;
77
- }
78
-
79
- public CodePushReactPackage(string deploymentKey, ReactNativeHost host)
80
- {
81
- AppVersion = CodePushUtils.GetAppVersion();
82
- DeploymentKey = deploymentKey;
83
- Host = host;
84
- UpdateManager = new UpdateManager();
85
-
86
- if (CurrentInstance != null)
87
- {
88
- CodePushUtils.Log("More than one CodePush instance has been initialized. Please use the instance method codePush.getBundleUrlInternal() to get the correct bundleURL for a particular instance.");
89
- }
90
-
91
- CurrentInstance = this;
92
- }
93
-
94
- #region Public methods
95
- public IReadOnlyList<Type> CreateJavaScriptModulesConfig()
96
- {
97
- return new List<Type>();
98
- }
99
-
100
- public IReadOnlyList<INativeModule> CreateNativeModules(ReactContext reactContext)
101
- {
102
- return new List<INativeModule>
103
- {
104
- new CodePushNativeModule(reactContext, this)
105
- };
106
- }
107
-
108
- public IReadOnlyList<IViewManager> CreateViewManagers(ReactContext reactContext)
109
- {
110
- return new List<IViewManager>();
111
- }
112
-
113
- public string GetJavaScriptBundleFile()
114
- {
115
- return GetJavaScriptBundleFile(CodePushConstants.DefaultJsBundleName);
116
- }
117
-
118
- public string GetJavaScriptBundleFile(string assetsBundleFileName)
119
- {
120
- if (CurrentInstance == null)
121
- {
122
- throw new InvalidOperationException("A CodePush instance has not been created yet. Have you added it to your app's list of ReactPackages?");
123
- }
124
-
125
- return CurrentInstance.GetJavaScriptBundleFileAsync(assetsBundleFileName).Result;
126
- }
127
-
128
- public async Task<string> GetJavaScriptBundleFileAsync(string assetsBundleFileName)
129
- {
130
- AssetsBundleFileName = assetsBundleFileName;
131
- string binaryJsBundleUrl = CodePushUtils.GetAssetsBundlePrefix() + assetsBundleFileName;
132
-
133
- var binaryResourcesModifiedTime = await FileUtils.GetBinaryResourcesModifiedTimeAsync(AssetsBundleFileName).ConfigureAwait(false);
134
- var packageFile = await UpdateManager.GetCurrentPackageBundleAsync(AssetsBundleFileName).ConfigureAwait(false);
135
- if (packageFile == null)
136
- {
137
- // There has not been any downloaded updates.
138
- CodePushUtils.LogBundleUrl(binaryJsBundleUrl);
139
- IsRunningBinaryVersion = true;
140
- return binaryJsBundleUrl;
141
- }
142
-
143
- var packageMetadata = await UpdateManager.GetCurrentPackageAsync().ConfigureAwait(false);
144
- long? binaryModifiedDateDuringPackageInstall = null;
145
- var binaryModifiedDateDuringPackageInstallString = (string)packageMetadata[CodePushConstants.BinaryModifiedTimeKey];
146
- if (binaryModifiedDateDuringPackageInstallString != null)
147
- {
148
- binaryModifiedDateDuringPackageInstall = long.Parse(binaryModifiedDateDuringPackageInstallString);
149
- }
150
-
151
- var packageAppVersion = (string)packageMetadata["appVersion"];
152
-
153
- if (binaryModifiedDateDuringPackageInstall != null &&
154
- binaryModifiedDateDuringPackageInstall == binaryResourcesModifiedTime &&
155
- AppVersion.Equals(packageAppVersion))
156
- {
157
- CodePushUtils.LogBundleUrl(packageFile.Path);
158
- IsRunningBinaryVersion = false;
159
-
160
- return CodePushUtils.GetFileBundlePrefix() + CodePushUtils.ExtractSubFolder(packageFile.Path);
161
- }
162
- else
163
- {
164
- // The binary version is newer.
165
- DidUpdate = false;
166
- if (!UseDeveloperSupport || !AppVersion.Equals(packageAppVersion))
167
- {
168
- await ClearUpdatesAsync().ConfigureAwait(false);
169
- }
170
-
171
- CodePushUtils.LogBundleUrl(binaryJsBundleUrl);
172
- IsRunningBinaryVersion = true;
173
- return binaryJsBundleUrl;
174
- }
175
- }
176
-
177
- #endregion
178
-
179
- #region Internal methods
180
-
181
- internal void InitializeUpdateAfterRestart()
182
- {
183
- // Reset the state which indicates that
184
- // the app was just freshly updated.
185
- DidUpdate = false;
186
-
187
- JObject pendingUpdate = SettingsManager.GetPendingUpdate();
188
- if (pendingUpdate != null)
189
- {
190
- var updateIsLoading = (bool)pendingUpdate[CodePushConstants.PendingUpdateIsLoadingKey];
191
- if (updateIsLoading)
192
- {
193
- // Pending update was initialized, but notifyApplicationReady was not called.
194
- // Therefore, deduce that it is a broken update and rollback.
195
- CodePushUtils.Log("Update did not finish loading the last time, rolling back to a previous version.");
196
- NeedToReportRollback = true;
197
- RollbackPackageAsync().Wait();
198
- }
199
- else
200
- {
201
- DidUpdate = true;
202
- // Clear the React dev bundle cache so that new updates can be loaded.
203
- if (UseDeveloperSupport)
204
- {
205
- FileUtils.ClearReactDevBundleCacheAsync().Wait();
206
- }
207
- // Mark that we tried to initialize the new update, so that if it crashes,
208
- // we will know that we need to rollback when the app next starts.
209
- SettingsManager.SavePendingUpdate((string)pendingUpdate[CodePushConstants.PendingUpdateHashKey], /* isLoading */true);
210
- }
211
- }
212
- }
213
-
214
- internal async Task ClearUpdatesAsync()
215
- {
216
- await UpdateManager.ClearUpdatesAsync().ConfigureAwait(false);
217
- SettingsManager.RemovePendingUpdate();
218
- SettingsManager.RemoveFailedUpdates();
219
- }
220
-
221
- #endregion
222
-
223
- #region Private methods
224
-
225
- private async Task RollbackPackageAsync()
226
- {
227
- JObject failedPackage = await UpdateManager.GetCurrentPackageAsync().ConfigureAwait(false);
228
- SettingsManager.SaveFailedUpdate(failedPackage);
229
- await UpdateManager.RollbackPackageAsync().ConfigureAwait(false);
230
- SettingsManager.RemovePendingUpdate();
231
- }
232
-
233
- #endregion
234
- }
235
- }
@@ -1,70 +0,0 @@
1
- using System;
2
- using System.Diagnostics;
3
- using System.Linq;
4
- using System.IO;
5
- #if WINDOWS_UWP
6
- using Windows.ApplicationModel;
7
- using Windows.Storage;
8
- #endif
9
-
10
- namespace CodePush.ReactNative
11
- {
12
- internal partial class CodePushUtils
13
- {
14
- internal static void Log(string message)
15
- {
16
- Debug.WriteLine("[CodePush] " + message, CodePushConstants.ReactNativeLogCategory);
17
- }
18
-
19
- internal static void LogBundleUrl(string path)
20
- {
21
- Log("Loading JS bundle from \"" + path + "\"");
22
- }
23
-
24
- static string _deviceId = String.Empty;
25
-
26
- internal static string GetDeviceId()
27
- {
28
- //It's quite long operation, cache it
29
- if (!String.IsNullOrEmpty(_deviceId))
30
- return _deviceId;
31
-
32
- _deviceId = GetDeviceIdImpl();
33
- return _deviceId;
34
- }
35
-
36
- internal static string GetAppVersion()
37
- {
38
- #if WINDOWS_UWP
39
- return Package.Current.Id.Version.Major + "." + Package.Current.Id.Version.Minor + "." + Package.Current.Id.Version.Build;
40
- #else
41
- return applicationInfo.Version;
42
- #endif
43
- }
44
-
45
- internal static string GetAppFolder()
46
- {
47
- #if WINDOWS_UWP
48
- return ApplicationData.Current.LocalFolder.Path;
49
- #else
50
- return AppDomain.CurrentDomain.BaseDirectory;
51
- #endif
52
- }
53
-
54
- internal static string GetAssetsBundlePrefix()
55
- {
56
- #if WINDOWS_UWP
57
- return CodePushConstants.AssetsBundlePrefix;
58
- #else
59
- return Path.Combine(GetAppFolder(), CodePushConstants.AssetsBundlePrefix);
60
- #endif
61
- }
62
-
63
- internal static string ExtractSubFolder(string fullPath)
64
- {
65
- var codePushSubPathArray = fullPath.Split(Path.DirectorySeparatorChar);
66
- return String.Join("/", codePushSubPathArray.SkipWhile((value, index) => codePushSubPathArray.Length - index > 4).ToArray());
67
- }
68
-
69
- }
70
- }
@@ -1,9 +0,0 @@
1
- namespace CodePush.ReactNative
2
- {
3
- enum InstallMode
4
- {
5
- Immediate,
6
- OnNextRestart,
7
- OnNextResume
8
- }
9
- }
@@ -1,44 +0,0 @@
1
- using ReactNative.Bridge;
2
- using System;
3
-
4
- namespace CodePush.ReactNative
5
- {
6
- internal class MinimumBackgroundListener : ILifecycleEventListener
7
- {
8
- private DateTimeOffset? _lastSuspendDate;
9
- private Action _resumeAction;
10
-
11
- internal int MinimumBackgroundDuration { get; set; }
12
-
13
- internal MinimumBackgroundListener(Action resumeAction, int minimumBackgroundDuration)
14
- {
15
- _resumeAction = resumeAction;
16
- MinimumBackgroundDuration = minimumBackgroundDuration;
17
- }
18
-
19
- public void OnDestroy()
20
- {
21
- }
22
-
23
- public void OnResume()
24
- {
25
- if (_lastSuspendDate != null)
26
- {
27
- // Determine how long the app was in the background and ensure
28
- // that it meets the minimum duration amount of time.
29
- double durationInBackground = (DateTimeOffset.Now - _lastSuspendDate.Value).TotalSeconds;
30
- if (durationInBackground >= MinimumBackgroundDuration)
31
- {
32
- _resumeAction.Invoke();
33
- }
34
- }
35
- }
36
-
37
- public void OnSuspend()
38
- {
39
- // Save the current time so that when the app is later
40
- // resumed, we can detect how long it was in the background.
41
- _lastSuspendDate = DateTimeOffset.Now;
42
- }
43
- }
44
- }