react-native-google-mobile-ads 4.1.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 (373) hide show
  1. package/LICENSE +32 -0
  2. package/README.md +65 -0
  3. package/RNGoogleMobileAds.podspec +42 -0
  4. package/__tests__/consent.test.ts +25 -0
  5. package/__tests__/googleMobileAds.test.ts +63 -0
  6. package/__tests__/interstitial.test.ts +53 -0
  7. package/__tests__/requestOptions.test.tsx +4 -0
  8. package/__tests__/rewarded.test.tsx +4 -0
  9. package/__tests__/showOptions.test.tsx +4 -0
  10. package/android/.editorconfig +10 -0
  11. package/android/app-json.gradle +69 -0
  12. package/android/build.gradle +98 -0
  13. package/android/lint.xml +5 -0
  14. package/android/settings.gradle +1 -0
  15. package/android/src/main/AndroidManifest.xml +17 -0
  16. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeAppModule.java +169 -0
  17. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsAppOpenModule.java +161 -0
  18. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java +209 -0
  19. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsCommon.java +256 -0
  20. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsConsentModule.java +226 -0
  21. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsEvent.java +72 -0
  22. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsInterstitialModule.java +159 -0
  23. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsModule.java +143 -0
  24. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsPackage.java +48 -0
  25. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsRewardedModule.java +177 -0
  26. package/android/src/main/java/io/invertase/googlemobileads/common/RCTConvert.java +111 -0
  27. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeApp.java +34 -0
  28. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeEvent.java +41 -0
  29. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeEventEmitter.java +150 -0
  30. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeInitProvider.java +77 -0
  31. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeJSON.java +107 -0
  32. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeMeta.java +92 -0
  33. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeModule.java +96 -0
  34. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativePreferences.java +86 -0
  35. package/android/src/main/java/io/invertase/googlemobileads/common/SharedUtils.java +427 -0
  36. package/android/src/main/java/io/invertase/googlemobileads/common/TaskExecutorService.java +124 -0
  37. package/android/src/main/java/io/invertase/googlemobileads/interfaces/ContextProvider.java +30 -0
  38. package/android/src/main/java/io/invertase/googlemobileads/interfaces/NativeError.java +28 -0
  39. package/android/src/main/java/io/invertase/googlemobileads/interfaces/NativeEvent.java +26 -0
  40. package/babel.config.js +18 -0
  41. package/docs/displaying-ads.mdx +319 -0
  42. package/docs/european-user-consent.mdx +258 -0
  43. package/docs/img/logo_admob_192px.svg +19 -0
  44. package/docs/index.mdx +168 -0
  45. package/docs.json +9 -0
  46. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsAppOpenModule.h +29 -0
  47. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsAppOpenModule.m +98 -0
  48. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerViewManager.h +23 -0
  49. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerViewManager.m +153 -0
  50. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsCommon.h +60 -0
  51. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsCommon.m +201 -0
  52. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsConsentModule.h +26 -0
  53. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsConsentModule.m +179 -0
  54. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenContentDelegate.h +32 -0
  55. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenContentDelegate.m +57 -0
  56. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsInterstitialModule.h +25 -0
  57. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsInterstitialModule.m +124 -0
  58. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsModule.h +24 -0
  59. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsModule.m +104 -0
  60. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedModule.h +25 -0
  61. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedModule.m +173 -0
  62. package/ios/RNGoogleMobileAds/common/RNAppModule.h +24 -0
  63. package/ios/RNGoogleMobileAds/common/RNAppModule.m +158 -0
  64. package/ios/RNGoogleMobileAds/common/RNJSON.h +34 -0
  65. package/ios/RNGoogleMobileAds/common/RNJSON.m +93 -0
  66. package/ios/RNGoogleMobileAds/common/RNMeta.h +30 -0
  67. package/ios/RNGoogleMobileAds/common/RNMeta.m +61 -0
  68. package/ios/RNGoogleMobileAds/common/RNPreferences.h +44 -0
  69. package/ios/RNGoogleMobileAds/common/RNPreferences.m +94 -0
  70. package/ios/RNGoogleMobileAds/common/RNRCTEventEmitter.h +73 -0
  71. package/ios/RNGoogleMobileAds/common/RNRCTEventEmitter.m +150 -0
  72. package/ios/RNGoogleMobileAds/common/RNSharedUtils.h +48 -0
  73. package/ios/RNGoogleMobileAds/common/RNSharedUtils.m +56 -0
  74. package/ios/RNGoogleMobileAds.xcodeproj/project.pbxproj +377 -0
  75. package/ios/RNGoogleMobileAds.xcodeproj/xcshareddata/IDETemplateMacros.plist +24 -0
  76. package/ios_config.sh +140 -0
  77. package/jest.config.js +6 -0
  78. package/jest.setup.ts +29 -0
  79. package/lib/commonjs/AdEventType.js +34 -0
  80. package/lib/commonjs/AdEventType.js.map +1 -0
  81. package/lib/commonjs/AdsConsent.js +160 -0
  82. package/lib/commonjs/AdsConsent.js.map +1 -0
  83. package/lib/commonjs/AdsConsentDebugGeography.js +38 -0
  84. package/lib/commonjs/AdsConsentDebugGeography.js.map +1 -0
  85. package/lib/commonjs/AdsConsentStatus.js +36 -0
  86. package/lib/commonjs/AdsConsentStatus.js.map +1 -0
  87. package/lib/commonjs/BannerAdSize.js +38 -0
  88. package/lib/commonjs/BannerAdSize.js.map +1 -0
  89. package/lib/commonjs/MaxAdContentRating.js +33 -0
  90. package/lib/commonjs/MaxAdContentRating.js.map +1 -0
  91. package/lib/commonjs/MobileAds.js +67 -0
  92. package/lib/commonjs/MobileAds.js.map +1 -0
  93. package/lib/commonjs/RewardedAdEventType.js +31 -0
  94. package/lib/commonjs/RewardedAdEventType.js.map +1 -0
  95. package/lib/commonjs/TestIds.js +47 -0
  96. package/lib/commonjs/TestIds.js.map +1 -0
  97. package/lib/commonjs/ads/AppOpenAd.js +96 -0
  98. package/lib/commonjs/ads/AppOpenAd.js.map +1 -0
  99. package/lib/commonjs/ads/BannerAd.js +128 -0
  100. package/lib/commonjs/ads/BannerAd.js.map +1 -0
  101. package/lib/commonjs/ads/InterstitialAd.js +163 -0
  102. package/lib/commonjs/ads/InterstitialAd.js.map +1 -0
  103. package/lib/commonjs/ads/MobileAd.js +90 -0
  104. package/lib/commonjs/ads/MobileAd.js.map +1 -0
  105. package/lib/commonjs/ads/RewardedAd.js +169 -0
  106. package/lib/commonjs/ads/RewardedAd.js.map +1 -0
  107. package/lib/commonjs/common/Base64.js +121 -0
  108. package/lib/commonjs/common/Base64.js.map +1 -0
  109. package/lib/commonjs/common/MutatableParams.js +46 -0
  110. package/lib/commonjs/common/MutatableParams.js.map +1 -0
  111. package/lib/commonjs/common/ReferenceBase.js +59 -0
  112. package/lib/commonjs/common/ReferenceBase.js.map +1 -0
  113. package/lib/commonjs/common/deeps.js +101 -0
  114. package/lib/commonjs/common/deeps.js.map +1 -0
  115. package/lib/commonjs/common/id.js +82 -0
  116. package/lib/commonjs/common/id.js.map +1 -0
  117. package/lib/commonjs/common/index.js +212 -0
  118. package/lib/commonjs/common/index.js.map +1 -0
  119. package/lib/commonjs/common/path.js +144 -0
  120. package/lib/commonjs/common/path.js.map +1 -0
  121. package/lib/commonjs/common/promise.js +70 -0
  122. package/lib/commonjs/common/promise.js.map +1 -0
  123. package/lib/commonjs/common/serialize.js +52 -0
  124. package/lib/commonjs/common/serialize.js.map +1 -0
  125. package/lib/commonjs/common/validate.js +239 -0
  126. package/lib/commonjs/common/validate.js.map +1 -0
  127. package/lib/commonjs/declarations.d.js +2 -0
  128. package/lib/commonjs/declarations.d.js.map +1 -0
  129. package/lib/commonjs/index.js +143 -0
  130. package/lib/commonjs/index.js.map +1 -0
  131. package/lib/commonjs/internal/GoogleMobileAdsNativeEventEmitter.js +76 -0
  132. package/lib/commonjs/internal/GoogleMobileAdsNativeEventEmitter.js.map +1 -0
  133. package/lib/commonjs/internal/Module.js +60 -0
  134. package/lib/commonjs/internal/Module.js.map +1 -0
  135. package/lib/commonjs/internal/NativeError.js +70 -0
  136. package/lib/commonjs/internal/NativeError.js.map +1 -0
  137. package/lib/commonjs/internal/SharedEventEmitter.js +31 -0
  138. package/lib/commonjs/internal/SharedEventEmitter.js.map +1 -0
  139. package/lib/commonjs/internal/constants.js +30 -0
  140. package/lib/commonjs/internal/constants.js.map +1 -0
  141. package/lib/commonjs/internal/index.js +49 -0
  142. package/lib/commonjs/internal/index.js.map +1 -0
  143. package/lib/commonjs/internal/registry/nativeModule.js +231 -0
  144. package/lib/commonjs/internal/registry/nativeModule.js.map +1 -0
  145. package/lib/commonjs/types/AdEventListener.js +6 -0
  146. package/lib/commonjs/types/AdEventListener.js.map +1 -0
  147. package/lib/commonjs/types/AdShowOptions.js +2 -0
  148. package/lib/commonjs/types/AdShowOptions.js.map +1 -0
  149. package/lib/commonjs/types/AdapterStatus.js +18 -0
  150. package/lib/commonjs/types/AdapterStatus.js.map +1 -0
  151. package/lib/commonjs/types/AdsConsent.interface.js +6 -0
  152. package/lib/commonjs/types/AdsConsent.interface.js.map +1 -0
  153. package/lib/commonjs/types/BannerAdProps.js +6 -0
  154. package/lib/commonjs/types/BannerAdProps.js.map +1 -0
  155. package/lib/commonjs/types/GoogleMobileAdsNativeModule.js +6 -0
  156. package/lib/commonjs/types/GoogleMobileAdsNativeModule.js.map +1 -0
  157. package/lib/commonjs/types/MobileAd.interface.js +6 -0
  158. package/lib/commonjs/types/MobileAd.interface.js.map +1 -0
  159. package/lib/commonjs/types/MobileAdsModule.interface.js +6 -0
  160. package/lib/commonjs/types/MobileAdsModule.interface.js.map +1 -0
  161. package/lib/commonjs/types/Module.interface.js +2 -0
  162. package/lib/commonjs/types/Module.interface.js.map +1 -0
  163. package/lib/commonjs/types/RequestConfiguration.js +6 -0
  164. package/lib/commonjs/types/RequestConfiguration.js.map +1 -0
  165. package/lib/commonjs/types/RequestOptions.js +2 -0
  166. package/lib/commonjs/types/RequestOptions.js.map +1 -0
  167. package/lib/commonjs/types/RewardedAdReward.js +2 -0
  168. package/lib/commonjs/types/RewardedAdReward.js.map +1 -0
  169. package/lib/commonjs/validateAdRequestConfiguration.js +69 -0
  170. package/lib/commonjs/validateAdRequestConfiguration.js.map +1 -0
  171. package/lib/commonjs/validateAdRequestOptions.js +158 -0
  172. package/lib/commonjs/validateAdRequestOptions.js.map +1 -0
  173. package/lib/commonjs/validateAdShowOptions.js +47 -0
  174. package/lib/commonjs/validateAdShowOptions.js.map +1 -0
  175. package/lib/commonjs/version.js +10 -0
  176. package/lib/commonjs/version.js.map +1 -0
  177. package/lib/module/AdEventType.js +26 -0
  178. package/lib/module/AdEventType.js.map +1 -0
  179. package/lib/module/AdsConsent.js +148 -0
  180. package/lib/module/AdsConsent.js.map +1 -0
  181. package/lib/module/AdsConsentDebugGeography.js +30 -0
  182. package/lib/module/AdsConsentDebugGeography.js.map +1 -0
  183. package/lib/module/AdsConsentStatus.js +28 -0
  184. package/lib/module/AdsConsentStatus.js.map +1 -0
  185. package/lib/module/BannerAdSize.js +30 -0
  186. package/lib/module/BannerAdSize.js.map +1 -0
  187. package/lib/module/MaxAdContentRating.js +25 -0
  188. package/lib/module/MaxAdContentRating.js.map +1 -0
  189. package/lib/module/MobileAds.js +53 -0
  190. package/lib/module/MobileAds.js.map +1 -0
  191. package/lib/module/RewardedAdEventType.js +23 -0
  192. package/lib/module/RewardedAdEventType.js.map +1 -0
  193. package/lib/module/TestIds.js +38 -0
  194. package/lib/module/TestIds.js.map +1 -0
  195. package/lib/module/ads/AppOpenAd.js +81 -0
  196. package/lib/module/ads/AppOpenAd.js.map +1 -0
  197. package/lib/module/ads/BannerAd.js +108 -0
  198. package/lib/module/ads/BannerAd.js.map +1 -0
  199. package/lib/module/ads/InterstitialAd.js +149 -0
  200. package/lib/module/ads/InterstitialAd.js.map +1 -0
  201. package/lib/module/ads/MobileAd.js +94 -0
  202. package/lib/module/ads/MobileAd.js.map +1 -0
  203. package/lib/module/ads/RewardedAd.js +155 -0
  204. package/lib/module/ads/RewardedAd.js.map +1 -0
  205. package/lib/module/common/Base64.js +106 -0
  206. package/lib/module/common/Base64.js.map +1 -0
  207. package/lib/module/common/MutatableParams.js +52 -0
  208. package/lib/module/common/MutatableParams.js.map +1 -0
  209. package/lib/module/common/ReferenceBase.js +50 -0
  210. package/lib/module/common/ReferenceBase.js.map +1 -0
  211. package/lib/module/common/deeps.js +91 -0
  212. package/lib/module/common/deeps.js.map +1 -0
  213. package/lib/module/common/id.js +74 -0
  214. package/lib/module/common/id.js.map +1 -0
  215. package/lib/module/common/index.js +109 -0
  216. package/lib/module/common/index.js.map +1 -0
  217. package/lib/module/common/path.js +120 -0
  218. package/lib/module/common/path.js.map +1 -0
  219. package/lib/module/common/promise.js +60 -0
  220. package/lib/module/common/promise.js.map +1 -0
  221. package/lib/module/common/serialize.js +41 -0
  222. package/lib/module/common/serialize.js.map +1 -0
  223. package/lib/module/common/validate.js +197 -0
  224. package/lib/module/common/validate.js.map +1 -0
  225. package/lib/module/declarations.d.js +2 -0
  226. package/lib/module/declarations.d.js.map +1 -0
  227. package/lib/module/index.js +33 -0
  228. package/lib/module/index.js.map +1 -0
  229. package/lib/module/internal/GoogleMobileAdsNativeEventEmitter.js +83 -0
  230. package/lib/module/internal/GoogleMobileAdsNativeEventEmitter.js.map +1 -0
  231. package/lib/module/internal/Module.js +64 -0
  232. package/lib/module/internal/Module.js.map +1 -0
  233. package/lib/module/internal/NativeError.js +61 -0
  234. package/lib/module/internal/NativeError.js.map +1 -0
  235. package/lib/module/internal/SharedEventEmitter.js +20 -0
  236. package/lib/module/internal/SharedEventEmitter.js.map +1 -0
  237. package/lib/module/internal/constants.js +20 -0
  238. package/lib/module/internal/constants.js.map +1 -0
  239. package/lib/module/internal/index.js +21 -0
  240. package/lib/module/internal/index.js.map +1 -0
  241. package/lib/module/internal/registry/nativeModule.js +215 -0
  242. package/lib/module/internal/registry/nativeModule.js.map +1 -0
  243. package/lib/module/types/AdEventListener.js +2 -0
  244. package/lib/module/types/AdEventListener.js.map +1 -0
  245. package/lib/module/types/AdShowOptions.js +2 -0
  246. package/lib/module/types/AdShowOptions.js.map +1 -0
  247. package/lib/module/types/AdapterStatus.js +10 -0
  248. package/lib/module/types/AdapterStatus.js.map +1 -0
  249. package/lib/module/types/AdsConsent.interface.js +2 -0
  250. package/lib/module/types/AdsConsent.interface.js.map +1 -0
  251. package/lib/module/types/BannerAdProps.js +2 -0
  252. package/lib/module/types/BannerAdProps.js.map +1 -0
  253. package/lib/module/types/GoogleMobileAdsNativeModule.js +2 -0
  254. package/lib/module/types/GoogleMobileAdsNativeModule.js.map +1 -0
  255. package/lib/module/types/MobileAd.interface.js +2 -0
  256. package/lib/module/types/MobileAd.interface.js.map +1 -0
  257. package/lib/module/types/MobileAdsModule.interface.js +2 -0
  258. package/lib/module/types/MobileAdsModule.interface.js.map +1 -0
  259. package/lib/module/types/Module.interface.js +2 -0
  260. package/lib/module/types/Module.interface.js.map +1 -0
  261. package/lib/module/types/RequestConfiguration.js +2 -0
  262. package/lib/module/types/RequestConfiguration.js.map +1 -0
  263. package/lib/module/types/RequestOptions.js +2 -0
  264. package/lib/module/types/RequestOptions.js.map +1 -0
  265. package/lib/module/types/RewardedAdReward.js +2 -0
  266. package/lib/module/types/RewardedAdReward.js.map +1 -0
  267. package/lib/module/validateAdRequestConfiguration.js +60 -0
  268. package/lib/module/validateAdRequestConfiguration.js.map +1 -0
  269. package/lib/module/validateAdRequestOptions.js +150 -0
  270. package/lib/module/validateAdRequestOptions.js.map +1 -0
  271. package/lib/module/validateAdShowOptions.js +39 -0
  272. package/lib/module/validateAdShowOptions.js.map +1 -0
  273. package/lib/module/version.js +3 -0
  274. package/lib/module/version.js.map +1 -0
  275. package/lib/typescript/AdEventType.d.ts +47 -0
  276. package/lib/typescript/AdsConsent.d.ts +2 -0
  277. package/lib/typescript/AdsConsentDebugGeography.d.ts +19 -0
  278. package/lib/typescript/AdsConsentStatus.d.ts +17 -0
  279. package/lib/typescript/BannerAdSize.d.ts +34 -0
  280. package/lib/typescript/MaxAdContentRating.d.ts +18 -0
  281. package/lib/typescript/MobileAds.d.ts +11 -0
  282. package/lib/typescript/RewardedAdEventType.d.ts +46 -0
  283. package/lib/typescript/TestIds.d.ts +6 -0
  284. package/lib/typescript/ads/AppOpenAd.d.ts +11 -0
  285. package/lib/typescript/ads/BannerAd.d.ts +3 -0
  286. package/lib/typescript/ads/InterstitialAd.d.ts +78 -0
  287. package/lib/typescript/ads/MobileAd.d.ts +32 -0
  288. package/lib/typescript/ads/RewardedAd.d.ts +84 -0
  289. package/lib/typescript/common/Base64.d.ts +14 -0
  290. package/lib/typescript/common/MutatableParams.d.ts +9 -0
  291. package/lib/typescript/common/ReferenceBase.d.ts +11 -0
  292. package/lib/typescript/common/deeps.d.ts +18 -0
  293. package/lib/typescript/common/id.d.ts +11 -0
  294. package/lib/typescript/common/index.d.ts +28 -0
  295. package/lib/typescript/common/path.d.ts +43 -0
  296. package/lib/typescript/common/promise.d.ts +13 -0
  297. package/lib/typescript/common/serialize.d.ts +5 -0
  298. package/lib/typescript/common/validate.d.ts +90 -0
  299. package/lib/typescript/index.d.ts +14 -0
  300. package/lib/typescript/internal/GoogleMobileAdsNativeEventEmitter.d.ts +12 -0
  301. package/lib/typescript/internal/Module.d.ts +13 -0
  302. package/lib/typescript/internal/NativeError.d.ts +26 -0
  303. package/lib/typescript/internal/SharedEventEmitter.d.ts +2 -0
  304. package/lib/typescript/internal/constants.d.ts +3 -0
  305. package/lib/typescript/internal/index.d.ts +4 -0
  306. package/lib/typescript/internal/registry/nativeModule.d.ts +15 -0
  307. package/lib/typescript/types/AdEventListener.d.ts +11 -0
  308. package/lib/typescript/types/AdShowOptions.d.ts +12 -0
  309. package/lib/typescript/types/AdapterStatus.d.ts +18 -0
  310. package/lib/typescript/types/AdsConsent.interface.d.ts +286 -0
  311. package/lib/typescript/types/BannerAdProps.d.ts +66 -0
  312. package/lib/typescript/types/GoogleMobileAdsNativeModule.d.ts +14 -0
  313. package/lib/typescript/types/MobileAd.interface.d.ts +64 -0
  314. package/lib/typescript/types/MobileAdsModule.interface.d.ts +38 -0
  315. package/lib/typescript/types/Module.interface.d.ts +14 -0
  316. package/lib/typescript/types/RequestConfiguration.d.ts +36 -0
  317. package/lib/typescript/types/RequestOptions.d.ts +106 -0
  318. package/lib/typescript/types/RewardedAdReward.d.ts +13 -0
  319. package/lib/typescript/validateAdRequestConfiguration.d.ts +2 -0
  320. package/lib/typescript/validateAdRequestOptions.d.ts +2 -0
  321. package/lib/typescript/validateAdShowOptions.d.ts +2 -0
  322. package/lib/typescript/version.d.ts +1 -0
  323. package/package.json +143 -0
  324. package/react-native.config.js +19 -0
  325. package/src/AdEventType.ts +68 -0
  326. package/src/AdsConsent.ts +191 -0
  327. package/src/AdsConsentDebugGeography.ts +38 -0
  328. package/src/AdsConsentStatus.ts +36 -0
  329. package/src/BannerAdSize.ts +59 -0
  330. package/src/MaxAdContentRating.ts +38 -0
  331. package/src/MobileAds.ts +84 -0
  332. package/src/RewardedAdEventType.ts +64 -0
  333. package/src/TestIds.ts +39 -0
  334. package/src/ads/AppOpenAd.ts +85 -0
  335. package/src/ads/BannerAd.tsx +126 -0
  336. package/src/ads/InterstitialAd.ts +156 -0
  337. package/src/ads/MobileAd.ts +101 -0
  338. package/src/ads/RewardedAd.ts +161 -0
  339. package/src/common/Base64.ts +114 -0
  340. package/src/common/MutatableParams.ts +50 -0
  341. package/src/common/ReferenceBase.ts +45 -0
  342. package/src/common/deeps.ts +88 -0
  343. package/src/common/id.ts +74 -0
  344. package/src/common/index.ts +103 -0
  345. package/src/common/path.ts +114 -0
  346. package/src/common/promise.ts +66 -0
  347. package/src/common/serialize.ts +43 -0
  348. package/src/common/validate.ts +205 -0
  349. package/src/declarations.d.ts +3 -0
  350. package/src/index.ts +35 -0
  351. package/src/internal/GoogleMobileAdsNativeEventEmitter.ts +81 -0
  352. package/src/internal/Module.ts +58 -0
  353. package/src/internal/NativeError.ts +56 -0
  354. package/src/internal/SharedEventEmitter.ts +22 -0
  355. package/src/internal/constants.ts +43 -0
  356. package/src/internal/index.ts +21 -0
  357. package/src/internal/registry/nativeModule.ts +226 -0
  358. package/src/types/AdEventListener.ts +16 -0
  359. package/src/types/AdShowOptions.ts +12 -0
  360. package/src/types/AdapterStatus.ts +20 -0
  361. package/src/types/AdsConsent.interface.ts +306 -0
  362. package/src/types/BannerAdProps.ts +73 -0
  363. package/src/types/GoogleMobileAdsNativeModule.ts +15 -0
  364. package/src/types/MobileAd.interface.ts +69 -0
  365. package/src/types/MobileAdsModule.interface.ts +43 -0
  366. package/src/types/Module.interface.ts +16 -0
  367. package/src/types/RequestConfiguration.ts +40 -0
  368. package/src/types/RequestOptions.ts +113 -0
  369. package/src/types/RewardedAdReward.ts +14 -0
  370. package/src/validateAdRequestConfiguration.ts +71 -0
  371. package/src/validateAdRequestOptions.ts +168 -0
  372. package/src/validateAdShowOptions.ts +41 -0
  373. package/src/version.ts +2 -0
@@ -0,0 +1,155 @@
1
+ /*
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+ import { isFunction, isString } from '../common';
18
+ import { MobileAds } from '../MobileAds';
19
+ import { validateAdRequestOptions } from '../validateAdRequestOptions';
20
+ import { validateAdShowOptions } from '../validateAdShowOptions';
21
+ import { MobileAd } from './MobileAd';
22
+ let _rewardedRequest = 0;
23
+ /**
24
+ * A class for interacting and showing Rewarded Ads.
25
+ *
26
+ * An Rewarded advert can be pre-loaded and shown at a suitable point in your apps flow, such as at the end of a level
27
+ * in a game. The content of a rewarded advert can be controlled via your Google Mobile Ads dashboard. Typically users are rewarded
28
+ * after completing a specific advert action (e.g. watching a video or submitting an option via an interactive form).
29
+ * Events (such as the user earning a reward or closing a rewarded advert early) are sent back for you to handle accordingly
30
+ * within your application.
31
+ *
32
+ * #### Example
33
+ *
34
+ * First create a new Rewarded instance, passing in your Ad Unit ID from the Google Mobile Ads configuration console, and any additional
35
+ * request options. The example below will present a test advert, and only request a non-personalized ad.
36
+ *
37
+ * ```js
38
+ * import { RewardedAd, TestIds } from 'react-native-google-mobile-ads';
39
+ *
40
+ * const rewarded = RewardedAd.createForAdRequest(TestIds.REWARDED, {
41
+ * requestNonPersonalizedAdsOnly: true,
42
+ * });
43
+ * ```
44
+ *
45
+ * Each advert needs to be loaded from Google Mobile Ads before being shown. It is recommended this is performed before the user
46
+ * reaches the checkpoint to show the advert, so it's ready to go. Before loading the advert, we need to setup
47
+ * event listeners to listen for updates from Google Mobile Ads, such as advert loaded or failed to load.
48
+ *
49
+ * Event types match the `AdEventType` or `RewardedAdEventType` interface. The potential user reward for rewarded
50
+ * adverts are passed back to the event handler on advert load and when the user earns the reward.
51
+ *
52
+ * ```js
53
+ * import { RewardedAdEventType } from 'react-native-google-mobile-ads';
54
+ *
55
+ * rewarded.onAdEvent((type, error, reward) => {
56
+ * if (type === RewardedAdEventType.LOADED) {
57
+ * rewarded.show();
58
+ * }
59
+ * if (type === RewardedAdEventType.EARNED_REWARD) {
60
+ * console.log('User earned reward of ', reward);
61
+ * }
62
+ * });
63
+ *
64
+ * rewarded.load();
65
+ * ```
66
+ *
67
+ * The rewarded advert will be presented to the user, and several more events can be triggered such as the user clicking the
68
+ * advert, closing it or completing the action.
69
+ */
70
+
71
+ export class RewardedAd extends MobileAd {
72
+ /**
73
+ * Creates a new RewardedAd instance.
74
+ *
75
+ * #### Example
76
+ *
77
+ * ```js
78
+ * import { RewardedAd, RewardedAdEventType, TestIds } from 'react-native-google-mobile-ads';
79
+ *
80
+ * const rewardedAd = await RewardedAd.createForAdRequest(TestIds.REWARDED, {
81
+ * requestAgent: 'CoolAds',
82
+ * });
83
+ *
84
+ * rewardedAd.onAdEvent((type, error, data) => {
85
+ * console.log('New event: ', type, error);
86
+ *
87
+ * if (type === RewardedAdEventType.LOADED) {
88
+ * rewardedAd.show();
89
+ * }
90
+ * });
91
+ *
92
+ * rewardedAd.load();
93
+ * ```
94
+ *
95
+ * @param adUnitId The Ad Unit ID for the Rewarded Ad. You can find this on your Google Mobile Ads dashboard.
96
+ * @param requestOptions Optional RequestOptions used to load the ad.
97
+ */
98
+ static createForAdRequest(adUnitId, requestOptions) {
99
+ if (!isString(adUnitId)) {
100
+ throw new Error("RewardedAd.createForAdRequest(*) 'adUnitId' expected an string value.");
101
+ }
102
+
103
+ let options = {};
104
+
105
+ try {
106
+ options = validateAdRequestOptions(requestOptions);
107
+ } catch (e) {
108
+ if (e instanceof Error) {
109
+ throw new Error(`RewardedAd.createForAdRequest(_, *) ${e.message}.`);
110
+ }
111
+ }
112
+
113
+ const requestId = _rewardedRequest++;
114
+ return new RewardedAd('rewarded', MobileAds(), requestId, adUnitId, options);
115
+ }
116
+
117
+ load() {
118
+ // Prevent multiple load calls
119
+ if (this._loaded || this._isLoadCalled) {
120
+ return;
121
+ }
122
+
123
+ this._isLoadCalled = true;
124
+
125
+ this._googleMobileAds.native.rewardedLoad(this._requestId, this._adUnitId, this._requestOptions);
126
+ }
127
+
128
+ onAdEvent(handler) {
129
+ if (!isFunction(handler)) {
130
+ throw new Error("RewardedAd.onAdEvent(*) 'handler' expected a function.");
131
+ }
132
+
133
+ return this._setAdEventHandler(handler);
134
+ }
135
+
136
+ show(showOptions) {
137
+ if (!this._loaded) {
138
+ throw new Error('RewardedAd.show() The requested RewardedAd has not loaded and could not be shown.');
139
+ }
140
+
141
+ let options;
142
+
143
+ try {
144
+ options = validateAdShowOptions(showOptions);
145
+ } catch (e) {
146
+ if (e instanceof Error) {
147
+ throw new Error(`RewardedAd.show(*) ${e.message}.`);
148
+ }
149
+ }
150
+
151
+ return this._googleMobileAds.native.rewardedShow(this._requestId, this._adUnitId, options);
152
+ }
153
+
154
+ }
155
+ //# sourceMappingURL=RewardedAd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["RewardedAd.ts"],"names":["isFunction","isString","MobileAds","validateAdRequestOptions","validateAdShowOptions","MobileAd","_rewardedRequest","RewardedAd","createForAdRequest","adUnitId","requestOptions","Error","options","e","message","requestId","load","_loaded","_isLoadCalled","_googleMobileAds","native","rewardedLoad","_requestId","_adUnitId","_requestOptions","onAdEvent","handler","_setAdEventHandler","show","showOptions","rewardedShow"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,SAASA,UAAT,EAAqBC,QAArB,QAAqC,WAArC;AACA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,wBAAT,QAAyC,6BAAzC;AACA,SAASC,qBAAT,QAAsC,0BAAtC;AACA,SAASC,QAAT,QAAyB,YAAzB;AAMA,IAAIC,gBAAgB,GAAG,CAAvB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,UAAN,SAAyBF,QAAzB,CAA+D;AACpE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC2B,SAAlBG,kBAAkB,CAACC,QAAD,EAAmBC,cAAnB,EAAgE;AACvF,QAAI,CAACT,QAAQ,CAACQ,QAAD,CAAb,EAAyB;AACvB,YAAM,IAAIE,KAAJ,CAAU,uEAAV,CAAN;AACD;;AAED,QAAIC,OAAO,GAAG,EAAd;;AACA,QAAI;AACFA,MAAAA,OAAO,GAAGT,wBAAwB,CAACO,cAAD,CAAlC;AACD,KAFD,CAEE,OAAOG,CAAP,EAAU;AACV,UAAIA,CAAC,YAAYF,KAAjB,EAAwB;AACtB,cAAM,IAAIA,KAAJ,CAAW,uCAAsCE,CAAC,CAACC,OAAQ,GAA3D,CAAN;AACD;AACF;;AAED,UAAMC,SAAS,GAAGT,gBAAgB,EAAlC;AACA,WAAO,IAAIC,UAAJ,CAAe,UAAf,EAA2BL,SAAS,EAApC,EAAwCa,SAAxC,EAAmDN,QAAnD,EAA6DG,OAA7D,CAAP;AACD;;AAEDI,EAAAA,IAAI,GAAG;AACL;AACA,QAAI,KAAKC,OAAL,IAAgB,KAAKC,aAAzB,EAAwC;AACtC;AACD;;AAED,SAAKA,aAAL,GAAqB,IAArB;;AACA,SAAKC,gBAAL,CAAsBC,MAAtB,CAA6BC,YAA7B,CACE,KAAKC,UADP,EAEE,KAAKC,SAFP,EAGE,KAAKC,eAHP;AAKD;;AAEDC,EAAAA,SAAS,CAACC,OAAD,EAA2B;AAClC,QAAI,CAAC1B,UAAU,CAAC0B,OAAD,CAAf,EAA0B;AACxB,YAAM,IAAIf,KAAJ,CAAU,wDAAV,CAAN;AACD;;AAED,WAAO,KAAKgB,kBAAL,CAAwBD,OAAxB,CAAP;AACD;;AAEDE,EAAAA,IAAI,CAACC,WAAD,EAA8B;AAChC,QAAI,CAAC,KAAKZ,OAAV,EAAmB;AACjB,YAAM,IAAIN,KAAJ,CACJ,mFADI,CAAN;AAGD;;AAED,QAAIC,OAAJ;;AACA,QAAI;AACFA,MAAAA,OAAO,GAAGR,qBAAqB,CAACyB,WAAD,CAA/B;AACD,KAFD,CAEE,OAAOhB,CAAP,EAAU;AACV,UAAIA,CAAC,YAAYF,KAAjB,EAAwB;AACtB,cAAM,IAAIA,KAAJ,CAAW,sBAAqBE,CAAC,CAACC,OAAQ,GAA1C,CAAN;AACD;AACF;;AACD,WAAO,KAAKK,gBAAL,CAAsBC,MAAtB,CAA6BU,YAA7B,CAA0C,KAAKR,UAA/C,EAA2D,KAAKC,SAAhE,EAA2EX,OAA3E,CAAP;AACD;;AAnFmE","sourcesContent":["/*\n * Copyright (c) 2016-present Invertase Limited & Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this library except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { isFunction, isString } from '../common';\nimport { MobileAds } from '../MobileAds';\nimport { validateAdRequestOptions } from '../validateAdRequestOptions';\nimport { validateAdShowOptions } from '../validateAdShowOptions';\nimport { MobileAd } from './MobileAd';\nimport { AdEventListener } from '../types/AdEventListener';\nimport { AdShowOptions } from '../types/AdShowOptions';\nimport { RequestOptions } from '../types/RequestOptions';\nimport { MobileAdInterface } from '../types/MobileAd.interface';\n\nlet _rewardedRequest = 0;\n\n/**\n * A class for interacting and showing Rewarded Ads.\n *\n * An Rewarded advert can be pre-loaded and shown at a suitable point in your apps flow, such as at the end of a level\n * in a game. The content of a rewarded advert can be controlled via your Google Mobile Ads dashboard. Typically users are rewarded\n * after completing a specific advert action (e.g. watching a video or submitting an option via an interactive form).\n * Events (such as the user earning a reward or closing a rewarded advert early) are sent back for you to handle accordingly\n * within your application.\n *\n * #### Example\n *\n * First create a new Rewarded instance, passing in your Ad Unit ID from the Google Mobile Ads configuration console, and any additional\n * request options. The example below will present a test advert, and only request a non-personalized ad.\n *\n * ```js\n * import { RewardedAd, TestIds } from 'react-native-google-mobile-ads';\n *\n * const rewarded = RewardedAd.createForAdRequest(TestIds.REWARDED, {\n * requestNonPersonalizedAdsOnly: true,\n * });\n * ```\n *\n * Each advert needs to be loaded from Google Mobile Ads before being shown. It is recommended this is performed before the user\n * reaches the checkpoint to show the advert, so it's ready to go. Before loading the advert, we need to setup\n * event listeners to listen for updates from Google Mobile Ads, such as advert loaded or failed to load.\n *\n * Event types match the `AdEventType` or `RewardedAdEventType` interface. The potential user reward for rewarded\n * adverts are passed back to the event handler on advert load and when the user earns the reward.\n *\n * ```js\n * import { RewardedAdEventType } from 'react-native-google-mobile-ads';\n *\n * rewarded.onAdEvent((type, error, reward) => {\n * if (type === RewardedAdEventType.LOADED) {\n * rewarded.show();\n * }\n * if (type === RewardedAdEventType.EARNED_REWARD) {\n * console.log('User earned reward of ', reward);\n * }\n * });\n *\n * rewarded.load();\n * ```\n *\n * The rewarded advert will be presented to the user, and several more events can be triggered such as the user clicking the\n * advert, closing it or completing the action.\n */\nexport class RewardedAd extends MobileAd implements MobileAdInterface {\n /**\n * Creates a new RewardedAd instance.\n *\n * #### Example\n *\n * ```js\n * import { RewardedAd, RewardedAdEventType, TestIds } from 'react-native-google-mobile-ads';\n *\n * const rewardedAd = await RewardedAd.createForAdRequest(TestIds.REWARDED, {\n * requestAgent: 'CoolAds',\n * });\n *\n * rewardedAd.onAdEvent((type, error, data) => {\n * console.log('New event: ', type, error);\n *\n * if (type === RewardedAdEventType.LOADED) {\n * rewardedAd.show();\n * }\n * });\n *\n * rewardedAd.load();\n * ```\n *\n * @param adUnitId The Ad Unit ID for the Rewarded Ad. You can find this on your Google Mobile Ads dashboard.\n * @param requestOptions Optional RequestOptions used to load the ad.\n */\n static createForAdRequest(adUnitId: string, requestOptions?: RequestOptions): RewardedAd {\n if (!isString(adUnitId)) {\n throw new Error(\"RewardedAd.createForAdRequest(*) 'adUnitId' expected an string value.\");\n }\n\n let options = {};\n try {\n options = validateAdRequestOptions(requestOptions);\n } catch (e) {\n if (e instanceof Error) {\n throw new Error(`RewardedAd.createForAdRequest(_, *) ${e.message}.`);\n }\n }\n\n const requestId = _rewardedRequest++;\n return new RewardedAd('rewarded', MobileAds(), requestId, adUnitId, options);\n }\n\n load() {\n // Prevent multiple load calls\n if (this._loaded || this._isLoadCalled) {\n return;\n }\n\n this._isLoadCalled = true;\n this._googleMobileAds.native.rewardedLoad(\n this._requestId,\n this._adUnitId,\n this._requestOptions,\n );\n }\n\n onAdEvent(handler: AdEventListener) {\n if (!isFunction(handler)) {\n throw new Error(\"RewardedAd.onAdEvent(*) 'handler' expected a function.\");\n }\n\n return this._setAdEventHandler(handler);\n }\n\n show(showOptions?: AdShowOptions) {\n if (!this._loaded) {\n throw new Error(\n 'RewardedAd.show() The requested RewardedAd has not loaded and could not be shown.',\n );\n }\n\n let options;\n try {\n options = validateAdShowOptions(showOptions);\n } catch (e) {\n if (e instanceof Error) {\n throw new Error(`RewardedAd.show(*) ${e.message}.`);\n }\n }\n return this._googleMobileAds.native.rewardedShow(this._requestId, this._adUnitId, options);\n }\n}\n"]}
@@ -0,0 +1,106 @@
1
+ /* eslint-disable no-bitwise */
2
+
3
+ /* global Blob, FileReader */
4
+
5
+ /*
6
+ * Copyright (c) 2016-present Invertase Limited & Contributors
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this library except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ *
20
+ */
21
+ import binaryToBase64 from 'react-native/Libraries/Utilities/binaryToBase64';
22
+ import { promiseDefer } from './promise';
23
+ const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
24
+ /**
25
+ * window.btoa
26
+ */
27
+
28
+ export function btoa(input) {
29
+ let map;
30
+ let i = 0;
31
+ let block = 0;
32
+ let output = '';
33
+
34
+ for (block = 0, i = 0, map = CHARS; input.charAt(i | 0) || (map = '=', i % 1); output += map.charAt(63 & block >> 8 - i % 1 * 8)) {
35
+ const charCode = input.charCodeAt(i += 3 / 4);
36
+
37
+ if (charCode > 0xff) {
38
+ throw new Error("'RNFirebase.Base64.btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
39
+ }
40
+
41
+ block = block << 8 | charCode;
42
+ }
43
+
44
+ return output;
45
+ }
46
+ /**
47
+ * window.atob
48
+ */
49
+
50
+ export function atob(input) {
51
+ let i = 0;
52
+ let bc = 0;
53
+ let bs = 0;
54
+ let buffer;
55
+ let output = '';
56
+ const str = input.replace(/[=]+$/, '');
57
+
58
+ if (str.length % 4 === 1) {
59
+ throw new Error("'RNFirebase.Base64.atob' failed: The string to be decoded is not correctly encoded.");
60
+ }
61
+
62
+ for (bc = 0, bs = 0, i = 0; buffer = str.charAt(i++); ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {
63
+ buffer = CHARS.indexOf(buffer);
64
+ }
65
+
66
+ return output;
67
+ }
68
+ /**
69
+ * Converts a Blob, ArrayBuffer or Uint8Array to a base64 string.
70
+ */
71
+
72
+ export function fromData(data) {
73
+ if (data instanceof Blob) {
74
+ const fileReader = new FileReader();
75
+ const {
76
+ resolve,
77
+ reject,
78
+ promise
79
+ } = promiseDefer();
80
+ fileReader.readAsDataURL(data);
81
+
82
+ fileReader.onloadend = function onloadend() {
83
+ resolve({
84
+ string: fileReader.result,
85
+ format: 'data_url'
86
+ });
87
+ };
88
+
89
+ fileReader.onerror = function onerror(event) {
90
+ fileReader.abort();
91
+ reject(event);
92
+ };
93
+
94
+ return promise;
95
+ }
96
+
97
+ if (data instanceof ArrayBuffer || data instanceof Uint8Array) {
98
+ return Promise.resolve({
99
+ string: binaryToBase64(data),
100
+ format: 'base64'
101
+ });
102
+ }
103
+
104
+ throw new Error("'RNFirebase.Base64.fromData' failed: Unknown data type.");
105
+ }
106
+ //# sourceMappingURL=Base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Base64.ts"],"names":["binaryToBase64","promiseDefer","CHARS","btoa","input","map","i","block","output","charAt","charCode","charCodeAt","Error","atob","bc","bs","buffer","str","replace","length","String","fromCharCode","indexOf","fromData","data","Blob","fileReader","FileReader","resolve","reject","promise","readAsDataURL","onloadend","string","result","format","onerror","event","abort","ArrayBuffer","Uint8Array","Promise"],"mappings":"AAAA;;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAOA,cAAP,MAA2B,iDAA3B;AACA,SAASC,YAAT,QAA6B,WAA7B;AAEA,MAAMC,KAAK,GAAG,mEAAd;AAEA;AACA;AACA;;AACA,OAAO,SAASC,IAAT,CAAcC,KAAd,EAA6B;AAClC,MAAIC,GAAJ;AACA,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,KAAK,GAAG,CAAZ;AACA,MAAIC,MAAM,GAAG,EAAb;;AAEA,OACED,KAAK,GAAG,CAAR,EAAWD,CAAC,GAAG,CAAf,EAAkBD,GAAG,GAAGH,KAD1B,EAEEE,KAAK,CAACK,MAAN,CAAaH,CAAC,GAAG,CAAjB,MAAyBD,GAAG,GAAG,GAAP,EAAaC,CAAC,GAAG,CAAzC,CAFF,EAGEE,MAAM,IAAIH,GAAG,CAACI,MAAJ,CAAW,KAAMF,KAAK,IAAK,IAAKD,CAAC,GAAG,CAAL,GAAU,CAAzC,CAHZ,EAIE;AACA,UAAMI,QAAQ,GAAGN,KAAK,CAACO,UAAN,CAAkBL,CAAC,IAAI,IAAI,CAA3B,CAAjB;;AAEA,QAAII,QAAQ,GAAG,IAAf,EAAqB;AACnB,YAAM,IAAIE,KAAJ,CACJ,4GADI,CAAN;AAGD;;AAEDL,IAAAA,KAAK,GAAIA,KAAK,IAAI,CAAV,GAAeG,QAAvB;AACD;;AAED,SAAOF,MAAP;AACD;AAED;AACA;AACA;;AACA,OAAO,SAASK,IAAT,CAAcT,KAAd,EAA6B;AAClC,MAAIE,CAAC,GAAG,CAAR;AACA,MAAIQ,EAAE,GAAG,CAAT;AACA,MAAIC,EAAE,GAAG,CAAT;AACA,MAAIC,MAAJ;AACA,MAAIR,MAAM,GAAG,EAAb;AAEA,QAAMS,GAAG,GAAGb,KAAK,CAACc,OAAN,CAAc,OAAd,EAAuB,EAAvB,CAAZ;;AAEA,MAAID,GAAG,CAACE,MAAJ,GAAa,CAAb,KAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIP,KAAJ,CACJ,qFADI,CAAN;AAGD;;AAED,OACEE,EAAE,GAAG,CAAL,EAAQC,EAAE,GAAG,CAAb,EAAgBT,CAAC,GAAG,CADtB,EAEGU,MAAM,GAAGC,GAAG,CAACR,MAAJ,CAAWH,CAAC,EAAZ,CAFZ,EAGE,CAACU,MAAD,KAAaD,EAAE,GAAGD,EAAE,GAAG,CAAL,GAASC,EAAE,GAAG,EAAL,GAAUC,MAAnB,GAA4BA,MAAlC,EAA2CF,EAAE,KAAK,CAA9D,IACKN,MAAM,IAAIY,MAAM,CAACC,YAAP,CAAoB,MAAON,EAAE,KAAM,CAAC,CAAD,GAAKD,EAAN,GAAY,CAAjB,CAA7B,CADf,GAEI,CALN,EAME;AACAE,IAAAA,MAAM,GAAGd,KAAK,CAACoB,OAAN,CAAcN,MAAd,CAAT;AACD;;AAED,SAAOR,MAAP;AACD;AAED;AACA;AACA;;AACA,OAAO,SAASe,QAAT,CAAkBC,IAAlB,EAAyD;AAC9D,MAAIA,IAAI,YAAYC,IAApB,EAA0B;AACxB,UAAMC,UAAU,GAAG,IAAIC,UAAJ,EAAnB;AACA,UAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA,MAAX;AAAmBC,MAAAA;AAAnB,QAA+B7B,YAAY,EAAjD;AAEAyB,IAAAA,UAAU,CAACK,aAAX,CAAyBP,IAAzB;;AAEAE,IAAAA,UAAU,CAACM,SAAX,GAAuB,SAASA,SAAT,GAAqB;AAC1CJ,MAAAA,OAAO,CAAC;AAAEK,QAAAA,MAAM,EAAEP,UAAU,CAACQ,MAArB;AAA6BC,QAAAA,MAAM,EAAE;AAArC,OAAD,CAAP;AACD,KAFD;;AAIAT,IAAAA,UAAU,CAACU,OAAX,GAAqB,SAASA,OAAT,CAAiBC,KAAjB,EAAwB;AAC3CX,MAAAA,UAAU,CAACY,KAAX;AACAT,MAAAA,MAAM,CAACQ,KAAD,CAAN;AACD,KAHD;;AAKA,WAAOP,OAAP;AACD;;AAED,MAAIN,IAAI,YAAYe,WAAhB,IAA+Bf,IAAI,YAAYgB,UAAnD,EAA+D;AAC7D,WAAOC,OAAO,CAACb,OAAR,CAAgB;AACrBK,MAAAA,MAAM,EAAEjC,cAAc,CAACwB,IAAD,CADD;AAErBW,MAAAA,MAAM,EAAE;AAFa,KAAhB,CAAP;AAID;;AAED,QAAM,IAAIvB,KAAJ,CAAU,yDAAV,CAAN;AACD","sourcesContent":["/* eslint-disable no-bitwise */\n/* global Blob, FileReader */\n/*\n * Copyright (c) 2016-present Invertase Limited & Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this library except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport binaryToBase64 from 'react-native/Libraries/Utilities/binaryToBase64';\nimport { promiseDefer } from './promise';\n\nconst CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n/**\n * window.btoa\n */\nexport function btoa(input: string) {\n let map;\n let i = 0;\n let block = 0;\n let output = '';\n\n for (\n block = 0, i = 0, map = CHARS;\n input.charAt(i | 0) || ((map = '='), i % 1);\n output += map.charAt(63 & (block >> (8 - (i % 1) * 8)))\n ) {\n const charCode = input.charCodeAt((i += 3 / 4));\n\n if (charCode > 0xff) {\n throw new Error(\n \"'RNFirebase.Base64.btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\",\n );\n }\n\n block = (block << 8) | charCode;\n }\n\n return output;\n}\n\n/**\n * window.atob\n */\nexport function atob(input: string) {\n let i = 0;\n let bc = 0;\n let bs = 0;\n let buffer;\n let output = '';\n\n const str = input.replace(/[=]+$/, '');\n\n if (str.length % 4 === 1) {\n throw new Error(\n \"'RNFirebase.Base64.atob' failed: The string to be decoded is not correctly encoded.\",\n );\n }\n\n for (\n bc = 0, bs = 0, i = 0;\n (buffer = str.charAt(i++));\n ~buffer && ((bs = bc % 4 ? bs * 64 + buffer : buffer), bc++ % 4)\n ? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n : 0\n ) {\n buffer = CHARS.indexOf(buffer);\n }\n\n return output;\n}\n\n/**\n * Converts a Blob, ArrayBuffer or Uint8Array to a base64 string.\n */\nexport function fromData(data: Blob | ArrayBuffer | Uint8Array) {\n if (data instanceof Blob) {\n const fileReader = new FileReader();\n const { resolve, reject, promise } = promiseDefer();\n\n fileReader.readAsDataURL(data);\n\n fileReader.onloadend = function onloadend() {\n resolve({ string: fileReader.result, format: 'data_url' });\n };\n\n fileReader.onerror = function onerror(event) {\n fileReader.abort();\n reject(event);\n };\n\n return promise;\n }\n\n if (data instanceof ArrayBuffer || data instanceof Uint8Array) {\n return Promise.resolve({\n string: binaryToBase64(data),\n format: 'base64',\n });\n }\n\n throw new Error(\"'RNFirebase.Base64.fromData' failed: Unknown data type.\");\n}\n"]}
@@ -0,0 +1,52 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ /*
4
+ * Copyright (c) 2016-present Invertase Limited & Contributors
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this library except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ *
18
+ */
19
+ import { deepGet, deepSet } from './deeps';
20
+ export class MutatableParams {
21
+ constructor(parentInstance) {
22
+ _defineProperty(this, "_mutatableParams", void 0);
23
+
24
+ _defineProperty(this, "_parentInstance", void 0);
25
+
26
+ if (parentInstance) {
27
+ this._mutatableParams = parentInstance._mutatableParams;
28
+ this._parentInstance = parentInstance;
29
+ } else {
30
+ this._mutatableParams = {};
31
+ this._parentInstance = this;
32
+ }
33
+ }
34
+
35
+ set(param, value) {
36
+ deepSet(this._mutatableParams, param, value);
37
+ return this._parentInstance;
38
+ }
39
+
40
+ get(param) {
41
+ return deepGet(this._mutatableParams, param, '.');
42
+ }
43
+
44
+ toJSON() {
45
+ return Object.assign({}, this._mutatableParams);
46
+ }
47
+
48
+ validate() {// do nothing
49
+ }
50
+
51
+ }
52
+ //# sourceMappingURL=MutatableParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MutatableParams.ts"],"names":["deepGet","deepSet","MutatableParams","constructor","parentInstance","_mutatableParams","_parentInstance","set","param","value","get","toJSON","Object","assign","validate"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,SAASA,OAAT,EAAkBC,OAAlB,QAAiC,SAAjC;AAEA,OAAO,MAAMC,eAAN,CAAsB;AAI3BC,EAAAA,WAAW,CAACC,cAAD,EAAkC;AAAA;;AAAA;;AAC3C,QAAIA,cAAJ,EAAoB;AAClB,WAAKC,gBAAL,GAAwBD,cAAc,CAACC,gBAAvC;AACA,WAAKC,eAAL,GAAuBF,cAAvB;AACD,KAHD,MAGO;AACL,WAAKC,gBAAL,GAAwB,EAAxB;AACA,WAAKC,eAAL,GAAuB,IAAvB;AACD;AACF;;AAEDC,EAAAA,GAAG,CAACC,KAAD,EAAgBC,KAAhB,EAAgC;AACjCR,IAAAA,OAAO,CAAC,KAAKI,gBAAN,EAAwBG,KAAxB,EAA+BC,KAA/B,CAAP;AACA,WAAO,KAAKH,eAAZ;AACD;;AAEDI,EAAAA,GAAG,CAACF,KAAD,EAAgB;AACjB,WAAOR,OAAO,CAAC,KAAKK,gBAAN,EAAwBG,KAAxB,EAA+B,GAA/B,CAAd;AACD;;AAEDG,EAAAA,MAAM,GAAG;AACP,WAAOC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKR,gBAAvB,CAAP;AACD;;AAEDS,EAAAA,QAAQ,GAAG,CACT;AACD;;AA7B0B","sourcesContent":["/*\n * Copyright (c) 2016-present Invertase Limited & Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this library except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { deepGet, deepSet } from './deeps';\n\nexport class MutatableParams {\n _mutatableParams: Record<string, unknown>;\n _parentInstance: MutatableParams;\n\n constructor(parentInstance: MutatableParams) {\n if (parentInstance) {\n this._mutatableParams = parentInstance._mutatableParams;\n this._parentInstance = parentInstance;\n } else {\n this._mutatableParams = {};\n this._parentInstance = this;\n }\n }\n\n set(param: string, value: unknown) {\n deepSet(this._mutatableParams, param, value);\n return this._parentInstance;\n }\n\n get(param: string) {\n return deepGet(this._mutatableParams, param, '.');\n }\n\n toJSON() {\n return Object.assign({}, this._mutatableParams);\n }\n\n validate() {\n // do nothing\n }\n}\n"]}
@@ -0,0 +1,50 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ /*
4
+ * Copyright (c) 2016-present Invertase Limited & Contributors
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this library except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ *
18
+ */
19
+ export class ReferenceBase {
20
+ constructor(_path) {
21
+ _defineProperty(this, "path", void 0);
22
+
23
+ let path = _path;
24
+
25
+ if (path) {
26
+ path = path.length > 1 && path.endsWith('/') ? path.substring(0, path.length - 1) : path;
27
+
28
+ if (path.startsWith('/') && path.length > 1) {
29
+ path = path.substring(1, path.length);
30
+ }
31
+ } else {
32
+ path = '/';
33
+ }
34
+
35
+ this.path = path;
36
+ }
37
+ /**
38
+ * The last part of a Reference's path (after the last '/')
39
+ * The key of a root Reference is null.
40
+ * @type {String}
41
+ * {@link https://firebase.google.com/docs/reference/js/firebase.database.Reference#key}
42
+ */
43
+
44
+
45
+ get key() {
46
+ return this.path === '/' ? null : this.path.substring(this.path.lastIndexOf('/') + 1);
47
+ }
48
+
49
+ }
50
+ //# sourceMappingURL=ReferenceBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ReferenceBase.ts"],"names":["ReferenceBase","constructor","_path","path","length","endsWith","substring","startsWith","key","lastIndexOf"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,OAAO,MAAMA,aAAN,CAAoB;AAGzBC,EAAAA,WAAW,CAACC,KAAD,EAAgB;AAAA;;AACzB,QAAIC,IAAI,GAAGD,KAAX;;AAEA,QAAIC,IAAJ,EAAU;AACRA,MAAAA,IAAI,GAAGA,IAAI,CAACC,MAAL,GAAc,CAAd,IAAmBD,IAAI,CAACE,QAAL,CAAc,GAAd,CAAnB,GAAwCF,IAAI,CAACG,SAAL,CAAe,CAAf,EAAkBH,IAAI,CAACC,MAAL,GAAc,CAAhC,CAAxC,GAA6ED,IAApF;;AACA,UAAIA,IAAI,CAACI,UAAL,CAAgB,GAAhB,KAAwBJ,IAAI,CAACC,MAAL,GAAc,CAA1C,EAA6C;AAC3CD,QAAAA,IAAI,GAAGA,IAAI,CAACG,SAAL,CAAe,CAAf,EAAkBH,IAAI,CAACC,MAAvB,CAAP;AACD;AACF,KALD,MAKO;AACLD,MAAAA,IAAI,GAAG,GAAP;AACD;;AAED,SAAKA,IAAL,GAAYA,IAAZ;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACS,MAAHK,GAAG,GAAG;AACR,WAAO,KAAKL,IAAL,KAAc,GAAd,GAAoB,IAApB,GAA2B,KAAKA,IAAL,CAAUG,SAAV,CAAoB,KAAKH,IAAL,CAAUM,WAAV,CAAsB,GAAtB,IAA6B,CAAjD,CAAlC;AACD;;AA1BwB","sourcesContent":["/*\n * Copyright (c) 2016-present Invertase Limited & Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this library except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nexport class ReferenceBase {\n path: string;\n\n constructor(_path: string) {\n let path = _path;\n\n if (path) {\n path = path.length > 1 && path.endsWith('/') ? path.substring(0, path.length - 1) : path;\n if (path.startsWith('/') && path.length > 1) {\n path = path.substring(1, path.length);\n }\n } else {\n path = '/';\n }\n\n this.path = path;\n }\n\n /**\n * The last part of a Reference's path (after the last '/')\n * The key of a root Reference is null.\n * @type {String}\n * {@link https://firebase.google.com/docs/reference/js/firebase.database.Reference#key}\n */\n get key() {\n return this.path === '/' ? null : this.path.substring(this.path.lastIndexOf('/') + 1);\n }\n}\n"]}
@@ -0,0 +1,91 @@
1
+ /*
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+ import { isArray, isObject } from './validate';
18
+ /**
19
+ * Deep get a value from an object.
20
+ * @website https://github.com/Salakar/deeps
21
+ * @param object
22
+ * @param path
23
+ * @param joiner
24
+ * @returns {*}
25
+ */
26
+
27
+ export function deepGet(object, path) {
28
+ let joiner = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '/';
29
+
30
+ if (!isObject(object) && !Array.isArray(object)) {
31
+ return undefined;
32
+ }
33
+
34
+ const keys = path.split(joiner);
35
+ let i = 0;
36
+ let value;
37
+ const len = keys.length;
38
+
39
+ while (i < len) {
40
+ const key = keys[i++];
41
+
42
+ if (!object || !Object.hasOwnProperty.call(object, key)) {
43
+ return undefined;
44
+ }
45
+
46
+ value = object[key];
47
+ }
48
+
49
+ return value;
50
+ }
51
+ /**
52
+ * Deep set a value
53
+ * @param object
54
+ * @param path
55
+ * @param value
56
+ * @param initPaths
57
+ * @param joiner
58
+ */
59
+
60
+ export function deepSet(object, path, value) {
61
+ let initPaths = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
62
+ let joiner = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '.';
63
+
64
+ if (!isObject(object)) {
65
+ return false;
66
+ }
67
+
68
+ const keys = path.split(joiner);
69
+ let i = 0;
70
+ let _object = object;
71
+ const len = keys.length - 1;
72
+
73
+ while (i < len) {
74
+ const key = keys[i++];
75
+
76
+ if (initPaths && !Object.hasOwnProperty.call(object, key)) {
77
+ _object[key] = {};
78
+ }
79
+
80
+ _object = _object[key];
81
+ }
82
+
83
+ if (isObject(_object) || isArray(_object) && !Number.isNaN(keys[i])) {
84
+ _object[keys[i]] = value;
85
+ } else {
86
+ return false;
87
+ }
88
+
89
+ return true;
90
+ }
91
+ //# sourceMappingURL=deeps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["deeps.ts"],"names":["isArray","isObject","deepGet","object","path","joiner","Array","undefined","keys","split","i","value","len","length","key","Object","hasOwnProperty","call","deepSet","initPaths","_object","Number","isNaN"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,SAASA,OAAT,EAAkBC,QAAlB,QAAkC,YAAlC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,OAAT,CAAiBC,MAAjB,EAAkDC,IAAlD,EAA8E;AAAA,MAAdC,MAAc,uEAAL,GAAK;;AACnF,MAAI,CAACJ,QAAQ,CAACE,MAAD,CAAT,IAAqB,CAACG,KAAK,CAACN,OAAN,CAAcG,MAAd,CAA1B,EAAiD;AAC/C,WAAOI,SAAP;AACD;;AACD,QAAMC,IAAI,GAAGJ,IAAI,CAACK,KAAL,CAAWJ,MAAX,CAAb;AAEA,MAAIK,CAAC,GAAG,CAAR;AACA,MAAIC,KAAJ;AACA,QAAMC,GAAG,GAAGJ,IAAI,CAACK,MAAjB;;AAEA,SAAOH,CAAC,GAAGE,GAAX,EAAgB;AACd,UAAME,GAAG,GAAGN,IAAI,CAACE,CAAC,EAAF,CAAhB;;AACA,QAAI,CAACP,MAAD,IAAW,CAACY,MAAM,CAACC,cAAP,CAAsBC,IAAtB,CAA2Bd,MAA3B,EAAmCW,GAAnC,CAAhB,EAAyD;AACvD,aAAOP,SAAP;AACD;;AACDI,IAAAA,KAAK,GAAGR,MAAM,CAACW,GAAD,CAAd;AACD;;AAED,SAAOH,KAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASO,OAAT,CACLf,MADK,EAELC,IAFK,EAGLO,KAHK,EAML;AAAA,MAFAQ,SAEA,uEAFY,IAEZ;AAAA,MADAd,MACA,uEADS,GACT;;AACA,MAAI,CAACJ,QAAQ,CAACE,MAAD,CAAb,EAAuB;AACrB,WAAO,KAAP;AACD;;AACD,QAAMK,IAAI,GAAGJ,IAAI,CAACK,KAAL,CAAWJ,MAAX,CAAb;AAEA,MAAIK,CAAC,GAAG,CAAR;AACA,MAAIU,OAAO,GAAGjB,MAAd;AACA,QAAMS,GAAG,GAAGJ,IAAI,CAACK,MAAL,GAAc,CAA1B;;AAEA,SAAOH,CAAC,GAAGE,GAAX,EAAgB;AACd,UAAME,GAAG,GAAGN,IAAI,CAACE,CAAC,EAAF,CAAhB;;AACA,QAAIS,SAAS,IAAI,CAACJ,MAAM,CAACC,cAAP,CAAsBC,IAAtB,CAA2Bd,MAA3B,EAAmCW,GAAnC,CAAlB,EAA2D;AACzDM,MAAAA,OAAO,CAACN,GAAD,CAAP,GAAe,EAAf;AACD;;AACDM,IAAAA,OAAO,GAAGA,OAAO,CAACN,GAAD,CAAjB;AACD;;AAED,MAAIb,QAAQ,CAACmB,OAAD,CAAR,IAAsBpB,OAAO,CAACoB,OAAD,CAAP,IAAoB,CAACC,MAAM,CAACC,KAAP,CAAad,IAAI,CAACE,CAAD,CAAjB,CAA/C,EAAuE;AACrEU,IAAAA,OAAO,CAACZ,IAAI,CAACE,CAAD,CAAL,CAAP,GAAmBC,KAAnB;AACD,GAFD,MAEO;AACL,WAAO,KAAP;AACD;;AAED,SAAO,IAAP;AACD","sourcesContent":["/*\n * Copyright (c) 2016-present Invertase Limited & Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this library except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { isArray, isObject } from './validate';\n\n/**\n * Deep get a value from an object.\n * @website https://github.com/Salakar/deeps\n * @param object\n * @param path\n * @param joiner\n * @returns {*}\n */\nexport function deepGet(object: Record<string, unknown>, path: string, joiner = '/') {\n if (!isObject(object) && !Array.isArray(object)) {\n return undefined;\n }\n const keys = path.split(joiner);\n\n let i = 0;\n let value;\n const len = keys.length;\n\n while (i < len) {\n const key = keys[i++];\n if (!object || !Object.hasOwnProperty.call(object, key)) {\n return undefined;\n }\n value = object[key];\n }\n\n return value;\n}\n\n/**\n * Deep set a value\n * @param object\n * @param path\n * @param value\n * @param initPaths\n * @param joiner\n */\nexport function deepSet(\n object: Record<string, unknown>,\n path: string,\n value: unknown,\n initPaths = true,\n joiner = '.',\n) {\n if (!isObject(object)) {\n return false;\n }\n const keys = path.split(joiner);\n\n let i = 0;\n let _object = object;\n const len = keys.length - 1;\n\n while (i < len) {\n const key = keys[i++];\n if (initPaths && !Object.hasOwnProperty.call(object, key)) {\n _object[key] = {};\n }\n _object = _object[key] as Record<string, unknown>;\n }\n\n if (isObject(_object) || (isArray(_object) && !Number.isNaN(keys[i]))) {\n _object[keys[i]] = value;\n } else {\n return false;\n }\n\n return true;\n}\n"]}
@@ -0,0 +1,74 @@
1
+ const PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';
2
+ const AUTO_ID_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; // timestamp of last push, used to prevent local collisions if you push twice in one ms.
3
+
4
+ let lastPushTime = 0; // we generate 72-bits of randomness which get turned into 12 characters and appended to the
5
+ // timestamp to prevent collisions with other clients. We store the last characters we
6
+ // generated because in the event of a collision, we'll use those same characters except
7
+ // "incremented" by one.
8
+
9
+ const lastRandChars = [];
10
+ /**
11
+ * Generate a firebase id - for use with ref().push(val, cb) - e.g. -KXMr7k2tXUFQqiaZRY4'
12
+ * @param serverTimeOffset - pass in server time offset from native side
13
+ * @returns {string}
14
+ */
15
+
16
+ export function generateDatabaseId() {
17
+ let serverTimeOffset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
18
+ const timeStampChars = new Array(8);
19
+ let now = new Date().getTime() + serverTimeOffset;
20
+ const duplicateTime = now === lastPushTime;
21
+ lastPushTime = now;
22
+
23
+ for (let i = 7; i >= 0; i -= 1) {
24
+ timeStampChars[i] = PUSH_CHARS.charAt(now % 64);
25
+ now = Math.floor(now / 64);
26
+ }
27
+
28
+ if (now !== 0) {
29
+ throw new Error('We should have converted the entire timestamp.');
30
+ }
31
+
32
+ let id = timeStampChars.join('');
33
+
34
+ if (!duplicateTime) {
35
+ for (let i = 0; i < 12; i += 1) {
36
+ lastRandChars[i] = Math.floor(Math.random() * 64);
37
+ }
38
+ } else {
39
+ // if the timestamp hasn't changed since last push,
40
+ // use the same random number, but increment it by 1.
41
+ let i;
42
+
43
+ for (i = 11; i >= 0 && lastRandChars[i] === 63; i -= 1) {
44
+ lastRandChars[i] = 0;
45
+ }
46
+
47
+ lastRandChars[i] += 1;
48
+ }
49
+
50
+ for (let i = 0; i < 12; i++) {
51
+ id += PUSH_CHARS.charAt(lastRandChars[i]);
52
+ }
53
+
54
+ if (id.length !== 20) {
55
+ throw new Error('Length should be 20.');
56
+ }
57
+
58
+ return id;
59
+ }
60
+ /**
61
+ * Generate a firestore auto id for use with collection/document .add()
62
+ * @return {string}
63
+ */
64
+
65
+ export function generateFirestoreId() {
66
+ let autoId = '';
67
+
68
+ for (let i = 0; i < 20; i++) {
69
+ autoId += AUTO_ID_CHARS.charAt(Math.floor(Math.random() * AUTO_ID_CHARS.length));
70
+ }
71
+
72
+ return autoId;
73
+ }
74
+ //# sourceMappingURL=id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["id.ts"],"names":["PUSH_CHARS","AUTO_ID_CHARS","lastPushTime","lastRandChars","generateDatabaseId","serverTimeOffset","timeStampChars","Array","now","Date","getTime","duplicateTime","i","charAt","Math","floor","Error","id","join","random","length","generateFirestoreId","autoId"],"mappings":"AAAA,MAAMA,UAAU,GAAG,kEAAnB;AAEA,MAAMC,aAAa,GAAG,gEAAtB,C,CAEA;;AACA,IAAIC,YAAY,GAAG,CAAnB,C,CAEA;AACA;AACA;AACA;;AACA,MAAMC,aAAuB,GAAG,EAAhC;AAEA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,kBAAT,GAAkD;AAAA,MAAtBC,gBAAsB,uEAAH,CAAG;AACvD,QAAMC,cAAc,GAAG,IAAIC,KAAJ,CAAU,CAAV,CAAvB;AACA,MAAIC,GAAG,GAAG,IAAIC,IAAJ,GAAWC,OAAX,KAAuBL,gBAAjC;AACA,QAAMM,aAAa,GAAGH,GAAG,KAAKN,YAA9B;AAEAA,EAAAA,YAAY,GAAGM,GAAf;;AAEA,OAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI,CAArB,EAAwBA,CAAC,IAAI,CAA7B,EAAgC;AAC9BN,IAAAA,cAAc,CAACM,CAAD,CAAd,GAAoBZ,UAAU,CAACa,MAAX,CAAkBL,GAAG,GAAG,EAAxB,CAApB;AACAA,IAAAA,GAAG,GAAGM,IAAI,CAACC,KAAL,CAAWP,GAAG,GAAG,EAAjB,CAAN;AACD;;AAED,MAAIA,GAAG,KAAK,CAAZ,EAAe;AACb,UAAM,IAAIQ,KAAJ,CAAU,gDAAV,CAAN;AACD;;AAED,MAAIC,EAAE,GAAGX,cAAc,CAACY,IAAf,CAAoB,EAApB,CAAT;;AAEA,MAAI,CAACP,aAAL,EAAoB;AAClB,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,EAApB,EAAwBA,CAAC,IAAI,CAA7B,EAAgC;AAC9BT,MAAAA,aAAa,CAACS,CAAD,CAAb,GAAmBE,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACK,MAAL,KAAgB,EAA3B,CAAnB;AACD;AACF,GAJD,MAIO;AACL;AACA;AACA,QAAIP,CAAJ;;AACA,SAAKA,CAAC,GAAG,EAAT,EAAaA,CAAC,IAAI,CAAL,IAAUT,aAAa,CAACS,CAAD,CAAb,KAAqB,EAA5C,EAAgDA,CAAC,IAAI,CAArD,EAAwD;AACtDT,MAAAA,aAAa,CAACS,CAAD,CAAb,GAAmB,CAAnB;AACD;;AAEDT,IAAAA,aAAa,CAACS,CAAD,CAAb,IAAoB,CAApB;AACD;;AAED,OAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,EAApB,EAAwBA,CAAC,EAAzB,EAA6B;AAC3BK,IAAAA,EAAE,IAAIjB,UAAU,CAACa,MAAX,CAAkBV,aAAa,CAACS,CAAD,CAA/B,CAAN;AACD;;AAED,MAAIK,EAAE,CAACG,MAAH,KAAc,EAAlB,EAAsB;AACpB,UAAM,IAAIJ,KAAJ,CAAU,sBAAV,CAAN;AACD;;AAED,SAAOC,EAAP;AACD;AAED;AACA;AACA;AACA;;AACA,OAAO,SAASI,mBAAT,GAA+B;AACpC,MAAIC,MAAM,GAAG,EAAb;;AAEA,OAAK,IAAIV,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,EAApB,EAAwBA,CAAC,EAAzB,EAA6B;AAC3BU,IAAAA,MAAM,IAAIrB,aAAa,CAACY,MAAd,CAAqBC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACK,MAAL,KAAgBlB,aAAa,CAACmB,MAAzC,CAArB,CAAV;AACD;;AACD,SAAOE,MAAP;AACD","sourcesContent":["const PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n\nconst AUTO_ID_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n// timestamp of last push, used to prevent local collisions if you push twice in one ms.\nlet lastPushTime = 0;\n\n// we generate 72-bits of randomness which get turned into 12 characters and appended to the\n// timestamp to prevent collisions with other clients. We store the last characters we\n// generated because in the event of a collision, we'll use those same characters except\n// \"incremented\" by one.\nconst lastRandChars: number[] = [];\n\n/**\n * Generate a firebase id - for use with ref().push(val, cb) - e.g. -KXMr7k2tXUFQqiaZRY4'\n * @param serverTimeOffset - pass in server time offset from native side\n * @returns {string}\n */\nexport function generateDatabaseId(serverTimeOffset = 0) {\n const timeStampChars = new Array(8);\n let now = new Date().getTime() + serverTimeOffset;\n const duplicateTime = now === lastPushTime;\n\n lastPushTime = now;\n\n for (let i = 7; i >= 0; i -= 1) {\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\n now = Math.floor(now / 64);\n }\n\n if (now !== 0) {\n throw new Error('We should have converted the entire timestamp.');\n }\n\n let id = timeStampChars.join('');\n\n if (!duplicateTime) {\n for (let i = 0; i < 12; i += 1) {\n lastRandChars[i] = Math.floor(Math.random() * 64);\n }\n } else {\n // if the timestamp hasn't changed since last push,\n // use the same random number, but increment it by 1.\n let i;\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i -= 1) {\n lastRandChars[i] = 0;\n }\n\n lastRandChars[i] += 1;\n }\n\n for (let i = 0; i < 12; i++) {\n id += PUSH_CHARS.charAt(lastRandChars[i]);\n }\n\n if (id.length !== 20) {\n throw new Error('Length should be 20.');\n }\n\n return id;\n}\n\n/**\n * Generate a firestore auto id for use with collection/document .add()\n * @return {string}\n */\nexport function generateFirestoreId() {\n let autoId = '';\n\n for (let i = 0; i < 20; i++) {\n autoId += AUTO_ID_CHARS.charAt(Math.floor(Math.random() * AUTO_ID_CHARS.length));\n }\n return autoId;\n}\n"]}