@chipmobilesdk/rn-ads 0.7.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 (319) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/lib/commonjs/config/resolveAdUnit.js +80 -0
  3. package/lib/commonjs/config/resolveAdUnit.js.map +1 -0
  4. package/lib/commonjs/config/types.js +138 -0
  5. package/lib/commonjs/config/types.js.map +1 -0
  6. package/lib/commonjs/config/validate.js +150 -0
  7. package/lib/commonjs/config/validate.js.map +1 -0
  8. package/lib/commonjs/core/adOriginatedReturn.js +119 -0
  9. package/lib/commonjs/core/adOriginatedReturn.js.map +1 -0
  10. package/lib/commonjs/core/adsInstance.js +129 -0
  11. package/lib/commonjs/core/adsInstance.js.map +1 -0
  12. package/lib/commonjs/core/consentFlow.js +154 -0
  13. package/lib/commonjs/core/consentFlow.js.map +1 -0
  14. package/lib/commonjs/core/enablement.js +64 -0
  15. package/lib/commonjs/core/enablement.js.map +1 -0
  16. package/lib/commonjs/core/fullScreenLock.js +48 -0
  17. package/lib/commonjs/core/fullScreenLock.js.map +1 -0
  18. package/lib/commonjs/core/gates.js +95 -0
  19. package/lib/commonjs/core/gates.js.map +1 -0
  20. package/lib/commonjs/core/initMachine.js +159 -0
  21. package/lib/commonjs/core/initMachine.js.map +1 -0
  22. package/lib/commonjs/core/instance/consent.js +155 -0
  23. package/lib/commonjs/core/instance/consent.js.map +1 -0
  24. package/lib/commonjs/core/instance/context.js +217 -0
  25. package/lib/commonjs/core/instance/context.js.map +1 -0
  26. package/lib/commonjs/core/instance/gate.js +194 -0
  27. package/lib/commonjs/core/instance/gate.js.map +1 -0
  28. package/lib/commonjs/core/instance/init.js +326 -0
  29. package/lib/commonjs/core/instance/init.js.map +1 -0
  30. package/lib/commonjs/core/instance/internals.js +115 -0
  31. package/lib/commonjs/core/instance/internals.js.map +1 -0
  32. package/lib/commonjs/core/instance/load.js +458 -0
  33. package/lib/commonjs/core/instance/load.js.map +1 -0
  34. package/lib/commonjs/core/instance/show.js +243 -0
  35. package/lib/commonjs/core/instance/show.js.map +1 -0
  36. package/lib/commonjs/core/instance/types.js +6 -0
  37. package/lib/commonjs/core/instance/types.js.map +1 -0
  38. package/lib/commonjs/core/placementMachine.js +116 -0
  39. package/lib/commonjs/core/placementMachine.js.map +1 -0
  40. package/lib/commonjs/core/privacyGate.js +93 -0
  41. package/lib/commonjs/core/privacyGate.js.map +1 -0
  42. package/lib/commonjs/core/requestThrottle.js +152 -0
  43. package/lib/commonjs/core/requestThrottle.js.map +1 -0
  44. package/lib/commonjs/core/retryPolicy.js +120 -0
  45. package/lib/commonjs/core/retryPolicy.js.map +1 -0
  46. package/lib/commonjs/core/rewardedSession.js +65 -0
  47. package/lib/commonjs/core/rewardedSession.js.map +1 -0
  48. package/lib/commonjs/core/timers.js +162 -0
  49. package/lib/commonjs/core/timers.js.map +1 -0
  50. package/lib/commonjs/diagnostics/correlation.js +33 -0
  51. package/lib/commonjs/diagnostics/correlation.js.map +1 -0
  52. package/lib/commonjs/diagnostics/errors.js +152 -0
  53. package/lib/commonjs/diagnostics/errors.js.map +1 -0
  54. package/lib/commonjs/diagnostics/events.js +132 -0
  55. package/lib/commonjs/diagnostics/events.js.map +1 -0
  56. package/lib/commonjs/engine/admobBanner.js +58 -0
  57. package/lib/commonjs/engine/admobBanner.js.map +1 -0
  58. package/lib/commonjs/engine/admobEngine.js +343 -0
  59. package/lib/commonjs/engine/admobEngine.js.map +1 -0
  60. package/lib/commonjs/engine/admobErrors.js +45 -0
  61. package/lib/commonjs/engine/admobErrors.js.map +1 -0
  62. package/lib/commonjs/engine/port.js +6 -0
  63. package/lib/commonjs/engine/port.js.map +1 -0
  64. package/lib/commonjs/engine/testAdUnits.js +61 -0
  65. package/lib/commonjs/engine/testAdUnits.js.map +1 -0
  66. package/lib/commonjs/index.js +218 -0
  67. package/lib/commonjs/index.js.map +1 -0
  68. package/lib/commonjs/package.json +1 -0
  69. package/lib/commonjs/react/AdsBanner.js +317 -0
  70. package/lib/commonjs/react/AdsBanner.js.map +1 -0
  71. package/lib/commonjs/react/AdsProvider.js +54 -0
  72. package/lib/commonjs/react/AdsProvider.js.map +1 -0
  73. package/lib/commonjs/react/hooks.js +63 -0
  74. package/lib/commonjs/react/hooks.js.map +1 -0
  75. package/lib/commonjs/testing/clock.js +76 -0
  76. package/lib/commonjs/testing/clock.js.map +1 -0
  77. package/lib/commonjs/testing/conformance.js +99 -0
  78. package/lib/commonjs/testing/conformance.js.map +1 -0
  79. package/lib/commonjs/testing/index.js +389 -0
  80. package/lib/commonjs/testing/index.js.map +1 -0
  81. package/lib/module/config/resolveAdUnit.js +75 -0
  82. package/lib/module/config/resolveAdUnit.js.map +1 -0
  83. package/lib/module/config/types.js +134 -0
  84. package/lib/module/config/types.js.map +1 -0
  85. package/lib/module/config/validate.js +146 -0
  86. package/lib/module/config/validate.js.map +1 -0
  87. package/lib/module/core/adOriginatedReturn.js +115 -0
  88. package/lib/module/core/adOriginatedReturn.js.map +1 -0
  89. package/lib/module/core/adsInstance.js +121 -0
  90. package/lib/module/core/adsInstance.js.map +1 -0
  91. package/lib/module/core/consentFlow.js +143 -0
  92. package/lib/module/core/consentFlow.js.map +1 -0
  93. package/lib/module/core/enablement.js +58 -0
  94. package/lib/module/core/enablement.js.map +1 -0
  95. package/lib/module/core/fullScreenLock.js +44 -0
  96. package/lib/module/core/fullScreenLock.js.map +1 -0
  97. package/lib/module/core/gates.js +91 -0
  98. package/lib/module/core/gates.js.map +1 -0
  99. package/lib/module/core/initMachine.js +152 -0
  100. package/lib/module/core/initMachine.js.map +1 -0
  101. package/lib/module/core/instance/consent.js +151 -0
  102. package/lib/module/core/instance/consent.js.map +1 -0
  103. package/lib/module/core/instance/context.js +212 -0
  104. package/lib/module/core/instance/context.js.map +1 -0
  105. package/lib/module/core/instance/gate.js +183 -0
  106. package/lib/module/core/instance/gate.js.map +1 -0
  107. package/lib/module/core/instance/init.js +321 -0
  108. package/lib/module/core/instance/init.js.map +1 -0
  109. package/lib/module/core/instance/internals.js +109 -0
  110. package/lib/module/core/instance/internals.js.map +1 -0
  111. package/lib/module/core/instance/load.js +452 -0
  112. package/lib/module/core/instance/load.js.map +1 -0
  113. package/lib/module/core/instance/show.js +238 -0
  114. package/lib/module/core/instance/show.js.map +1 -0
  115. package/lib/module/core/instance/types.js +4 -0
  116. package/lib/module/core/instance/types.js.map +1 -0
  117. package/lib/module/core/placementMachine.js +109 -0
  118. package/lib/module/core/placementMachine.js.map +1 -0
  119. package/lib/module/core/privacyGate.js +86 -0
  120. package/lib/module/core/privacyGate.js.map +1 -0
  121. package/lib/module/core/requestThrottle.js +146 -0
  122. package/lib/module/core/requestThrottle.js.map +1 -0
  123. package/lib/module/core/retryPolicy.js +113 -0
  124. package/lib/module/core/retryPolicy.js.map +1 -0
  125. package/lib/module/core/rewardedSession.js +61 -0
  126. package/lib/module/core/rewardedSession.js.map +1 -0
  127. package/lib/module/core/timers.js +150 -0
  128. package/lib/module/core/timers.js.map +1 -0
  129. package/lib/module/diagnostics/correlation.js +29 -0
  130. package/lib/module/diagnostics/correlation.js.map +1 -0
  131. package/lib/module/diagnostics/errors.js +143 -0
  132. package/lib/module/diagnostics/errors.js.map +1 -0
  133. package/lib/module/diagnostics/events.js +128 -0
  134. package/lib/module/diagnostics/events.js.map +1 -0
  135. package/lib/module/engine/admobBanner.js +52 -0
  136. package/lib/module/engine/admobBanner.js.map +1 -0
  137. package/lib/module/engine/admobEngine.js +334 -0
  138. package/lib/module/engine/admobEngine.js.map +1 -0
  139. package/lib/module/engine/admobErrors.js +41 -0
  140. package/lib/module/engine/admobErrors.js.map +1 -0
  141. package/lib/module/engine/port.js +4 -0
  142. package/lib/module/engine/port.js.map +1 -0
  143. package/lib/module/engine/testAdUnits.js +56 -0
  144. package/lib/module/engine/testAdUnits.js.map +1 -0
  145. package/lib/module/index.js +59 -0
  146. package/lib/module/index.js.map +1 -0
  147. package/lib/module/package.json +1 -0
  148. package/lib/module/react/AdsBanner.js +312 -0
  149. package/lib/module/react/AdsBanner.js.map +1 -0
  150. package/lib/module/react/AdsProvider.js +48 -0
  151. package/lib/module/react/AdsProvider.js.map +1 -0
  152. package/lib/module/react/hooks.js +58 -0
  153. package/lib/module/react/hooks.js.map +1 -0
  154. package/lib/module/testing/clock.js +72 -0
  155. package/lib/module/testing/clock.js.map +1 -0
  156. package/lib/module/testing/conformance.js +93 -0
  157. package/lib/module/testing/conformance.js.map +1 -0
  158. package/lib/module/testing/index.js +366 -0
  159. package/lib/module/testing/index.js.map +1 -0
  160. package/lib/typescript/commonjs/config/resolveAdUnit.d.ts +43 -0
  161. package/lib/typescript/commonjs/config/resolveAdUnit.d.ts.map +1 -0
  162. package/lib/typescript/commonjs/config/types.d.ts +280 -0
  163. package/lib/typescript/commonjs/config/types.d.ts.map +1 -0
  164. package/lib/typescript/commonjs/config/validate.d.ts +49 -0
  165. package/lib/typescript/commonjs/config/validate.d.ts.map +1 -0
  166. package/lib/typescript/commonjs/core/adOriginatedReturn.d.ts +61 -0
  167. package/lib/typescript/commonjs/core/adOriginatedReturn.d.ts.map +1 -0
  168. package/lib/typescript/commonjs/core/adsInstance.d.ts +33 -0
  169. package/lib/typescript/commonjs/core/adsInstance.d.ts.map +1 -0
  170. package/lib/typescript/commonjs/core/consentFlow.d.ts +84 -0
  171. package/lib/typescript/commonjs/core/consentFlow.d.ts.map +1 -0
  172. package/lib/typescript/commonjs/core/enablement.d.ts +74 -0
  173. package/lib/typescript/commonjs/core/enablement.d.ts.map +1 -0
  174. package/lib/typescript/commonjs/core/fullScreenLock.d.ts +25 -0
  175. package/lib/typescript/commonjs/core/fullScreenLock.d.ts.map +1 -0
  176. package/lib/typescript/commonjs/core/gates.d.ts +76 -0
  177. package/lib/typescript/commonjs/core/gates.d.ts.map +1 -0
  178. package/lib/typescript/commonjs/core/initMachine.d.ts +66 -0
  179. package/lib/typescript/commonjs/core/initMachine.d.ts.map +1 -0
  180. package/lib/typescript/commonjs/core/instance/consent.d.ts +4 -0
  181. package/lib/typescript/commonjs/core/instance/consent.d.ts.map +1 -0
  182. package/lib/typescript/commonjs/core/instance/context.d.ts +118 -0
  183. package/lib/typescript/commonjs/core/instance/context.d.ts.map +1 -0
  184. package/lib/typescript/commonjs/core/instance/gate.d.ts +38 -0
  185. package/lib/typescript/commonjs/core/instance/gate.d.ts.map +1 -0
  186. package/lib/typescript/commonjs/core/instance/init.d.ts +13 -0
  187. package/lib/typescript/commonjs/core/instance/init.d.ts.map +1 -0
  188. package/lib/typescript/commonjs/core/instance/internals.d.ts +60 -0
  189. package/lib/typescript/commonjs/core/instance/internals.d.ts.map +1 -0
  190. package/lib/typescript/commonjs/core/instance/load.d.ts +9 -0
  191. package/lib/typescript/commonjs/core/instance/load.d.ts.map +1 -0
  192. package/lib/typescript/commonjs/core/instance/show.d.ts +7 -0
  193. package/lib/typescript/commonjs/core/instance/show.d.ts.map +1 -0
  194. package/lib/typescript/commonjs/core/instance/types.d.ts +240 -0
  195. package/lib/typescript/commonjs/core/instance/types.d.ts.map +1 -0
  196. package/lib/typescript/commonjs/core/placementMachine.d.ts +55 -0
  197. package/lib/typescript/commonjs/core/placementMachine.d.ts.map +1 -0
  198. package/lib/typescript/commonjs/core/privacyGate.d.ts +40 -0
  199. package/lib/typescript/commonjs/core/privacyGate.d.ts.map +1 -0
  200. package/lib/typescript/commonjs/core/requestThrottle.d.ts +99 -0
  201. package/lib/typescript/commonjs/core/requestThrottle.d.ts.map +1 -0
  202. package/lib/typescript/commonjs/core/retryPolicy.d.ts +66 -0
  203. package/lib/typescript/commonjs/core/retryPolicy.d.ts.map +1 -0
  204. package/lib/typescript/commonjs/core/rewardedSession.d.ts +37 -0
  205. package/lib/typescript/commonjs/core/rewardedSession.d.ts.map +1 -0
  206. package/lib/typescript/commonjs/core/timers.d.ts +135 -0
  207. package/lib/typescript/commonjs/core/timers.d.ts.map +1 -0
  208. package/lib/typescript/commonjs/diagnostics/correlation.d.ts +18 -0
  209. package/lib/typescript/commonjs/diagnostics/correlation.d.ts.map +1 -0
  210. package/lib/typescript/commonjs/diagnostics/errors.d.ts +59 -0
  211. package/lib/typescript/commonjs/diagnostics/errors.d.ts.map +1 -0
  212. package/lib/typescript/commonjs/diagnostics/events.d.ts +126 -0
  213. package/lib/typescript/commonjs/diagnostics/events.d.ts.map +1 -0
  214. package/lib/typescript/commonjs/engine/admobBanner.d.ts +10 -0
  215. package/lib/typescript/commonjs/engine/admobBanner.d.ts.map +1 -0
  216. package/lib/typescript/commonjs/engine/admobEngine.d.ts +71 -0
  217. package/lib/typescript/commonjs/engine/admobEngine.d.ts.map +1 -0
  218. package/lib/typescript/commonjs/engine/admobErrors.d.ts +9 -0
  219. package/lib/typescript/commonjs/engine/admobErrors.d.ts.map +1 -0
  220. package/lib/typescript/commonjs/engine/port.d.ts +171 -0
  221. package/lib/typescript/commonjs/engine/port.d.ts.map +1 -0
  222. package/lib/typescript/commonjs/engine/testAdUnits.d.ts +33 -0
  223. package/lib/typescript/commonjs/engine/testAdUnits.d.ts.map +1 -0
  224. package/lib/typescript/commonjs/index.d.ts +42 -0
  225. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  226. package/lib/typescript/commonjs/package.json +1 -0
  227. package/lib/typescript/commonjs/react/AdsBanner.d.ts +29 -0
  228. package/lib/typescript/commonjs/react/AdsBanner.d.ts.map +1 -0
  229. package/lib/typescript/commonjs/react/AdsProvider.d.ts +36 -0
  230. package/lib/typescript/commonjs/react/AdsProvider.d.ts.map +1 -0
  231. package/lib/typescript/commonjs/react/hooks.d.ts +27 -0
  232. package/lib/typescript/commonjs/react/hooks.d.ts.map +1 -0
  233. package/lib/typescript/commonjs/testing/clock.d.ts +29 -0
  234. package/lib/typescript/commonjs/testing/clock.d.ts.map +1 -0
  235. package/lib/typescript/commonjs/testing/conformance.d.ts +26 -0
  236. package/lib/typescript/commonjs/testing/conformance.d.ts.map +1 -0
  237. package/lib/typescript/commonjs/testing/index.d.ts +133 -0
  238. package/lib/typescript/commonjs/testing/index.d.ts.map +1 -0
  239. package/lib/typescript/module/config/resolveAdUnit.d.ts +43 -0
  240. package/lib/typescript/module/config/resolveAdUnit.d.ts.map +1 -0
  241. package/lib/typescript/module/config/types.d.ts +280 -0
  242. package/lib/typescript/module/config/types.d.ts.map +1 -0
  243. package/lib/typescript/module/config/validate.d.ts +49 -0
  244. package/lib/typescript/module/config/validate.d.ts.map +1 -0
  245. package/lib/typescript/module/core/adOriginatedReturn.d.ts +61 -0
  246. package/lib/typescript/module/core/adOriginatedReturn.d.ts.map +1 -0
  247. package/lib/typescript/module/core/adsInstance.d.ts +33 -0
  248. package/lib/typescript/module/core/adsInstance.d.ts.map +1 -0
  249. package/lib/typescript/module/core/consentFlow.d.ts +84 -0
  250. package/lib/typescript/module/core/consentFlow.d.ts.map +1 -0
  251. package/lib/typescript/module/core/enablement.d.ts +74 -0
  252. package/lib/typescript/module/core/enablement.d.ts.map +1 -0
  253. package/lib/typescript/module/core/fullScreenLock.d.ts +25 -0
  254. package/lib/typescript/module/core/fullScreenLock.d.ts.map +1 -0
  255. package/lib/typescript/module/core/gates.d.ts +76 -0
  256. package/lib/typescript/module/core/gates.d.ts.map +1 -0
  257. package/lib/typescript/module/core/initMachine.d.ts +66 -0
  258. package/lib/typescript/module/core/initMachine.d.ts.map +1 -0
  259. package/lib/typescript/module/core/instance/consent.d.ts +4 -0
  260. package/lib/typescript/module/core/instance/consent.d.ts.map +1 -0
  261. package/lib/typescript/module/core/instance/context.d.ts +118 -0
  262. package/lib/typescript/module/core/instance/context.d.ts.map +1 -0
  263. package/lib/typescript/module/core/instance/gate.d.ts +38 -0
  264. package/lib/typescript/module/core/instance/gate.d.ts.map +1 -0
  265. package/lib/typescript/module/core/instance/init.d.ts +13 -0
  266. package/lib/typescript/module/core/instance/init.d.ts.map +1 -0
  267. package/lib/typescript/module/core/instance/internals.d.ts +60 -0
  268. package/lib/typescript/module/core/instance/internals.d.ts.map +1 -0
  269. package/lib/typescript/module/core/instance/load.d.ts +9 -0
  270. package/lib/typescript/module/core/instance/load.d.ts.map +1 -0
  271. package/lib/typescript/module/core/instance/show.d.ts +7 -0
  272. package/lib/typescript/module/core/instance/show.d.ts.map +1 -0
  273. package/lib/typescript/module/core/instance/types.d.ts +240 -0
  274. package/lib/typescript/module/core/instance/types.d.ts.map +1 -0
  275. package/lib/typescript/module/core/placementMachine.d.ts +55 -0
  276. package/lib/typescript/module/core/placementMachine.d.ts.map +1 -0
  277. package/lib/typescript/module/core/privacyGate.d.ts +40 -0
  278. package/lib/typescript/module/core/privacyGate.d.ts.map +1 -0
  279. package/lib/typescript/module/core/requestThrottle.d.ts +99 -0
  280. package/lib/typescript/module/core/requestThrottle.d.ts.map +1 -0
  281. package/lib/typescript/module/core/retryPolicy.d.ts +66 -0
  282. package/lib/typescript/module/core/retryPolicy.d.ts.map +1 -0
  283. package/lib/typescript/module/core/rewardedSession.d.ts +37 -0
  284. package/lib/typescript/module/core/rewardedSession.d.ts.map +1 -0
  285. package/lib/typescript/module/core/timers.d.ts +135 -0
  286. package/lib/typescript/module/core/timers.d.ts.map +1 -0
  287. package/lib/typescript/module/diagnostics/correlation.d.ts +18 -0
  288. package/lib/typescript/module/diagnostics/correlation.d.ts.map +1 -0
  289. package/lib/typescript/module/diagnostics/errors.d.ts +59 -0
  290. package/lib/typescript/module/diagnostics/errors.d.ts.map +1 -0
  291. package/lib/typescript/module/diagnostics/events.d.ts +126 -0
  292. package/lib/typescript/module/diagnostics/events.d.ts.map +1 -0
  293. package/lib/typescript/module/engine/admobBanner.d.ts +10 -0
  294. package/lib/typescript/module/engine/admobBanner.d.ts.map +1 -0
  295. package/lib/typescript/module/engine/admobEngine.d.ts +71 -0
  296. package/lib/typescript/module/engine/admobEngine.d.ts.map +1 -0
  297. package/lib/typescript/module/engine/admobErrors.d.ts +9 -0
  298. package/lib/typescript/module/engine/admobErrors.d.ts.map +1 -0
  299. package/lib/typescript/module/engine/port.d.ts +171 -0
  300. package/lib/typescript/module/engine/port.d.ts.map +1 -0
  301. package/lib/typescript/module/engine/testAdUnits.d.ts +33 -0
  302. package/lib/typescript/module/engine/testAdUnits.d.ts.map +1 -0
  303. package/lib/typescript/module/index.d.ts +42 -0
  304. package/lib/typescript/module/index.d.ts.map +1 -0
  305. package/lib/typescript/module/package.json +1 -0
  306. package/lib/typescript/module/react/AdsBanner.d.ts +29 -0
  307. package/lib/typescript/module/react/AdsBanner.d.ts.map +1 -0
  308. package/lib/typescript/module/react/AdsProvider.d.ts +36 -0
  309. package/lib/typescript/module/react/AdsProvider.d.ts.map +1 -0
  310. package/lib/typescript/module/react/hooks.d.ts +27 -0
  311. package/lib/typescript/module/react/hooks.d.ts.map +1 -0
  312. package/lib/typescript/module/testing/clock.d.ts +29 -0
  313. package/lib/typescript/module/testing/clock.d.ts.map +1 -0
  314. package/lib/typescript/module/testing/conformance.d.ts +26 -0
  315. package/lib/typescript/module/testing/conformance.d.ts.map +1 -0
  316. package/lib/typescript/module/testing/index.d.ts +133 -0
  317. package/lib/typescript/module/testing/index.d.ts.map +1 -0
  318. package/package.json +48 -12
  319. package/src/testing/index.ts +17 -3
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createListenerSet","isDevBuild","detectDevBuild","validateConfig","createCorrelationIssuer","AdsError","createEventEmitter","createAdOriginatedTracker","INITIAL_CONSENT","createFullScreenLock","initialInit","initReducer","initialPlacement","placementReducer","createRequestThrottle","createTimerSet","createInstanceContext","config","options","defaultEngine","now","Date","resolved","engine","events","listenerOptions","onListenerError","error","emit","type","timestamp","message","cause","placements","Map","key","keys","set","snapshot","correlationId","dismissed","handle","unsubscribeEngine","inFlightLoad","abortLoad","cancelLoadTimer","cancelShowTimer","rewarded","listeners","retryAttempts","cancelRetry","state","init","enablement","appActive","consent","consentStarted","consentFormsOpen","privacyOptionsFormOpen","providerInitialized","undecidedWarned","cancelUndecidedTimer","appliedPrivacy","currentPrivacy","inFlightInit","disposed","warnedSubstitution","statusListeners","consentListeners","context","correlation","requestThrottle","timers","scheduler","lock","adReturn","placement","runtime","get","definition","setInit","next","previous","status","retryable","notify","setPlacement","changed","dispatchPlacement","event","found","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":[]}
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The request gate, evaluated in one place, and closed in one place (FR-140,
5
+ * ADS-10).
6
+ *
7
+ * Every path that closes the gate — ads turned off or undecided, the app's
8
+ * privacy input withdrawn, the consent flow withdrawn — goes through
9
+ * `closeGate`. In 0.5.0 each of those paths wrote its own teardown, and the one
10
+ * that forgot to cancel retries let a request reach the provider after consent
11
+ * was withdrawn (ADS-02).
12
+ */
13
+ import { toGateInput } from "../consentFlow.js";
14
+ import { evaluateGates } from "../gates.js";
15
+ import { initReducer } from "../initMachine.js";
16
+ import { evaluateGate } from "../privacyGate.js";
17
+ /**
18
+ * Assembles the gate's inputs and defers the precedence entirely to
19
+ * `evaluateGates`: availability, then enablement, then the app's privacy input,
20
+ * then the consent flow. Nothing else compares gate state.
21
+ *
22
+ * The consent flow contributes `null` until the app opts into it, which is what
23
+ * makes FR-102 structural: with no flow started the gate sees only the app's
24
+ * own input and behaves exactly as 0.1.0 did.
25
+ */
26
+ export function currentGate(context) {
27
+ const {
28
+ engine,
29
+ state
30
+ } = context;
31
+ const appGate = evaluateGate(state.currentPrivacy);
32
+ return evaluateGates({
33
+ available: engine.isAvailable() ? {
34
+ ok: true
35
+ } : {
36
+ ok: false,
37
+ reason: 'unsupported_platform'
38
+ },
39
+ enablement: state.enablement,
40
+ appGate: appGate.allowed ? {
41
+ permitted: true
42
+ } : {
43
+ permitted: false,
44
+ reason: appGate.reason
45
+ },
46
+ consentGate: state.consentStarted ? toGateInput(state.consent) : null
47
+ });
48
+ }
49
+
50
+ /** Maps a closed gate onto the refusal shape load, show, and the banner share. */
51
+ export function refusalFor(decision) {
52
+ switch (decision.kind) {
53
+ case 'unavailable':
54
+ return {
55
+ status: 'unavailable',
56
+ reason: decision.reason
57
+ };
58
+ case 'disabled':
59
+ return {
60
+ status: 'disabled'
61
+ };
62
+ case 'undecided':
63
+ return {
64
+ status: 'undecided'
65
+ };
66
+ default:
67
+ return {
68
+ status: 'blocked',
69
+ reason: decision.reason
70
+ };
71
+ }
72
+ }
73
+
74
+ /** The refusal that applies now, or null when a request may go ahead. */
75
+ export function gateRefusal(context) {
76
+ const decision = currentGate(context);
77
+ return decision.allowed ? null : refusalFor(decision);
78
+ }
79
+
80
+ /** Cancels every pending retry, everywhere (FR-137). */
81
+ export function cancelAllRetries(context) {
82
+ for (const runtime of context.placements.values()) {
83
+ runtime.cancelRetry?.();
84
+ runtime.cancelRetry = null;
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Stops every request a gate that just closed forbids (FR-125, FR-153, FR-159).
90
+ *
91
+ * In-flight loads are abandoned and their resources released, a loaded ad that
92
+ * may no longer be shown is released with them, and an ad already on screen is
93
+ * left alone — the provider offers no safe way to close it.
94
+ *
95
+ * An abandoned load *settles*: its caller gets `refusal`, the same answer a load
96
+ * started now would get, and a handle the provider hands back afterwards is
97
+ * disposed rather than adopted.
98
+ */
99
+ function haltPlacements(context, refusal) {
100
+ for (const [key, runtime] of context.placements) {
101
+ if (runtime.snapshot.state === 'showing') {
102
+ continue;
103
+ }
104
+ const abort = runtime.abortLoad;
105
+ context.releasePlacementResources(key);
106
+ context.dispatchPlacement(key, {
107
+ type: 'RESET'
108
+ });
109
+ if (abort) {
110
+ context.emitRefusal('load', refusal, key, context.resolved.placements.get(key)?.format);
111
+ abort(refusal);
112
+ }
113
+ }
114
+ }
115
+
116
+ /**
117
+ * The one teardown for a gate that closed to `refusal`: retries cancelled,
118
+ * placements halted, and the init status moved to match.
119
+ */
120
+ export function closeGate(context, refusal) {
121
+ cancelAllRetries(context);
122
+ haltPlacements(context, refusal);
123
+ const {
124
+ init
125
+ } = context.state;
126
+ switch (refusal.status) {
127
+ case 'disabled':
128
+ context.setInit(initReducer(init, {
129
+ type: 'DISABLE'
130
+ }));
131
+ return;
132
+ case 'undecided':
133
+ context.setInit(initReducer(init, {
134
+ type: 'UNDECIDE'
135
+ }));
136
+ return;
137
+ default:
138
+ context.setInit(initReducer(init, {
139
+ type: 'BLOCK',
140
+ reason: refusal.reason
141
+ }));
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Warns once if the app leaves `undecided` unresolved (FR-119).
147
+ *
148
+ * Once, not repeatedly: a warning that fires every ten seconds becomes noise.
149
+ * And it only warns — resolving the state would mean guessing the business
150
+ * decision FR-120 forbids the package from knowing.
151
+ */
152
+ export function armUndecidedWarning(context) {
153
+ const {
154
+ state,
155
+ timers,
156
+ resolved,
157
+ events,
158
+ now
159
+ } = context;
160
+ if (state.enablement !== 'undecided' || state.undecidedWarned || state.cancelUndecidedTimer) {
161
+ return;
162
+ }
163
+ const armedAt = now();
164
+ state.cancelUndecidedTimer = timers.after(resolved.timeouts.undecidedWarning, () => {
165
+ state.cancelUndecidedTimer = null;
166
+ if (state.disposed || state.enablement !== 'undecided' || state.undecidedWarned) {
167
+ return;
168
+ }
169
+ state.undecidedWarned = true;
170
+ events.emit({
171
+ type: 'config_warning',
172
+ timestamp: now(),
173
+ warning: 'enablement_undecided_timeout',
174
+ placementKeys: [],
175
+ elapsedMs: now() - armedAt
176
+ });
177
+ });
178
+ }
179
+ export function disarmUndecidedWarning(context) {
180
+ context.state.cancelUndecidedTimer?.();
181
+ context.state.cancelUndecidedTimer = null;
182
+ }
183
+ //# sourceMappingURL=gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["toGateInput","evaluateGates","initReducer","evaluateGate","currentGate","context","engine","state","appGate","currentPrivacy","available","isAvailable","ok","reason","enablement","allowed","permitted","consentGate","consentStarted","consent","refusalFor","decision","kind","status","gateRefusal","cancelAllRetries","runtime","placements","values","cancelRetry","haltPlacements","refusal","key","snapshot","abort","abortLoad","releasePlacementResources","dispatchPlacement","type","emitRefusal","resolved","get","format","closeGate","init","setInit","armUndecidedWarning","timers","events","now","undecidedWarned","cancelUndecidedTimer","armedAt","after","timeouts","undecidedWarning","disposed","emit","timestamp","warning","placementKeys","elapsedMs","disarmUndecidedWarning"],"sourceRoot":"../../../../src","sources":["core/instance/gate.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Initialization, privacy updates and enablement (FR-017 – FR-022, FR-115 –
5
+ * FR-125).
6
+ *
7
+ * One native initialization however many callers race (FR-022), none before
8
+ * the whole gate permits it (FR-017), and a gate that closes and reopens
9
+ * resumes instead of initializing again (FR-154).
10
+ */
11
+ import { normalizeProviderError } from "../../diagnostics/errors.js";
12
+ import { canResume } from "../enablement.js";
13
+ import { canStart, initReducer } from "../initMachine.js";
14
+ import { requiresReinitialization, evaluateGate, toEnginePrivacy } from "../privacyGate.js";
15
+ import { armUndecidedWarning, cancelAllRetries, closeGate, currentGate, disarmUndecidedWarning, refusalFor } from "./gate.js";
16
+ export function createInitController(context) {
17
+ const {
18
+ state,
19
+ engine,
20
+ events,
21
+ resolved,
22
+ now
23
+ } = context;
24
+ function warnSubstitutionOnce() {
25
+ if (state.warnedSubstitution || resolved.catalog.substitutedKeys.length === 0) {
26
+ return;
27
+ }
28
+ state.warnedSubstitution = true;
29
+ events.emit({
30
+ type: 'config_warning',
31
+ timestamp: now(),
32
+ warning: 'test_ad_unit_substituted',
33
+ placementKeys: resolved.catalog.substitutedKeys
34
+ });
35
+ }
36
+ async function doInitialize(privacy) {
37
+ try {
38
+ // The adapter applies privacy configuration before initializing the
39
+ // provider; that ordering is the whole reason FR-017 is enforceable.
40
+ await engine.initialize(toEnginePrivacy(privacy, resolved.testDeviceIds));
41
+ // Recorded before the status moves, and whether or not it moves: a gate
42
+ // that closed while this was in flight leaves the status `blocked`, but
43
+ // the provider is initialized all the same and must not be again.
44
+ state.providerInitialized = true;
45
+ state.appliedPrivacy = privacy;
46
+ context.setInit(initReducer(state.init, {
47
+ type: 'SUCCEED'
48
+ }));
49
+ warnSubstitutionOnce();
50
+ return {
51
+ status: 'ready'
52
+ };
53
+ } catch (error) {
54
+ const normalized = normalizeProviderError(error, {
55
+ operation: 'initialize'
56
+ });
57
+ context.setInit(initReducer(state.init, {
58
+ type: 'FAIL',
59
+ error: normalized
60
+ }));
61
+ return {
62
+ status: 'failed',
63
+ error: normalized
64
+ };
65
+ } finally {
66
+ state.inFlightInit = null;
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Answers `initialize` without a native call when the provider is already up
72
+ * (FR-022, FR-154), or returns `null` to let a real initialization proceed.
73
+ * Init-time-only flags that changed meanwhile fall through to a real
74
+ * initialization: it is the only way they can take effect.
75
+ */
76
+ function resumeInitialized(privacy) {
77
+ if (!state.providerInitialized || !canStart(state.init.status) || requiresReinitialization(state.appliedPrivacy, privacy)) {
78
+ return null;
79
+ }
80
+ context.setInit(initReducer(state.init, {
81
+ type: 'RESUME'
82
+ }));
83
+ return {
84
+ status: 'ready'
85
+ };
86
+ }
87
+ const controller = {
88
+ async initialize(privacy) {
89
+ if (state.disposed) {
90
+ return {
91
+ status: 'unavailable',
92
+ reason: 'provider_missing'
93
+ };
94
+ }
95
+ state.currentPrivacy = privacy;
96
+
97
+ // Availability, then enablement, then consent — the one order, evaluated
98
+ // in the one place (FR-140). Nothing provider-facing happens on any
99
+ // refusal: not a configuration call, not an initialization (FR-017,
100
+ // FR-158). The consent flow opening the gate later initializes, through
101
+ // `reevaluateAfterConsent`.
102
+ const decision = currentGate(context);
103
+ if (!decision.allowed) {
104
+ const refusal = refusalFor(decision);
105
+ switch (refusal.status) {
106
+ case 'unavailable':
107
+ context.setInit(initReducer(state.init, {
108
+ type: 'UNAVAILABLE',
109
+ reason: refusal.reason
110
+ }));
111
+ break;
112
+ case 'disabled':
113
+ context.setInit(initReducer(state.init, {
114
+ type: 'DISABLE'
115
+ }));
116
+ break;
117
+ case 'undecided':
118
+ // FR-115: the status says `undecided`, so a banner host can hold
119
+ // its space instead of reclaiming it.
120
+ context.setInit(initReducer(state.init, {
121
+ type: 'UNDECIDE'
122
+ }));
123
+ armUndecidedWarning(context);
124
+ break;
125
+ default:
126
+ context.setInit(initReducer(state.init, {
127
+ type: 'BLOCK',
128
+ reason: refusal.reason
129
+ }));
130
+ }
131
+ context.emitRefusal('initialize', refusal);
132
+ return refusal;
133
+ }
134
+ if (state.init.status === 'ready') {
135
+ return {
136
+ status: 'ready'
137
+ };
138
+ }
139
+ const resumed = resumeInitialized(privacy);
140
+ if (resumed) {
141
+ return resumed;
142
+ }
143
+ // FR-022, SC-005. Racing callers share one operation.
144
+ if (state.inFlightInit) {
145
+ return state.inFlightInit;
146
+ }
147
+ if (!canStart(state.init.status)) {
148
+ return {
149
+ status: 'ready'
150
+ };
151
+ }
152
+ context.setInit(initReducer(state.init, {
153
+ type: 'START'
154
+ }));
155
+ state.inFlightInit = doInitialize(privacy);
156
+ return state.inFlightInit;
157
+ },
158
+ async updatePrivacy(privacy) {
159
+ if (state.disposed) {
160
+ // The same answer initialize and load give a disposed instance.
161
+ return {
162
+ status: 'unavailable',
163
+ reason: 'provider_missing'
164
+ };
165
+ }
166
+ if (state.enablement === 'undecided') {
167
+ return {
168
+ status: 'undecided'
169
+ };
170
+ }
171
+ if (state.enablement === 'disabled') {
172
+ return {
173
+ status: 'disabled'
174
+ };
175
+ }
176
+ if (!engine.isAvailable()) {
177
+ return {
178
+ status: 'unavailable',
179
+ reason: 'unsupported_platform'
180
+ };
181
+ }
182
+ // FR-020: a flag the provider only honors at initialization cannot be
183
+ // applied now. Say so, rather than accepting it and running half-old.
184
+ if (requiresReinitialization(state.appliedPrivacy, privacy)) {
185
+ return {
186
+ status: 'requires_reinitialization'
187
+ };
188
+ }
189
+ state.currentPrivacy = privacy;
190
+ const gate = evaluateGate(privacy);
191
+ if (!gate.allowed) {
192
+ // FR-017, FR-137, FR-153: the same teardown as a consent withdrawal.
193
+ closeGate(context, {
194
+ status: 'blocked',
195
+ reason: gate.reason
196
+ });
197
+ return {
198
+ status: 'blocked',
199
+ reason: gate.reason
200
+ };
201
+ }
202
+ // FR-019: resolving consent after a block must not initialize twice.
203
+ if (state.init.status === 'ready') {
204
+ return {
205
+ status: 'applied'
206
+ };
207
+ }
208
+ // Exhaustive on purpose (ADS-04): a new InitResult member fails to
209
+ // compile here instead of falling through to `applied`.
210
+ const result = await controller.initialize(privacy);
211
+ switch (result.status) {
212
+ case 'ready':
213
+ return {
214
+ status: 'applied'
215
+ };
216
+ case 'blocked':
217
+ case 'disabled':
218
+ case 'undecided':
219
+ case 'unavailable':
220
+ case 'failed':
221
+ return result;
222
+ default:
223
+ {
224
+ const unreachable = result;
225
+ return unreachable;
226
+ }
227
+ }
228
+ },
229
+ setEnablement(next) {
230
+ if (state.disposed) {
231
+ return {
232
+ status: 'unavailable',
233
+ reason: 'provider_missing'
234
+ };
235
+ }
236
+ if (state.enablement === next) {
237
+ return {
238
+ status: 'unchanged'
239
+ };
240
+ }
241
+ const previous = state.enablement;
242
+ state.enablement = next;
243
+ if (next === 'disabled' || next === 'undecided') {
244
+ // FR-037, FR-125: new work stops and in-flight resources are released;
245
+ // an ad already on screen is left to finish.
246
+ closeGate(context, {
247
+ status: next
248
+ });
249
+ if (next === 'undecided') {
250
+ armUndecidedWarning(context);
251
+ return {
252
+ status: 'undecided'
253
+ };
254
+ }
255
+ disarmUndecidedWarning(context);
256
+ return {
257
+ status: 'disabled'
258
+ };
259
+ }
260
+
261
+ // Turning ads on. 0.1.0 dropped the status to `not_started` and returned
262
+ // nothing, so every later load was refused in silence (FR-121).
263
+ disarmUndecidedWarning(context);
264
+ const resumable = canResume(state.init.resumeTo);
265
+ context.setInit(initReducer(state.init, {
266
+ type: 'ENABLE'
267
+ }));
268
+ const {
269
+ init
270
+ } = state;
271
+ if (init.status === 'unavailable') {
272
+ return {
273
+ status: 'unavailable',
274
+ reason: init.unavailableReason ?? 'unsupported_platform'
275
+ };
276
+ }
277
+ // The provider was never un-initialized, and FR-022 forbids doing it twice.
278
+ if (init.status === 'ready' && (resumable || previous === 'undecided')) {
279
+ return {
280
+ status: 'resumed',
281
+ initStatus: init.status
282
+ };
283
+ }
284
+ // Said out loud: the package will not hide an asynchronous, billable
285
+ // initialization behind a setter the caller may not be awaiting.
286
+ return {
287
+ status: 'requires_initialization'
288
+ };
289
+ },
290
+ /**
291
+ * When consent opens the gate and the instance was blocked, it initializes —
292
+ * once, because `initialize` shares one in-flight operation (FR-022,
293
+ * SC-102). When consent closes it, requests stop, pending retries are
294
+ * cancelled (FR-137), and a `ready` instance moves to `blocked` so a banner
295
+ * host keyed on `ready` stops requesting (FR-153).
296
+ */
297
+ async reevaluateAfterConsent() {
298
+ if (state.disposed || !state.currentPrivacy) {
299
+ return;
300
+ }
301
+ const decision = currentGate(context);
302
+ if (!decision.allowed) {
303
+ if (decision.kind === 'blocked') {
304
+ closeGate(context, {
305
+ status: 'blocked',
306
+ reason: decision.reason
307
+ });
308
+ } else {
309
+ cancelAllRetries(context);
310
+ }
311
+ return;
312
+ }
313
+ if (state.init.status === 'ready' || state.init.status === 'initializing') {
314
+ return;
315
+ }
316
+ await controller.initialize(state.currentPrivacy);
317
+ }
318
+ };
319
+ return controller;
320
+ }
321
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["normalizeProviderError","canResume","canStart","initReducer","requiresReinitialization","evaluateGate","toEnginePrivacy","armUndecidedWarning","cancelAllRetries","closeGate","currentGate","disarmUndecidedWarning","refusalFor","createInitController","context","state","engine","events","resolved","now","warnSubstitutionOnce","warnedSubstitution","catalog","substitutedKeys","length","emit","type","timestamp","warning","placementKeys","doInitialize","privacy","initialize","testDeviceIds","providerInitialized","appliedPrivacy","setInit","init","status","error","normalized","operation","inFlightInit","resumeInitialized","controller","disposed","reason","currentPrivacy","decision","allowed","refusal","emitRefusal","resumed","updatePrivacy","enablement","isAvailable","gate","result","unreachable","setEnablement","next","previous","resumable","resumeTo","unavailableReason","initStatus","reevaluateAfterConsent","kind"],"sourceRoot":"../../../../src","sources":["core/instance/init.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * What `AdsBanner` needs from an instance, held off the public type (ADS-13).
5
+ *
6
+ * 0.5.0 exposed this as `AdsInstance.internals`, so any consumer could emit an
7
+ * `impression` or a `reward_earned` into the stream used for revenue
8
+ * reconciliation, and every change here was a breaking type change. It now
9
+ * lives in a WeakMap keyed by the instance: the banner host looks it up, and an
10
+ * instance an app wrote by hand simply has none.
11
+ */
12
+
13
+ import { AdsError } from "../../diagnostics/errors.js";
14
+ import { permitsRequests } from "../enablement.js";
15
+ import { canRequest } from "../initMachine.js";
16
+ import { toEngineRequest } from "../privacyGate.js";
17
+ import { gateRefusal } from "./gate.js";
18
+ const registry = new WeakMap();
19
+
20
+ /** The banner host's view of an instance `createAds` made; null for any other. */
21
+ export function getInternals(instance) {
22
+ return registry.get(instance) ?? null;
23
+ }
24
+ export function attachInternals(instance, internals) {
25
+ registry.set(instance, internals);
26
+ }
27
+ export function createInternals(context) {
28
+ const {
29
+ state,
30
+ engine,
31
+ resolved,
32
+ events,
33
+ timers,
34
+ requestThrottle,
35
+ now
36
+ } = context;
37
+ return {
38
+ resolveBanner(placementKey) {
39
+ const definition = resolved.placements.get(placementKey);
40
+ if (!definition || definition.format !== 'banner') {
41
+ const code = definition ? 'format_mismatch' : 'placement_not_found';
42
+ return {
43
+ ok: false,
44
+ result: {
45
+ status: 'failed',
46
+ error: new AdsError(code, {
47
+ operation: 'load',
48
+ placementKey,
49
+ format: definition?.format,
50
+ message: definition ? `"${placementKey}" is not a banner placement` : `unknown placement "${placementKey}"`
51
+ })
52
+ }
53
+ };
54
+ }
55
+ const refusal = gateRefusal(context);
56
+ if (refusal) {
57
+ return {
58
+ ok: false,
59
+ result: refusal
60
+ };
61
+ }
62
+ if (!canRequest(state.init.status)) {
63
+ return {
64
+ ok: false,
65
+ result: {
66
+ status: 'blocked',
67
+ reason: 'consent_required'
68
+ }
69
+ };
70
+ }
71
+ // The throttle is deliberately not consulted here: a fresh mount must be
72
+ // throttled while a width re-adaptation of a mounted banner must not be,
73
+ // and only the host knows which it is (FR-140).
74
+ return {
75
+ ok: true,
76
+ adUnitId: resolved.catalog.byKey.get(placementKey) ?? '',
77
+ personalizedAds: toEngineRequest(state.currentPrivacy).personalizedAds
78
+ };
79
+ },
80
+ commitBannerRequest(placementKey, token) {
81
+ if (!resolved.placements.has(placementKey)) {
82
+ return null;
83
+ }
84
+ const decision = requestThrottle.tryAcquire(placementKey, resolved.minRequestIntervalByKey.get(placementKey) ?? 0, token);
85
+ return decision.allowed ? null : {
86
+ status: 'throttled',
87
+ retryAfterMs: decision.retryAfterMs
88
+ };
89
+ },
90
+ throttleFloorFor: placementKey => resolved.minRequestIntervalByKey.get(placementKey) ?? 0,
91
+ banner: () => engine.banner?.isAvailable() ? engine.banner : null,
92
+ emit: event => events.emit(event),
93
+ setPlacementState(key, next) {
94
+ const runtime = context.placements.get(key);
95
+ if (runtime) {
96
+ context.setPlacement(key, {
97
+ ...runtime.snapshot,
98
+ state: next
99
+ });
100
+ }
101
+ },
102
+ isReady: () => permitsRequests(state.enablement) && engine.isAvailable() && canRequest(state.init.status),
103
+ nextCorrelationId: () => context.correlation.next(),
104
+ now,
105
+ schedule: (delayMs, task) => timers.after(delayMs, task),
106
+ timerCount: () => timers.size()
107
+ };
108
+ }
109
+ //# sourceMappingURL=internals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AdsError","permitsRequests","canRequest","toEngineRequest","gateRefusal","registry","WeakMap","getInternals","instance","get","attachInternals","internals","set","createInternals","context","state","engine","resolved","events","timers","requestThrottle","now","resolveBanner","placementKey","definition","placements","format","code","ok","result","status","error","operation","message","refusal","init","reason","adUnitId","catalog","byKey","personalizedAds","currentPrivacy","commitBannerRequest","token","has","decision","tryAcquire","minRequestIntervalByKey","allowed","retryAfterMs","throttleFloorFor","banner","isAvailable","emit","event","setPlacementState","key","next","runtime","setPlacement","snapshot","isReady","enablement","nextCorrelationId","correlation","schedule","delayMs","task","after","timerCount","size"],"sourceRoot":"../../../../src","sources":["core/instance/internals.ts"],"mappings":"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","ignoreList":[]}