@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.
- package/CHANGELOG.md +88 -0
- package/lib/commonjs/config/resolveAdUnit.js +80 -0
- package/lib/commonjs/config/resolveAdUnit.js.map +1 -0
- package/lib/commonjs/config/types.js +138 -0
- package/lib/commonjs/config/types.js.map +1 -0
- package/lib/commonjs/config/validate.js +150 -0
- package/lib/commonjs/config/validate.js.map +1 -0
- package/lib/commonjs/core/adOriginatedReturn.js +119 -0
- package/lib/commonjs/core/adOriginatedReturn.js.map +1 -0
- package/lib/commonjs/core/adsInstance.js +129 -0
- package/lib/commonjs/core/adsInstance.js.map +1 -0
- package/lib/commonjs/core/consentFlow.js +154 -0
- package/lib/commonjs/core/consentFlow.js.map +1 -0
- package/lib/commonjs/core/enablement.js +64 -0
- package/lib/commonjs/core/enablement.js.map +1 -0
- package/lib/commonjs/core/fullScreenLock.js +48 -0
- package/lib/commonjs/core/fullScreenLock.js.map +1 -0
- package/lib/commonjs/core/gates.js +95 -0
- package/lib/commonjs/core/gates.js.map +1 -0
- package/lib/commonjs/core/initMachine.js +159 -0
- package/lib/commonjs/core/initMachine.js.map +1 -0
- package/lib/commonjs/core/instance/consent.js +155 -0
- package/lib/commonjs/core/instance/consent.js.map +1 -0
- package/lib/commonjs/core/instance/context.js +217 -0
- package/lib/commonjs/core/instance/context.js.map +1 -0
- package/lib/commonjs/core/instance/gate.js +194 -0
- package/lib/commonjs/core/instance/gate.js.map +1 -0
- package/lib/commonjs/core/instance/init.js +326 -0
- package/lib/commonjs/core/instance/init.js.map +1 -0
- package/lib/commonjs/core/instance/internals.js +115 -0
- package/lib/commonjs/core/instance/internals.js.map +1 -0
- package/lib/commonjs/core/instance/load.js +458 -0
- package/lib/commonjs/core/instance/load.js.map +1 -0
- package/lib/commonjs/core/instance/show.js +243 -0
- package/lib/commonjs/core/instance/show.js.map +1 -0
- package/lib/commonjs/core/instance/types.js +6 -0
- package/lib/commonjs/core/instance/types.js.map +1 -0
- package/lib/commonjs/core/placementMachine.js +116 -0
- package/lib/commonjs/core/placementMachine.js.map +1 -0
- package/lib/commonjs/core/privacyGate.js +93 -0
- package/lib/commonjs/core/privacyGate.js.map +1 -0
- package/lib/commonjs/core/requestThrottle.js +152 -0
- package/lib/commonjs/core/requestThrottle.js.map +1 -0
- package/lib/commonjs/core/retryPolicy.js +120 -0
- package/lib/commonjs/core/retryPolicy.js.map +1 -0
- package/lib/commonjs/core/rewardedSession.js +65 -0
- package/lib/commonjs/core/rewardedSession.js.map +1 -0
- package/lib/commonjs/core/timers.js +162 -0
- package/lib/commonjs/core/timers.js.map +1 -0
- package/lib/commonjs/diagnostics/correlation.js +33 -0
- package/lib/commonjs/diagnostics/correlation.js.map +1 -0
- package/lib/commonjs/diagnostics/errors.js +152 -0
- package/lib/commonjs/diagnostics/errors.js.map +1 -0
- package/lib/commonjs/diagnostics/events.js +132 -0
- package/lib/commonjs/diagnostics/events.js.map +1 -0
- package/lib/commonjs/engine/admobBanner.js +58 -0
- package/lib/commonjs/engine/admobBanner.js.map +1 -0
- package/lib/commonjs/engine/admobEngine.js +343 -0
- package/lib/commonjs/engine/admobEngine.js.map +1 -0
- package/lib/commonjs/engine/admobErrors.js +45 -0
- package/lib/commonjs/engine/admobErrors.js.map +1 -0
- package/lib/commonjs/engine/port.js +6 -0
- package/lib/commonjs/engine/port.js.map +1 -0
- package/lib/commonjs/engine/testAdUnits.js +61 -0
- package/lib/commonjs/engine/testAdUnits.js.map +1 -0
- package/lib/commonjs/index.js +218 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/react/AdsBanner.js +317 -0
- package/lib/commonjs/react/AdsBanner.js.map +1 -0
- package/lib/commonjs/react/AdsProvider.js +54 -0
- package/lib/commonjs/react/AdsProvider.js.map +1 -0
- package/lib/commonjs/react/hooks.js +63 -0
- package/lib/commonjs/react/hooks.js.map +1 -0
- package/lib/commonjs/testing/clock.js +76 -0
- package/lib/commonjs/testing/clock.js.map +1 -0
- package/lib/commonjs/testing/conformance.js +99 -0
- package/lib/commonjs/testing/conformance.js.map +1 -0
- package/lib/commonjs/testing/index.js +389 -0
- package/lib/commonjs/testing/index.js.map +1 -0
- package/lib/module/config/resolveAdUnit.js +75 -0
- package/lib/module/config/resolveAdUnit.js.map +1 -0
- package/lib/module/config/types.js +134 -0
- package/lib/module/config/types.js.map +1 -0
- package/lib/module/config/validate.js +146 -0
- package/lib/module/config/validate.js.map +1 -0
- package/lib/module/core/adOriginatedReturn.js +115 -0
- package/lib/module/core/adOriginatedReturn.js.map +1 -0
- package/lib/module/core/adsInstance.js +121 -0
- package/lib/module/core/adsInstance.js.map +1 -0
- package/lib/module/core/consentFlow.js +143 -0
- package/lib/module/core/consentFlow.js.map +1 -0
- package/lib/module/core/enablement.js +58 -0
- package/lib/module/core/enablement.js.map +1 -0
- package/lib/module/core/fullScreenLock.js +44 -0
- package/lib/module/core/fullScreenLock.js.map +1 -0
- package/lib/module/core/gates.js +91 -0
- package/lib/module/core/gates.js.map +1 -0
- package/lib/module/core/initMachine.js +152 -0
- package/lib/module/core/initMachine.js.map +1 -0
- package/lib/module/core/instance/consent.js +151 -0
- package/lib/module/core/instance/consent.js.map +1 -0
- package/lib/module/core/instance/context.js +212 -0
- package/lib/module/core/instance/context.js.map +1 -0
- package/lib/module/core/instance/gate.js +183 -0
- package/lib/module/core/instance/gate.js.map +1 -0
- package/lib/module/core/instance/init.js +321 -0
- package/lib/module/core/instance/init.js.map +1 -0
- package/lib/module/core/instance/internals.js +109 -0
- package/lib/module/core/instance/internals.js.map +1 -0
- package/lib/module/core/instance/load.js +452 -0
- package/lib/module/core/instance/load.js.map +1 -0
- package/lib/module/core/instance/show.js +238 -0
- package/lib/module/core/instance/show.js.map +1 -0
- package/lib/module/core/instance/types.js +4 -0
- package/lib/module/core/instance/types.js.map +1 -0
- package/lib/module/core/placementMachine.js +109 -0
- package/lib/module/core/placementMachine.js.map +1 -0
- package/lib/module/core/privacyGate.js +86 -0
- package/lib/module/core/privacyGate.js.map +1 -0
- package/lib/module/core/requestThrottle.js +146 -0
- package/lib/module/core/requestThrottle.js.map +1 -0
- package/lib/module/core/retryPolicy.js +113 -0
- package/lib/module/core/retryPolicy.js.map +1 -0
- package/lib/module/core/rewardedSession.js +61 -0
- package/lib/module/core/rewardedSession.js.map +1 -0
- package/lib/module/core/timers.js +150 -0
- package/lib/module/core/timers.js.map +1 -0
- package/lib/module/diagnostics/correlation.js +29 -0
- package/lib/module/diagnostics/correlation.js.map +1 -0
- package/lib/module/diagnostics/errors.js +143 -0
- package/lib/module/diagnostics/errors.js.map +1 -0
- package/lib/module/diagnostics/events.js +128 -0
- package/lib/module/diagnostics/events.js.map +1 -0
- package/lib/module/engine/admobBanner.js +52 -0
- package/lib/module/engine/admobBanner.js.map +1 -0
- package/lib/module/engine/admobEngine.js +334 -0
- package/lib/module/engine/admobEngine.js.map +1 -0
- package/lib/module/engine/admobErrors.js +41 -0
- package/lib/module/engine/admobErrors.js.map +1 -0
- package/lib/module/engine/port.js +4 -0
- package/lib/module/engine/port.js.map +1 -0
- package/lib/module/engine/testAdUnits.js +56 -0
- package/lib/module/engine/testAdUnits.js.map +1 -0
- package/lib/module/index.js +59 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/react/AdsBanner.js +312 -0
- package/lib/module/react/AdsBanner.js.map +1 -0
- package/lib/module/react/AdsProvider.js +48 -0
- package/lib/module/react/AdsProvider.js.map +1 -0
- package/lib/module/react/hooks.js +58 -0
- package/lib/module/react/hooks.js.map +1 -0
- package/lib/module/testing/clock.js +72 -0
- package/lib/module/testing/clock.js.map +1 -0
- package/lib/module/testing/conformance.js +93 -0
- package/lib/module/testing/conformance.js.map +1 -0
- package/lib/module/testing/index.js +366 -0
- package/lib/module/testing/index.js.map +1 -0
- package/lib/typescript/commonjs/config/resolveAdUnit.d.ts +43 -0
- package/lib/typescript/commonjs/config/resolveAdUnit.d.ts.map +1 -0
- package/lib/typescript/commonjs/config/types.d.ts +280 -0
- package/lib/typescript/commonjs/config/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/config/validate.d.ts +49 -0
- package/lib/typescript/commonjs/config/validate.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/adOriginatedReturn.d.ts +61 -0
- package/lib/typescript/commonjs/core/adOriginatedReturn.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/adsInstance.d.ts +33 -0
- package/lib/typescript/commonjs/core/adsInstance.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/consentFlow.d.ts +84 -0
- package/lib/typescript/commonjs/core/consentFlow.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/enablement.d.ts +74 -0
- package/lib/typescript/commonjs/core/enablement.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/fullScreenLock.d.ts +25 -0
- package/lib/typescript/commonjs/core/fullScreenLock.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/gates.d.ts +76 -0
- package/lib/typescript/commonjs/core/gates.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/initMachine.d.ts +66 -0
- package/lib/typescript/commonjs/core/initMachine.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/instance/consent.d.ts +4 -0
- package/lib/typescript/commonjs/core/instance/consent.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/instance/context.d.ts +118 -0
- package/lib/typescript/commonjs/core/instance/context.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/instance/gate.d.ts +38 -0
- package/lib/typescript/commonjs/core/instance/gate.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/instance/init.d.ts +13 -0
- package/lib/typescript/commonjs/core/instance/init.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/instance/internals.d.ts +60 -0
- package/lib/typescript/commonjs/core/instance/internals.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/instance/load.d.ts +9 -0
- package/lib/typescript/commonjs/core/instance/load.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/instance/show.d.ts +7 -0
- package/lib/typescript/commonjs/core/instance/show.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/instance/types.d.ts +240 -0
- package/lib/typescript/commonjs/core/instance/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/placementMachine.d.ts +55 -0
- package/lib/typescript/commonjs/core/placementMachine.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/privacyGate.d.ts +40 -0
- package/lib/typescript/commonjs/core/privacyGate.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/requestThrottle.d.ts +99 -0
- package/lib/typescript/commonjs/core/requestThrottle.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/retryPolicy.d.ts +66 -0
- package/lib/typescript/commonjs/core/retryPolicy.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/rewardedSession.d.ts +37 -0
- package/lib/typescript/commonjs/core/rewardedSession.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/timers.d.ts +135 -0
- package/lib/typescript/commonjs/core/timers.d.ts.map +1 -0
- package/lib/typescript/commonjs/diagnostics/correlation.d.ts +18 -0
- package/lib/typescript/commonjs/diagnostics/correlation.d.ts.map +1 -0
- package/lib/typescript/commonjs/diagnostics/errors.d.ts +59 -0
- package/lib/typescript/commonjs/diagnostics/errors.d.ts.map +1 -0
- package/lib/typescript/commonjs/diagnostics/events.d.ts +126 -0
- package/lib/typescript/commonjs/diagnostics/events.d.ts.map +1 -0
- package/lib/typescript/commonjs/engine/admobBanner.d.ts +10 -0
- package/lib/typescript/commonjs/engine/admobBanner.d.ts.map +1 -0
- package/lib/typescript/commonjs/engine/admobEngine.d.ts +71 -0
- package/lib/typescript/commonjs/engine/admobEngine.d.ts.map +1 -0
- package/lib/typescript/commonjs/engine/admobErrors.d.ts +9 -0
- package/lib/typescript/commonjs/engine/admobErrors.d.ts.map +1 -0
- package/lib/typescript/commonjs/engine/port.d.ts +171 -0
- package/lib/typescript/commonjs/engine/port.d.ts.map +1 -0
- package/lib/typescript/commonjs/engine/testAdUnits.d.ts +33 -0
- package/lib/typescript/commonjs/engine/testAdUnits.d.ts.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +42 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/react/AdsBanner.d.ts +29 -0
- package/lib/typescript/commonjs/react/AdsBanner.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/AdsProvider.d.ts +36 -0
- package/lib/typescript/commonjs/react/AdsProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/react/hooks.d.ts +27 -0
- package/lib/typescript/commonjs/react/hooks.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/clock.d.ts +29 -0
- package/lib/typescript/commonjs/testing/clock.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/conformance.d.ts +26 -0
- package/lib/typescript/commonjs/testing/conformance.d.ts.map +1 -0
- package/lib/typescript/commonjs/testing/index.d.ts +133 -0
- package/lib/typescript/commonjs/testing/index.d.ts.map +1 -0
- package/lib/typescript/module/config/resolveAdUnit.d.ts +43 -0
- package/lib/typescript/module/config/resolveAdUnit.d.ts.map +1 -0
- package/lib/typescript/module/config/types.d.ts +280 -0
- package/lib/typescript/module/config/types.d.ts.map +1 -0
- package/lib/typescript/module/config/validate.d.ts +49 -0
- package/lib/typescript/module/config/validate.d.ts.map +1 -0
- package/lib/typescript/module/core/adOriginatedReturn.d.ts +61 -0
- package/lib/typescript/module/core/adOriginatedReturn.d.ts.map +1 -0
- package/lib/typescript/module/core/adsInstance.d.ts +33 -0
- package/lib/typescript/module/core/adsInstance.d.ts.map +1 -0
- package/lib/typescript/module/core/consentFlow.d.ts +84 -0
- package/lib/typescript/module/core/consentFlow.d.ts.map +1 -0
- package/lib/typescript/module/core/enablement.d.ts +74 -0
- package/lib/typescript/module/core/enablement.d.ts.map +1 -0
- package/lib/typescript/module/core/fullScreenLock.d.ts +25 -0
- package/lib/typescript/module/core/fullScreenLock.d.ts.map +1 -0
- package/lib/typescript/module/core/gates.d.ts +76 -0
- package/lib/typescript/module/core/gates.d.ts.map +1 -0
- package/lib/typescript/module/core/initMachine.d.ts +66 -0
- package/lib/typescript/module/core/initMachine.d.ts.map +1 -0
- package/lib/typescript/module/core/instance/consent.d.ts +4 -0
- package/lib/typescript/module/core/instance/consent.d.ts.map +1 -0
- package/lib/typescript/module/core/instance/context.d.ts +118 -0
- package/lib/typescript/module/core/instance/context.d.ts.map +1 -0
- package/lib/typescript/module/core/instance/gate.d.ts +38 -0
- package/lib/typescript/module/core/instance/gate.d.ts.map +1 -0
- package/lib/typescript/module/core/instance/init.d.ts +13 -0
- package/lib/typescript/module/core/instance/init.d.ts.map +1 -0
- package/lib/typescript/module/core/instance/internals.d.ts +60 -0
- package/lib/typescript/module/core/instance/internals.d.ts.map +1 -0
- package/lib/typescript/module/core/instance/load.d.ts +9 -0
- package/lib/typescript/module/core/instance/load.d.ts.map +1 -0
- package/lib/typescript/module/core/instance/show.d.ts +7 -0
- package/lib/typescript/module/core/instance/show.d.ts.map +1 -0
- package/lib/typescript/module/core/instance/types.d.ts +240 -0
- package/lib/typescript/module/core/instance/types.d.ts.map +1 -0
- package/lib/typescript/module/core/placementMachine.d.ts +55 -0
- package/lib/typescript/module/core/placementMachine.d.ts.map +1 -0
- package/lib/typescript/module/core/privacyGate.d.ts +40 -0
- package/lib/typescript/module/core/privacyGate.d.ts.map +1 -0
- package/lib/typescript/module/core/requestThrottle.d.ts +99 -0
- package/lib/typescript/module/core/requestThrottle.d.ts.map +1 -0
- package/lib/typescript/module/core/retryPolicy.d.ts +66 -0
- package/lib/typescript/module/core/retryPolicy.d.ts.map +1 -0
- package/lib/typescript/module/core/rewardedSession.d.ts +37 -0
- package/lib/typescript/module/core/rewardedSession.d.ts.map +1 -0
- package/lib/typescript/module/core/timers.d.ts +135 -0
- package/lib/typescript/module/core/timers.d.ts.map +1 -0
- package/lib/typescript/module/diagnostics/correlation.d.ts +18 -0
- package/lib/typescript/module/diagnostics/correlation.d.ts.map +1 -0
- package/lib/typescript/module/diagnostics/errors.d.ts +59 -0
- package/lib/typescript/module/diagnostics/errors.d.ts.map +1 -0
- package/lib/typescript/module/diagnostics/events.d.ts +126 -0
- package/lib/typescript/module/diagnostics/events.d.ts.map +1 -0
- package/lib/typescript/module/engine/admobBanner.d.ts +10 -0
- package/lib/typescript/module/engine/admobBanner.d.ts.map +1 -0
- package/lib/typescript/module/engine/admobEngine.d.ts +71 -0
- package/lib/typescript/module/engine/admobEngine.d.ts.map +1 -0
- package/lib/typescript/module/engine/admobErrors.d.ts +9 -0
- package/lib/typescript/module/engine/admobErrors.d.ts.map +1 -0
- package/lib/typescript/module/engine/port.d.ts +171 -0
- package/lib/typescript/module/engine/port.d.ts.map +1 -0
- package/lib/typescript/module/engine/testAdUnits.d.ts +33 -0
- package/lib/typescript/module/engine/testAdUnits.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +42 -0
- package/lib/typescript/module/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/react/AdsBanner.d.ts +29 -0
- package/lib/typescript/module/react/AdsBanner.d.ts.map +1 -0
- package/lib/typescript/module/react/AdsProvider.d.ts +36 -0
- package/lib/typescript/module/react/AdsProvider.d.ts.map +1 -0
- package/lib/typescript/module/react/hooks.d.ts +27 -0
- package/lib/typescript/module/react/hooks.d.ts.map +1 -0
- package/lib/typescript/module/testing/clock.d.ts +29 -0
- package/lib/typescript/module/testing/clock.d.ts.map +1 -0
- package/lib/typescript/module/testing/conformance.d.ts +26 -0
- package/lib/typescript/module/testing/conformance.d.ts.map +1 -0
- package/lib/typescript/module/testing/index.d.ts +133 -0
- package/lib/typescript/module/testing/index.d.ts.map +1 -0
- package/package.json +48 -12
- 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":[]}
|