react-native-pangleads 0.1.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/LICENSE +20 -0
- package/NitroPangleAds.podspec +26 -0
- package/README.md +80 -0
- package/android/CMakeLists.txt +20 -0
- package/android/build.gradle +129 -0
- package/android/consumer-rules.pro +2 -0
- package/android/fix-prefab.gradle +46 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/cpp/cpp-adapter.cpp +7 -0
- package/android/src/main/java/com/margelo/nitro/pangleads/HybridPangleAds.kt +123 -0
- package/android/src/main/java/com/margelo/nitro/pangleads/HybridPangleInterstitialAd.kt +106 -0
- package/android/src/main/java/com/margelo/nitro/pangleads/HybridPangleRewardedAd.kt +139 -0
- package/android/src/main/java/com/margelo/nitro/pangleads/NitroPangleAdsPackage.java +27 -0
- package/android/src/main/java/com/margelo/nitro/pangleads/PangleAdEventEmitter.kt +41 -0
- package/android/src/main/java/com/margelo/nitro/pangleads/PangleAndroidUtils.kt +32 -0
- package/ios/HybridPangleAds.swift +120 -0
- package/ios/HybridPangleInterstitialAd.swift +110 -0
- package/ios/HybridPangleRewardedAd.swift +143 -0
- package/ios/PangleSupport.swift +129 -0
- package/lib/module/index.js +172 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/index.test.js +201 -0
- package/lib/module/index.test.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/specs/PangleAds.nitro.js +4 -0
- package/lib/module/specs/PangleAds.nitro.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/index.d.ts +68 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/index.test.d.ts +2 -0
- package/lib/typescript/src/index.test.d.ts.map +1 -0
- package/lib/typescript/src/specs/PangleAds.nitro.d.ts +46 -0
- package/lib/typescript/src/specs/PangleAds.nitro.d.ts.map +1 -0
- package/nitro.json +18 -0
- package/nitrogen/generated/android/NitroPangleAds+autolinking.cmake +85 -0
- package/nitrogen/generated/android/NitroPangleAds+autolinking.gradle +27 -0
- package/nitrogen/generated/android/NitroPangleAdsOnLoad.cpp +50 -0
- package/nitrogen/generated/android/NitroPangleAdsOnLoad.hpp +25 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_PangleAdEventPayload_.hpp +78 -0
- package/nitrogen/generated/android/c++/JHybridPangleAdsSpec.cpp +88 -0
- package/nitrogen/generated/android/c++/JHybridPangleAdsSpec.hpp +69 -0
- package/nitrogen/generated/android/c++/JHybridPangleInterstitialAdSpec.cpp +85 -0
- package/nitrogen/generated/android/c++/JHybridPangleInterstitialAdSpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JHybridPangleRewardedAdSpec.cpp +89 -0
- package/nitrogen/generated/android/c++/JHybridPangleRewardedAdSpec.hpp +68 -0
- package/nitrogen/generated/android/c++/JPangleAdEventPayload.hpp +58 -0
- package/nitrogen/generated/android/c++/JPangleAdEventType.hpp +74 -0
- package/nitrogen/generated/android/c++/JPangleAdVerificationOptions.hpp +58 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pangleads/Func_void_std__optional_PangleAdEventPayload_.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pangleads/HybridPangleAdsSpec.kt +72 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pangleads/HybridPangleInterstitialAdSpec.kt +73 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pangleads/HybridPangleRewardedAdSpec.kt +73 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pangleads/NitroPangleAdsOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pangleads/PangleAdEventPayload.kt +32 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pangleads/PangleAdEventType.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pangleads/PangleAdVerificationOptions.kt +32 -0
- package/nitrogen/generated/ios/NitroPangleAds+autolinking.rb +60 -0
- package/nitrogen/generated/ios/NitroPangleAds-Swift-Cxx-Bridge.cpp +90 -0
- package/nitrogen/generated/ios/NitroPangleAds-Swift-Cxx-Bridge.hpp +270 -0
- package/nitrogen/generated/ios/NitroPangleAds-Swift-Cxx-Umbrella.hpp +66 -0
- package/nitrogen/generated/ios/NitroPangleAdsAutolinking.mm +33 -0
- package/nitrogen/generated/ios/NitroPangleAdsAutolinking.swift +25 -0
- package/nitrogen/generated/ios/c++/HybridPangleAdsSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridPangleAdsSpecSwift.hpp +114 -0
- package/nitrogen/generated/ios/c++/HybridPangleInterstitialAdSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridPangleInterstitialAdSpecSwift.hpp +107 -0
- package/nitrogen/generated/ios/c++/HybridPangleRewardedAdSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridPangleRewardedAdSpecSwift.hpp +110 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_PangleAdEventPayload_.swift +54 -0
- package/nitrogen/generated/ios/swift/HybridPangleAdsSpec.swift +54 -0
- package/nitrogen/generated/ios/swift/HybridPangleAdsSpec_cxx.swift +193 -0
- package/nitrogen/generated/ios/swift/HybridPangleInterstitialAdSpec.swift +53 -0
- package/nitrogen/generated/ios/swift/HybridPangleInterstitialAdSpec_cxx.swift +186 -0
- package/nitrogen/generated/ios/swift/HybridPangleRewardedAdSpec.swift +53 -0
- package/nitrogen/generated/ios/swift/HybridPangleRewardedAdSpec_cxx.swift +193 -0
- package/nitrogen/generated/ios/swift/PangleAdEventPayload.swift +77 -0
- package/nitrogen/generated/ios/swift/PangleAdEventType.swift +60 -0
- package/nitrogen/generated/ios/swift/PangleAdVerificationOptions.swift +84 -0
- package/nitrogen/generated/shared/c++/HybridPangleAdsSpec.cpp +26 -0
- package/nitrogen/generated/shared/c++/HybridPangleAdsSpec.hpp +74 -0
- package/nitrogen/generated/shared/c++/HybridPangleInterstitialAdSpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridPangleInterstitialAdSpec.hpp +73 -0
- package/nitrogen/generated/shared/c++/HybridPangleRewardedAdSpec.cpp +25 -0
- package/nitrogen/generated/shared/c++/HybridPangleRewardedAdSpec.hpp +76 -0
- package/nitrogen/generated/shared/c++/PangleAdEventPayload.hpp +72 -0
- package/nitrogen/generated/shared/c++/PangleAdEventType.hpp +96 -0
- package/nitrogen/generated/shared/c++/PangleAdVerificationOptions.hpp +72 -0
- package/package.json +177 -0
- package/react-native.config.js +8 -0
- package/src/index.test.ts +255 -0
- package/src/index.ts +305 -0
- package/src/specs/PangleAds.nitro.ts +66 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import UIKit
|
|
3
|
+
|
|
4
|
+
let pangleErrorDomain = "NitroPangleAds"
|
|
5
|
+
|
|
6
|
+
// PAGLInterstitialAdDelegate/PAGRewardedAdDelegate do call adDidShowFail on a
|
|
7
|
+
// known show failure, but a show() the SDK silently drops (no callback at
|
|
8
|
+
// all) would otherwise leave the caller awaiting CLOSED/ERROR forever.
|
|
9
|
+
let pangleShowTimeoutInterval: TimeInterval = 10
|
|
10
|
+
|
|
11
|
+
func pangleError(_ message: String, code: Int = 1) -> NSError {
|
|
12
|
+
NSError(
|
|
13
|
+
domain: pangleErrorDomain,
|
|
14
|
+
code: code,
|
|
15
|
+
userInfo: [NSLocalizedDescriptionKey: message]
|
|
16
|
+
)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/// Arms a fallback timeout for a show() call; disarm it once a real
|
|
20
|
+
/// delegate callback fires. If it fires, `onTimeout` runs on the main queue.
|
|
21
|
+
final class PangleShowTimeoutController {
|
|
22
|
+
private var workItem: DispatchWorkItem?
|
|
23
|
+
|
|
24
|
+
func arm(_ onTimeout: @escaping () -> Void) {
|
|
25
|
+
disarm()
|
|
26
|
+
let item = DispatchWorkItem(block: onTimeout)
|
|
27
|
+
workItem = item
|
|
28
|
+
DispatchQueue.main.asyncAfter(deadline: .now() + pangleShowTimeoutInterval, execute: item)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
func disarm() {
|
|
32
|
+
workItem?.cancel()
|
|
33
|
+
workItem = nil
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
func runOnMain(_ body: @escaping () -> Void) {
|
|
38
|
+
if Thread.isMainThread {
|
|
39
|
+
body()
|
|
40
|
+
} else {
|
|
41
|
+
DispatchQueue.main.sync(execute: body)
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
func currentViewController() async throws -> UIViewController {
|
|
46
|
+
try await withCheckedThrowingContinuation { continuation in
|
|
47
|
+
DispatchQueue.main.async {
|
|
48
|
+
let root = UIApplication.shared.connectedScenes
|
|
49
|
+
.compactMap { $0 as? UIWindowScene }
|
|
50
|
+
.flatMap(\.windows)
|
|
51
|
+
.first(where: \.isKeyWindow)?
|
|
52
|
+
.rootViewController
|
|
53
|
+
|
|
54
|
+
guard let root else {
|
|
55
|
+
continuation.resume(
|
|
56
|
+
throwing: pangleError("Cannot show Pangle ad without a view controller")
|
|
57
|
+
)
|
|
58
|
+
return
|
|
59
|
+
}
|
|
60
|
+
continuation.resume(returning: topViewController(root))
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private func topViewController(_ viewController: UIViewController) -> UIViewController {
|
|
66
|
+
if let presented = viewController.presentedViewController {
|
|
67
|
+
return topViewController(presented)
|
|
68
|
+
}
|
|
69
|
+
if let navigation = viewController as? UINavigationController,
|
|
70
|
+
let visible = navigation.visibleViewController {
|
|
71
|
+
return topViewController(visible)
|
|
72
|
+
}
|
|
73
|
+
if let tab = viewController as? UITabBarController,
|
|
74
|
+
let selected = tab.selectedViewController {
|
|
75
|
+
return topViewController(selected)
|
|
76
|
+
}
|
|
77
|
+
return viewController
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
final class PangleAdEventEmitter {
|
|
81
|
+
typealias Listener = (PangleAdEventPayload?) -> Void
|
|
82
|
+
|
|
83
|
+
private let lock = NSLock()
|
|
84
|
+
private var listeners: [Double: (eventType: String, listener: Listener)] = [:]
|
|
85
|
+
private var nextSubscriptionId = 1.0
|
|
86
|
+
|
|
87
|
+
func add(eventType: PangleAdEventType, listener: @escaping Listener) -> Double {
|
|
88
|
+
lock.lock()
|
|
89
|
+
defer { lock.unlock() }
|
|
90
|
+
|
|
91
|
+
let subscriptionId = nextSubscriptionId
|
|
92
|
+
nextSubscriptionId += 1
|
|
93
|
+
listeners[subscriptionId] = (eventType.stringValue, listener)
|
|
94
|
+
return subscriptionId
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
func remove(subscriptionId: Double) {
|
|
98
|
+
lock.lock()
|
|
99
|
+
listeners.removeValue(forKey: subscriptionId)
|
|
100
|
+
lock.unlock()
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
func removeAll() {
|
|
104
|
+
lock.lock()
|
|
105
|
+
listeners.removeAll()
|
|
106
|
+
lock.unlock()
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
func emit(
|
|
110
|
+
_ eventType: PangleAdEventType,
|
|
111
|
+
error: Error? = nil,
|
|
112
|
+
payload: PangleAdEventPayload? = nil
|
|
113
|
+
) {
|
|
114
|
+
lock.lock()
|
|
115
|
+
let callbacks = listeners.values
|
|
116
|
+
.filter { $0.eventType == eventType.stringValue }
|
|
117
|
+
.map(\.listener)
|
|
118
|
+
lock.unlock()
|
|
119
|
+
|
|
120
|
+
let resolvedPayload = payload ?? error.map { error in
|
|
121
|
+
let nsError = error as NSError
|
|
122
|
+
return PangleAdEventPayload(
|
|
123
|
+
errorCode: Double(nsError.code),
|
|
124
|
+
errorMessage: nsError.localizedDescription
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
callbacks.forEach { $0(resolvedPayload) }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { NitroModules } from 'react-native-nitro-modules';
|
|
4
|
+
export let AdEventType = /*#__PURE__*/function (AdEventType) {
|
|
5
|
+
AdEventType["LOADED"] = "loaded";
|
|
6
|
+
AdEventType["ERROR"] = "error";
|
|
7
|
+
AdEventType["OPENED"] = "opened";
|
|
8
|
+
AdEventType["CLICKED"] = "clicked";
|
|
9
|
+
AdEventType["CLOSED"] = "closed";
|
|
10
|
+
return AdEventType;
|
|
11
|
+
}({});
|
|
12
|
+
export let RewardedAdEventType = /*#__PURE__*/function (RewardedAdEventType) {
|
|
13
|
+
RewardedAdEventType["LOADED"] = "rewarded_loaded";
|
|
14
|
+
RewardedAdEventType["EARNED_REWARD"] = "rewarded_earned_reward";
|
|
15
|
+
return RewardedAdEventType;
|
|
16
|
+
}({});
|
|
17
|
+
export let InitializationState = /*#__PURE__*/function (InitializationState) {
|
|
18
|
+
InitializationState[InitializationState["AdapterInitializationStateNotReady"] = 0] = "AdapterInitializationStateNotReady";
|
|
19
|
+
InitializationState[InitializationState["AdapterInitializationStateReady"] = 1] = "AdapterInitializationStateReady";
|
|
20
|
+
return InitializationState;
|
|
21
|
+
}({});
|
|
22
|
+
const nativeAds = NitroModules.createHybridObject('PangleAds');
|
|
23
|
+
function toPublicPayload(eventType, payload) {
|
|
24
|
+
if (eventType === AdEventType.ERROR) {
|
|
25
|
+
const error = new Error(payload?.errorMessage ?? 'Unknown Pangle Ads error');
|
|
26
|
+
error.name = 'PangleAdsError';
|
|
27
|
+
Object.assign(error, {
|
|
28
|
+
code: String(payload?.errorCode ?? 'unknown')
|
|
29
|
+
});
|
|
30
|
+
return error;
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
class MobileAd {
|
|
35
|
+
listeners = new Map();
|
|
36
|
+
nativeSubscriptions = new Set();
|
|
37
|
+
loadedValue = false;
|
|
38
|
+
loadCalled = false;
|
|
39
|
+
constructor(adUnitId, nativeAd, eventTypes) {
|
|
40
|
+
this.adUnitId = adUnitId;
|
|
41
|
+
this.nativeAd = nativeAd;
|
|
42
|
+
for (const eventType of eventTypes) {
|
|
43
|
+
this.listeners.set(eventType, new Set());
|
|
44
|
+
this.subscribeNative(eventType);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
subscribeNative(eventType) {
|
|
48
|
+
if (this.nativeSubscriptions.has(eventType)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.nativeAd.addAdEventListener(eventType, payload => {
|
|
52
|
+
if (eventType === AdEventType.LOADED || eventType === RewardedAdEventType.LOADED) {
|
|
53
|
+
this.loadedValue = true;
|
|
54
|
+
} else if (eventType === AdEventType.CLOSED || eventType === AdEventType.ERROR) {
|
|
55
|
+
this.loadedValue = false;
|
|
56
|
+
this.loadCalled = false;
|
|
57
|
+
}
|
|
58
|
+
const publicPayload = toPublicPayload(eventType, payload);
|
|
59
|
+
for (const listener of this.listeners.get(eventType) ?? []) {
|
|
60
|
+
listener(publicPayload);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
this.nativeSubscriptions.add(eventType);
|
|
64
|
+
}
|
|
65
|
+
get loaded() {
|
|
66
|
+
return this.loadedValue;
|
|
67
|
+
}
|
|
68
|
+
load() {
|
|
69
|
+
if (this.loadedValue || this.loadCalled) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.loadCalled = true;
|
|
73
|
+
this.nativeAd.load();
|
|
74
|
+
}
|
|
75
|
+
show() {
|
|
76
|
+
if (!this.loadedValue) {
|
|
77
|
+
throw new Error(`${this.constructor.name}.show() The requested ad has not loaded and could not be shown.`);
|
|
78
|
+
}
|
|
79
|
+
return this.nativeAd.show();
|
|
80
|
+
}
|
|
81
|
+
addListener(type, listener) {
|
|
82
|
+
if (typeof listener !== 'function') {
|
|
83
|
+
throw new Error(`${this.constructor.name}.addAdEventListener(_, *) 'listener' expected a function.`);
|
|
84
|
+
}
|
|
85
|
+
const listeners = this.listeners.get(type);
|
|
86
|
+
if (!listeners) {
|
|
87
|
+
throw new Error(`${this.constructor.name}.addAdEventListener(*) 'type' expected a valid event type value.`);
|
|
88
|
+
}
|
|
89
|
+
this.subscribeNative(type);
|
|
90
|
+
listeners.add(listener);
|
|
91
|
+
return () => listeners.delete(listener);
|
|
92
|
+
}
|
|
93
|
+
addEventsListener(listener) {
|
|
94
|
+
if (typeof listener !== 'function') {
|
|
95
|
+
throw new Error(`${this.constructor.name}.addAdEventsListener(*) 'listener' expected a function.`);
|
|
96
|
+
}
|
|
97
|
+
const unsubscribers = [...this.listeners.keys()].map(type => this.addListener(type, payload => listener({
|
|
98
|
+
type: type,
|
|
99
|
+
payload: payload
|
|
100
|
+
})));
|
|
101
|
+
return () => unsubscribers.forEach(unsubscribe => unsubscribe());
|
|
102
|
+
}
|
|
103
|
+
removeAllListeners() {
|
|
104
|
+
for (const listeners of this.listeners.values()) {
|
|
105
|
+
listeners.clear();
|
|
106
|
+
}
|
|
107
|
+
this.nativeAd.removeAllListeners();
|
|
108
|
+
this.nativeSubscriptions.clear();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const INTERSTITIAL_EVENTS = Object.values(AdEventType);
|
|
112
|
+
const REWARDED_EVENTS = [AdEventType.ERROR, AdEventType.OPENED, AdEventType.CLICKED, AdEventType.CLOSED, RewardedAdEventType.LOADED, RewardedAdEventType.EARNED_REWARD];
|
|
113
|
+
export class InterstitialAd extends MobileAd {
|
|
114
|
+
static createForAdRequest(adUnitId) {
|
|
115
|
+
if (typeof adUnitId !== 'string' || adUnitId.length === 0) {
|
|
116
|
+
throw new Error("InterstitialAd.createForAdRequest(*) 'adUnitId' expected a non-empty string value.");
|
|
117
|
+
}
|
|
118
|
+
return new InterstitialAd(adUnitId, nativeAds.createInterstitialAd(adUnitId));
|
|
119
|
+
}
|
|
120
|
+
constructor(adUnitId, nativeAd) {
|
|
121
|
+
super(adUnitId, nativeAd, INTERSTITIAL_EVENTS);
|
|
122
|
+
}
|
|
123
|
+
addAdEventsListener(listener) {
|
|
124
|
+
return this.addEventsListener(listener);
|
|
125
|
+
}
|
|
126
|
+
addAdEventListener(type, listener) {
|
|
127
|
+
return this.addListener(type, listener);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
export class RewardedAd extends MobileAd {
|
|
131
|
+
static createForAdRequest(adUnitId) {
|
|
132
|
+
if (typeof adUnitId !== 'string' || adUnitId.length === 0) {
|
|
133
|
+
throw new Error("RewardedAd.createForAdRequest(*) 'adUnitId' expected a non-empty string value.");
|
|
134
|
+
}
|
|
135
|
+
return new RewardedAd(adUnitId, nativeAds.createRewardedAd(adUnitId));
|
|
136
|
+
}
|
|
137
|
+
constructor(adUnitId, nativeAd) {
|
|
138
|
+
super(adUnitId, nativeAd, REWARDED_EVENTS);
|
|
139
|
+
}
|
|
140
|
+
load(verification) {
|
|
141
|
+
if (this.loadedValue || this.loadCalled) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
this.loadCalled = true;
|
|
145
|
+
this.nativeAd.load(verification);
|
|
146
|
+
}
|
|
147
|
+
addAdEventsListener(listener) {
|
|
148
|
+
return this.addEventsListener(listener);
|
|
149
|
+
}
|
|
150
|
+
addAdEventListener(type, listener) {
|
|
151
|
+
if (type === AdEventType.LOADED) {
|
|
152
|
+
throw new Error('RewardedAd.addAdEventListener(*) use RewardedAdEventType.LOADED instead of AdEventType.LOADED.');
|
|
153
|
+
}
|
|
154
|
+
return this.addListener(type, listener);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const mobileAdsInstance = {
|
|
158
|
+
async initialize(appId) {
|
|
159
|
+
await nativeAds.initialize(appId);
|
|
160
|
+
return [{
|
|
161
|
+
name: 'Pangle',
|
|
162
|
+
description: 'Pangle Ads SDK is ready',
|
|
163
|
+
state: InitializationState.AdapterInitializationStateReady
|
|
164
|
+
}];
|
|
165
|
+
},
|
|
166
|
+
setGDPRConsent: optIn => nativeAds.setGDPRConsent(optIn),
|
|
167
|
+
setCCPAConsent: optIn => nativeAds.setCCPAConsent(optIn),
|
|
168
|
+
setCOPPA: isUserCoppa => nativeAds.setCOPPA(isUserCoppa)
|
|
169
|
+
};
|
|
170
|
+
export const MobileAds = () => mobileAdsInstance;
|
|
171
|
+
export default MobileAds;
|
|
172
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NitroModules","AdEventType","RewardedAdEventType","InitializationState","nativeAds","createHybridObject","toPublicPayload","eventType","payload","ERROR","error","Error","errorMessage","name","Object","assign","code","String","errorCode","undefined","MobileAd","listeners","Map","nativeSubscriptions","Set","loadedValue","loadCalled","constructor","adUnitId","nativeAd","eventTypes","set","subscribeNative","has","addAdEventListener","LOADED","CLOSED","publicPayload","listener","get","add","loaded","load","show","addListener","type","delete","addEventsListener","unsubscribers","keys","map","forEach","unsubscribe","removeAllListeners","values","clear","INTERSTITIAL_EVENTS","REWARDED_EVENTS","OPENED","CLICKED","EARNED_REWARD","InterstitialAd","createForAdRequest","length","createInterstitialAd","addAdEventsListener","RewardedAd","createRewardedAd","verification","mobileAdsInstance","initialize","appId","description","state","AdapterInitializationStateReady","setGDPRConsent","optIn","setCCPAConsent","setCOPPA","isUserCoppa","MobileAds"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
class MockNativeAd {
|
|
4
|
+
load = jest.fn();
|
|
5
|
+
show = jest.fn(async () => undefined);
|
|
6
|
+
removeAllListeners = jest.fn(() => {
|
|
7
|
+
this.listeners.clear();
|
|
8
|
+
});
|
|
9
|
+
listeners = new Map();
|
|
10
|
+
nextId = 1;
|
|
11
|
+
idToEntry = new Map();
|
|
12
|
+
addAdEventListener = jest.fn((eventType, listener) => {
|
|
13
|
+
const set = this.listeners.get(eventType) ?? new Set();
|
|
14
|
+
set.add(listener);
|
|
15
|
+
this.listeners.set(eventType, set);
|
|
16
|
+
const id = this.nextId++;
|
|
17
|
+
this.idToEntry.set(id, {
|
|
18
|
+
type: eventType,
|
|
19
|
+
listener
|
|
20
|
+
});
|
|
21
|
+
return id;
|
|
22
|
+
});
|
|
23
|
+
removeAdEventListener = jest.fn(subscriptionId => {
|
|
24
|
+
const entry = this.idToEntry.get(subscriptionId);
|
|
25
|
+
if (!entry) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this.listeners.get(entry.type)?.delete(entry.listener);
|
|
29
|
+
this.idToEntry.delete(subscriptionId);
|
|
30
|
+
});
|
|
31
|
+
emit(eventType, payload) {
|
|
32
|
+
for (const listener of this.listeners.get(eventType) ?? []) {
|
|
33
|
+
listener(payload);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const mockCreatedInterstitials = [];
|
|
38
|
+
const mockCreatedRewarded = [];
|
|
39
|
+
jest.mock('react-native-nitro-modules', () => ({
|
|
40
|
+
NitroModules: {
|
|
41
|
+
createHybridObject: () => ({
|
|
42
|
+
initialize: jest.fn(async () => undefined),
|
|
43
|
+
setGDPRConsent: jest.fn(),
|
|
44
|
+
setCCPAConsent: jest.fn(),
|
|
45
|
+
setCOPPA: jest.fn(),
|
|
46
|
+
createInterstitialAd: jest.fn(() => {
|
|
47
|
+
const ad = new MockNativeAd();
|
|
48
|
+
mockCreatedInterstitials.push(ad);
|
|
49
|
+
return ad;
|
|
50
|
+
}),
|
|
51
|
+
createRewardedAd: jest.fn(() => {
|
|
52
|
+
const ad = new MockNativeAd();
|
|
53
|
+
mockCreatedRewarded.push(ad);
|
|
54
|
+
return ad;
|
|
55
|
+
})
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
import { AdEventType, InterstitialAd, MobileAds, RewardedAd, RewardedAdEventType } from "./index.js";
|
|
60
|
+
beforeEach(() => {
|
|
61
|
+
mockCreatedInterstitials.length = 0;
|
|
62
|
+
mockCreatedRewarded.length = 0;
|
|
63
|
+
});
|
|
64
|
+
describe('InterstitialAd.createForAdRequest', () => {
|
|
65
|
+
it('throws for an empty ad unit id', () => {
|
|
66
|
+
expect(() => InterstitialAd.createForAdRequest('')).toThrow(/expected a non-empty string value/);
|
|
67
|
+
});
|
|
68
|
+
it('creates a native ad for a valid ad unit id', () => {
|
|
69
|
+
InterstitialAd.createForAdRequest('unit-1');
|
|
70
|
+
expect(mockCreatedInterstitials).toHaveLength(1);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe('InterstitialAd load/show lifecycle', () => {
|
|
74
|
+
it('is not loaded until the native LOADED event fires', () => {
|
|
75
|
+
const ad = InterstitialAd.createForAdRequest('unit-1');
|
|
76
|
+
expect(ad.loaded).toBe(false);
|
|
77
|
+
ad.load();
|
|
78
|
+
expect(mockCreatedInterstitials[0].load).toHaveBeenCalledTimes(1);
|
|
79
|
+
expect(ad.loaded).toBe(false);
|
|
80
|
+
mockCreatedInterstitials[0].emit('loaded');
|
|
81
|
+
expect(ad.loaded).toBe(true);
|
|
82
|
+
});
|
|
83
|
+
it('does not call native load twice while a load is pending', () => {
|
|
84
|
+
const ad = InterstitialAd.createForAdRequest('unit-1');
|
|
85
|
+
ad.load();
|
|
86
|
+
ad.load();
|
|
87
|
+
expect(mockCreatedInterstitials[0].load).toHaveBeenCalledTimes(1);
|
|
88
|
+
});
|
|
89
|
+
it('throws synchronously when show() is called before the ad has loaded', () => {
|
|
90
|
+
const ad = InterstitialAd.createForAdRequest('unit-1');
|
|
91
|
+
expect(() => ad.show()).toThrow(/has not loaded and could not be shown/);
|
|
92
|
+
});
|
|
93
|
+
it('delegates to the native ad once loaded', async () => {
|
|
94
|
+
const ad = InterstitialAd.createForAdRequest('unit-1');
|
|
95
|
+
mockCreatedInterstitials[0].emit('loaded');
|
|
96
|
+
await ad.show();
|
|
97
|
+
expect(mockCreatedInterstitials[0].show).toHaveBeenCalledTimes(1);
|
|
98
|
+
});
|
|
99
|
+
it('resets loaded/load state on CLOSED so the ad can be reloaded', () => {
|
|
100
|
+
const ad = InterstitialAd.createForAdRequest('unit-1');
|
|
101
|
+
ad.load();
|
|
102
|
+
mockCreatedInterstitials[0].emit('loaded');
|
|
103
|
+
mockCreatedInterstitials[0].emit('closed');
|
|
104
|
+
expect(ad.loaded).toBe(false);
|
|
105
|
+
ad.load();
|
|
106
|
+
expect(mockCreatedInterstitials[0].load).toHaveBeenCalledTimes(2);
|
|
107
|
+
});
|
|
108
|
+
it('resets loaded/load state on ERROR so the ad can be retried', () => {
|
|
109
|
+
const ad = InterstitialAd.createForAdRequest('unit-1');
|
|
110
|
+
ad.load();
|
|
111
|
+
mockCreatedInterstitials[0].emit('error', {
|
|
112
|
+
errorMessage: 'boom'
|
|
113
|
+
});
|
|
114
|
+
expect(ad.loaded).toBe(false);
|
|
115
|
+
ad.load();
|
|
116
|
+
expect(mockCreatedInterstitials[0].load).toHaveBeenCalledTimes(2);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('InterstitialAd error payload', () => {
|
|
120
|
+
it('maps the native error payload to a JS Error', () => {
|
|
121
|
+
const ad = InterstitialAd.createForAdRequest('unit-1');
|
|
122
|
+
const handler = jest.fn();
|
|
123
|
+
ad.addAdEventListener(AdEventType.ERROR, handler);
|
|
124
|
+
mockCreatedInterstitials[0].emit('error', {
|
|
125
|
+
errorCode: 42,
|
|
126
|
+
errorMessage: 'no fill'
|
|
127
|
+
});
|
|
128
|
+
expect(handler).toHaveBeenCalledTimes(1);
|
|
129
|
+
const error = handler.mock.calls[0][0];
|
|
130
|
+
expect(error.message).toBe('no fill');
|
|
131
|
+
expect(error.code).toBe('42');
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
describe('InterstitialAd listener subscriptions', () => {
|
|
135
|
+
it('stops notifying a listener after it unsubscribes', () => {
|
|
136
|
+
const ad = InterstitialAd.createForAdRequest('unit-1');
|
|
137
|
+
const handler = jest.fn();
|
|
138
|
+
const unsubscribe = ad.addAdEventListener(AdEventType.OPENED, handler);
|
|
139
|
+
mockCreatedInterstitials[0].emit('opened');
|
|
140
|
+
unsubscribe();
|
|
141
|
+
mockCreatedInterstitials[0].emit('opened');
|
|
142
|
+
expect(handler).toHaveBeenCalledTimes(1);
|
|
143
|
+
});
|
|
144
|
+
it('removeAllListeners clears listeners and forwards to the native ad', () => {
|
|
145
|
+
const ad = InterstitialAd.createForAdRequest('unit-1');
|
|
146
|
+
const handler = jest.fn();
|
|
147
|
+
ad.addAdEventListener(AdEventType.OPENED, handler);
|
|
148
|
+
ad.removeAllListeners();
|
|
149
|
+
expect(mockCreatedInterstitials[0].removeAllListeners).toHaveBeenCalledTimes(1);
|
|
150
|
+
mockCreatedInterstitials[0].emit('opened');
|
|
151
|
+
expect(handler).not.toHaveBeenCalled();
|
|
152
|
+
});
|
|
153
|
+
it('addAdEventsListener receives every event type for the ad', () => {
|
|
154
|
+
const ad = InterstitialAd.createForAdRequest('unit-1');
|
|
155
|
+
const handler = jest.fn();
|
|
156
|
+
ad.addAdEventsListener(handler);
|
|
157
|
+
mockCreatedInterstitials[0].emit('opened');
|
|
158
|
+
mockCreatedInterstitials[0].emit('clicked');
|
|
159
|
+
expect(handler).toHaveBeenCalledWith({
|
|
160
|
+
type: 'opened',
|
|
161
|
+
payload: undefined
|
|
162
|
+
});
|
|
163
|
+
expect(handler).toHaveBeenCalledWith({
|
|
164
|
+
type: 'clicked',
|
|
165
|
+
payload: undefined
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
describe('RewardedAd', () => {
|
|
170
|
+
it('rejects AdEventType.LOADED in favor of RewardedAdEventType.LOADED', () => {
|
|
171
|
+
const ad = RewardedAd.createForAdRequest('unit-1');
|
|
172
|
+
expect(() => ad.addAdEventListener(AdEventType.LOADED, jest.fn())).toThrow(/use RewardedAdEventType.LOADED/);
|
|
173
|
+
});
|
|
174
|
+
it('does not fabricate reward data for LOADED or EARNED_REWARD events', () => {
|
|
175
|
+
const ad = RewardedAd.createForAdRequest('unit-1');
|
|
176
|
+
const onLoaded = jest.fn();
|
|
177
|
+
const onEarned = jest.fn();
|
|
178
|
+
ad.addAdEventListener(RewardedAdEventType.LOADED, onLoaded);
|
|
179
|
+
ad.addAdEventListener(RewardedAdEventType.EARNED_REWARD, onEarned);
|
|
180
|
+
mockCreatedRewarded[0].emit('rewarded_loaded');
|
|
181
|
+
mockCreatedRewarded[0].emit('rewarded_earned_reward');
|
|
182
|
+
expect(onLoaded).toHaveBeenCalledWith(undefined);
|
|
183
|
+
expect(onEarned).toHaveBeenCalledWith(undefined);
|
|
184
|
+
});
|
|
185
|
+
it('marks the ad as loaded on RewardedAdEventType.LOADED', () => {
|
|
186
|
+
const ad = RewardedAd.createForAdRequest('unit-1');
|
|
187
|
+
expect(ad.loaded).toBe(false);
|
|
188
|
+
mockCreatedRewarded[0].emit('rewarded_loaded');
|
|
189
|
+
expect(ad.loaded).toBe(true);
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
describe('MobileAds()', () => {
|
|
193
|
+
it('reports a ready adapter status after initialize resolves', async () => {
|
|
194
|
+
const statuses = await MobileAds().initialize('app-id');
|
|
195
|
+
expect(statuses).toEqual([expect.objectContaining({
|
|
196
|
+
name: 'Pangle',
|
|
197
|
+
state: 1
|
|
198
|
+
})]);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MockNativeAd","load","jest","fn","show","undefined","removeAllListeners","listeners","clear","Map","nextId","idToEntry","addAdEventListener","eventType","listener","set","get","Set","add","id","type","removeAdEventListener","subscriptionId","entry","delete","emit","payload","mockCreatedInterstitials","mockCreatedRewarded","mock","NitroModules","createHybridObject","initialize","setGDPRConsent","setCCPAConsent","setCOPPA","createInterstitialAd","ad","push","createRewardedAd","AdEventType","InterstitialAd","MobileAds","RewardedAd","RewardedAdEventType","beforeEach","length","describe","it","expect","createForAdRequest","toThrow","toHaveLength","loaded","toBe","toHaveBeenCalledTimes","errorMessage","handler","ERROR","errorCode","error","calls","message","code","unsubscribe","OPENED","not","toHaveBeenCalled","addAdEventsListener","toHaveBeenCalledWith","LOADED","onLoaded","onEarned","EARNED_REWARD","statuses","toEqual","objectContaining","name","state"],"sourceRoot":"../../src","sources":["index.test.ts"],"mappings":";;AAOA,MAAMA,YAAY,CAAC;EACjBC,IAAI,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EAChBC,IAAI,GAAGF,IAAI,CAACC,EAAE,CAAC,YAAYE,SAAS,CAAC;EACrCC,kBAAkB,GAAGJ,IAAI,CAACC,EAAE,CAAC,MAAM;IACjC,IAAI,CAACI,SAAS,CAACC,KAAK,CAAC,CAAC;EACxB,CAAC,CAAC;EAEMD,SAAS,GAAG,IAAIE,GAAG,CAAmC,CAAC;EACvDC,MAAM,GAAG,CAAC;EACVC,SAAS,GAAG,IAAIF,GAAG,CAGzB,CAAC;EAEHG,kBAAkB,GAAGV,IAAI,CAACC,EAAE,CAC1B,CAACU,SAA4B,EAAEC,QAAkB,KAAK;IACpD,MAAMC,GAAG,GAAG,IAAI,CAACR,SAAS,CAACS,GAAG,CAACH,SAAS,CAAC,IAAI,IAAII,GAAG,CAAW,CAAC;IAChEF,GAAG,CAACG,GAAG,CAACJ,QAAQ,CAAC;IACjB,IAAI,CAACP,SAAS,CAACQ,GAAG,CAACF,SAAS,EAAEE,GAAG,CAAC;IAClC,MAAMI,EAAE,GAAG,IAAI,CAACT,MAAM,EAAE;IACxB,IAAI,CAACC,SAAS,CAACI,GAAG,CAACI,EAAE,EAAE;MAAEC,IAAI,EAAEP,SAAS;MAAEC;IAAS,CAAC,CAAC;IACrD,OAAOK,EAAE;EACX,CACF,CAAC;EAEDE,qBAAqB,GAAGnB,IAAI,CAACC,EAAE,CAAEmB,cAAsB,IAAK;IAC1D,MAAMC,KAAK,GAAG,IAAI,CAACZ,SAAS,CAACK,GAAG,CAACM,cAAc,CAAC;IAChD,IAAI,CAACC,KAAK,EAAE;MACV;IACF;IACA,IAAI,CAAChB,SAAS,CAACS,GAAG,CAACO,KAAK,CAACH,IAAI,CAAC,EAAEI,MAAM,CAACD,KAAK,CAACT,QAAQ,CAAC;IACtD,IAAI,CAACH,SAAS,CAACa,MAAM,CAACF,cAAc,CAAC;EACvC,CAAC,CAAC;EAEFG,IAAIA,CAACZ,SAA4B,EAAEa,OAA8B,EAAQ;IACvE,KAAK,MAAMZ,QAAQ,IAAI,IAAI,CAACP,SAAS,CAACS,GAAG,CAACH,SAAS,CAAC,IAAI,EAAE,EAAE;MAC1DC,QAAQ,CAACY,OAAO,CAAC;IACnB;EACF;AACF;AAEA,MAAMC,wBAAwC,GAAG,EAAE;AACnD,MAAMC,mBAAmC,GAAG,EAAE;AAE9C1B,IAAI,CAAC2B,IAAI,CAAC,4BAA4B,EAAE,OAAO;EAC7CC,YAAY,EAAE;IACZC,kBAAkB,EAAEA,CAAA,MAAO;MACzBC,UAAU,EAAE9B,IAAI,CAACC,EAAE,CAAC,YAAYE,SAAS,CAAC;MAC1C4B,cAAc,EAAE/B,IAAI,CAACC,EAAE,CAAC,CAAC;MACzB+B,cAAc,EAAEhC,IAAI,CAACC,EAAE,CAAC,CAAC;MACzBgC,QAAQ,EAAEjC,IAAI,CAACC,EAAE,CAAC,CAAC;MACnBiC,oBAAoB,EAAElC,IAAI,CAACC,EAAE,CAAC,MAAM;QAClC,MAAMkC,EAAE,GAAG,IAAIrC,YAAY,CAAC,CAAC;QAC7B2B,wBAAwB,CAACW,IAAI,CAACD,EAAE,CAAC;QACjC,OAAOA,EAAE;MACX,CAAC,CAAC;MACFE,gBAAgB,EAAErC,IAAI,CAACC,EAAE,CAAC,MAAM;QAC9B,MAAMkC,EAAE,GAAG,IAAIrC,YAAY,CAAC,CAAC;QAC7B4B,mBAAmB,CAACU,IAAI,CAACD,EAAE,CAAC;QAC5B,OAAOA,EAAE;MACX,CAAC;IACH,CAAC;EACH;AACF,CAAC,CAAC,CAAC;AAEH,SACEG,WAAW,EACXC,cAAc,EACdC,SAAS,EACTC,UAAU,EACVC,mBAAmB,QACd,YAAS;AAEhBC,UAAU,CAAC,MAAM;EACflB,wBAAwB,CAACmB,MAAM,GAAG,CAAC;EACnClB,mBAAmB,CAACkB,MAAM,GAAG,CAAC;AAChC,CAAC,CAAC;AAEFC,QAAQ,CAAC,mCAAmC,EAAE,MAAM;EAClDC,EAAE,CAAC,gCAAgC,EAAE,MAAM;IACzCC,MAAM,CAAC,MAAMR,cAAc,CAACS,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAACC,OAAO,CACzD,mCACF,CAAC;EACH,CAAC,CAAC;EAEFH,EAAE,CAAC,4CAA4C,EAAE,MAAM;IACrDP,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IAC3CD,MAAM,CAACtB,wBAAwB,CAAC,CAACyB,YAAY,CAAC,CAAC,CAAC;EAClD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFL,QAAQ,CAAC,oCAAoC,EAAE,MAAM;EACnDC,EAAE,CAAC,mDAAmD,EAAE,MAAM;IAC5D,MAAMX,EAAE,GAAGI,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IACtDD,MAAM,CAACZ,EAAE,CAACgB,MAAM,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC;IAE7BjB,EAAE,CAACpC,IAAI,CAAC,CAAC;IACTgD,MAAM,CAACtB,wBAAwB,CAAC,CAAC,CAAC,CAAE1B,IAAI,CAAC,CAACsD,qBAAqB,CAAC,CAAC,CAAC;IAClEN,MAAM,CAACZ,EAAE,CAACgB,MAAM,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC;IAE7B3B,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,QAAQ,CAAC;IAC3CwB,MAAM,CAACZ,EAAE,CAACgB,MAAM,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;EAC9B,CAAC,CAAC;EAEFN,EAAE,CAAC,yDAAyD,EAAE,MAAM;IAClE,MAAMX,EAAE,GAAGI,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IACtDb,EAAE,CAACpC,IAAI,CAAC,CAAC;IACToC,EAAE,CAACpC,IAAI,CAAC,CAAC;IACTgD,MAAM,CAACtB,wBAAwB,CAAC,CAAC,CAAC,CAAE1B,IAAI,CAAC,CAACsD,qBAAqB,CAAC,CAAC,CAAC;EACpE,CAAC,CAAC;EAEFP,EAAE,CAAC,qEAAqE,EAAE,MAAM;IAC9E,MAAMX,EAAE,GAAGI,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IACtDD,MAAM,CAAC,MAAMZ,EAAE,CAACjC,IAAI,CAAC,CAAC,CAAC,CAAC+C,OAAO,CAAC,uCAAuC,CAAC;EAC1E,CAAC,CAAC;EAEFH,EAAE,CAAC,wCAAwC,EAAE,YAAY;IACvD,MAAMX,EAAE,GAAGI,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IACtDvB,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,QAAQ,CAAC;IAE3C,MAAMY,EAAE,CAACjC,IAAI,CAAC,CAAC;IACf6C,MAAM,CAACtB,wBAAwB,CAAC,CAAC,CAAC,CAAEvB,IAAI,CAAC,CAACmD,qBAAqB,CAAC,CAAC,CAAC;EACpE,CAAC,CAAC;EAEFP,EAAE,CAAC,8DAA8D,EAAE,MAAM;IACvE,MAAMX,EAAE,GAAGI,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IACtDb,EAAE,CAACpC,IAAI,CAAC,CAAC;IACT0B,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,QAAQ,CAAC;IAC3CE,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,QAAQ,CAAC;IAE3CwB,MAAM,CAACZ,EAAE,CAACgB,MAAM,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC;IAC7BjB,EAAE,CAACpC,IAAI,CAAC,CAAC;IACTgD,MAAM,CAACtB,wBAAwB,CAAC,CAAC,CAAC,CAAE1B,IAAI,CAAC,CAACsD,qBAAqB,CAAC,CAAC,CAAC;EACpE,CAAC,CAAC;EAEFP,EAAE,CAAC,4DAA4D,EAAE,MAAM;IACrE,MAAMX,EAAE,GAAGI,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IACtDb,EAAE,CAACpC,IAAI,CAAC,CAAC;IACT0B,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,OAAO,EAAE;MAAE+B,YAAY,EAAE;IAAO,CAAC,CAAC;IAEpEP,MAAM,CAACZ,EAAE,CAACgB,MAAM,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC;IAC7BjB,EAAE,CAACpC,IAAI,CAAC,CAAC;IACTgD,MAAM,CAACtB,wBAAwB,CAAC,CAAC,CAAC,CAAE1B,IAAI,CAAC,CAACsD,qBAAqB,CAAC,CAAC,CAAC;EACpE,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFR,QAAQ,CAAC,8BAA8B,EAAE,MAAM;EAC7CC,EAAE,CAAC,6CAA6C,EAAE,MAAM;IACtD,MAAMX,EAAE,GAAGI,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IACtD,MAAMO,OAAO,GAAGvD,IAAI,CAACC,EAAE,CAAC,CAAC;IACzBkC,EAAE,CAACzB,kBAAkB,CAAC4B,WAAW,CAACkB,KAAK,EAAED,OAAO,CAAC;IAEjD9B,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,OAAO,EAAE;MACzCkC,SAAS,EAAE,EAAE;MACbH,YAAY,EAAE;IAChB,CAAC,CAAC;IAEFP,MAAM,CAACQ,OAAO,CAAC,CAACF,qBAAqB,CAAC,CAAC,CAAC;IACxC,MAAMK,KAAK,GAAGH,OAAO,CAAC5B,IAAI,CAACgC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU;IAC/CZ,MAAM,CAACW,KAAK,CAACE,OAAO,CAAC,CAACR,IAAI,CAAC,SAAS,CAAC;IACrCL,MAAM,CAAEW,KAAK,CAA8BG,IAAI,CAAC,CAACT,IAAI,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFP,QAAQ,CAAC,uCAAuC,EAAE,MAAM;EACtDC,EAAE,CAAC,kDAAkD,EAAE,MAAM;IAC3D,MAAMX,EAAE,GAAGI,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IACtD,MAAMO,OAAO,GAAGvD,IAAI,CAACC,EAAE,CAAC,CAAC;IACzB,MAAM6D,WAAW,GAAG3B,EAAE,CAACzB,kBAAkB,CAAC4B,WAAW,CAACyB,MAAM,EAAER,OAAO,CAAC;IAEtE9B,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,QAAQ,CAAC;IAC3CuC,WAAW,CAAC,CAAC;IACbrC,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,QAAQ,CAAC;IAE3CwB,MAAM,CAACQ,OAAO,CAAC,CAACF,qBAAqB,CAAC,CAAC,CAAC;EAC1C,CAAC,CAAC;EAEFP,EAAE,CAAC,mEAAmE,EAAE,MAAM;IAC5E,MAAMX,EAAE,GAAGI,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IACtD,MAAMO,OAAO,GAAGvD,IAAI,CAACC,EAAE,CAAC,CAAC;IACzBkC,EAAE,CAACzB,kBAAkB,CAAC4B,WAAW,CAACyB,MAAM,EAAER,OAAO,CAAC;IAElDpB,EAAE,CAAC/B,kBAAkB,CAAC,CAAC;IACvB2C,MAAM,CACJtB,wBAAwB,CAAC,CAAC,CAAC,CAAErB,kBAC/B,CAAC,CAACiD,qBAAqB,CAAC,CAAC,CAAC;IAE1B5B,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,QAAQ,CAAC;IAC3CwB,MAAM,CAACQ,OAAO,CAAC,CAACS,GAAG,CAACC,gBAAgB,CAAC,CAAC;EACxC,CAAC,CAAC;EAEFnB,EAAE,CAAC,0DAA0D,EAAE,MAAM;IACnE,MAAMX,EAAE,GAAGI,cAAc,CAACS,kBAAkB,CAAC,QAAQ,CAAC;IACtD,MAAMO,OAAO,GAAGvD,IAAI,CAACC,EAAE,CAAC,CAAC;IACzBkC,EAAE,CAAC+B,mBAAmB,CAACX,OAAO,CAAC;IAE/B9B,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,QAAQ,CAAC;IAC3CE,wBAAwB,CAAC,CAAC,CAAC,CAAEF,IAAI,CAAC,SAAS,CAAC;IAE5CwB,MAAM,CAACQ,OAAO,CAAC,CAACY,oBAAoB,CAAC;MACnCjD,IAAI,EAAE,QAAQ;MACdM,OAAO,EAAErB;IACX,CAAC,CAAC;IACF4C,MAAM,CAACQ,OAAO,CAAC,CAACY,oBAAoB,CAAC;MACnCjD,IAAI,EAAE,SAAS;MACfM,OAAO,EAAErB;IACX,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF0C,QAAQ,CAAC,YAAY,EAAE,MAAM;EAC3BC,EAAE,CAAC,mEAAmE,EAAE,MAAM;IAC5E,MAAMX,EAAE,GAAGM,UAAU,CAACO,kBAAkB,CAAC,QAAQ,CAAC;IAClDD,MAAM,CAAC,MACLZ,EAAE,CAACzB,kBAAkB,CAAC4B,WAAW,CAAC8B,MAAM,EAAWpE,IAAI,CAACC,EAAE,CAAC,CAAC,CAC9D,CAAC,CAACgD,OAAO,CAAC,gCAAgC,CAAC;EAC7C,CAAC,CAAC;EAEFH,EAAE,CAAC,mEAAmE,EAAE,MAAM;IAC5E,MAAMX,EAAE,GAAGM,UAAU,CAACO,kBAAkB,CAAC,QAAQ,CAAC;IAClD,MAAMqB,QAAQ,GAAGrE,IAAI,CAACC,EAAE,CAAC,CAAC;IAC1B,MAAMqE,QAAQ,GAAGtE,IAAI,CAACC,EAAE,CAAC,CAAC;IAC1BkC,EAAE,CAACzB,kBAAkB,CAACgC,mBAAmB,CAAC0B,MAAM,EAAEC,QAAQ,CAAC;IAC3DlC,EAAE,CAACzB,kBAAkB,CAACgC,mBAAmB,CAAC6B,aAAa,EAAED,QAAQ,CAAC;IAElE5C,mBAAmB,CAAC,CAAC,CAAC,CAAEH,IAAI,CAAC,iBAAiB,CAAC;IAC/CG,mBAAmB,CAAC,CAAC,CAAC,CAAEH,IAAI,CAAC,wBAAwB,CAAC;IAEtDwB,MAAM,CAACsB,QAAQ,CAAC,CAACF,oBAAoB,CAAChE,SAAS,CAAC;IAChD4C,MAAM,CAACuB,QAAQ,CAAC,CAACH,oBAAoB,CAAChE,SAAS,CAAC;EAClD,CAAC,CAAC;EAEF2C,EAAE,CAAC,sDAAsD,EAAE,MAAM;IAC/D,MAAMX,EAAE,GAAGM,UAAU,CAACO,kBAAkB,CAAC,QAAQ,CAAC;IAClDD,MAAM,CAACZ,EAAE,CAACgB,MAAM,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC;IAC7B1B,mBAAmB,CAAC,CAAC,CAAC,CAAEH,IAAI,CAAC,iBAAiB,CAAC;IAC/CwB,MAAM,CAACZ,EAAE,CAACgB,MAAM,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;EAC9B,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFP,QAAQ,CAAC,aAAa,EAAE,MAAM;EAC5BC,EAAE,CAAC,0DAA0D,EAAE,YAAY;IACzE,MAAM0B,QAAQ,GAAG,MAAMhC,SAAS,CAAC,CAAC,CAACV,UAAU,CAAC,QAAQ,CAAC;IACvDiB,MAAM,CAACyB,QAAQ,CAAC,CAACC,OAAO,CAAC,CACvB1B,MAAM,CAAC2B,gBAAgB,CAAC;MAAEC,IAAI,EAAE,QAAQ;MAAEC,KAAK,EAAE;IAAE,CAAC,CAAC,CACtD,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/PangleAds.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { PangleAdVerificationOptions, PangleInterstitialAd, PangleRewardedAd } from './specs/PangleAds.nitro.js';
|
|
2
|
+
export declare enum AdEventType {
|
|
3
|
+
LOADED = "loaded",
|
|
4
|
+
ERROR = "error",
|
|
5
|
+
OPENED = "opened",
|
|
6
|
+
CLICKED = "clicked",
|
|
7
|
+
CLOSED = "closed"
|
|
8
|
+
}
|
|
9
|
+
export declare enum RewardedAdEventType {
|
|
10
|
+
LOADED = "rewarded_loaded",
|
|
11
|
+
EARNED_REWARD = "rewarded_earned_reward"
|
|
12
|
+
}
|
|
13
|
+
export type AdapterStatus = {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
state: InitializationState;
|
|
17
|
+
};
|
|
18
|
+
export declare enum InitializationState {
|
|
19
|
+
AdapterInitializationStateNotReady = 0,
|
|
20
|
+
AdapterInitializationStateReady = 1
|
|
21
|
+
}
|
|
22
|
+
type PublicAdEventType = AdEventType | RewardedAdEventType;
|
|
23
|
+
export type AdEventPayload<T extends PublicAdEventType> = T extends AdEventType.ERROR ? Error : undefined;
|
|
24
|
+
export type AdEventListener<T extends PublicAdEventType> = (payload: AdEventPayload<T>) => void;
|
|
25
|
+
export type AdEventsListener<T extends PublicAdEventType> = (event: {
|
|
26
|
+
type: T;
|
|
27
|
+
payload: AdEventPayload<T>;
|
|
28
|
+
}) => void;
|
|
29
|
+
declare abstract class MobileAd<TNative extends PangleInterstitialAd | PangleRewardedAd, TEvent extends PublicAdEventType> {
|
|
30
|
+
readonly adUnitId: string;
|
|
31
|
+
protected readonly nativeAd: TNative;
|
|
32
|
+
private readonly listeners;
|
|
33
|
+
private readonly nativeSubscriptions;
|
|
34
|
+
protected loadedValue: boolean;
|
|
35
|
+
protected loadCalled: boolean;
|
|
36
|
+
protected constructor(adUnitId: string, nativeAd: TNative, eventTypes: readonly TEvent[]);
|
|
37
|
+
private subscribeNative;
|
|
38
|
+
get loaded(): boolean;
|
|
39
|
+
load(): void;
|
|
40
|
+
show(): Promise<void>;
|
|
41
|
+
protected addListener<T extends TEvent>(type: T, listener: AdEventListener<T>): () => void;
|
|
42
|
+
protected addEventsListener<T extends TEvent>(listener: AdEventsListener<T>): () => void;
|
|
43
|
+
removeAllListeners(): void;
|
|
44
|
+
}
|
|
45
|
+
export declare class InterstitialAd extends MobileAd<PangleInterstitialAd, AdEventType> {
|
|
46
|
+
static createForAdRequest(adUnitId: string): InterstitialAd;
|
|
47
|
+
private constructor();
|
|
48
|
+
addAdEventsListener<T extends AdEventType>(listener: AdEventsListener<T>): () => void;
|
|
49
|
+
addAdEventListener<T extends AdEventType>(type: T, listener: AdEventListener<T>): () => void;
|
|
50
|
+
}
|
|
51
|
+
type RewardedEventType = AdEventType | RewardedAdEventType;
|
|
52
|
+
export declare class RewardedAd extends MobileAd<PangleRewardedAd, RewardedEventType> {
|
|
53
|
+
static createForAdRequest(adUnitId: string): RewardedAd;
|
|
54
|
+
private constructor();
|
|
55
|
+
load(verification?: PangleAdVerificationOptions): void;
|
|
56
|
+
addAdEventsListener<T extends RewardedEventType>(listener: AdEventsListener<T>): () => void;
|
|
57
|
+
addAdEventListener<T extends RewardedEventType>(type: T, listener: AdEventListener<T>): () => void;
|
|
58
|
+
}
|
|
59
|
+
export type MobileAdsModuleInterface = {
|
|
60
|
+
initialize(appId: string): Promise<AdapterStatus[]>;
|
|
61
|
+
setGDPRConsent(optIn: boolean): void;
|
|
62
|
+
setCCPAConsent(optIn: boolean): void;
|
|
63
|
+
setCOPPA(isUserCoppa: boolean): void;
|
|
64
|
+
};
|
|
65
|
+
export declare const MobileAds: () => MobileAdsModuleInterface;
|
|
66
|
+
export default MobileAds;
|
|
67
|
+
export type { PangleAdEventPayload, PangleAdEventType, PangleAdVerificationOptions, PangleAds, PangleInterstitialAd, PangleRewardedAd, } from './specs/PangleAds.nitro.js';
|
|
68
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/index.test.ts"],"names":[],"mappings":""}
|