react-native-purchases-admob 0.0.0-stage → 10.15.1

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.
@@ -0,0 +1,439 @@
1
+ import { useRef } from "react";
2
+ import Purchases, { AdFormat } from "react-native-purchases";
3
+ import { AdEventType, AppOpenAd, InterstitialAd, NativeAdEventType, RewardedAd, RewardedAdEventType, RewardedInterstitialAd } from "react-native-google-mobile-ads";
4
+ import { generateImpressionId, setState, stateFor, TrackedAdState } from "./state";
5
+ import { AdMobTracker, logWarning } from "./tracker";
6
+
7
+ /**
8
+ * The structural shape of a `react-native-google-mobile-ads` full-screen ad
9
+ * (`InterstitialAd`, `AppOpenAd`, `RewardedAd`, `RewardedInterstitialAd`).
10
+ * Typed structurally so the adapter works across the library's per-class
11
+ * listener generics and duplicate type installations.
12
+ */
13
+
14
+ const failedResult = {
15
+ failed: true,
16
+ moreRewards: []
17
+ };
18
+ function formatOf(ad) {
19
+ if (ad instanceof InterstitialAd) {
20
+ return AdFormat.interstitial;
21
+ }
22
+ if (ad instanceof RewardedInterstitialAd) {
23
+ return AdFormat.rewardedInterstitial;
24
+ }
25
+ if (ad instanceof RewardedAd) {
26
+ return AdFormat.rewarded;
27
+ }
28
+ if (ad instanceof AppOpenAd) {
29
+ return AdFormat.appOpen;
30
+ }
31
+ return null;
32
+ }
33
+
34
+ /**
35
+ * Attaches RevenueCat tracking to an already created full-screen ad. Listeners
36
+ * are additive, so your own `addAdEventListener` calls keep working.
37
+ */
38
+ function trackAd(ad, adFormat, placement, pinnedImpressionId = null) {
39
+ const state = setState(ad, new TrackedAdState(adFormat, ad.adUnitId, placement, pinnedImpressionId));
40
+ const rewarded = ad instanceof RewardedAd || ad instanceof RewardedInterstitialAd;
41
+ ad.addAdEventsListener(({
42
+ type,
43
+ payload
44
+ }) => {
45
+ switch (type) {
46
+ case AdEventType.LOADED:
47
+ case RewardedAdEventType.LOADED:
48
+ if (type === AdEventType.LOADED && rewarded) {
49
+ return;
50
+ }
51
+ state.loadedOnce = true;
52
+ state.updateFromResponse(ad.responseInfo);
53
+ AdMobTracker.trackLoaded(state);
54
+ return;
55
+ case AdEventType.ERROR:
56
+ {
57
+ const error = payload;
58
+ if ((error === null || error === void 0 ? void 0 : error.phase) === "show") {
59
+ return;
60
+ }
61
+ AdMobTracker.trackFailedToLoad(ad.adUnitId, adFormat, state.loadPlacement, error === null || error === void 0 ? void 0 : error.reason);
62
+ return;
63
+ }
64
+ case AdEventType.IMPRESSION:
65
+ AdMobTracker.trackDisplayed(state);
66
+ return;
67
+ case AdEventType.CLICKED:
68
+ AdMobTracker.trackOpened(state);
69
+ return;
70
+ case AdEventType.PAID:
71
+ AdMobTracker.trackRevenue(state, payload);
72
+ return;
73
+ case RewardedAdEventType.EARNED_REWARD:
74
+ // With verification enabled the core SDK reports earning from the poll.
75
+ if (!state.clientTransactionId) {
76
+ AdMobTracker.trackRewardEarnedUnverified(state);
77
+ }
78
+ return;
79
+ default:
80
+ return;
81
+ }
82
+ });
83
+ return state;
84
+ }
85
+ async function createRewarded(create, adFormat, options) {
86
+ let requestOptions = options.requestOptions ?? {};
87
+ let pinnedImpressionId = null;
88
+ let clientTransactionId = null;
89
+ if (options.enableRewardVerification) {
90
+ pinnedImpressionId = generateImpressionId();
91
+ try {
92
+ const token = await Purchases.generateRewardVerificationToken(pinnedImpressionId);
93
+ clientTransactionId = token.clientTransactionId;
94
+ requestOptions = {
95
+ ...requestOptions,
96
+ serverSideVerificationOptions: {
97
+ userId: token.appUserID,
98
+ customData: token.customData
99
+ }
100
+ };
101
+ } catch (e) {
102
+ logWarning(`Could not enable reward verification: ${e}`);
103
+ pinnedImpressionId = null;
104
+ }
105
+ }
106
+ const ad = create(requestOptions);
107
+ const state = trackAd(ad, adFormat, options.placement, pinnedImpressionId);
108
+ state.clientTransactionId = clientTransactionId;
109
+ if (pinnedImpressionId) {
110
+ preventReload(ad, state);
111
+ }
112
+ return ad;
113
+ }
114
+
115
+ /**
116
+ * The SSV token travels with the request options, which the library reuses
117
+ * and attaches natively on every successful load, so a reload after the ad
118
+ * has loaded would send the already used token to AdMob. Shadow `load` on
119
+ * the instance so it is ignored once the ad has loaded; a retry after a load
120
+ * error never consumed the token and still goes through.
121
+ */
122
+ function preventReload(ad, state) {
123
+ const load = ad.load.bind(ad);
124
+ ad.load = () => {
125
+ if (state.loadedOnce) {
126
+ logWarning("Reward verification tokens are single-use; load() was ignored. " + "Create a new ad through createRewardedAd for each verified show.");
127
+ return;
128
+ }
129
+ load();
130
+ };
131
+ }
132
+ function trackedBannerProps(state, props) {
133
+ return {
134
+ ...props,
135
+ onAdLoaded: dimensions => {
136
+ var _props$onAdLoaded;
137
+ state.updateFromResponse(dimensions.responseInfo);
138
+ AdMobTracker.trackLoaded(state);
139
+ (_props$onAdLoaded = props.onAdLoaded) === null || _props$onAdLoaded === void 0 || _props$onAdLoaded.call(props, dimensions);
140
+ },
141
+ onAdFailedToLoad: error => {
142
+ var _props$onAdFailedToLo;
143
+ AdMobTracker.trackFailedToLoad(props.unitId, AdFormat.banner, state.loadPlacement, error.reason);
144
+ (_props$onAdFailedToLo = props.onAdFailedToLoad) === null || _props$onAdFailedToLo === void 0 || _props$onAdFailedToLo.call(props, error);
145
+ },
146
+ onAdImpression: () => {
147
+ var _props$onAdImpression;
148
+ AdMobTracker.trackDisplayed(state);
149
+ (_props$onAdImpression = props.onAdImpression) === null || _props$onAdImpression === void 0 || _props$onAdImpression.call(props);
150
+ },
151
+ onAdClicked: () => {
152
+ var _props$onAdClicked;
153
+ AdMobTracker.trackOpened(state);
154
+ (_props$onAdClicked = props.onAdClicked) === null || _props$onAdClicked === void 0 || _props$onAdClicked.call(props);
155
+ },
156
+ onPaid: paid => {
157
+ var _props$onPaid;
158
+ AdMobTracker.trackRevenue(state, paid);
159
+ (_props$onPaid = props.onPaid) === null || _props$onPaid === void 0 || _props$onPaid.call(props, paid);
160
+ }
161
+ };
162
+ }
163
+
164
+ /**
165
+ * Returns `BannerAd` props that report to RevenueCat, forwarding to the
166
+ * props you pass in. Spread the result into `<BannerAd {...props} />`.
167
+ * The tracking state lives for the lifetime of the calling component, so
168
+ * rerenders keep the impression id of the banner that loaded.
169
+ *
170
+ * @example
171
+ * ```tsx
172
+ * function HomeBanner() {
173
+ * const bannerProps = useTrackingBannerAdProps({
174
+ * unitId,
175
+ * size: BannerAdSize.BANNER,
176
+ * placement: "home_bottom",
177
+ * });
178
+ * return <BannerAd {...bannerProps} />;
179
+ * }
180
+ * ```
181
+ */
182
+ export function useTrackingBannerAdProps(props) {
183
+ const {
184
+ placement,
185
+ ...rest
186
+ } = props;
187
+ const state = useRef(null);
188
+ if (state.current === null) {
189
+ state.current = new TrackedAdState(AdFormat.banner, props.unitId, placement);
190
+ }
191
+ return trackedBannerProps(state.current, rest);
192
+ }
193
+ function prepareShow(ad, placement) {
194
+ const state = stateFor(ad);
195
+ if (!state) {
196
+ logWarning("This ad was not created through RevenueCatAdMob; it will not be tracked.");
197
+ return undefined;
198
+ }
199
+ if (placement != null) {
200
+ state.showPlacement = placement;
201
+ }
202
+ return state;
203
+ }
204
+
205
+ /**
206
+ * Entry point of the RevenueCat AdMob adapter for React Native.
207
+ *
208
+ * Create full-screen ads through `create...` instead of
209
+ * `createForAdRequest`, then `load()` and show them through
210
+ * `showAndTrack` / `showWithRewardVerification`. Banner components spread
211
+ * `useTrackingBannerAdProps(...)`; native ads go through `trackNativeAd`.
212
+ */
213
+ export const RevenueCatAdMob = {
214
+ /**
215
+ * Creates an interstitial ad whose loaded, displayed, opened, revenue and
216
+ * failed-to-load events are reported to RevenueCat. Use it in place of
217
+ * `InterstitialAd.createForAdRequest`, then `load()` and show it through
218
+ * `showAndTrack`.
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * const interstitial = RevenueCatAdMob.createInterstitialAd(adUnitId, {
223
+ * placement: "level_complete",
224
+ * });
225
+ * interstitial.addAdEventListener(AdEventType.LOADED, () => setReady(true));
226
+ * interstitial.load();
227
+ * // Later
228
+ * await RevenueCatAdMob.showAndTrack(interstitial);
229
+ * ```
230
+ */
231
+ createInterstitialAd(adUnitId, options = {}) {
232
+ const ad = InterstitialAd.createForAdRequest(adUnitId, options.requestOptions);
233
+ trackAd(ad, AdFormat.interstitial, options.placement);
234
+ return ad;
235
+ },
236
+ /**
237
+ * Creates an app open ad tracked by RevenueCat. Use it in place of
238
+ * `AppOpenAd.createForAdRequest`, then `load()` and show it through
239
+ * `showAndTrack`.
240
+ *
241
+ * @example
242
+ * ```typescript
243
+ * const appOpen = RevenueCatAdMob.createAppOpenAd(adUnitId, {
244
+ * placement: "cold_start",
245
+ * });
246
+ * appOpen.load();
247
+ * // When the app comes to the foreground
248
+ * await RevenueCatAdMob.showAndTrack(appOpen);
249
+ * ```
250
+ */
251
+ createAppOpenAd(adUnitId, options = {}) {
252
+ const ad = AppOpenAd.createForAdRequest(adUnitId, options.requestOptions);
253
+ trackAd(ad, AdFormat.appOpen, options.placement);
254
+ return ad;
255
+ },
256
+ /**
257
+ * Creates a rewarded ad tracked by RevenueCat. Use it in place of
258
+ * `RewardedAd.createForAdRequest`. With `enableRewardVerification` the
259
+ * adapter requests a verification token first, which is why this resolves
260
+ * asynchronously; show such ads through `showWithRewardVerification`.
261
+ *
262
+ * @example
263
+ * ```typescript
264
+ * const rewarded = await RevenueCatAdMob.createRewardedAd(adUnitId, {
265
+ * placement: "extra_life",
266
+ * enableRewardVerification: true,
267
+ * });
268
+ * rewarded.load();
269
+ * // Later
270
+ * await RevenueCatAdMob.showWithRewardVerification(rewarded, {
271
+ * onRewardVerificationCompleted: (result) => {
272
+ * if (!result.failed) grant(result.reward);
273
+ * },
274
+ * });
275
+ * ```
276
+ */
277
+ createRewardedAd(adUnitId, options = {}) {
278
+ return createRewarded(requestOptions => RewardedAd.createForAdRequest(adUnitId, requestOptions), AdFormat.rewarded, options);
279
+ },
280
+ /**
281
+ * Creates a rewarded interstitial ad tracked by RevenueCat. Use it in place
282
+ * of `RewardedInterstitialAd.createForAdRequest`; otherwise identical to
283
+ * `createRewardedAd`.
284
+ *
285
+ * @example
286
+ * ```typescript
287
+ * const ad = await RevenueCatAdMob.createRewardedInterstitialAd(adUnitId, {
288
+ * placement: "chapter_end",
289
+ * });
290
+ * ad.load();
291
+ * // Later
292
+ * await RevenueCatAdMob.showAndTrack(ad);
293
+ * ```
294
+ */
295
+ createRewardedInterstitialAd(adUnitId, options = {}) {
296
+ return createRewarded(requestOptions => RewardedInterstitialAd.createForAdRequest(adUnitId, requestOptions), AdFormat.rewardedInterstitial, options);
297
+ },
298
+ /**
299
+ * Attaches tracking to a full-screen ad you created yourself. Call before
300
+ * `load()`. Reward verification is only available for ads created through
301
+ * `createRewardedAd` / `createRewardedInterstitialAd`.
302
+ */
303
+ trackAd(ad, options = {}) {
304
+ const adFormat = formatOf(ad);
305
+ if (!adFormat) {
306
+ logWarning("Unsupported ad type; it will not be tracked.");
307
+ return;
308
+ }
309
+ trackAd(ad, adFormat, options.placement);
310
+ },
311
+ /**
312
+ * Shows a tracked full-screen ad, optionally overriding its placement.
313
+ *
314
+ * @example
315
+ * ```typescript
316
+ * await RevenueCatAdMob.showAndTrack(interstitial, {
317
+ * placement: "level_complete_retry",
318
+ * });
319
+ * ```
320
+ */
321
+ showAndTrack(ad, options = {}) {
322
+ prepareShow(ad, options.placement);
323
+ return ad.show(options.showOptions);
324
+ },
325
+ /**
326
+ * Shows a rewarded ad and verifies the earned reward with RevenueCat.
327
+ * `onRewardVerificationCompleted` is called at most once per show, after
328
+ * the user earns the reward; it is not called when the ad is dismissed or
329
+ * fails before a reward. It receives a failed result when the ad was
330
+ * created without `enableRewardVerification`.
331
+ *
332
+ * @example
333
+ * ```typescript
334
+ * await RevenueCatAdMob.showWithRewardVerification(rewarded, {
335
+ * onRewardVerificationStarted: () => showSpinner(),
336
+ * onRewardVerificationCompleted: (result) => {
337
+ * if (result.failed) return showError();
338
+ * grant(result.reward);
339
+ * },
340
+ * });
341
+ * ```
342
+ */
343
+ showWithRewardVerification(ad, options) {
344
+ const state = prepareShow(ad, options.placement);
345
+ if (state) {
346
+ state.rewardVerificationDelivered = false;
347
+ }
348
+ const unsubscribe = ad.addAdEventListener(RewardedAdEventType.EARNED_REWARD, reward => {
349
+ var _options$onUserEarned, _options$onRewardVeri;
350
+ (_options$onUserEarned = options.onUserEarnedReward) === null || _options$onUserEarned === void 0 || _options$onUserEarned.call(options, reward);
351
+ (_options$onRewardVeri = options.onRewardVerificationStarted) === null || _options$onRewardVeri === void 0 || _options$onRewardVeri.call(options);
352
+ const deliver = result => {
353
+ if (state !== null && state !== void 0 && state.rewardVerificationDelivered) {
354
+ return;
355
+ }
356
+ if (state) {
357
+ state.rewardVerificationDelivered = true;
358
+ }
359
+ options.onRewardVerificationCompleted(result);
360
+ };
361
+ const clientTransactionId = state === null || state === void 0 ? void 0 : state.clientTransactionId;
362
+ if (!state || !clientTransactionId) {
363
+ logWarning("Reward earned but reward verification was not enabled for this ad. " + "Create it with enableRewardVerification: true.");
364
+ deliver(failedResult);
365
+ return;
366
+ }
367
+ Purchases.pollRewardVerification(clientTransactionId, state.trackingMetadata).then(deliver).catch(e => {
368
+ logWarning(`Reward verification failed: ${e}`);
369
+ deliver(failedResult);
370
+ });
371
+ });
372
+ const unsubscribeAll = () => {
373
+ unsubscribe();
374
+ unsubscribeOnClose();
375
+ unsubscribeOnError();
376
+ };
377
+ const unsubscribeOnClose = ad.addAdEventListener(AdEventType.CLOSED, unsubscribeAll);
378
+ const unsubscribeOnError = ad.addAdEventListener(AdEventType.ERROR, unsubscribeAll);
379
+ const shown = ad.show(options.showOptions);
380
+ // A rejected show never emits CLOSED, so the listeners would outlive it.
381
+ shown.catch(unsubscribeAll);
382
+ return shown;
383
+ },
384
+ /**
385
+ * Returns `BannerAd` props that report to RevenueCat, forwarding to the
386
+ * props you pass in. Spread the result into `<BannerAd {...props} />`.
387
+ * Each call starts a new tracking state, so call it once per banner
388
+ * instance (for example in a class component's constructor), never inside
389
+ * `render`. Function components should use `useTrackingBannerAdProps` instead.
390
+ *
391
+ * @example
392
+ * ```tsx
393
+ * class HomeBanner extends React.Component {
394
+ * bannerProps = RevenueCatAdMob.trackingBannerAdProps({
395
+ * unitId,
396
+ * size: BannerAdSize.BANNER,
397
+ * placement: "home_bottom",
398
+ * });
399
+ * render() {
400
+ * return <BannerAd {...this.bannerProps} />;
401
+ * }
402
+ * }
403
+ * ```
404
+ */
405
+ trackingBannerAdProps(props) {
406
+ const {
407
+ placement,
408
+ ...rest
409
+ } = props;
410
+ return trackedBannerProps(new TrackedAdState(AdFormat.banner, props.unitId, placement), rest);
411
+ },
412
+ /**
413
+ * Tracks a loaded native ad. `NativeAd.createForAdRequest` resolves with a
414
+ * loaded ad, so the loaded event is reported immediately.
415
+ *
416
+ * @example
417
+ * ```typescript
418
+ * const nativeAd = await NativeAd.createForAdRequest(adUnitId);
419
+ * RevenueCatAdMob.trackNativeAd(nativeAd, { placement: "feed" });
420
+ * ```
421
+ */
422
+ trackNativeAd(ad, options = {}) {
423
+ const state = setState(ad, new TrackedAdState(AdFormat.nativeAd, ad.adUnitId, options.placement));
424
+ state.updateFromResponse(ad.responseInfo ?? {
425
+ responseId: ad.responseId
426
+ });
427
+ AdMobTracker.trackLoaded(state);
428
+ ad.addAdEventListener(NativeAdEventType.IMPRESSION, () => AdMobTracker.trackDisplayed(state));
429
+ ad.addAdEventListener(NativeAdEventType.CLICKED, () => AdMobTracker.trackOpened(state));
430
+ ad.addAdEventListener(NativeAdEventType.PAID, paid => AdMobTracker.trackRevenue(state, paid));
431
+ },
432
+ /** The impression id the adapter uses for a tracked ad, once known. */
433
+ impressionIdOf(ad) {
434
+ var _stateFor;
435
+ return ((_stateFor = stateFor(ad)) === null || _stateFor === void 0 ? void 0 : _stateFor.impressionId) ?? null;
436
+ }
437
+ };
438
+ export default RevenueCatAdMob;
439
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useRef","Purchases","AdFormat","AdEventType","AppOpenAd","InterstitialAd","NativeAdEventType","RewardedAd","RewardedAdEventType","RewardedInterstitialAd","generateImpressionId","setState","stateFor","TrackedAdState","AdMobTracker","logWarning","failedResult","failed","moreRewards","formatOf","ad","interstitial","rewardedInterstitial","rewarded","appOpen","trackAd","adFormat","placement","pinnedImpressionId","state","adUnitId","addAdEventsListener","type","payload","LOADED","loadedOnce","updateFromResponse","responseInfo","trackLoaded","ERROR","error","phase","trackFailedToLoad","loadPlacement","reason","IMPRESSION","trackDisplayed","CLICKED","trackOpened","PAID","trackRevenue","EARNED_REWARD","clientTransactionId","trackRewardEarnedUnverified","createRewarded","create","options","requestOptions","enableRewardVerification","token","generateRewardVerificationToken","serverSideVerificationOptions","userId","appUserID","customData","e","preventReload","load","bind","trackedBannerProps","props","onAdLoaded","dimensions","_props$onAdLoaded","call","onAdFailedToLoad","_props$onAdFailedToLo","unitId","banner","onAdImpression","_props$onAdImpression","onAdClicked","_props$onAdClicked","onPaid","paid","_props$onPaid","useTrackingBannerAdProps","rest","current","prepareShow","undefined","showPlacement","RevenueCatAdMob","createInterstitialAd","createForAdRequest","createAppOpenAd","createRewardedAd","createRewardedInterstitialAd","showAndTrack","show","showOptions","showWithRewardVerification","rewardVerificationDelivered","unsubscribe","addAdEventListener","reward","_options$onUserEarned","_options$onRewardVeri","onUserEarnedReward","onRewardVerificationStarted","deliver","result","onRewardVerificationCompleted","pollRewardVerification","trackingMetadata","then","catch","unsubscribeAll","unsubscribeOnClose","unsubscribeOnError","CLOSED","shown","trackingBannerAdProps","trackNativeAd","nativeAd","responseId","impressionIdOf","_stateFor","impressionId"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ import { AdCaptureMethod, AdMediatorName } from "react-native-purchases";
2
+ /**
3
+ * Per-ad bookkeeping, kept in a weak side table so the adapter never changes
4
+ * the lifetime of the `react-native-google-mobile-ads` objects it tracks.
5
+ */
6
+ export class TrackedAdState {
7
+ showPlacement = null;
8
+ /**
9
+ * Either AdMob's response id (read once the ad loads) or, for ads created
10
+ * with reward verification, the id generated before the request so the SSV
11
+ * token and every tracking event share one impression id.
12
+ */
13
+ impressionId = "";
14
+ networkName = null;
15
+ clientTransactionId = null;
16
+ rewardVerificationDelivered = false;
17
+ loadedOnce = false;
18
+ constructor(adFormat, adUnitId, placement, pinnedImpressionId = null) {
19
+ this.adFormat = adFormat;
20
+ this.adUnitId = adUnitId;
21
+ this.pinnedImpressionId = pinnedImpressionId;
22
+ this.loadPlacement = placement ?? null;
23
+ if (pinnedImpressionId) {
24
+ this.impressionId = pinnedImpressionId;
25
+ }
26
+ }
27
+ get placement() {
28
+ return this.showPlacement ?? this.loadPlacement;
29
+ }
30
+ updateFromResponse(info) {
31
+ var _info$loadedAdapterRe;
32
+ if (!this.pinnedImpressionId) {
33
+ this.impressionId = (info === null || info === void 0 ? void 0 : info.responseId) ?? "";
34
+ }
35
+ this.networkName = (info === null || info === void 0 || (_info$loadedAdapterRe = info.loadedAdapterResponse) === null || _info$loadedAdapterRe === void 0 ? void 0 : _info$loadedAdapterRe.adapterClassName) ?? (info === null || info === void 0 ? void 0 : info.adapterClassName) ?? null;
36
+ }
37
+ get trackingMetadata() {
38
+ return {
39
+ networkName: this.networkName,
40
+ mediatorName: AdMediatorName.adMob,
41
+ adFormat: this.adFormat,
42
+ placement: this.placement,
43
+ adUnitId: this.adUnitId,
44
+ impressionId: this.impressionId,
45
+ captureMethod: AdCaptureMethod.reactNativeAdMobAdapter
46
+ };
47
+ }
48
+ }
49
+ const states = new WeakMap();
50
+ export function stateFor(ad) {
51
+ return states.get(ad);
52
+ }
53
+ export function setState(ad, state) {
54
+ states.set(ad, state);
55
+ return state;
56
+ }
57
+
58
+ /**
59
+ * UUID v4. Uses `crypto` when the runtime or a polyfill such as
60
+ * `react-native-get-random-values` provides it; Hermes has none by default,
61
+ * so it falls back to `Math.random`, which is enough for a correlation key.
62
+ */
63
+
64
+ export function generateImpressionId() {
65
+ const cryptoObj = globalThis.crypto;
66
+ if (cryptoObj !== null && cryptoObj !== void 0 && cryptoObj.randomUUID) {
67
+ return cryptoObj.randomUUID();
68
+ }
69
+ const bytes = new Uint8Array(16);
70
+ if (cryptoObj !== null && cryptoObj !== void 0 && cryptoObj.getRandomValues) {
71
+ cryptoObj.getRandomValues(bytes);
72
+ } else {
73
+ for (let i = 0; i < bytes.length; i++) {
74
+ bytes[i] = Math.floor(Math.random() * 256);
75
+ }
76
+ }
77
+ bytes[6] = (bytes[6] ?? 0) & 0x0f | 0x40;
78
+ bytes[8] = (bytes[8] ?? 0) & 0x3f | 0x80;
79
+ const hex = Array.from(bytes, b => b.toString(16).padStart(2, "0"));
80
+ return [hex.slice(0, 4).join(""), hex.slice(4, 6).join(""), hex.slice(6, 8).join(""), hex.slice(8, 10).join(""), hex.slice(10, 16).join("")].join("-");
81
+ }
82
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AdCaptureMethod","AdMediatorName","TrackedAdState","showPlacement","impressionId","networkName","clientTransactionId","rewardVerificationDelivered","loadedOnce","constructor","adFormat","adUnitId","placement","pinnedImpressionId","loadPlacement","updateFromResponse","info","_info$loadedAdapterRe","responseId","loadedAdapterResponse","adapterClassName","trackingMetadata","mediatorName","adMob","captureMethod","reactNativeAdMobAdapter","states","WeakMap","stateFor","ad","get","setState","state","set","generateImpressionId","cryptoObj","globalThis","crypto","randomUUID","bytes","Uint8Array","getRandomValues","i","length","Math","floor","random","hex","Array","from","b","toString","padStart","slice","join"],"sourceRoot":"../../src","sources":["state.ts"],"mappings":"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","ignoreList":[]}