@bigcrunch/react-native-ads 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.
Files changed (52) hide show
  1. package/README.md +417 -0
  2. package/android/build.gradle +70 -0
  3. package/android/settings.gradle +6 -0
  4. package/android/src/main/AndroidManifest.xml +3 -0
  5. package/android/src/main/java/com/bigcrunch/ads/react/BigCrunchAdsModule.kt +653 -0
  6. package/android/src/main/java/com/bigcrunch/ads/react/BigCrunchAdsPackage.kt +20 -0
  7. package/android/src/main/java/com/bigcrunch/ads/react/BigCrunchBannerViewManager.kt +296 -0
  8. package/ios/BigCrunchAdsModule.swift +588 -0
  9. package/ios/BigCrunchBannerViewManager.swift +270 -0
  10. package/ios/react-native-bigcrunch-ads-Bridging-Header.h +8 -0
  11. package/lib/BigCrunchAds.d.ts +168 -0
  12. package/lib/BigCrunchAds.d.ts.map +1 -0
  13. package/lib/BigCrunchAds.js +241 -0
  14. package/lib/BigCrunchBannerView.d.ts +21 -0
  15. package/lib/BigCrunchBannerView.d.ts.map +1 -0
  16. package/lib/BigCrunchBannerView.js +176 -0
  17. package/lib/BigCrunchInterstitial.d.ts +66 -0
  18. package/lib/BigCrunchInterstitial.d.ts.map +1 -0
  19. package/lib/BigCrunchInterstitial.js +222 -0
  20. package/lib/BigCrunchRewarded.d.ts +85 -0
  21. package/lib/BigCrunchRewarded.d.ts.map +1 -0
  22. package/lib/BigCrunchRewarded.js +257 -0
  23. package/lib/NativeBigCrunchAds.d.ts +71 -0
  24. package/lib/NativeBigCrunchAds.d.ts.map +1 -0
  25. package/lib/NativeBigCrunchAds.js +54 -0
  26. package/lib/index.d.ts +28 -0
  27. package/lib/index.d.ts.map +1 -0
  28. package/lib/index.js +32 -0
  29. package/lib/types/ads.d.ts +101 -0
  30. package/lib/types/ads.d.ts.map +1 -0
  31. package/lib/types/ads.js +4 -0
  32. package/lib/types/config.d.ts +137 -0
  33. package/lib/types/config.d.ts.map +1 -0
  34. package/lib/types/config.js +4 -0
  35. package/lib/types/events.d.ts +306 -0
  36. package/lib/types/events.d.ts.map +1 -0
  37. package/lib/types/events.js +4 -0
  38. package/lib/types/index.d.ts +175 -0
  39. package/lib/types/index.d.ts.map +1 -0
  40. package/lib/types/index.js +23 -0
  41. package/package.json +88 -0
  42. package/react-native-bigcrunch-ads.podspec +27 -0
  43. package/src/BigCrunchAds.ts +298 -0
  44. package/src/BigCrunchBannerView.tsx +262 -0
  45. package/src/BigCrunchInterstitial.ts +266 -0
  46. package/src/BigCrunchRewarded.ts +307 -0
  47. package/src/NativeBigCrunchAds.ts +120 -0
  48. package/src/index.ts +71 -0
  49. package/src/types/ads.ts +112 -0
  50. package/src/types/config.ts +145 -0
  51. package/src/types/events.ts +337 -0
  52. package/src/types/index.ts +193 -0
@@ -0,0 +1,257 @@
1
+ /**
2
+ * BigCrunchRewarded - API for rewarded ads
3
+ */
4
+ import { NativeBigCrunchAds, BigCrunchAdsEventEmitter, NativeEventNames } from './NativeBigCrunchAds';
5
+ /**
6
+ * Static API for BigCrunch rewarded ads
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // Load a rewarded ad
11
+ * await BigCrunchRewarded.load({ placementId: 'rewarded-extra-life' });
12
+ *
13
+ * // Set up reward listener
14
+ * BigCrunchRewarded.addEventListener(
15
+ * 'rewarded-extra-life',
16
+ * 'rewardEarned',
17
+ * (event) => {
18
+ * console.log(`User earned ${event.rewardAmount} ${event.rewardType}`);
19
+ * }
20
+ * );
21
+ *
22
+ * // Show when ready
23
+ * if (await BigCrunchRewarded.isLoaded('rewarded-extra-life')) {
24
+ * await BigCrunchRewarded.show('rewarded-extra-life');
25
+ * }
26
+ * ```
27
+ */
28
+ export class BigCrunchRewarded {
29
+ static instances = new Map();
30
+ /**
31
+ * Load a rewarded ad
32
+ *
33
+ * @param options - Ad request options including placementId
34
+ */
35
+ static async load(options) {
36
+ const { placementId } = options;
37
+ // Create or get existing instance
38
+ let instance = this.instances.get(placementId);
39
+ if (!instance) {
40
+ instance = new RewardedAdInstance(placementId);
41
+ this.instances.set(placementId, instance);
42
+ }
43
+ return instance.load(options);
44
+ }
45
+ /**
46
+ * Show a loaded rewarded ad
47
+ *
48
+ * @param placementId - The placement ID of the ad to show
49
+ */
50
+ static async show(placementId) {
51
+ const instance = this.instances.get(placementId);
52
+ if (!instance) {
53
+ throw new Error(`No rewarded ad loaded for placement: ${placementId}`);
54
+ }
55
+ return instance.show();
56
+ }
57
+ /**
58
+ * Check if a rewarded ad is loaded and ready to show
59
+ *
60
+ * @param placementId - The placement ID to check
61
+ */
62
+ static async isLoaded(placementId) {
63
+ const instance = this.instances.get(placementId);
64
+ if (!instance) {
65
+ return false;
66
+ }
67
+ return instance.isLoaded();
68
+ }
69
+ /**
70
+ * Destroy a rewarded ad instance
71
+ *
72
+ * @param placementId - The placement ID of the ad to destroy
73
+ */
74
+ static destroy(placementId) {
75
+ const instance = this.instances.get(placementId);
76
+ if (instance) {
77
+ instance.destroy();
78
+ this.instances.delete(placementId);
79
+ }
80
+ }
81
+ /**
82
+ * Destroy all rewarded ad instances
83
+ */
84
+ static destroyAll() {
85
+ this.instances.forEach(instance => instance.destroy());
86
+ this.instances.clear();
87
+ }
88
+ /**
89
+ * Create a rewarded ad instance
90
+ * Alternative to static methods for more control
91
+ *
92
+ * @param placementId - The placement ID for this ad
93
+ */
94
+ static createAd(placementId) {
95
+ let instance = this.instances.get(placementId);
96
+ if (!instance) {
97
+ instance = new RewardedAdInstance(placementId);
98
+ this.instances.set(placementId, instance);
99
+ }
100
+ return instance;
101
+ }
102
+ /**
103
+ * Add event listener for a specific placement
104
+ *
105
+ * @param placementId - The placement ID to listen to
106
+ * @param eventType - The event type to listen for
107
+ * @param listener - The callback function
108
+ */
109
+ static addEventListener(placementId, eventType, listener) {
110
+ const instance = this.instances.get(placementId);
111
+ if (!instance) {
112
+ const newInstance = new RewardedAdInstance(placementId);
113
+ this.instances.set(placementId, newInstance);
114
+ return newInstance.addEventListener(eventType, listener);
115
+ }
116
+ return instance.addEventListener(eventType, listener);
117
+ }
118
+ /**
119
+ * Convenience method to listen for reward earned events
120
+ *
121
+ * @param placementId - The placement ID to listen to
122
+ * @param listener - Callback when user earns reward
123
+ */
124
+ static onRewardEarned(placementId, listener) {
125
+ return this.addEventListener(placementId, 'rewardEarned', (event) => {
126
+ const rewardEvent = event;
127
+ listener({
128
+ rewardType: rewardEvent.rewardType,
129
+ rewardAmount: rewardEvent.rewardAmount,
130
+ });
131
+ });
132
+ }
133
+ }
134
+ /**
135
+ * Internal rewarded ad instance
136
+ */
137
+ class RewardedAdInstance {
138
+ placementId;
139
+ subscriptions = [];
140
+ listeners = new Map();
141
+ constructor(placementId) {
142
+ this.placementId = placementId;
143
+ this.setupEventListeners();
144
+ }
145
+ async load(options) {
146
+ return NativeBigCrunchAds.loadRewarded(options);
147
+ }
148
+ async show() {
149
+ return NativeBigCrunchAds.showRewarded(this.placementId);
150
+ }
151
+ async isLoaded() {
152
+ return NativeBigCrunchAds.isRewardedLoaded(this.placementId);
153
+ }
154
+ destroy() {
155
+ this.removeAllListeners();
156
+ NativeBigCrunchAds.destroyRewarded(this.placementId).catch(console.error);
157
+ }
158
+ addEventListener(eventType, listener) {
159
+ // Add to local listeners
160
+ if (!this.listeners.has(eventType)) {
161
+ this.listeners.set(eventType, new Set());
162
+ }
163
+ // Cast listener to base type for storage - runtime behavior is the same
164
+ const typedListener = listener;
165
+ this.listeners.get(eventType).add(typedListener);
166
+ // Return subscription
167
+ return {
168
+ remove: () => {
169
+ const listeners = this.listeners.get(eventType);
170
+ if (listeners) {
171
+ listeners.delete(typedListener);
172
+ }
173
+ },
174
+ };
175
+ }
176
+ removeAllListeners() {
177
+ this.subscriptions.forEach(sub => sub.remove());
178
+ this.subscriptions = [];
179
+ this.listeners.clear();
180
+ }
181
+ setupEventListeners() {
182
+ const eventMap = {
183
+ adLoaded: NativeEventNames.REWARDED_AD_LOADED,
184
+ adFailedToLoad: NativeEventNames.REWARDED_AD_FAILED_TO_LOAD,
185
+ adImpression: NativeEventNames.REWARDED_AD_IMPRESSION,
186
+ adClicked: NativeEventNames.REWARDED_AD_CLICKED,
187
+ adOpened: NativeEventNames.REWARDED_AD_OPENED,
188
+ adClosed: NativeEventNames.REWARDED_AD_CLOSED,
189
+ adRevenue: NativeEventNames.REWARDED_AD_REVENUE,
190
+ rewardEarned: NativeEventNames.REWARDED_AD_EARNED,
191
+ };
192
+ Object.entries(eventMap).forEach(([eventType, nativeEvent]) => {
193
+ const subscription = BigCrunchAdsEventEmitter.addListener(nativeEvent, (event) => {
194
+ // Check if event is for this placement
195
+ if (event.placementId === this.placementId) {
196
+ // Transform event data if needed
197
+ let transformedEvent;
198
+ switch (eventType) {
199
+ case 'adFailedToLoad':
200
+ transformedEvent = {
201
+ type: eventType,
202
+ placementId: this.placementId,
203
+ format: 'rewarded',
204
+ timestamp: Date.now(),
205
+ error: {
206
+ code: event.errorCode || 'UNKNOWN',
207
+ message: event.errorMessage || 'Ad failed to load',
208
+ underlyingError: event.underlyingError,
209
+ },
210
+ };
211
+ break;
212
+ case 'adRevenue':
213
+ transformedEvent = {
214
+ type: eventType,
215
+ placementId: this.placementId,
216
+ format: 'rewarded',
217
+ timestamp: Date.now(),
218
+ revenue: {
219
+ valueMicros: event.valueMicros,
220
+ currencyCode: event.currencyCode,
221
+ adUnitId: event.adUnitId,
222
+ precision: event.precision,
223
+ },
224
+ };
225
+ break;
226
+ case 'rewardEarned':
227
+ transformedEvent = {
228
+ type: eventType,
229
+ placementId: this.placementId,
230
+ format: 'rewarded',
231
+ timestamp: Date.now(),
232
+ rewardType: event.rewardType || 'default',
233
+ rewardAmount: event.rewardAmount || 1,
234
+ };
235
+ break;
236
+ default:
237
+ transformedEvent = {
238
+ type: eventType,
239
+ placementId: this.placementId,
240
+ format: 'rewarded',
241
+ timestamp: Date.now(),
242
+ ...event,
243
+ };
244
+ }
245
+ // Notify local listeners
246
+ const listeners = this.listeners.get(eventType);
247
+ if (listeners) {
248
+ listeners.forEach(listener => listener(transformedEvent));
249
+ }
250
+ }
251
+ });
252
+ this.subscriptions.push(subscription);
253
+ });
254
+ }
255
+ }
256
+ // Export as default
257
+ export default BigCrunchRewarded;
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Native module interface for BigCrunch Ads
3
+ * This is the bridge to the native Android/iOS implementation
4
+ */
5
+ import { NativeEventEmitter } from 'react-native';
6
+ import type { InitializationOptions, AdRequestOptions, SessionInfo, DeviceContext, AppConfig } from './types';
7
+ export interface NativeBigCrunchAdsModule {
8
+ initialize(options: InitializationOptions): Promise<void>;
9
+ isInitialized(): Promise<boolean>;
10
+ getAppConfig(): Promise<AppConfig | null>;
11
+ refreshConfig(): Promise<void>;
12
+ trackScreenView(screenName: string): Promise<void>;
13
+ loadInterstitial(options: AdRequestOptions): Promise<void>;
14
+ showInterstitial(placementId: string): Promise<void>;
15
+ isInterstitialLoaded(placementId: string): Promise<boolean>;
16
+ destroyInterstitial(placementId: string): Promise<void>;
17
+ loadRewarded(options: AdRequestOptions): Promise<void>;
18
+ showRewarded(placementId: string): Promise<void>;
19
+ isRewardedLoaded(placementId: string): Promise<boolean>;
20
+ destroyRewarded(placementId: string): Promise<void>;
21
+ getSessionInfo(): Promise<SessionInfo>;
22
+ startNewSession(): Promise<void>;
23
+ getDeviceContext(): Promise<DeviceContext>;
24
+ setGdprConsent(consent: string): Promise<void>;
25
+ setCcpaString(ccpaString: string): Promise<void>;
26
+ setCoppaCompliant(isCompliant: boolean): Promise<void>;
27
+ setDebugMode(enabled: boolean): Promise<void>;
28
+ addTestDevice(deviceId: string): Promise<void>;
29
+ removeTestDevice(deviceId: string): Promise<void>;
30
+ getTestDevices(): Promise<string[]>;
31
+ setUTMParameters(params: {
32
+ source?: string;
33
+ medium?: string;
34
+ campaign?: string;
35
+ term?: string;
36
+ content?: string;
37
+ }): Promise<void>;
38
+ clearUTMParameters(): Promise<void>;
39
+ }
40
+ export declare const NativeBigCrunchAds: NativeBigCrunchAdsModule;
41
+ export declare const BigCrunchAdsEventEmitter: NativeEventEmitter;
42
+ export declare const NativeEventNames: {
43
+ readonly BANNER_AD_LOADED: "BigCrunchBannerAdLoaded";
44
+ readonly BANNER_AD_FAILED_TO_LOAD: "BigCrunchBannerAdFailedToLoad";
45
+ readonly BANNER_AD_IMPRESSION: "BigCrunchBannerAdImpression";
46
+ readonly BANNER_AD_CLICKED: "BigCrunchBannerAdClicked";
47
+ readonly BANNER_AD_OPENED: "BigCrunchBannerAdOpened";
48
+ readonly BANNER_AD_CLOSED: "BigCrunchBannerAdClosed";
49
+ readonly BANNER_AD_REVENUE: "BigCrunchBannerAdRevenue";
50
+ readonly BANNER_AD_VIEWABLE: "BigCrunchBannerAdViewable";
51
+ readonly INTERSTITIAL_AD_LOADED: "BigCrunchInterstitialAdLoaded";
52
+ readonly INTERSTITIAL_AD_FAILED_TO_LOAD: "BigCrunchInterstitialAdFailedToLoad";
53
+ readonly INTERSTITIAL_AD_IMPRESSION: "BigCrunchInterstitialAdImpression";
54
+ readonly INTERSTITIAL_AD_CLICKED: "BigCrunchInterstitialAdClicked";
55
+ readonly INTERSTITIAL_AD_OPENED: "BigCrunchInterstitialAdOpened";
56
+ readonly INTERSTITIAL_AD_CLOSED: "BigCrunchInterstitialAdClosed";
57
+ readonly INTERSTITIAL_AD_REVENUE: "BigCrunchInterstitialAdRevenue";
58
+ readonly REWARDED_AD_LOADED: "BigCrunchRewardedAdLoaded";
59
+ readonly REWARDED_AD_FAILED_TO_LOAD: "BigCrunchRewardedAdFailedToLoad";
60
+ readonly REWARDED_AD_IMPRESSION: "BigCrunchRewardedAdImpression";
61
+ readonly REWARDED_AD_CLICKED: "BigCrunchRewardedAdClicked";
62
+ readonly REWARDED_AD_OPENED: "BigCrunchRewardedAdOpened";
63
+ readonly REWARDED_AD_CLOSED: "BigCrunchRewardedAdClosed";
64
+ readonly REWARDED_AD_REVENUE: "BigCrunchRewardedAdRevenue";
65
+ readonly REWARDED_AD_EARNED: "BigCrunchRewardedAdEarned";
66
+ readonly CONFIG_UPDATED: "BigCrunchConfigUpdated";
67
+ readonly CONFIG_FAILED: "BigCrunchConfigFailed";
68
+ readonly SESSION_STARTED: "BigCrunchSessionStarted";
69
+ readonly SESSION_ENDED: "BigCrunchSessionEnded";
70
+ };
71
+ //# sourceMappingURL=NativeBigCrunchAds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeBigCrunchAds.d.ts","sourceRoot":"","sources":["../src/NativeBigCrunchAds.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAiB,kBAAkB,EAAY,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG9G,MAAM,WAAW,wBAAwB;IAEvC,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAGlC,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC1C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAG/B,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGnD,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGxD,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGpD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGjC,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAG3C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGvD,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAGpC,gBAAgB,CAAC,MAAM,EAAE;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAgBD,eAAO,MAAM,kBAAkB,EAAyB,wBAAwB,CAAC;AAGjF,eAAO,MAAM,wBAAwB,oBAA6C,CAAC;AAGnF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCnB,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Native module interface for BigCrunch Ads
3
+ * This is the bridge to the native Android/iOS implementation
4
+ */
5
+ import { NativeModules, NativeEventEmitter, Platform } from 'react-native';
6
+ // Get the native module
7
+ const { BigCrunchAdsModule } = NativeModules;
8
+ if (!BigCrunchAdsModule) {
9
+ const errorMessage = Platform.select({
10
+ ios: 'BigCrunchAdsModule native module is not available on iOS. Make sure you have run `pod install` and rebuilt the app.',
11
+ android: 'BigCrunchAdsModule native module is not available on Android. Make sure you have rebuilt the app.',
12
+ default: 'BigCrunchAdsModule native module is not available. Make sure the library is properly linked.',
13
+ });
14
+ throw new Error(errorMessage);
15
+ }
16
+ // Export the native module with proper typing
17
+ export const NativeBigCrunchAds = BigCrunchAdsModule;
18
+ // Export the event emitter for the native module
19
+ export const BigCrunchAdsEventEmitter = new NativeEventEmitter(BigCrunchAdsModule);
20
+ // Event names used by the native module
21
+ export const NativeEventNames = {
22
+ // Banner events
23
+ BANNER_AD_LOADED: 'BigCrunchBannerAdLoaded',
24
+ BANNER_AD_FAILED_TO_LOAD: 'BigCrunchBannerAdFailedToLoad',
25
+ BANNER_AD_IMPRESSION: 'BigCrunchBannerAdImpression',
26
+ BANNER_AD_CLICKED: 'BigCrunchBannerAdClicked',
27
+ BANNER_AD_OPENED: 'BigCrunchBannerAdOpened',
28
+ BANNER_AD_CLOSED: 'BigCrunchBannerAdClosed',
29
+ BANNER_AD_REVENUE: 'BigCrunchBannerAdRevenue',
30
+ BANNER_AD_VIEWABLE: 'BigCrunchBannerAdViewable',
31
+ // Interstitial events
32
+ INTERSTITIAL_AD_LOADED: 'BigCrunchInterstitialAdLoaded',
33
+ INTERSTITIAL_AD_FAILED_TO_LOAD: 'BigCrunchInterstitialAdFailedToLoad',
34
+ INTERSTITIAL_AD_IMPRESSION: 'BigCrunchInterstitialAdImpression',
35
+ INTERSTITIAL_AD_CLICKED: 'BigCrunchInterstitialAdClicked',
36
+ INTERSTITIAL_AD_OPENED: 'BigCrunchInterstitialAdOpened',
37
+ INTERSTITIAL_AD_CLOSED: 'BigCrunchInterstitialAdClosed',
38
+ INTERSTITIAL_AD_REVENUE: 'BigCrunchInterstitialAdRevenue',
39
+ // Rewarded events
40
+ REWARDED_AD_LOADED: 'BigCrunchRewardedAdLoaded',
41
+ REWARDED_AD_FAILED_TO_LOAD: 'BigCrunchRewardedAdFailedToLoad',
42
+ REWARDED_AD_IMPRESSION: 'BigCrunchRewardedAdImpression',
43
+ REWARDED_AD_CLICKED: 'BigCrunchRewardedAdClicked',
44
+ REWARDED_AD_OPENED: 'BigCrunchRewardedAdOpened',
45
+ REWARDED_AD_CLOSED: 'BigCrunchRewardedAdClosed',
46
+ REWARDED_AD_REVENUE: 'BigCrunchRewardedAdRevenue',
47
+ REWARDED_AD_EARNED: 'BigCrunchRewardedAdEarned',
48
+ // Configuration events
49
+ CONFIG_UPDATED: 'BigCrunchConfigUpdated',
50
+ CONFIG_FAILED: 'BigCrunchConfigFailed',
51
+ // Session events
52
+ SESSION_STARTED: 'BigCrunchSessionStarted',
53
+ SESSION_ENDED: 'BigCrunchSessionEnded',
54
+ };
package/lib/index.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * BigCrunch Mobile Ads SDK for React Native
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export { BigCrunchAds, default as BigCrunchAdsDefault } from './BigCrunchAds';
7
+ export { BigCrunchBannerView, default as BigCrunchBannerViewDefault } from './BigCrunchBannerView';
8
+ export { BigCrunchInterstitial, default as BigCrunchInterstitialDefault } from './BigCrunchInterstitial';
9
+ export { BigCrunchRewarded, default as BigCrunchRewardedDefault } from './BigCrunchRewarded';
10
+ import BigCrunchAds from './BigCrunchAds';
11
+ import BigCrunchInterstitial from './BigCrunchInterstitial';
12
+ import BigCrunchRewarded from './BigCrunchRewarded';
13
+ export * from './types';
14
+ export type { InitializationOptions, Environment, AdFormat, BannerSize, CustomSize, BigCrunchBannerViewProps, InterstitialAd, RewardedAd, AdEvent, AdEventListener, EventSubscription, AdError, AdRevenue, AppConfig, PlacementConfig, SessionInfo, DeviceContext, } from './types';
15
+ export { AdErrorCode } from './types';
16
+ export declare const SDK_VERSION = "0.1.0";
17
+ /**
18
+ * Default export for convenience
19
+ */
20
+ declare const _default: {
21
+ BigCrunchAds: typeof BigCrunchAds;
22
+ BigCrunchBannerView: import("react").FC<import("./types").BigCrunchBannerViewProps>;
23
+ BigCrunchInterstitial: typeof BigCrunchInterstitial;
24
+ BigCrunchRewarded: typeof BigCrunchRewarded;
25
+ SDK_VERSION: string;
26
+ };
27
+ export default _default;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG9E,OAAO,EAAE,mBAAmB,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,qBAAqB,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAG7F,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAGpD,cAAc,SAAS,CAAC;AAGxB,YAAY,EAEV,qBAAqB,EACrB,WAAW,EAGX,QAAQ,EACR,UAAU,EACV,UAAU,EAGV,wBAAwB,EACxB,cAAc,EACd,UAAU,EAGV,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,OAAO,EACP,SAAS,EAGT,SAAS,EACT,eAAe,EAGf,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC;;GAEG;;;;;;;;AACH,wBAME"}
package/lib/index.js ADDED
@@ -0,0 +1,32 @@
1
+ /**
2
+ * BigCrunch Mobile Ads SDK for React Native
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ // Main SDK API
7
+ export { BigCrunchAds, default as BigCrunchAdsDefault } from './BigCrunchAds';
8
+ // Ad Components and APIs
9
+ export { BigCrunchBannerView, default as BigCrunchBannerViewDefault } from './BigCrunchBannerView';
10
+ export { BigCrunchInterstitial, default as BigCrunchInterstitialDefault } from './BigCrunchInterstitial';
11
+ export { BigCrunchRewarded, default as BigCrunchRewardedDefault } from './BigCrunchRewarded';
12
+ // Import defaults for the default export
13
+ import BigCrunchAds from './BigCrunchAds';
14
+ import BigCrunchBannerView from './BigCrunchBannerView';
15
+ import BigCrunchInterstitial from './BigCrunchInterstitial';
16
+ import BigCrunchRewarded from './BigCrunchRewarded';
17
+ // Export all types
18
+ export * from './types';
19
+ // Export error codes enum
20
+ export { AdErrorCode } from './types';
21
+ // Version
22
+ export const SDK_VERSION = '0.1.0';
23
+ /**
24
+ * Default export for convenience
25
+ */
26
+ export default {
27
+ BigCrunchAds,
28
+ BigCrunchBannerView,
29
+ BigCrunchInterstitial,
30
+ BigCrunchRewarded,
31
+ SDK_VERSION,
32
+ };
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Ad-specific types for BigCrunch Mobile Ads SDK
3
+ */
4
+ import { BannerSize, CustomSize, AdRequestOptions, AdEventListener, EventSubscription } from './index';
5
+ /**
6
+ * Banner view props for React component
7
+ */
8
+ export interface BigCrunchBannerViewProps {
9
+ /** Placement ID configured in BigCrunch dashboard */
10
+ placementId: string;
11
+ /** Banner size (optional, will use placement config if not specified) */
12
+ size?: BannerSize | CustomSize;
13
+ /** Whether to load ad automatically when component mounts */
14
+ autoLoad?: boolean;
15
+ /** Auto-refresh interval in seconds (0 = disabled) */
16
+ refreshInterval?: number;
17
+ /** Custom targeting parameters */
18
+ customTargeting?: Record<string, string>;
19
+ /** Style for the banner container */
20
+ style?: any;
21
+ /** Callback when ad loads successfully */
22
+ onAdLoaded?: () => void;
23
+ /** Callback when ad fails to load */
24
+ onAdFailedToLoad?: (error: AdError) => void;
25
+ /** Callback when ad impression is recorded */
26
+ onAdImpression?: () => void;
27
+ /** Callback when ad is clicked */
28
+ onAdClicked?: () => void;
29
+ /** Callback when ad opens overlay */
30
+ onAdOpened?: () => void;
31
+ /** Callback when ad closes overlay */
32
+ onAdClosed?: () => void;
33
+ /** Callback when ad revenue is received */
34
+ onAdRevenue?: (revenue: AdRevenue) => void;
35
+ }
36
+ /**
37
+ * Interstitial ad interface
38
+ */
39
+ export interface InterstitialAd {
40
+ /** Load an interstitial ad */
41
+ load(options: AdRequestOptions): Promise<void>;
42
+ /** Show the loaded interstitial */
43
+ show(): Promise<void>;
44
+ /** Check if ad is loaded and ready to show */
45
+ isLoaded(): Promise<boolean>;
46
+ /** Destroy the ad instance */
47
+ destroy(): void;
48
+ /** Add event listener */
49
+ addEventListener<T extends AdEvent>(eventType: T['type'], listener: AdEventListener<T>): EventSubscription;
50
+ /** Remove all event listeners */
51
+ removeAllListeners(): void;
52
+ }
53
+ /**
54
+ * Rewarded ad interface
55
+ */
56
+ export interface RewardedAd {
57
+ /** Load a rewarded ad */
58
+ load(options: AdRequestOptions): Promise<void>;
59
+ /** Show the loaded rewarded ad */
60
+ show(): Promise<void>;
61
+ /** Check if ad is loaded and ready to show */
62
+ isLoaded(): Promise<boolean>;
63
+ /** Destroy the ad instance */
64
+ destroy(): void;
65
+ /** Add event listener */
66
+ addEventListener<T extends AdEvent>(eventType: T['type'], listener: AdEventListener<T>): EventSubscription;
67
+ /** Remove all event listeners */
68
+ removeAllListeners(): void;
69
+ }
70
+ /**
71
+ * Native ad data
72
+ */
73
+ export interface NativeAdData {
74
+ /** Placement ID */
75
+ placementId: string;
76
+ /** Headline text */
77
+ headline?: string;
78
+ /** Body text */
79
+ body?: string;
80
+ /** Call to action text */
81
+ callToAction?: string;
82
+ /** Icon image URL */
83
+ icon?: string;
84
+ /** Main image URL */
85
+ image?: string;
86
+ /** Advertiser name */
87
+ advertiser?: string;
88
+ /** Star rating */
89
+ starRating?: number;
90
+ /** Price text */
91
+ price?: string;
92
+ /** Store name */
93
+ store?: string;
94
+ /** Ad choices icon URL */
95
+ adChoicesIcon?: string;
96
+ }
97
+ /**
98
+ * Import required types
99
+ */
100
+ import { AdError, AdRevenue, AdEvent } from './index';
101
+ //# sourceMappingURL=ads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ads.d.ts","sourceRoot":"","sources":["../../src/types/ads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Ad-specific types for BigCrunch Mobile Ads SDK
3
+ */
4
+ export {};