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