@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,159 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.canRequest = canRequest;
7
+ exports.canStart = canStart;
8
+ exports.initReducer = initReducer;
9
+ exports.initialInit = void 0;
10
+ /**
11
+ * Initialization state machine (FR-022 – FR-025).
12
+ *
13
+ * Pure and synchronous: it decides what a transition means; the instance
14
+ * performs the I/O. That split is what makes every rule in data-model.md §3.1
15
+ * testable without a provider.
16
+ *
17
+ * The load-bearing invariant is idempotence. Three consumers calling
18
+ * `initialize()` at once must produce exactly one native initialization and
19
+ * three identical results (SC-005) — the instance holds one in-flight promise,
20
+ * and this machine refuses to leave `initializing` for anything but a terminal
21
+ * outcome.
22
+ */
23
+
24
+ const initialInit = exports.initialInit = {
25
+ status: 'not_started',
26
+ blockReason: null,
27
+ unavailableReason: null,
28
+ error: null,
29
+ resumeTo: null
30
+ };
31
+ function at(status, patch = {}) {
32
+ return {
33
+ ...initialInit,
34
+ status,
35
+ ...patch
36
+ };
37
+ }
38
+
39
+ /**
40
+ * States that behave as "switched off" for everything downstream.
41
+ *
42
+ * `undecided` is grouped with `disabled` for request handling — neither may
43
+ * reach the provider — while staying a distinct reported status, which is the
44
+ * only reason the third state is worth having (FR-115, FR-116).
45
+ */
46
+ function isSwitchedOff(status) {
47
+ return status === 'disabled' || status === 'undecided';
48
+ }
49
+
50
+ /**
51
+ * States a fresh start may leave from.
52
+ *
53
+ * `blocked` is included because resolving consent and trying again is the
54
+ * documented, expected flow (FR-019). `initializing` is excluded because that is
55
+ * exactly the race idempotence exists to prevent. `ready` is excluded because
56
+ * re-initializing an initialized provider is what FR-022 forbids.
57
+ */
58
+ const STARTABLE = new Set(['not_started', 'blocked', 'failed']);
59
+ function canStart(status) {
60
+ return STARTABLE.has(status);
61
+ }
62
+
63
+ /** Only `ready` may issue requests. Everything else is a refusal with a reason. */
64
+ function canRequest(status) {
65
+ return status === 'ready';
66
+ }
67
+
68
+ /**
69
+ * What to remember when switching off.
70
+ *
71
+ * Only a completed initialization is worth keeping. A `blocked` or `failed`
72
+ * instance has nothing to resume to, and remembering `initializing` would mean
73
+ * resuming into a state whose in-flight operation was already abandoned.
74
+ */
75
+ function rememberFor(state) {
76
+ if (state.status === 'ready') {
77
+ return 'ready';
78
+ }
79
+ // Preserve an earlier memory across an off -> off transition, so
80
+ // disable -> undecided -> enable still resumes.
81
+ return isSwitchedOff(state.status) ? state.resumeTo : null;
82
+ }
83
+ function initReducer(state, event) {
84
+ switch (event.type) {
85
+ case 'START':
86
+ // `disabled`, `undecided`, and `unavailable` all refuse a start:
87
+ // nothing may reach the provider while any of them holds.
88
+ if (isSwitchedOff(state.status) || state.status === 'unavailable') {
89
+ return state;
90
+ }
91
+ return canStart(state.status) ? at('initializing') : state;
92
+ case 'BLOCK':
93
+ // Consent is the weakest of the three gates, so it never overwrites a
94
+ // stronger one. This guard is the 0.1.0 behavior that settled the
95
+ // precedence question: availability and enablement already outranked
96
+ // consent, and FR-140 makes that explicit rather than inventing it.
97
+ if (isSwitchedOff(state.status) || state.status === 'unavailable') {
98
+ return state;
99
+ }
100
+ // A gate withdrawn after initialization does not un-initialize the
101
+ // provider — it stops requests. Reporting `blocked` is what the app
102
+ // acts on; the native SDK stays as it is.
103
+ return at('blocked', {
104
+ blockReason: event.reason
105
+ });
106
+ case 'UNAVAILABLE':
107
+ return at('unavailable', {
108
+ unavailableReason: event.reason
109
+ });
110
+ case 'DISABLE':
111
+ // Availability outranks enablement (FR-140a). 0.1.0 left these two
112
+ // unguarded against each other, so whichever arrived last won and the
113
+ // reported reason depended on timing — exactly the incidental ordering
114
+ // FR-140 forbids. Availability winning is deterministic and is the
115
+ // more useful answer: an unsupported platform cannot be fixed by
116
+ // turning ads back on.
117
+ if (state.status === 'unavailable') {
118
+ return state;
119
+ }
120
+ return at('disabled', {
121
+ resumeTo: rememberFor(state)
122
+ });
123
+ case 'UNDECIDE':
124
+ if (state.status === 'unavailable') {
125
+ return state;
126
+ }
127
+ return at('undecided', {
128
+ resumeTo: rememberFor(state)
129
+ });
130
+ case 'ENABLE':
131
+ {
132
+ if (!isSwitchedOff(state.status)) {
133
+ return state;
134
+ }
135
+ // Resume only from a completed initialization. Anything else has no
136
+ // ready state to return to, and claiming one would put the instance in
137
+ // a state it never actually reached — so the caller is told to
138
+ // initialize instead, explicitly (FR-121).
139
+ return state.resumeTo === 'ready' ? at('ready') : at('not_started');
140
+ }
141
+ case 'SUCCEED':
142
+ // Only a transition out of `initializing` counts. A `SUCCEED` arriving
143
+ // after a disable or a block is a late callback, and honoring it would
144
+ // resurrect a state the app deliberately left.
145
+ return state.status === 'initializing' ? at('ready') : state;
146
+ case 'RESUME':
147
+ // Same guard as START, for the same reason: `disabled`, `undecided` and
148
+ // `unavailable` are not left by a gate reopening. `canStart` excludes
149
+ // them, and `initializing`, whose own outcome is still on its way.
150
+ return canStart(state.status) ? at('ready') : state;
151
+ case 'FAIL':
152
+ return state.status === 'initializing' ? at('failed', {
153
+ error: event.error
154
+ }) : state;
155
+ default:
156
+ return state;
157
+ }
158
+ }
159
+ //# sourceMappingURL=initMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["initialInit","exports","status","blockReason","unavailableReason","error","resumeTo","at","patch","isSwitchedOff","STARTABLE","Set","canStart","has","canRequest","rememberFor","state","initReducer","event","type","reason"],"sourceRoot":"../../../src","sources":["core/initMachine.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createConsentApi = createConsentApi;
7
+ var _consentFlow = require("../consentFlow.js");
8
+ /**
9
+ * The optional consent capability (FR-101 – FR-113, FR-150 – FR-157).
10
+ *
11
+ * Every outcome feeds the gate through `reevaluate`, so the app never wires
12
+ * consent to requests by hand (FR-105), and a failure is never a grant
13
+ * (FR-106).
14
+ */
15
+
16
+ function createConsentApi(context, reevaluate) {
17
+ const {
18
+ state,
19
+ engine,
20
+ resolved
21
+ } = context;
22
+
23
+ /** Applies an outcome unless the instance went away while it was pending. */
24
+ async function settle(next) {
25
+ if (state.disposed) {
26
+ return state.consent;
27
+ }
28
+ context.setConsent(next);
29
+ await reevaluate();
30
+ return next;
31
+ }
32
+ return {
33
+ async requestInfoUpdate() {
34
+ if (state.disposed) {
35
+ return state.consent;
36
+ }
37
+ // Marks the flow as in use. Until this is called the gate sees no consent
38
+ // input at all, which is how an app that supplies its own gate keeps
39
+ // 0.1.0 behavior without opting out of anything (FR-102).
40
+ state.consentStarted = true;
41
+ if (resolved.consentTesting?.resetOnStart) {
42
+ try {
43
+ engine.consent.reset();
44
+ } catch {
45
+ // A failed reset must not abort the update; the flow continues
46
+ // against whatever state is stored.
47
+ }
48
+ }
49
+ const next = await (0, _consentFlow.runConsentStep)(() => engine.consent.requestInfoUpdate((0, _consentFlow.buildConsentOptions)(resolved.consentTesting, state.currentPrivacy?.underAgeOfConsent, resolved.testDeviceIds)), 'consent information update failed');
50
+ return settle(next);
51
+ },
52
+ async showFormIfRequired() {
53
+ if (state.disposed) {
54
+ return state.consent;
55
+ }
56
+ state.consentStarted = true;
57
+ // Nothing to present is not an error: a region that does not require
58
+ // consent is the normal case (FR-107). Nor is a privacy options form
59
+ // already on screen — one provider form at a time.
60
+ if (!(0, _consentFlow.needsForm)(state.consent) || state.privacyOptionsFormOpen) {
61
+ return state.consent;
62
+ }
63
+ state.consentFormsOpen += 1;
64
+ let next;
65
+ try {
66
+ next = await (0, _consentFlow.runConsentStep)(() => engine.consent.showFormIfRequired(), 'consent form failed');
67
+ } finally {
68
+ state.consentFormsOpen -= 1;
69
+ }
70
+ return settle(next);
71
+ },
72
+ async showPrivacyOptionsForm() {
73
+ // The refusals, most immovable first — the same reading order as the
74
+ // request gates, so the answer is the most useful one.
75
+ if (state.disposed) {
76
+ return {
77
+ status: 'unavailable',
78
+ reason: 'provider_missing'
79
+ };
80
+ }
81
+ if (!engine.isAvailable()) {
82
+ return {
83
+ status: 'unavailable',
84
+ reason: 'unsupported_platform'
85
+ };
86
+ }
87
+ if (state.privacyOptionsFormOpen || state.consentFormsOpen > 0) {
88
+ return {
89
+ status: 'busy'
90
+ };
91
+ }
92
+ if (state.consent.privacyOptionsRequirement === 'unknown') {
93
+ return {
94
+ status: 'info_update_required'
95
+ };
96
+ }
97
+ if (state.consent.privacyOptionsRequirement !== 'required') {
98
+ // The provider's verdict, not a region guess of ours (FR-150).
99
+ return {
100
+ status: 'not_required'
101
+ };
102
+ }
103
+ state.privacyOptionsFormOpen = true;
104
+ let next;
105
+ let failure = null;
106
+ try {
107
+ next = (0, _consentFlow.normalizeConsent)(await engine.consent.showPrivacyOptionsForm());
108
+ } catch (cause) {
109
+ failure = (0, _consentFlow.toConsentError)(cause, 'privacy options form failed');
110
+ // The form did not complete, so the stored decision is the provider's
111
+ // to report — ask rather than assume. Collapsing to `error` the way a
112
+ // failed first-time form does would revoke a consent the user never
113
+ // changed. If the provider cannot answer either, the gate closes: a
114
+ // failure is never consent (FR-106).
115
+ next = state.disposed ? state.consent : await (0, _consentFlow.runConsentStep)(() => engine.consent.getInfo(), 'consent information could not be read after the privacy options form failed');
116
+ } finally {
117
+ state.privacyOptionsFormOpen = false;
118
+ }
119
+ // dispose() during the form: the form stays until the user closes it, but
120
+ // its outcome reaches nobody (FR-157).
121
+ if (state.disposed) {
122
+ return {
123
+ status: 'unavailable',
124
+ reason: 'provider_missing'
125
+ };
126
+ }
127
+ await settle(next);
128
+ return failure ? {
129
+ status: 'failed',
130
+ error: failure
131
+ } : {
132
+ status: 'shown',
133
+ consent: next
134
+ };
135
+ },
136
+ getState() {
137
+ return state.consent;
138
+ },
139
+ subscribe: listener => context.consentListeners.add(listener),
140
+ async reset() {
141
+ // Config validation strips the testing tools in production, so this is
142
+ // inert there without a check here (FR-113).
143
+ if (state.disposed || !resolved.consentTesting) {
144
+ return;
145
+ }
146
+ try {
147
+ engine.consent.reset();
148
+ } catch {
149
+ // The stored state is the provider's; a failed reset leaves it as it was.
150
+ }
151
+ context.setConsent(_consentFlow.INITIAL_CONSENT);
152
+ }
153
+ };
154
+ }
155
+ //# sourceMappingURL=consent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_consentFlow","require","createConsentApi","context","reevaluate","state","engine","resolved","settle","next","disposed","consent","setConsent","requestInfoUpdate","consentStarted","consentTesting","resetOnStart","reset","runConsentStep","buildConsentOptions","currentPrivacy","underAgeOfConsent","testDeviceIds","showFormIfRequired","needsForm","privacyOptionsFormOpen","consentFormsOpen","showPrivacyOptionsForm","status","reason","isAvailable","privacyOptionsRequirement","failure","normalizeConsent","cause","toConsentError","getInfo","error","getState","subscribe","listener","consentListeners","add","INITIAL_CONSENT"],"sourceRoot":"../../../../src","sources":["core/instance/consent.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createInstanceContext = createInstanceContext;
7
+ exports.validityFor = validityFor;
8
+ var _rnCore = require("@chipmobilesdk/rn-core");
9
+ var _validate = require("../../config/validate.js");
10
+ var _correlation = require("../../diagnostics/correlation.js");
11
+ var _errors = require("../../diagnostics/errors.js");
12
+ var _events = require("../../diagnostics/events.js");
13
+ var _adOriginatedReturn = require("../adOriginatedReturn.js");
14
+ var _consentFlow = require("../consentFlow.js");
15
+ var _fullScreenLock = require("../fullScreenLock.js");
16
+ var _initMachine = require("../initMachine.js");
17
+ var _placementMachine = require("../placementMachine.js");
18
+ var _requestThrottle = require("../requestThrottle.js");
19
+ var _timers = require("../timers.js");
20
+ /**
21
+ * What every part of an ads instance shares (ADS-10).
22
+ *
23
+ * 0.5.0 kept all of this as `let` bindings inside one 1,500-line closure, and
24
+ * each path that closed a gate re-implemented its own teardown — which is how
25
+ * ADS-01, ADS-02 and ADS-04 happened. Here the state is one object, the
26
+ * placement runtimes are one map, and the helpers that change them are defined
27
+ * once. The controllers (gate, init, load, show, consent, banner) each take this
28
+ * context and nothing else.
29
+ */
30
+
31
+ /** Everything about the instance that changes after creation. */
32
+
33
+ function createInstanceContext(config, options, defaultEngine) {
34
+ const isDevBuild = options.isDevBuild ?? (0, _rnCore.isDevBuild)();
35
+ const now = options.now ?? (() => Date.now());
36
+
37
+ // Throws on a structural fault or the FR-012 fail-closed case. Deliberately
38
+ // before anything else: a misconfigured instance should not exist at all.
39
+ const resolved = (0, _validate.validateConfig)(config, {
40
+ isDevBuild
41
+ });
42
+ const engine = options.engine ?? defaultEngine();
43
+ const events = (0, _events.createEventEmitter)();
44
+
45
+ /**
46
+ * Status, consent and placement listeners are consumer code. A failure is
47
+ * isolated from the rest and reported the way an event listener's is: as an
48
+ * `internal_error` event (FR-056).
49
+ */
50
+ const listenerOptions = {
51
+ onListenerError(error) {
52
+ events.emit({
53
+ type: 'internal_error',
54
+ timestamp: now(),
55
+ error: new _errors.AdsError('internal_error', {
56
+ message: 'consumer listener threw',
57
+ cause: error
58
+ })
59
+ });
60
+ }
61
+ };
62
+ const placements = new Map();
63
+ for (const key of resolved.placements.keys()) {
64
+ placements.set(key, {
65
+ snapshot: _placementMachine.initialPlacement,
66
+ correlationId: null,
67
+ dismissed: false,
68
+ handle: null,
69
+ unsubscribeEngine: null,
70
+ inFlightLoad: null,
71
+ abortLoad: null,
72
+ cancelLoadTimer: null,
73
+ cancelShowTimer: null,
74
+ rewarded: null,
75
+ listeners: (0, _rnCore.createListenerSet)(listenerOptions),
76
+ retryAttempts: 0,
77
+ cancelRetry: null
78
+ });
79
+ }
80
+ const state = {
81
+ /**
82
+ * An instance told it is `undecided` says so from the moment it exists, or
83
+ * it would report `not_started` until `initialize()` runs — which looks like
84
+ * a disabled instance at exactly the point an app decides whether to reserve
85
+ * the banner's space (FR-116). `disabled` keeps 0.1.0's `not_started`
86
+ * (BC-004).
87
+ */
88
+ init: resolved.enablement === 'undecided' ? (0, _initMachine.initReducer)(_initMachine.initialInit, {
89
+ type: 'UNDECIDE'
90
+ }) : _initMachine.initialInit,
91
+ enablement: resolved.enablement,
92
+ appActive: true,
93
+ consent: _consentFlow.INITIAL_CONSENT,
94
+ consentStarted: false,
95
+ consentFormsOpen: 0,
96
+ privacyOptionsFormOpen: false,
97
+ providerInitialized: false,
98
+ undecidedWarned: false,
99
+ cancelUndecidedTimer: null,
100
+ appliedPrivacy: null,
101
+ currentPrivacy: null,
102
+ inFlightInit: null,
103
+ disposed: false,
104
+ warnedSubstitution: false
105
+ };
106
+ const statusListeners = (0, _rnCore.createListenerSet)(listenerOptions);
107
+ const consentListeners = (0, _rnCore.createListenerSet)(listenerOptions);
108
+ const context = {
109
+ resolved,
110
+ engine,
111
+ now,
112
+ events,
113
+ correlation: (0, _correlation.createCorrelationIssuer)(),
114
+ requestThrottle: (0, _requestThrottle.createRequestThrottle)(now),
115
+ timers: (0, _timers.createTimerSet)(options.scheduler),
116
+ lock: (0, _fullScreenLock.createFullScreenLock)(),
117
+ adReturn: (0, _adOriginatedReturn.createAdOriginatedTracker)(),
118
+ state,
119
+ placements,
120
+ statusListeners,
121
+ consentListeners,
122
+ placement(key) {
123
+ const runtime = placements.get(key);
124
+ const definition = resolved.placements.get(key);
125
+ return runtime && definition ? {
126
+ runtime,
127
+ definition
128
+ } : null;
129
+ },
130
+ setInit(next) {
131
+ const previous = state.init;
132
+ state.init = next;
133
+ if (next === previous || next.status === previous.status) {
134
+ return;
135
+ }
136
+ events.emit({
137
+ type: 'initialization',
138
+ timestamp: now(),
139
+ status: next.status,
140
+ retryable: next.error?.retryable
141
+ });
142
+ statusListeners.notify(next.status);
143
+ },
144
+ setPlacement(key, next) {
145
+ const runtime = placements.get(key);
146
+ if (!runtime) {
147
+ return;
148
+ }
149
+ const changed = runtime.snapshot.state !== next.state;
150
+ runtime.snapshot = next;
151
+ if (changed) {
152
+ runtime.listeners.notify(next.state);
153
+ }
154
+ },
155
+ dispatchPlacement(key, event) {
156
+ const found = context.placement(key);
157
+ if (found) {
158
+ context.setPlacement(key, (0, _placementMachine.placementReducer)(found.runtime.snapshot, event, found.definition.format));
159
+ }
160
+ },
161
+ setConsent(next) {
162
+ state.consent = next;
163
+ consentListeners.notify(next);
164
+ },
165
+ releasePlacementResources(key) {
166
+ const runtime = placements.get(key);
167
+ if (!runtime) {
168
+ return;
169
+ }
170
+ runtime.cancelLoadTimer?.();
171
+ runtime.cancelLoadTimer = null;
172
+ runtime.cancelShowTimer?.();
173
+ runtime.cancelShowTimer = null;
174
+ runtime.unsubscribeEngine?.();
175
+ runtime.unsubscribeEngine = null;
176
+ if (runtime.handle) {
177
+ engine.dispose(runtime.handle);
178
+ runtime.handle = null;
179
+ }
180
+ runtime.inFlightLoad = null;
181
+ runtime.abortLoad = null;
182
+ runtime.rewarded = null;
183
+ runtime.cancelRetry?.();
184
+ runtime.cancelRetry = null;
185
+ },
186
+ emitRefusal(operation, result, placementKey, format) {
187
+ if (result.status === 'disabled' || result.status === 'undecided') {
188
+ // `undecided` reuses the `disabled` event: for an observer of the
189
+ // stream the fact is the same — no request was made — and the
190
+ // distinction is carried by the typed result and the init status.
191
+ events.emit({
192
+ type: 'disabled',
193
+ timestamp: now(),
194
+ operation,
195
+ placementKey,
196
+ format
197
+ });
198
+ return;
199
+ }
200
+ events.emit({
201
+ type: 'unavailable',
202
+ timestamp: now(),
203
+ operation,
204
+ placementKey,
205
+ format,
206
+ reason: result.reason
207
+ });
208
+ }
209
+ };
210
+ return context;
211
+ }
212
+
213
+ /** App-open expires on its own, shorter window (FR-130). */
214
+ function validityFor(context, format) {
215
+ return format === 'app_open' ? context.resolved.timeouts.appOpenValidity : context.resolved.timeouts.adValidity;
216
+ }
217
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_rnCore","require","_validate","_correlation","_errors","_events","_adOriginatedReturn","_consentFlow","_fullScreenLock","_initMachine","_placementMachine","_requestThrottle","_timers","createInstanceContext","config","options","defaultEngine","isDevBuild","detectDevBuild","now","Date","resolved","validateConfig","engine","events","createEventEmitter","listenerOptions","onListenerError","error","emit","type","timestamp","AdsError","message","cause","placements","Map","key","keys","set","snapshot","initialPlacement","correlationId","dismissed","handle","unsubscribeEngine","inFlightLoad","abortLoad","cancelLoadTimer","cancelShowTimer","rewarded","listeners","createListenerSet","retryAttempts","cancelRetry","state","init","enablement","initReducer","initialInit","appActive","consent","INITIAL_CONSENT","consentStarted","consentFormsOpen","privacyOptionsFormOpen","providerInitialized","undecidedWarned","cancelUndecidedTimer","appliedPrivacy","currentPrivacy","inFlightInit","disposed","warnedSubstitution","statusListeners","consentListeners","context","correlation","createCorrelationIssuer","requestThrottle","createRequestThrottle","timers","createTimerSet","scheduler","lock","createFullScreenLock","adReturn","createAdOriginatedTracker","placement","runtime","get","definition","setInit","next","previous","status","retryable","notify","setPlacement","changed","dispatchPlacement","event","found","placementReducer","format","setConsent","releasePlacementResources","dispose","emitRefusal","operation","result","placementKey","reason","validityFor","timeouts","appOpenValidity","adValidity"],"sourceRoot":"../../../../src","sources":["core/instance/context.ts"],"mappings":"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","ignoreList":[]}