@chipmobilesdk/rn-ads 0.6.0 → 0.8.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 (340) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/README.md +4 -2
  3. package/lib/commonjs/config/resolveAdUnit.js +80 -0
  4. package/lib/commonjs/config/resolveAdUnit.js.map +1 -0
  5. package/lib/commonjs/config/types.js +138 -0
  6. package/lib/commonjs/config/types.js.map +1 -0
  7. package/lib/commonjs/config/validate.js +150 -0
  8. package/lib/commonjs/config/validate.js.map +1 -0
  9. package/lib/commonjs/core/adOriginatedReturn.js +119 -0
  10. package/lib/commonjs/core/adOriginatedReturn.js.map +1 -0
  11. package/lib/commonjs/core/adsInstance.js +129 -0
  12. package/lib/commonjs/core/adsInstance.js.map +1 -0
  13. package/lib/commonjs/core/consentFlow.js +154 -0
  14. package/lib/commonjs/core/consentFlow.js.map +1 -0
  15. package/lib/commonjs/core/enablement.js +64 -0
  16. package/lib/commonjs/core/enablement.js.map +1 -0
  17. package/lib/commonjs/core/fullScreenLock.js +48 -0
  18. package/lib/commonjs/core/fullScreenLock.js.map +1 -0
  19. package/lib/commonjs/core/gates.js +95 -0
  20. package/lib/commonjs/core/gates.js.map +1 -0
  21. package/lib/commonjs/core/initMachine.js +159 -0
  22. package/lib/commonjs/core/initMachine.js.map +1 -0
  23. package/lib/commonjs/core/instance/consent.js +155 -0
  24. package/lib/commonjs/core/instance/consent.js.map +1 -0
  25. package/lib/commonjs/core/instance/context.js +217 -0
  26. package/lib/commonjs/core/instance/context.js.map +1 -0
  27. package/lib/commonjs/core/instance/gate.js +194 -0
  28. package/lib/commonjs/core/instance/gate.js.map +1 -0
  29. package/lib/commonjs/core/instance/init.js +326 -0
  30. package/lib/commonjs/core/instance/init.js.map +1 -0
  31. package/lib/commonjs/core/instance/internals.js +115 -0
  32. package/lib/commonjs/core/instance/internals.js.map +1 -0
  33. package/lib/commonjs/core/instance/load.js +458 -0
  34. package/lib/commonjs/core/instance/load.js.map +1 -0
  35. package/lib/commonjs/core/instance/show.js +243 -0
  36. package/lib/commonjs/core/instance/show.js.map +1 -0
  37. package/lib/commonjs/core/instance/types.js +6 -0
  38. package/lib/commonjs/core/instance/types.js.map +1 -0
  39. package/lib/commonjs/core/placementMachine.js +116 -0
  40. package/lib/commonjs/core/placementMachine.js.map +1 -0
  41. package/lib/commonjs/core/privacyGate.js +93 -0
  42. package/lib/commonjs/core/privacyGate.js.map +1 -0
  43. package/lib/commonjs/core/requestThrottle.js +152 -0
  44. package/lib/commonjs/core/requestThrottle.js.map +1 -0
  45. package/lib/commonjs/core/retryPolicy.js +120 -0
  46. package/lib/commonjs/core/retryPolicy.js.map +1 -0
  47. package/lib/commonjs/core/rewardedSession.js +65 -0
  48. package/lib/commonjs/core/rewardedSession.js.map +1 -0
  49. package/lib/commonjs/core/timers.js +162 -0
  50. package/lib/commonjs/core/timers.js.map +1 -0
  51. package/lib/commonjs/diagnostics/correlation.js +33 -0
  52. package/lib/commonjs/diagnostics/correlation.js.map +1 -0
  53. package/lib/commonjs/diagnostics/errors.js +152 -0
  54. package/lib/commonjs/diagnostics/errors.js.map +1 -0
  55. package/lib/commonjs/diagnostics/events.js +132 -0
  56. package/lib/commonjs/diagnostics/events.js.map +1 -0
  57. package/lib/commonjs/engine/admobBanner.js +58 -0
  58. package/lib/commonjs/engine/admobBanner.js.map +1 -0
  59. package/lib/commonjs/engine/admobEngine.js +343 -0
  60. package/lib/commonjs/engine/admobEngine.js.map +1 -0
  61. package/lib/commonjs/engine/admobErrors.js +45 -0
  62. package/lib/commonjs/engine/admobErrors.js.map +1 -0
  63. package/lib/commonjs/engine/port.js +6 -0
  64. package/lib/commonjs/engine/port.js.map +1 -0
  65. package/lib/commonjs/engine/testAdUnits.js +61 -0
  66. package/lib/commonjs/engine/testAdUnits.js.map +1 -0
  67. package/lib/commonjs/index.js +218 -0
  68. package/lib/commonjs/index.js.map +1 -0
  69. package/lib/commonjs/package.json +1 -0
  70. package/lib/commonjs/react/AdsBanner.js +317 -0
  71. package/lib/commonjs/react/AdsBanner.js.map +1 -0
  72. package/lib/commonjs/react/AdsProvider.js +54 -0
  73. package/lib/commonjs/react/AdsProvider.js.map +1 -0
  74. package/lib/commonjs/react/hooks.js +63 -0
  75. package/lib/commonjs/react/hooks.js.map +1 -0
  76. package/lib/commonjs/testing/clock.js +76 -0
  77. package/lib/commonjs/testing/clock.js.map +1 -0
  78. package/lib/commonjs/testing/conformance.js +99 -0
  79. package/lib/commonjs/testing/conformance.js.map +1 -0
  80. package/lib/commonjs/testing/index.js +389 -0
  81. package/lib/commonjs/testing/index.js.map +1 -0
  82. package/lib/module/config/resolveAdUnit.js +75 -0
  83. package/lib/module/config/resolveAdUnit.js.map +1 -0
  84. package/lib/module/config/types.js +134 -0
  85. package/lib/module/config/types.js.map +1 -0
  86. package/lib/module/config/validate.js +146 -0
  87. package/lib/module/config/validate.js.map +1 -0
  88. package/lib/module/core/adOriginatedReturn.js +115 -0
  89. package/lib/module/core/adOriginatedReturn.js.map +1 -0
  90. package/lib/module/core/adsInstance.js +121 -0
  91. package/lib/module/core/adsInstance.js.map +1 -0
  92. package/lib/module/core/consentFlow.js +143 -0
  93. package/lib/module/core/consentFlow.js.map +1 -0
  94. package/lib/module/core/enablement.js +58 -0
  95. package/lib/module/core/enablement.js.map +1 -0
  96. package/lib/module/core/fullScreenLock.js +44 -0
  97. package/lib/module/core/fullScreenLock.js.map +1 -0
  98. package/lib/module/core/gates.js +91 -0
  99. package/lib/module/core/gates.js.map +1 -0
  100. package/lib/module/core/initMachine.js +152 -0
  101. package/lib/module/core/initMachine.js.map +1 -0
  102. package/lib/module/core/instance/consent.js +151 -0
  103. package/lib/module/core/instance/consent.js.map +1 -0
  104. package/lib/module/core/instance/context.js +212 -0
  105. package/lib/module/core/instance/context.js.map +1 -0
  106. package/lib/module/core/instance/gate.js +183 -0
  107. package/lib/module/core/instance/gate.js.map +1 -0
  108. package/lib/module/core/instance/init.js +321 -0
  109. package/lib/module/core/instance/init.js.map +1 -0
  110. package/lib/module/core/instance/internals.js +109 -0
  111. package/lib/module/core/instance/internals.js.map +1 -0
  112. package/lib/module/core/instance/load.js +452 -0
  113. package/lib/module/core/instance/load.js.map +1 -0
  114. package/lib/module/core/instance/show.js +238 -0
  115. package/lib/module/core/instance/show.js.map +1 -0
  116. package/lib/module/core/instance/types.js +4 -0
  117. package/lib/module/core/instance/types.js.map +1 -0
  118. package/lib/module/core/placementMachine.js +109 -0
  119. package/lib/module/core/placementMachine.js.map +1 -0
  120. package/lib/module/core/privacyGate.js +86 -0
  121. package/lib/module/core/privacyGate.js.map +1 -0
  122. package/lib/module/core/requestThrottle.js +146 -0
  123. package/lib/module/core/requestThrottle.js.map +1 -0
  124. package/lib/module/core/retryPolicy.js +113 -0
  125. package/lib/module/core/retryPolicy.js.map +1 -0
  126. package/lib/module/core/rewardedSession.js +61 -0
  127. package/lib/module/core/rewardedSession.js.map +1 -0
  128. package/lib/module/core/timers.js +150 -0
  129. package/lib/module/core/timers.js.map +1 -0
  130. package/lib/module/diagnostics/correlation.js +29 -0
  131. package/lib/module/diagnostics/correlation.js.map +1 -0
  132. package/lib/module/diagnostics/errors.js +143 -0
  133. package/lib/module/diagnostics/errors.js.map +1 -0
  134. package/lib/module/diagnostics/events.js +128 -0
  135. package/lib/module/diagnostics/events.js.map +1 -0
  136. package/lib/module/engine/admobBanner.js +52 -0
  137. package/lib/module/engine/admobBanner.js.map +1 -0
  138. package/lib/module/engine/admobEngine.js +334 -0
  139. package/lib/module/engine/admobEngine.js.map +1 -0
  140. package/lib/module/engine/admobErrors.js +41 -0
  141. package/lib/module/engine/admobErrors.js.map +1 -0
  142. package/lib/module/engine/port.js +4 -0
  143. package/lib/module/engine/port.js.map +1 -0
  144. package/lib/module/engine/testAdUnits.js +56 -0
  145. package/lib/module/engine/testAdUnits.js.map +1 -0
  146. package/lib/module/index.js +59 -0
  147. package/lib/module/index.js.map +1 -0
  148. package/lib/module/package.json +1 -0
  149. package/lib/module/react/AdsBanner.js +312 -0
  150. package/lib/module/react/AdsBanner.js.map +1 -0
  151. package/lib/module/react/AdsProvider.js +48 -0
  152. package/lib/module/react/AdsProvider.js.map +1 -0
  153. package/lib/module/react/hooks.js +58 -0
  154. package/lib/module/react/hooks.js.map +1 -0
  155. package/lib/module/testing/clock.js +72 -0
  156. package/lib/module/testing/clock.js.map +1 -0
  157. package/lib/module/testing/conformance.js +93 -0
  158. package/lib/module/testing/conformance.js.map +1 -0
  159. package/lib/module/testing/index.js +366 -0
  160. package/lib/module/testing/index.js.map +1 -0
  161. package/lib/typescript/commonjs/config/resolveAdUnit.d.ts +43 -0
  162. package/lib/typescript/commonjs/config/resolveAdUnit.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/config/types.d.ts +280 -0
  164. package/lib/typescript/commonjs/config/types.d.ts.map +1 -0
  165. package/lib/typescript/commonjs/config/validate.d.ts +49 -0
  166. package/lib/typescript/commonjs/config/validate.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/core/adOriginatedReturn.d.ts +61 -0
  168. package/lib/typescript/commonjs/core/adOriginatedReturn.d.ts.map +1 -0
  169. package/lib/typescript/commonjs/core/adsInstance.d.ts +33 -0
  170. package/lib/typescript/commonjs/core/adsInstance.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/core/consentFlow.d.ts +84 -0
  172. package/lib/typescript/commonjs/core/consentFlow.d.ts.map +1 -0
  173. package/lib/typescript/commonjs/core/enablement.d.ts +74 -0
  174. package/lib/typescript/commonjs/core/enablement.d.ts.map +1 -0
  175. package/lib/typescript/commonjs/core/fullScreenLock.d.ts +25 -0
  176. package/lib/typescript/commonjs/core/fullScreenLock.d.ts.map +1 -0
  177. package/lib/typescript/commonjs/core/gates.d.ts +76 -0
  178. package/lib/typescript/commonjs/core/gates.d.ts.map +1 -0
  179. package/lib/typescript/commonjs/core/initMachine.d.ts +66 -0
  180. package/lib/typescript/commonjs/core/initMachine.d.ts.map +1 -0
  181. package/lib/typescript/commonjs/core/instance/consent.d.ts +4 -0
  182. package/lib/typescript/commonjs/core/instance/consent.d.ts.map +1 -0
  183. package/lib/typescript/commonjs/core/instance/context.d.ts +118 -0
  184. package/lib/typescript/commonjs/core/instance/context.d.ts.map +1 -0
  185. package/lib/typescript/commonjs/core/instance/gate.d.ts +38 -0
  186. package/lib/typescript/commonjs/core/instance/gate.d.ts.map +1 -0
  187. package/lib/typescript/commonjs/core/instance/init.d.ts +13 -0
  188. package/lib/typescript/commonjs/core/instance/init.d.ts.map +1 -0
  189. package/lib/typescript/commonjs/core/instance/internals.d.ts +60 -0
  190. package/lib/typescript/commonjs/core/instance/internals.d.ts.map +1 -0
  191. package/lib/typescript/commonjs/core/instance/load.d.ts +9 -0
  192. package/lib/typescript/commonjs/core/instance/load.d.ts.map +1 -0
  193. package/lib/typescript/commonjs/core/instance/show.d.ts +7 -0
  194. package/lib/typescript/commonjs/core/instance/show.d.ts.map +1 -0
  195. package/lib/typescript/commonjs/core/instance/types.d.ts +240 -0
  196. package/lib/typescript/commonjs/core/instance/types.d.ts.map +1 -0
  197. package/lib/typescript/commonjs/core/placementMachine.d.ts +55 -0
  198. package/lib/typescript/commonjs/core/placementMachine.d.ts.map +1 -0
  199. package/lib/typescript/commonjs/core/privacyGate.d.ts +40 -0
  200. package/lib/typescript/commonjs/core/privacyGate.d.ts.map +1 -0
  201. package/lib/typescript/commonjs/core/requestThrottle.d.ts +99 -0
  202. package/lib/typescript/commonjs/core/requestThrottle.d.ts.map +1 -0
  203. package/lib/typescript/commonjs/core/retryPolicy.d.ts +66 -0
  204. package/lib/typescript/commonjs/core/retryPolicy.d.ts.map +1 -0
  205. package/lib/typescript/commonjs/core/rewardedSession.d.ts +37 -0
  206. package/lib/typescript/commonjs/core/rewardedSession.d.ts.map +1 -0
  207. package/lib/typescript/commonjs/core/timers.d.ts +135 -0
  208. package/lib/typescript/commonjs/core/timers.d.ts.map +1 -0
  209. package/lib/typescript/commonjs/diagnostics/correlation.d.ts +18 -0
  210. package/lib/typescript/commonjs/diagnostics/correlation.d.ts.map +1 -0
  211. package/lib/typescript/commonjs/diagnostics/errors.d.ts +59 -0
  212. package/lib/typescript/commonjs/diagnostics/errors.d.ts.map +1 -0
  213. package/lib/typescript/commonjs/diagnostics/events.d.ts +126 -0
  214. package/lib/typescript/commonjs/diagnostics/events.d.ts.map +1 -0
  215. package/lib/typescript/commonjs/engine/admobBanner.d.ts +10 -0
  216. package/lib/typescript/commonjs/engine/admobBanner.d.ts.map +1 -0
  217. package/lib/typescript/commonjs/engine/admobEngine.d.ts +71 -0
  218. package/lib/typescript/commonjs/engine/admobEngine.d.ts.map +1 -0
  219. package/lib/typescript/commonjs/engine/admobErrors.d.ts +9 -0
  220. package/lib/typescript/commonjs/engine/admobErrors.d.ts.map +1 -0
  221. package/lib/typescript/commonjs/engine/port.d.ts +171 -0
  222. package/lib/typescript/commonjs/engine/port.d.ts.map +1 -0
  223. package/lib/typescript/commonjs/engine/testAdUnits.d.ts +33 -0
  224. package/lib/typescript/commonjs/engine/testAdUnits.d.ts.map +1 -0
  225. package/lib/typescript/commonjs/index.d.ts +42 -0
  226. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  227. package/lib/typescript/commonjs/package.json +1 -0
  228. package/lib/typescript/commonjs/react/AdsBanner.d.ts +29 -0
  229. package/lib/typescript/commonjs/react/AdsBanner.d.ts.map +1 -0
  230. package/lib/typescript/commonjs/react/AdsProvider.d.ts +36 -0
  231. package/lib/typescript/commonjs/react/AdsProvider.d.ts.map +1 -0
  232. package/lib/typescript/commonjs/react/hooks.d.ts +27 -0
  233. package/lib/typescript/commonjs/react/hooks.d.ts.map +1 -0
  234. package/lib/typescript/commonjs/testing/clock.d.ts +29 -0
  235. package/lib/typescript/commonjs/testing/clock.d.ts.map +1 -0
  236. package/lib/typescript/commonjs/testing/conformance.d.ts +26 -0
  237. package/lib/typescript/commonjs/testing/conformance.d.ts.map +1 -0
  238. package/lib/typescript/commonjs/testing/index.d.ts +133 -0
  239. package/lib/typescript/commonjs/testing/index.d.ts.map +1 -0
  240. package/lib/typescript/module/config/resolveAdUnit.d.ts +43 -0
  241. package/lib/typescript/module/config/resolveAdUnit.d.ts.map +1 -0
  242. package/lib/typescript/module/config/types.d.ts +280 -0
  243. package/lib/typescript/module/config/types.d.ts.map +1 -0
  244. package/lib/typescript/module/config/validate.d.ts +49 -0
  245. package/lib/typescript/module/config/validate.d.ts.map +1 -0
  246. package/lib/typescript/module/core/adOriginatedReturn.d.ts +61 -0
  247. package/lib/typescript/module/core/adOriginatedReturn.d.ts.map +1 -0
  248. package/lib/typescript/module/core/adsInstance.d.ts +33 -0
  249. package/lib/typescript/module/core/adsInstance.d.ts.map +1 -0
  250. package/lib/typescript/module/core/consentFlow.d.ts +84 -0
  251. package/lib/typescript/module/core/consentFlow.d.ts.map +1 -0
  252. package/lib/typescript/module/core/enablement.d.ts +74 -0
  253. package/lib/typescript/module/core/enablement.d.ts.map +1 -0
  254. package/lib/typescript/module/core/fullScreenLock.d.ts +25 -0
  255. package/lib/typescript/module/core/fullScreenLock.d.ts.map +1 -0
  256. package/lib/typescript/module/core/gates.d.ts +76 -0
  257. package/lib/typescript/module/core/gates.d.ts.map +1 -0
  258. package/lib/typescript/module/core/initMachine.d.ts +66 -0
  259. package/lib/typescript/module/core/initMachine.d.ts.map +1 -0
  260. package/lib/typescript/module/core/instance/consent.d.ts +4 -0
  261. package/lib/typescript/module/core/instance/consent.d.ts.map +1 -0
  262. package/lib/typescript/module/core/instance/context.d.ts +118 -0
  263. package/lib/typescript/module/core/instance/context.d.ts.map +1 -0
  264. package/lib/typescript/module/core/instance/gate.d.ts +38 -0
  265. package/lib/typescript/module/core/instance/gate.d.ts.map +1 -0
  266. package/lib/typescript/module/core/instance/init.d.ts +13 -0
  267. package/lib/typescript/module/core/instance/init.d.ts.map +1 -0
  268. package/lib/typescript/module/core/instance/internals.d.ts +60 -0
  269. package/lib/typescript/module/core/instance/internals.d.ts.map +1 -0
  270. package/lib/typescript/module/core/instance/load.d.ts +9 -0
  271. package/lib/typescript/module/core/instance/load.d.ts.map +1 -0
  272. package/lib/typescript/module/core/instance/show.d.ts +7 -0
  273. package/lib/typescript/module/core/instance/show.d.ts.map +1 -0
  274. package/lib/typescript/module/core/instance/types.d.ts +240 -0
  275. package/lib/typescript/module/core/instance/types.d.ts.map +1 -0
  276. package/lib/typescript/module/core/placementMachine.d.ts +55 -0
  277. package/lib/typescript/module/core/placementMachine.d.ts.map +1 -0
  278. package/lib/typescript/module/core/privacyGate.d.ts +40 -0
  279. package/lib/typescript/module/core/privacyGate.d.ts.map +1 -0
  280. package/lib/typescript/module/core/requestThrottle.d.ts +99 -0
  281. package/lib/typescript/module/core/requestThrottle.d.ts.map +1 -0
  282. package/lib/typescript/module/core/retryPolicy.d.ts +66 -0
  283. package/lib/typescript/module/core/retryPolicy.d.ts.map +1 -0
  284. package/lib/typescript/module/core/rewardedSession.d.ts +37 -0
  285. package/lib/typescript/module/core/rewardedSession.d.ts.map +1 -0
  286. package/lib/typescript/module/core/timers.d.ts +135 -0
  287. package/lib/typescript/module/core/timers.d.ts.map +1 -0
  288. package/lib/typescript/module/diagnostics/correlation.d.ts +18 -0
  289. package/lib/typescript/module/diagnostics/correlation.d.ts.map +1 -0
  290. package/lib/typescript/module/diagnostics/errors.d.ts +59 -0
  291. package/lib/typescript/module/diagnostics/errors.d.ts.map +1 -0
  292. package/lib/typescript/module/diagnostics/events.d.ts +126 -0
  293. package/lib/typescript/module/diagnostics/events.d.ts.map +1 -0
  294. package/lib/typescript/module/engine/admobBanner.d.ts +10 -0
  295. package/lib/typescript/module/engine/admobBanner.d.ts.map +1 -0
  296. package/lib/typescript/module/engine/admobEngine.d.ts +71 -0
  297. package/lib/typescript/module/engine/admobEngine.d.ts.map +1 -0
  298. package/lib/typescript/module/engine/admobErrors.d.ts +9 -0
  299. package/lib/typescript/module/engine/admobErrors.d.ts.map +1 -0
  300. package/lib/typescript/module/engine/port.d.ts +171 -0
  301. package/lib/typescript/module/engine/port.d.ts.map +1 -0
  302. package/lib/typescript/module/engine/testAdUnits.d.ts +33 -0
  303. package/lib/typescript/module/engine/testAdUnits.d.ts.map +1 -0
  304. package/lib/typescript/module/index.d.ts +42 -0
  305. package/lib/typescript/module/index.d.ts.map +1 -0
  306. package/lib/typescript/module/package.json +1 -0
  307. package/lib/typescript/module/react/AdsBanner.d.ts +29 -0
  308. package/lib/typescript/module/react/AdsBanner.d.ts.map +1 -0
  309. package/lib/typescript/module/react/AdsProvider.d.ts +36 -0
  310. package/lib/typescript/module/react/AdsProvider.d.ts.map +1 -0
  311. package/lib/typescript/module/react/hooks.d.ts +27 -0
  312. package/lib/typescript/module/react/hooks.d.ts.map +1 -0
  313. package/lib/typescript/module/testing/clock.d.ts +29 -0
  314. package/lib/typescript/module/testing/clock.d.ts.map +1 -0
  315. package/lib/typescript/module/testing/conformance.d.ts +26 -0
  316. package/lib/typescript/module/testing/conformance.d.ts.map +1 -0
  317. package/lib/typescript/module/testing/index.d.ts +133 -0
  318. package/lib/typescript/module/testing/index.d.ts.map +1 -0
  319. package/package.json +48 -12
  320. package/skills/sdk-rn-ads/SKILL.md +2 -1
  321. package/src/core/adsInstance.ts +72 -1829
  322. package/src/core/consentFlow.ts +1 -20
  323. package/src/core/instance/consent.ts +162 -0
  324. package/src/core/instance/context.ts +328 -0
  325. package/src/core/instance/gate.ts +147 -0
  326. package/src/core/instance/init.ts +262 -0
  327. package/src/core/instance/internals.ts +138 -0
  328. package/src/core/instance/load.ts +426 -0
  329. package/src/core/instance/show.ts +202 -0
  330. package/src/core/instance/types.ts +198 -0
  331. package/src/core/requestThrottle.ts +11 -17
  332. package/src/diagnostics/errors.ts +24 -5
  333. package/src/engine/admobBanner.tsx +55 -0
  334. package/src/engine/admobEngine.ts +21 -12
  335. package/src/engine/admobErrors.ts +44 -0
  336. package/src/engine/port.ts +46 -1
  337. package/src/engine/testAdUnits.ts +0 -5
  338. package/src/react/AdsBanner.tsx +81 -80
  339. package/src/testing/clock.ts +75 -0
  340. package/src/testing/index.ts +43 -68
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createEventEmitter = createEventEmitter;
7
+ exports.normalizeReward = normalizeReward;
8
+ var _rnCore = require("@chipmobilesdk/rn-core");
9
+ var _errors = require("./errors.js");
10
+ /**
11
+ * Normalized event model and emitter (FR-051, FR-052, FR-054, FR-056).
12
+ *
13
+ * Events are the package's only observability surface. They carry no provider
14
+ * object, no advertising identifier, no consent payload, and nothing that
15
+ * identifies a user — a consuming app forwards them to whatever logging or
16
+ * analytics it already has, and the package depends on none (FR-055).
17
+ *
18
+ * Dispatch iterates a snapshot of the listener set so subscribing or
19
+ * unsubscribing during a dispatch neither skips a listener nor double-invokes
20
+ * one. A listener that throws is caught and reported once; it cannot corrupt a
21
+ * state machine or starve another listener (FR-056).
22
+ */
23
+
24
+ /**
25
+ * `source` records whether the provider reported a true impression or the
26
+ * package derived one. Banners get a real impression callback; full-screen
27
+ * formats have none in the provider's event enum, so theirs is derived from the
28
+ * ad opening. Flattening that away would make the model quietly wrong for anyone
29
+ * reconciling these events against revenue reporting.
30
+ */
31
+
32
+ /**
33
+ * Configuration problems worth telling the app about, all under one event type.
34
+ *
35
+ * One type rather than three because FR-132 forbids a parallel vocabulary, and
36
+ * because a consumer already routing `config_warning` into its logging should
37
+ * not have to subscribe again to keep seeing everything.
38
+ */
39
+
40
+ /** Events that may occur at most once within one correlated cycle (FR-054). */
41
+ const ONCE_PER_CYCLE = new Set(['loaded', 'display_started', 'impression', 'dismissed', 'reward_earned']);
42
+ /**
43
+ * How many once-per-cycle keys the emitter remembers. A cycle's duplicates arrive
44
+ * within that cycle, so forgetting the oldest keys past this bound loses nothing,
45
+ * and memory stays flat however long the instance lives (CORE-12, ADS-05).
46
+ */
47
+ const DEDUPE_CAPACITY = 256;
48
+
49
+ /** Every delivered event also goes to the app's SDK sinks (`installSdkSink`, CORE-08). */
50
+ const channel = (0, _rnCore.createDiagnosticChannel)('rn-ads');
51
+ function severityOf(event) {
52
+ switch (event.type) {
53
+ case 'internal_error':
54
+ return 'error';
55
+ case 'load_failed':
56
+ case 'display_failed':
57
+ case 'config_warning':
58
+ return 'warn';
59
+ default:
60
+ return 'info';
61
+ }
62
+ }
63
+
64
+ /** What a sink may see: where and which cycle, and an error's code. Never a payload. */
65
+ function contextOf(event) {
66
+ return {
67
+ ...(event.placementKey === undefined ? {} : {
68
+ placementKey: event.placementKey
69
+ }),
70
+ ...(event.format === undefined ? {} : {
71
+ format: event.format
72
+ }),
73
+ ...('error' in event ? {
74
+ code: event.error.code,
75
+ retryable: event.error.retryable
76
+ } : {})
77
+ };
78
+ }
79
+ function createEventEmitter() {
80
+ // The event whose listeners are running, so a listener's failure is reported
81
+ // against the placement and cycle it broke (FR-056).
82
+ let dispatching = null;
83
+ const emitter = (0, _rnCore.createEmitter)({
84
+ onListenerError(error) {
85
+ emitter.emit({
86
+ type: 'internal_error',
87
+ timestamp: Date.now(),
88
+ placementKey: dispatching?.placementKey,
89
+ format: dispatching?.format,
90
+ correlationId: dispatching?.correlationId,
91
+ error: new _errors.AdsError('internal_error', {
92
+ message: 'consumer event listener threw',
93
+ cause: error
94
+ })
95
+ });
96
+ },
97
+ dedupe: {
98
+ key: event => event.correlationId && ONCE_PER_CYCLE.has(event.type) ? `${event.correlationId}:${event.type}` : undefined,
99
+ capacity: DEDUPE_CAPACITY
100
+ }
101
+ });
102
+ return {
103
+ emit(event) {
104
+ // After dispose, a late provider callback updates nothing and emits
105
+ // nothing (FR-035, SC-008); the rn-core emitter enforces both.
106
+ const previous = dispatching;
107
+ dispatching = event;
108
+ try {
109
+ if (emitter.emit(event)) {
110
+ channel.emit(event.type, severityOf(event), contextOf(event), event.correlationId);
111
+ }
112
+ } finally {
113
+ dispatching = previous;
114
+ }
115
+ },
116
+ // Idempotent unsubscribe (FR-005).
117
+ subscribe: listener => emitter.subscribe(listener),
118
+ dispose: () => emitter.dispose(),
119
+ listenerCount: () => emitter.listenerCount()
120
+ };
121
+ }
122
+
123
+ /** Normalizes a provider reward descriptor. No provider object crosses this (FR-047). */
124
+ function normalizeReward(value) {
125
+ const source = value ?? {};
126
+ const amount = Number(source.amount);
127
+ return {
128
+ type: typeof source.type === 'string' ? source.type : 'reward',
129
+ amount: Number.isFinite(amount) ? amount : 0
130
+ };
131
+ }
132
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_rnCore","require","_errors","ONCE_PER_CYCLE","Set","DEDUPE_CAPACITY","channel","createDiagnosticChannel","severityOf","event","type","contextOf","placementKey","undefined","format","code","error","retryable","createEventEmitter","dispatching","emitter","createEmitter","onListenerError","emit","timestamp","Date","now","correlationId","AdsError","message","cause","dedupe","key","has","capacity","previous","subscribe","listener","dispose","listenerCount","normalizeReward","value","source","amount","Number","isFinite"],"sourceRoot":"../../../src","sources":["diagnostics/events.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createAdMobBanner = createAdMobBanner;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _admobErrors = require("./admobErrors.js");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ /**
12
+ * The AdMob adaptive banner behind the engine port (ADS-12).
13
+ *
14
+ * `AdsBanner` renders whatever banner component the engine offers and passes
15
+ * neutral props; this file is where they become AdMob's. So the banner host no
16
+ * longer requires the bridge itself, a fake engine can render a banner in a test
17
+ * without mocking a native module, and an iOS or other-provider engine supplies
18
+ * its own component.
19
+ */
20
+
21
+ /** The slice of the bridge the banner uses. */
22
+
23
+ function createAdMobBanner(getProvider) {
24
+ function AdMobBanner({
25
+ adUnitId,
26
+ personalizedAds,
27
+ onLoaded,
28
+ onFailed,
29
+ onImpression,
30
+ onClicked
31
+ }) {
32
+ const provider = getProvider();
33
+ const BannerAd = provider?.BannerAd;
34
+ if (!BannerAd) {
35
+ return null;
36
+ }
37
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(BannerAd, {
38
+ unitId: adUnitId
39
+ // Adaptive, so the banner fills the container the app measured (FR-038).
40
+ ,
41
+ size: provider.BannerAdSize?.ANCHORED_ADAPTIVE_BANNER
42
+ // The provider's polarity is the inverse of the consumer-facing option.
43
+ ,
44
+ requestOptions: {
45
+ requestNonPersonalizedAdsOnly: !personalizedAds
46
+ },
47
+ onAdLoaded: () => onLoaded(),
48
+ onAdFailedToLoad: error => onFailed(error, (0, _admobErrors.classifyProviderFailure)(error)),
49
+ onAdImpression: () => onImpression(),
50
+ onAdClicked: () => onClicked()
51
+ });
52
+ }
53
+ return {
54
+ isAvailable: () => Boolean(getProvider()?.BannerAd),
55
+ Component: AdMobBanner
56
+ };
57
+ }
58
+ //# sourceMappingURL=admobBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_admobErrors","_jsxRuntime","e","__esModule","default","createAdMobBanner","getProvider","AdMobBanner","adUnitId","personalizedAds","onLoaded","onFailed","onImpression","onClicked","provider","BannerAd","jsx","unitId","size","BannerAdSize","ANCHORED_ADAPTIVE_BANNER","requestOptions","requestNonPersonalizedAdsOnly","onAdLoaded","onAdFailedToLoad","error","classifyProviderFailure","onAdImpression","onAdClicked","isAvailable","Boolean","Component"],"sourceRoot":"../../../src","sources":["engine/admobBanner.tsx"],"mappings":";;;;;;AASA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,YAAA,GAAAD,OAAA;AAAwD,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAZxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;;AAMO,SAASG,iBAAiBA,CAACC,WAA8C,EAAgB;EAC/F,SAASC,WAAWA,CAAC;IACpBC,QAAQ;IACRC,eAAe;IACfC,QAAQ;IACRC,QAAQ;IACRC,YAAY;IACZC;EACkB,CAAC,EAAE;IACrB,MAAMC,QAAQ,GAAGR,WAAW,CAAC,CAAC;IAC9B,MAAMS,QAAQ,GAAGD,QAAQ,EAAEC,QAAQ;IACnC,IAAI,CAACA,QAAQ,EAAE;MACd,OAAO,IAAI;IACZ;IACA,oBACC,IAAAd,WAAA,CAAAe,GAAA,EAACD,QAAQ;MACRE,MAAM,EAAET;MACR;MAAA;MACAU,IAAI,EAAEJ,QAAQ,CAACK,YAAY,EAAEC;MAC7B;MAAA;MACAC,cAAc,EAAE;QAAEC,6BAA6B,EAAE,CAACb;MAAgB,CAAE;MACpEc,UAAU,EAAEA,CAAA,KAAMb,QAAQ,CAAC,CAAE;MAC7Bc,gBAAgB,EAAGC,KAAc,IAAKd,QAAQ,CAACc,KAAK,EAAE,IAAAC,oCAAuB,EAACD,KAAK,CAAC,CAAE;MACtFE,cAAc,EAAEA,CAAA,KAAMf,YAAY,CAAC,CAAE;MACrCgB,WAAW,EAAEA,CAAA,KAAMf,SAAS,CAAC;IAAE,CAC/B,CAAC;EAEJ;EAEA,OAAO;IACNgB,WAAW,EAAEA,CAAA,KAAMC,OAAO,CAACxB,WAAW,CAAC,CAAC,EAAES,QAAQ,CAAC;IACnDgB,SAAS,EAAExB;EACZ,CAAC;AACF","ignoreList":[]}
@@ -0,0 +1,343 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.admobProvider = void 0;
7
+ Object.defineProperty(exports, "classifyProviderFailure", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _admobErrors.classifyProviderFailure;
11
+ }
12
+ });
13
+ exports.createAdMobEngine = createAdMobEngine;
14
+ var _rnCore = require("@chipmobilesdk/rn-core");
15
+ var _reactNative = require("react-native");
16
+ var _events = require("../diagnostics/events.js");
17
+ var _admobBanner = require("./admobBanner.js");
18
+ var _admobErrors = require("./admobErrors.js");
19
+ /**
20
+ * Default AdsEngine adapter for Google AdMob on Android.
21
+ *
22
+ * **This is the only module in the package that knows an ad provider exists.**
23
+ * It lazily requires `react-native-google-mobile-ads`, mirroring
24
+ * `packages/rn-camera/src/native/cameraEngine.ts`, so unit tests that inject the
25
+ * fake never load native code and an unsupported platform never loads it at all.
26
+ *
27
+ * Targets bridge 16.0.3, whose ads SDK (24.9.0) predates the Kotlin 2.3 metadata
28
+ * bump that makes newer releases uncompilable under React Native 0.85's pinned
29
+ * Kotlin compiler — see specs/011-rn-advertising-sdk/research.md (R2).
30
+ *
31
+ * Ordering note: `setRequestConfiguration` must run *before* `initialize`, or
32
+ * the child-directed and under-age flags do not take effect. That is why FR-020
33
+ * treats a later change as requiring re-initialization rather than pretending it
34
+ * applied.
35
+ */
36
+
37
+ /** The slice of the bridge this adapter uses. Kept local so nothing else sees it. */
38
+
39
+ /** The slice of the bridge's consent module this adapter uses. */
40
+
41
+ /**
42
+ * The provider's geography enum is numeric and its spelling is the provider's.
43
+ * Translating here rather than in `core/` is the same rule the rest of this file
44
+ * follows: the one module that knows a provider exists is the one that speaks
45
+ * its vocabulary.
46
+ */
47
+ function toProviderGeography(geography, values) {
48
+ switch (geography) {
49
+ case 'eea':
50
+ return values.EEA;
51
+ case 'not_eea':
52
+ return values.NOT_EEA;
53
+ case 'regulated_us_state':
54
+ return values.REGULATED_US_STATE;
55
+ case 'other':
56
+ return values.OTHER;
57
+ case 'disabled':
58
+ return values.DISABLED;
59
+ default:
60
+ return undefined;
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Normalizes the provider's consent shape into the engine's.
66
+ *
67
+ * `canRequestAds` is taken as reported and never inferred from the status: the
68
+ * provider is the authority on whether a request is permitted, and second-
69
+ * guessing it here is how a package ends up requesting ads it should not
70
+ * (FR-106, FR-107).
71
+ */
72
+ function toEngineConsentInfo(info) {
73
+ const status = String(info.status ?? 'UNKNOWN').toUpperCase();
74
+ const normalized = status === 'OBTAINED' ? 'obtained' : status === 'REQUIRED' ? 'required' : status === 'NOT_REQUIRED' ? 'not_required' : 'unknown';
75
+ return {
76
+ status: normalized,
77
+ canRequestAds: info.canRequestAds === true,
78
+ isFormAvailable: info.isConsentFormAvailable === true,
79
+ privacyOptions: toEnginePrivacyOptions(info.privacyOptionsRequirementStatus)
80
+ };
81
+ }
82
+
83
+ /**
84
+ * Same rule as the status: an unrecognized value is `unknown`, never a guess in
85
+ * either direction (FR-150).
86
+ */
87
+ function toEnginePrivacyOptions(value) {
88
+ switch (String(value ?? 'UNKNOWN').toUpperCase()) {
89
+ case 'REQUIRED':
90
+ return 'required';
91
+ case 'NOT_REQUIRED':
92
+ return 'not_required';
93
+ default:
94
+ return 'unknown';
95
+ }
96
+ }
97
+
98
+ /**
99
+ * The provider bridge, loaded on first use (rn-core's lazy peer). It is a required
100
+ * peer, but a consumer can still have it missing mid-install or excluded from a
101
+ * build: reporting `provider_missing` beats crashing the host app's launch
102
+ * (FR-025, NFR-005). The banner component reaches it through the same loader.
103
+ */
104
+ const admobProvider = exports.admobProvider = (0, _rnCore.lazyPeer)('react-native-google-mobile-ads', () => {
105
+ // Inside `try`, so Metro bundles an app that leaves this optional peer out.
106
+ try {
107
+ return require('react-native-google-mobile-ads');
108
+ } catch (cause) {
109
+ throw cause;
110
+ }
111
+ });
112
+ function loadProvider() {
113
+ const result = admobProvider.get();
114
+ return result.ok ? result.module : null;
115
+ }
116
+ function toProviderRating(rating, ratings) {
117
+ return rating ? ratings[rating] : undefined;
118
+ }
119
+
120
+ /** One unsubscribe covering every listener that was actually registered. */
121
+ function makeUnsubscribe(removers) {
122
+ let active = true;
123
+ return () => {
124
+ if (!active) {
125
+ return;
126
+ }
127
+ active = false;
128
+ for (const remove of removers) {
129
+ try {
130
+ remove();
131
+ } catch {
132
+ // A provider that throws on removal must not prevent the rest of
133
+ // cleanup from running (FR-035).
134
+ }
135
+ }
136
+ };
137
+ }
138
+ function createAdMobEngine() {
139
+ // v1 is Android-only. On any other platform this stays null and every
140
+ // operation resolves to `unsupported_platform` (SC-004, scenario 12).
141
+ const supported = _reactNative.Platform.OS === 'android';
142
+ let provider = null;
143
+ let providerResolved = false;
144
+ function getProvider() {
145
+ if (!supported) {
146
+ return null;
147
+ }
148
+ if (!providerResolved) {
149
+ providerResolved = true;
150
+ provider = loadProvider();
151
+ }
152
+ return provider;
153
+ }
154
+
155
+ // The format is kept alongside the ad because the provider validates which
156
+ // event types a given ad object accepts, and rejects the rewarded ones on an
157
+ // interstitial by throwing (see `subscribe`).
158
+ const ads = new Map();
159
+ let counter = 0;
160
+ return {
161
+ isAvailable() {
162
+ return supported && getProvider() !== null;
163
+ },
164
+ // The adaptive banner renders through the engine like every other format
165
+ // (ADS-12), so the banner host never names the provider.
166
+ banner: (0, _admobBanner.createAdMobBanner)(getProvider),
167
+ async initialize(privacy) {
168
+ const module = getProvider();
169
+ if (!module) {
170
+ throw new Error('provider_missing');
171
+ }
172
+ const mobileAds = module.MobileAds();
173
+
174
+ // Before initialize(), deliberately. See the ordering note above.
175
+ await mobileAds.setRequestConfiguration({
176
+ tagForChildDirectedTreatment: privacy.childDirected,
177
+ tagForUnderAgeOfConsent: privacy.underAgeOfConsent,
178
+ maxAdContentRating: toProviderRating(privacy.maxAdContentRating, module.MaxAdContentRating),
179
+ testDeviceIdentifiers: privacy.testDeviceIds ? [...privacy.testDeviceIds] : undefined
180
+ });
181
+ await mobileAds.initialize();
182
+ },
183
+ async createFullScreen(format, adUnitId, request) {
184
+ const module = getProvider();
185
+ if (!module) {
186
+ throw new Error('provider_missing');
187
+ }
188
+ const factory = format === 'rewarded' ? module.RewardedAd : format === 'app_open' ? module.AppOpenAd : module.InterstitialAd;
189
+ const ad = factory.createForAdRequest(adUnitId, {
190
+ // The consumer-facing polarity is `personalizedAds`; the provider's
191
+ // is the inverse. The flip lives here, next to the API needing it.
192
+ requestNonPersonalizedAdsOnly: request?.personalizedAds === false
193
+ });
194
+ counter += 1;
195
+ const id = `admob-${counter}`;
196
+ ads.set(id, {
197
+ ad,
198
+ format
199
+ });
200
+ // The provider loads asynchronously; callbacks arrive through subscribe.
201
+ ad.load();
202
+ return {
203
+ id
204
+ };
205
+ },
206
+ async show(handle) {
207
+ const entry = ads.get(handle.id);
208
+ if (!entry) {
209
+ throw new Error('ad handle disposed');
210
+ }
211
+ await entry.ad.show();
212
+ },
213
+ subscribe(handle, listener) {
214
+ const module = getProvider();
215
+ const entry = ads.get(handle.id);
216
+ if (!module || !entry) {
217
+ return () => undefined;
218
+ }
219
+ const {
220
+ ad,
221
+ format
222
+ } = entry;
223
+ const {
224
+ AdEventType,
225
+ RewardedAdEventType
226
+ } = module;
227
+ const removers = [];
228
+ const on = (type, map) => {
229
+ if (!type) {
230
+ return;
231
+ }
232
+ try {
233
+ removers.push(ad.addAdEventListener(type, payload => {
234
+ const event = map(payload);
235
+ if (event) {
236
+ listener(event);
237
+ }
238
+ }));
239
+ } catch {
240
+ // The provider validates event types per ad object and throws on
241
+ // one it does not accept. Skipping the listener keeps a single
242
+ // rejected type from tearing down the whole subscription — which
243
+ // would fail the load outright while the ad went on to load fine,
244
+ // reporting a `provider_error` for an ad that was never broken.
245
+ }
246
+ };
247
+ on(AdEventType.LOADED, () => ({
248
+ type: 'loaded'
249
+ }));
250
+ on(AdEventType.ERROR, cause => ({
251
+ type: 'failed',
252
+ cause,
253
+ kind: (0, _admobErrors.classifyProviderFailure)(cause)
254
+ }));
255
+ on(AdEventType.OPENED, () => ({
256
+ type: 'opened'
257
+ }));
258
+ on(AdEventType.CLICKED, () => ({
259
+ type: 'clicked'
260
+ }));
261
+ on(AdEventType.CLOSED, () => ({
262
+ type: 'dismissed'
263
+ }));
264
+
265
+ // Rewarded-only, and gated on the format because the provider REJECTS
266
+ // these types on an interstitial. The rewarded loaded event is distinct
267
+ // from AdEventType.LOADED, and EARNED_REWARD is distinct from CLOSED —
268
+ // which is precisely what makes FR-046 and FR-048 enforceable rather
269
+ // than a guess about ordering.
270
+ if (format !== 'rewarded') {
271
+ return makeUnsubscribe(removers);
272
+ }
273
+ on(RewardedAdEventType.LOADED, () => ({
274
+ type: 'loaded'
275
+ }));
276
+ on(RewardedAdEventType.EARNED_REWARD, payload => ({
277
+ type: 'rewarded',
278
+ reward: (0, _events.normalizeReward)(payload)
279
+ }));
280
+ return makeUnsubscribe(removers);
281
+ },
282
+ dispose(handle) {
283
+ ads.delete(handle.id);
284
+ },
285
+ consent: createAdMobConsent(getProvider)
286
+ };
287
+ }
288
+
289
+ /**
290
+ * The consent platform adapter.
291
+ *
292
+ * It is deliberately thin. Every decision that could be made here — whether a
293
+ * region requires consent, whether an error means "no", whether a dismissed form
294
+ * counts — is made elsewhere or not at all: the provider owns the first, and
295
+ * `core/consentFlow.ts` owns the second and third. This file's only job is to
296
+ * call the right method and hand back a shape that names nothing Google.
297
+ */
298
+ function createAdMobConsent(getProvider) {
299
+ function requireConsent() {
300
+ const module = getProvider();
301
+ if (!module?.AdsConsent) {
302
+ throw new Error('provider_missing');
303
+ }
304
+ return module.AdsConsent;
305
+ }
306
+ return {
307
+ async requestInfoUpdate(options) {
308
+ const module = getProvider();
309
+ if (!module?.AdsConsent) {
310
+ throw new Error('provider_missing');
311
+ }
312
+ const debugGeography = toProviderGeography(options.debugGeography, module.AdsConsentDebugGeography ?? {});
313
+ const info = await module.AdsConsent.requestInfoUpdate({
314
+ // Passing `undefined` rather than omitting keeps the call shape
315
+ // stable; the bridge treats an absent value as "no override".
316
+ debugGeography,
317
+ tagForUnderAgeOfConsent: options.underAgeOfConsent,
318
+ testDeviceIdentifiers: options.testDeviceIds ? [...options.testDeviceIds] : undefined
319
+ });
320
+ return toEngineConsentInfo(info);
321
+ },
322
+ async showFormIfRequired() {
323
+ // The provider decides whether a form is needed and renders it. The
324
+ // package never draws consent UI of its own (FR-103).
325
+ const info = await requireConsent().loadAndShowConsentFormIfRequired();
326
+ return toEngineConsentInfo(info);
327
+ },
328
+ async showPrivacyOptionsForm() {
329
+ // Present in the pinned bridge 16.0.3, so no range change (FR-155).
330
+ // Resolves with the consent information as it stands once the form
331
+ // closes, whether the user changed anything or not.
332
+ const info = await requireConsent().showPrivacyOptionsForm();
333
+ return toEngineConsentInfo(info);
334
+ },
335
+ async getInfo() {
336
+ return toEngineConsentInfo(await requireConsent().getConsentInfo());
337
+ },
338
+ reset() {
339
+ requireConsent().reset();
340
+ }
341
+ };
342
+ }
343
+ //# sourceMappingURL=admobEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_rnCore","require","_reactNative","_events","_admobBanner","_admobErrors","toProviderGeography","geography","values","EEA","NOT_EEA","REGULATED_US_STATE","OTHER","DISABLED","undefined","toEngineConsentInfo","info","status","String","toUpperCase","normalized","canRequestAds","isFormAvailable","isConsentFormAvailable","privacyOptions","toEnginePrivacyOptions","privacyOptionsRequirementStatus","value","admobProvider","exports","lazyPeer","cause","loadProvider","result","get","ok","module","toProviderRating","rating","ratings","makeUnsubscribe","removers","active","remove","createAdMobEngine","supported","Platform","OS","provider","providerResolved","getProvider","ads","Map","counter","isAvailable","banner","createAdMobBanner","initialize","privacy","Error","mobileAds","MobileAds","setRequestConfiguration","tagForChildDirectedTreatment","childDirected","tagForUnderAgeOfConsent","underAgeOfConsent","maxAdContentRating","MaxAdContentRating","testDeviceIdentifiers","testDeviceIds","createFullScreen","format","adUnitId","request","factory","RewardedAd","AppOpenAd","InterstitialAd","ad","createForAdRequest","requestNonPersonalizedAdsOnly","personalizedAds","id","set","load","show","handle","entry","subscribe","listener","AdEventType","RewardedAdEventType","on","type","map","push","addAdEventListener","payload","event","LOADED","ERROR","kind","classifyProviderFailure","OPENED","CLICKED","CLOSED","EARNED_REWARD","reward","normalizeReward","dispose","delete","consent","createAdMobConsent","requireConsent","AdsConsent","requestInfoUpdate","options","debugGeography","AdsConsentDebugGeography","showFormIfRequired","loadAndShowConsentFormIfRequired","showPrivacyOptionsForm","getInfo","getConsentInfo","reset"],"sourceRoot":"../../../src","sources":["engine/admobEngine.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.classifyProviderFailure = classifyProviderFailure;
7
+ /**
8
+ * AdMob's error vocabulary, translated into the port's neutral failure kinds
9
+ * (ADS-08). Shared by the full-screen engine and the banner component, which
10
+ * are the only two places that see a provider error.
11
+ */
12
+
13
+ /**
14
+ * The bridge's error codes that say the provider refused the request itself, so
15
+ * that asking again cannot help (ADS-08). Kept to codes the bridge has reported
16
+ * the same way across releases. `internal-error` is deliberately absent: AdMob
17
+ * uses it for an invalid server response too, which a later request can survive.
18
+ */
19
+ const REJECTED_CODES = new Set(['invalid-request', 'invalid-argument', 'app-id-missing', 'request-id-mismatch']);
20
+
21
+ /** The bridge's code for an error: `error.code`, or the `[googleMobileAds/<code>]` prefix. */
22
+ function providerCodeOf(cause) {
23
+ const code = cause?.code;
24
+ if (typeof code === 'string') {
25
+ return code.replace(/^googleMobileAds\//, '');
26
+ }
27
+ const message = cause instanceof Error ? cause.message : typeof cause === 'string' ? cause : '';
28
+ return /\[googleMobileAds\/([a-z-]+)\]/.exec(message)?.[1] ?? null;
29
+ }
30
+
31
+ /** Classifies a provider failure in neutral terms; undefined when it cannot tell. */
32
+ function classifyProviderFailure(cause) {
33
+ const code = providerCodeOf(cause);
34
+ if (code === null) {
35
+ return undefined;
36
+ }
37
+ if (code === 'no-fill' || code === 'mediation-no-fill') {
38
+ return 'no_fill';
39
+ }
40
+ if (code === 'network-error') {
41
+ return 'network';
42
+ }
43
+ return REJECTED_CODES.has(code) ? 'rejected' : undefined;
44
+ }
45
+ //# sourceMappingURL=admobErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["REJECTED_CODES","Set","providerCodeOf","cause","code","replace","message","Error","exec","classifyProviderFailure","undefined","has"],"sourceRoot":"../../../src","sources":["engine/admobErrors.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,cAAmC,GAAG,IAAIC,GAAG,CAAC,CACnD,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,CACrB,CAAC;;AAEF;AACA,SAASC,cAAcA,CAACC,KAAc,EAAiB;EACtD,MAAMC,IAAI,GAAID,KAAK,EAAgCC,IAAI;EACvD,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC7B,OAAOA,IAAI,CAACC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;EAC9C;EACA,MAAMC,OAAO,GAAGH,KAAK,YAAYI,KAAK,GAAGJ,KAAK,CAACG,OAAO,GAAG,OAAOH,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,EAAE;EAC/F,OAAO,gCAAgC,CAACK,IAAI,CAACF,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;AACnE;;AAEA;AACO,SAASG,uBAAuBA,CAACN,KAAc,EAAiC;EACtF,MAAMC,IAAI,GAAGF,cAAc,CAACC,KAAK,CAAC;EAClC,IAAIC,IAAI,KAAK,IAAI,EAAE;IAClB,OAAOM,SAAS;EACjB;EACA,IAAIN,IAAI,KAAK,SAAS,IAAIA,IAAI,KAAK,mBAAmB,EAAE;IACvD,OAAO,SAAS;EACjB;EACA,IAAIA,IAAI,KAAK,eAAe,EAAE;IAC7B,OAAO,SAAS;EACjB;EACA,OAAOJ,cAAc,CAACW,GAAG,CAACP,IAAI,CAAC,GAAG,UAAU,GAAGM,SAAS;AACzD","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["engine/port.ts"],"mappings":"","ignoreList":[]}