fleek-track-analytics 1.17.29 → 1.17.31
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/EXPO_RN_TESTING_GUIDE.md +283 -0
- package/lib/react-native/analytics-tool/react-native-rudderstack.d.ts +12 -0
- package/lib/react-native/analytics-tool/react-native-rudderstack.js +109 -0
- package/lib/react-native/analytics-tool/react-native-rudderstack.js.map +1 -0
- package/lib/react-native/analytics-tool/rudderstack-default-config.d.ts +4 -0
- package/lib/react-native/analytics-tool/rudderstack-default-config.js +8 -0
- package/lib/react-native/analytics-tool/rudderstack-default-config.js.map +1 -0
- package/lib/react-native/analytics-tool/rudderstack-event-routing.d.ts +5 -0
- package/lib/react-native/analytics-tool/rudderstack-event-routing.js +16 -0
- package/lib/react-native/analytics-tool/rudderstack-event-routing.js.map +1 -0
- package/lib/react-native/track-analytics/track-analytics.d.ts +2 -0
- package/lib/react-native/track-analytics/track-analytics.js +209 -21
- package/lib/react-native/track-analytics/track-analytics.js.map +1 -1
- package/lib/track-analytics-types.d.ts +1 -1
- package/lib/web/analytics-tool/rudderstack-default-config.js.map +1 -1
- package/lib/web/analytics-tool/rudderstack-event-routing.js.map +1 -1
- package/lib/web/track-analytics/track-analytics.js.map +1 -1
- package/package.json +2 -1
- package/NEXTJS_INTEGRATION_GUIDE.md +0 -121
- package/create-browser-bundle.js +0 -55
- package/test-rudderstack-server.js +0 -72
- package/test-rudderstack.html +0 -301
- package/test-rudderstack.js +0 -123
- package/test-simple.html +0 -28
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# React Native RudderStack Integration - Expo Testing Guide
|
|
2
|
+
|
|
3
|
+
## Prerequisites
|
|
4
|
+
|
|
5
|
+
1. **Update the library**: First, ensure you have the latest version of `fleek-track-analytics` with RudderStack support
|
|
6
|
+
2. **Expo Managed Workflow**: Since `@rudderstack/rudder-sdk-react-native` requires native dependencies, you'll need a **Custom Dev Client** (not Expo Go)
|
|
7
|
+
|
|
8
|
+
## Step 1: Install/Update Dependencies
|
|
9
|
+
|
|
10
|
+
### Option A: Using Published Package (Recommended for Testing)
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Update to the latest version
|
|
14
|
+
yarn add fleek-track-analytics@latest
|
|
15
|
+
# or
|
|
16
|
+
npm install fleek-track-analytics@latest
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Option B: Using Local Package (For Development)
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# In your app directory, link to local package
|
|
23
|
+
yarn add file:../path/to/fleek-track-analytics
|
|
24
|
+
# or use npm link
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Step 2: Install Native Dependencies
|
|
28
|
+
|
|
29
|
+
The RudderStack React Native SDK requires native code. In Expo managed workflow:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Install the RudderStack SDK (should be included in fleek-track-analytics, but verify)
|
|
33
|
+
npx expo install @rudderstack/rudder-sdk-react-native
|
|
34
|
+
|
|
35
|
+
# Install peer dependencies if needed
|
|
36
|
+
npx expo install @react-native-async-storage/async-storage
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Step 3: Create/Update Custom Dev Client
|
|
40
|
+
|
|
41
|
+
Since Expo Go doesn't support custom native modules, you need a custom dev client:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Create a custom dev client build
|
|
45
|
+
npx expo prebuild
|
|
46
|
+
|
|
47
|
+
# Or if using EAS Build
|
|
48
|
+
eas build --profile development --platform ios
|
|
49
|
+
eas build --profile development --platform android
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Note**: You cannot test this in Expo Go. You must use a custom dev client.
|
|
53
|
+
|
|
54
|
+
## Step 4: Update Your Analytics Initialization
|
|
55
|
+
|
|
56
|
+
Update your `TrackAnalytics` initialization to include RudderStack configuration:
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// analytics.ts or similar file
|
|
60
|
+
import { TrackAnalytics } from 'fleek-track-analytics/lib/react-native';
|
|
61
|
+
import { AnalyticsProvider } from 'fleek-track-analytics/lib/segment-exports';
|
|
62
|
+
|
|
63
|
+
const analyticsException = (e: unknown) => {
|
|
64
|
+
if (__DEV__) {
|
|
65
|
+
console.error('[Analytics Error]', JSON.stringify(e));
|
|
66
|
+
} else {
|
|
67
|
+
// Log to production error reporting (e.g., Sentry)
|
|
68
|
+
// Sentry.captureException(e);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const analyticsWrapper = new TrackAnalytics({
|
|
73
|
+
platform: 'REACT_NATIVE',
|
|
74
|
+
App: 'CONSUMER_APP', // or 'VENDOR_APP' based on your app
|
|
75
|
+
segment: true, // Keep Segment enabled for dual-send
|
|
76
|
+
segmentKey: process.env.EXPO_PUBLIC_SEGMENT_KEY || '',
|
|
77
|
+
devMode: __DEV__,
|
|
78
|
+
debug: __DEV__, // Enable debug logging
|
|
79
|
+
errorHandler: analyticsException,
|
|
80
|
+
|
|
81
|
+
// Add RudderStack configuration
|
|
82
|
+
rudderstack: {
|
|
83
|
+
enabled: true, // Enable RudderStack
|
|
84
|
+
// Optional: If not provided, uses default values from library
|
|
85
|
+
// writeKey: process.env.EXPO_PUBLIC_RUDDERSTACK_WRITE_KEY || '',
|
|
86
|
+
// dataPlaneUrl: process.env.EXPO_PUBLIC_RUDDERSTACK_DATA_PLANE_URL || '',
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// Initialize analytics
|
|
91
|
+
await analyticsWrapper.initAnalytics();
|
|
92
|
+
|
|
93
|
+
export { analyticsWrapper };
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Step 5: Wrap Your App with AnalyticsProvider (Segment)
|
|
97
|
+
|
|
98
|
+
If you're using Segment's `AnalyticsProvider`, continue using it:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
// App.tsx or _layout.tsx
|
|
102
|
+
import { AnalyticsProvider } from 'fleek-track-analytics/lib/segment-exports';
|
|
103
|
+
import { analyticsWrapper } from './analytics';
|
|
104
|
+
|
|
105
|
+
export default function App() {
|
|
106
|
+
return (
|
|
107
|
+
<AnalyticsProvider client={analyticsWrapper.reactNativeSegmentClient}>
|
|
108
|
+
{/* Your app components */}
|
|
109
|
+
</AnalyticsProvider>
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Note**: RudderStack doesn't require a Provider (it uses a singleton pattern), so only Segment needs the Provider.
|
|
115
|
+
|
|
116
|
+
## Step 6: Test Event Tracking
|
|
117
|
+
|
|
118
|
+
Test that events are being sent to both Segment and RudderStack:
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
import { analyticsWrapper } from './analytics';
|
|
122
|
+
|
|
123
|
+
// Test identify
|
|
124
|
+
await analyticsWrapper.identify('test-user-123', {
|
|
125
|
+
email: 'test@example.com',
|
|
126
|
+
name: 'Test User',
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// Test track event
|
|
130
|
+
await analyticsWrapper.track('test_event', {
|
|
131
|
+
property1: 'value1',
|
|
132
|
+
property2: 'value2',
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
// Test screen
|
|
136
|
+
await analyticsWrapper.screen('TestScreen', {
|
|
137
|
+
screen_name: 'TestScreen',
|
|
138
|
+
category: 'testing',
|
|
139
|
+
});
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Step 7: Verify Events in RudderStack
|
|
143
|
+
|
|
144
|
+
1. **Check RudderStack Dashboard**:
|
|
145
|
+
|
|
146
|
+
- Go to your RudderStack control plane
|
|
147
|
+
- Navigate to Live Events or Debugger
|
|
148
|
+
- Verify events are being received
|
|
149
|
+
|
|
150
|
+
2. **Check Event Routing**:
|
|
151
|
+
- Only events in `rudderstack-event-routing.ts` should be sent to RudderStack
|
|
152
|
+
- Currently configured events: `identify`, `screen`, `product_detail_page_viewed`, `homescreen`, `homescreen_viewed`, `product_tile_clicked`, `session_started`, `collection_viewed`
|
|
153
|
+
|
|
154
|
+
## Step 8: Debugging
|
|
155
|
+
|
|
156
|
+
### Enable Debug Logging
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
const analyticsWrapper = new TrackAnalytics({
|
|
160
|
+
// ... other config
|
|
161
|
+
debug: true, // Enable debug mode
|
|
162
|
+
});
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Check Initialization Status
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
// After initAnalytics()
|
|
169
|
+
console.log('Segment Client:', analyticsWrapper.reactNativeSegmentClient);
|
|
170
|
+
// RudderStack is a singleton, so no client to expose
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Verify Dual-Send
|
|
174
|
+
|
|
175
|
+
- Check Segment dashboard - all events should appear
|
|
176
|
+
- Check RudderStack dashboard - only routed events should appear
|
|
177
|
+
- Both should work independently (failures in one don't affect the other)
|
|
178
|
+
|
|
179
|
+
## Important Notes
|
|
180
|
+
|
|
181
|
+
### OTA Updates vs Full Release
|
|
182
|
+
|
|
183
|
+
- **Initial Integration**: Requires **full app store release** (native dependencies)
|
|
184
|
+
- **After Initial Release**: Event routing config changes can be deployed via OTA (JavaScript only)
|
|
185
|
+
|
|
186
|
+
### Default Configuration
|
|
187
|
+
|
|
188
|
+
- If `writeKey` and `dataPlaneUrl` are not provided, the library uses defaults:
|
|
189
|
+
- `dataPlaneUrl`: `https://rudderstack.joinfleek.com`
|
|
190
|
+
- `writeKey`: `37NdqKQQY295HrNiIdLWniUMmKU` (from your config)
|
|
191
|
+
|
|
192
|
+
### Event Routing
|
|
193
|
+
|
|
194
|
+
- Event routing is controlled **internally** by the library
|
|
195
|
+
- To modify which events go to RudderStack, edit:
|
|
196
|
+
- `src/react-native/analytics-tool/rudderstack-event-routing.ts` in the library
|
|
197
|
+
- Then rebuild and republish the library
|
|
198
|
+
|
|
199
|
+
### Mutual Exclusivity
|
|
200
|
+
|
|
201
|
+
- Segment and RudderStack initialize independently
|
|
202
|
+
- If Segment fails, RudderStack continues (and vice versa)
|
|
203
|
+
- Events are sent to both SDKs when routing config allows
|
|
204
|
+
|
|
205
|
+
## Troubleshooting
|
|
206
|
+
|
|
207
|
+
### Build Errors
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# If you get native module errors, try:
|
|
211
|
+
npx expo prebuild --clean
|
|
212
|
+
cd ios && pod install && cd ..
|
|
213
|
+
cd android && ./gradlew clean && cd ..
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Events Not Appearing in RudderStack
|
|
217
|
+
|
|
218
|
+
1. Check that `rudderstack.enabled: true` in initialization
|
|
219
|
+
2. Verify the event name is in `rudderstack-event-routing.ts`
|
|
220
|
+
3. Check RudderStack dashboard for any errors
|
|
221
|
+
4. Enable debug mode to see console logs
|
|
222
|
+
|
|
223
|
+
### TypeScript Errors
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
# Clear TypeScript cache
|
|
227
|
+
rm -rf node_modules/.cache
|
|
228
|
+
# Reinstall
|
|
229
|
+
yarn install
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Next Steps
|
|
233
|
+
|
|
234
|
+
1. **Test in Development**: Use custom dev client to test locally
|
|
235
|
+
2. **Verify Events**: Check both Segment and RudderStack dashboards
|
|
236
|
+
3. **Gradual Rollout**: Start with limited events (PoC), then expand
|
|
237
|
+
4. **Production Release**: Once validated, release to app stores
|
|
238
|
+
|
|
239
|
+
## Example Complete Setup
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
// analytics.ts
|
|
243
|
+
import { TrackAnalytics } from 'fleek-track-analytics/lib/react-native';
|
|
244
|
+
|
|
245
|
+
const analyticsWrapper = new TrackAnalytics({
|
|
246
|
+
platform: 'REACT_NATIVE',
|
|
247
|
+
App: 'CONSUMER_APP',
|
|
248
|
+
segment: true,
|
|
249
|
+
segmentKey: process.env.EXPO_PUBLIC_SEGMENT_KEY || '',
|
|
250
|
+
devMode: __DEV__,
|
|
251
|
+
debug: __DEV__,
|
|
252
|
+
errorHandler: (e) => {
|
|
253
|
+
if (__DEV__) {
|
|
254
|
+
console.error('[Analytics]', e);
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
rudderstack: {
|
|
258
|
+
enabled: true,
|
|
259
|
+
// Uses defaults if not specified
|
|
260
|
+
},
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
// Initialize
|
|
264
|
+
analyticsWrapper.initAnalytics().catch((error) => {
|
|
265
|
+
console.error('Failed to initialize analytics:', error);
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
export { analyticsWrapper };
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
```typescript
|
|
272
|
+
// App.tsx
|
|
273
|
+
import { AnalyticsProvider } from 'fleek-track-analytics/lib/segment-exports';
|
|
274
|
+
import { analyticsWrapper } from './analytics';
|
|
275
|
+
|
|
276
|
+
export default function App() {
|
|
277
|
+
return (
|
|
278
|
+
<AnalyticsProvider client={analyticsWrapper.reactNativeSegmentClient}>
|
|
279
|
+
<YourApp />
|
|
280
|
+
</AnalyticsProvider>
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IRNAnalyticsWrapper } from '../track-analytics/track-analytics-types';
|
|
2
|
+
import { tAPP } from '../../track-analytics-types';
|
|
3
|
+
import { DimentionsManger } from '../utils/DImentsionManager/dimension-manager';
|
|
4
|
+
interface IRudderstackRNWrapperParams {
|
|
5
|
+
writeKey: string;
|
|
6
|
+
dataPlaneUrl: string;
|
|
7
|
+
app: tAPP;
|
|
8
|
+
debug?: boolean;
|
|
9
|
+
dimensionsManager: DimentionsManger;
|
|
10
|
+
}
|
|
11
|
+
export declare const reactNativeRudderstack: ({ writeKey, dataPlaneUrl, app, dimensionsManager, }: IRudderstackRNWrapperParams) => Promise<IRNAnalyticsWrapper>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.reactNativeRudderstack = void 0;
|
|
7
|
+
const rudder_sdk_react_native_1 = __importDefault(require("@rudderstack/rudder-sdk-react-native"));
|
|
8
|
+
const package_json_1 = require("../../../package.json");
|
|
9
|
+
let isInitialized = false;
|
|
10
|
+
let currentWriteKey = null;
|
|
11
|
+
let currentDataPlaneUrl = null;
|
|
12
|
+
const reactNativeRudderstack = async ({ writeKey, dataPlaneUrl, app, dimensionsManager, }) => {
|
|
13
|
+
console.log('RUDDERSTACK CHECK: Starting RudderStack initialization');
|
|
14
|
+
console.log('RUDDERSTACK CHECK: writeKey:', writeKey ? `${writeKey.substring(0, 10)}...` : 'MISSING');
|
|
15
|
+
console.log('RUDDERSTACK CHECK: dataPlaneUrl:', dataPlaneUrl);
|
|
16
|
+
console.log('RUDDERSTACK CHECK: app:', app);
|
|
17
|
+
console.log('RUDDERSTACK CHECK: isInitialized:', isInitialized);
|
|
18
|
+
const normalizedDataPlaneUrl = dataPlaneUrl.endsWith('/') ? dataPlaneUrl.slice(0, -1) : dataPlaneUrl;
|
|
19
|
+
console.log('RUDDERSTACK CHECK: normalizedDataPlaneUrl:', normalizedDataPlaneUrl);
|
|
20
|
+
if (!isInitialized || currentWriteKey !== writeKey || currentDataPlaneUrl !== normalizedDataPlaneUrl) {
|
|
21
|
+
console.log('RUDDERSTACK CHECK: Setting up RudderStack client...');
|
|
22
|
+
try {
|
|
23
|
+
await rudder_sdk_react_native_1.default.setup(writeKey, {
|
|
24
|
+
dataPlaneUrl: normalizedDataPlaneUrl,
|
|
25
|
+
trackAppLifecycleEvents: true,
|
|
26
|
+
recordScreenViews: true,
|
|
27
|
+
});
|
|
28
|
+
console.log('RUDDERSTACK CHECK: ✅ RudderStack client setup completed successfully');
|
|
29
|
+
isInitialized = true;
|
|
30
|
+
currentWriteKey = writeKey;
|
|
31
|
+
currentDataPlaneUrl = normalizedDataPlaneUrl;
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.error('RUDDERSTACK CHECK: ❌ RudderStack setup failed:', error);
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.log('RUDDERSTACK CHECK: RudderStack already initialized, reusing existing client');
|
|
40
|
+
}
|
|
41
|
+
const trackWrapper = async (eventName, eventParams) => {
|
|
42
|
+
console.log('RUDDERSTACK CHECK: [TRACK] Called with eventName:', eventName);
|
|
43
|
+
console.log('RUDDERSTACK CHECK: [TRACK] eventParams:', JSON.stringify(eventParams));
|
|
44
|
+
const data = eventParams;
|
|
45
|
+
const eventData = Object.assign(Object.assign({}, data), { anlaytics_lib_version: package_json_1.version, fleek_platform: app, time_stamp: Date.now(), ads_params: dimensionsManager.adsDimensionValues, url_params: dimensionsManager.urlDimensionValues, internetStats: dimensionsManager.internetDimensions });
|
|
46
|
+
console.log('RUDDERSTACK CHECK: [TRACK] Enriched eventData:', JSON.stringify(eventData));
|
|
47
|
+
console.log('RUDDERSTACK CHECK: [TRACK] Calling rudderClient.track...');
|
|
48
|
+
try {
|
|
49
|
+
rudder_sdk_react_native_1.default.track(eventName, eventData);
|
|
50
|
+
console.log('RUDDERSTACK CHECK: [TRACK] ✅ rudderClient.track called successfully');
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error('RUDDERSTACK CHECK: [TRACK] ❌ Error calling rudderClient.track:', error);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
return Promise.resolve();
|
|
57
|
+
};
|
|
58
|
+
const screenWrapper = async (name, options) => {
|
|
59
|
+
console.log('RUDDERSTACK CHECK: [SCREEN] Called with name:', name);
|
|
60
|
+
console.log('RUDDERSTACK CHECK: [SCREEN] options:', JSON.stringify(options));
|
|
61
|
+
const screenData = Object.assign(Object.assign({}, (options || {})), { anlaytics_lib_version: package_json_1.version, fleek_platform: app, time_stamp: Date.now(), ads_params: dimensionsManager.adsDimensionValues, url_params: dimensionsManager.urlDimensionValues, internetStats: dimensionsManager.internetDimensions });
|
|
62
|
+
console.log('RUDDERSTACK CHECK: [SCREEN] Enriched screenData:', JSON.stringify(screenData));
|
|
63
|
+
console.log('RUDDERSTACK CHECK: [SCREEN] Calling rudderClient.screen...');
|
|
64
|
+
try {
|
|
65
|
+
rudder_sdk_react_native_1.default.screen(name, screenData);
|
|
66
|
+
console.log('RUDDERSTACK CHECK: [SCREEN] ✅ rudderClient.screen called successfully');
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.error('RUDDERSTACK CHECK: [SCREEN] ❌ Error calling rudderClient.screen:', error);
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
return Promise.resolve();
|
|
73
|
+
};
|
|
74
|
+
const identifyWrapper = async (id, traits) => {
|
|
75
|
+
console.log('RUDDERSTACK CHECK: [IDENTIFY] Called with id:', id);
|
|
76
|
+
console.log('RUDDERSTACK CHECK: [IDENTIFY] traits:', JSON.stringify(traits));
|
|
77
|
+
const traitsObj = traits || {};
|
|
78
|
+
const options = {};
|
|
79
|
+
console.log('RUDDERSTACK CHECK: [IDENTIFY] Calling rudderClient.identify...');
|
|
80
|
+
try {
|
|
81
|
+
if (id) {
|
|
82
|
+
console.log('RUDDERSTACK CHECK: [IDENTIFY] Using overload with userId');
|
|
83
|
+
await rudder_sdk_react_native_1.default.identify(id, traitsObj, options);
|
|
84
|
+
console.log('RUDDERSTACK CHECK: [IDENTIFY] ✅ rudderClient.identify (with userId) called successfully');
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log('RUDDERSTACK CHECK: [IDENTIFY] Using overload with traits only');
|
|
88
|
+
await rudder_sdk_react_native_1.default.identify(traitsObj, options);
|
|
89
|
+
console.log('RUDDERSTACK CHECK: [IDENTIFY] ✅ rudderClient.identify (traits only) called successfully');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
console.error('RUDDERSTACK CHECK: [IDENTIFY] ❌ Error calling rudderClient.identify:', error);
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
const getUserId = () => {
|
|
98
|
+
return '';
|
|
99
|
+
};
|
|
100
|
+
return {
|
|
101
|
+
track: trackWrapper,
|
|
102
|
+
screen: screenWrapper,
|
|
103
|
+
identify: identifyWrapper,
|
|
104
|
+
type: 'RN_RUDDERSTACK',
|
|
105
|
+
getUserId,
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
exports.reactNativeRudderstack = reactNativeRudderstack;
|
|
109
|
+
//# sourceMappingURL=react-native-rudderstack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-native-rudderstack.js","sourceRoot":"","sources":["../../../src/react-native/analytics-tool/react-native-rudderstack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RUDDERSTACK_DEFAULT_CONFIG = void 0;
|
|
4
|
+
exports.RUDDERSTACK_DEFAULT_CONFIG = {
|
|
5
|
+
dataPlaneUrl: 'https://rudderstack.joinfleek.com',
|
|
6
|
+
writeKey: '37NdqKQQY295HrNiIdLWniUMmKU',
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=rudderstack-default-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rudderstack-default-config.js","sourceRoot":"","sources":["../../../src/react-native/analytics-tool/rudderstack-default-config.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GAAG;IACxC,YAAY,EAAE,mCAAmC;IACjD,QAAQ,EAAE,6BAA6B;CACxC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rudderstackEventRouting = void 0;
|
|
4
|
+
exports.rudderstackEventRouting = {
|
|
5
|
+
sendToRudderstack: [
|
|
6
|
+
'identify',
|
|
7
|
+
'screen',
|
|
8
|
+
'product_detail_page_viewed',
|
|
9
|
+
'homescreen',
|
|
10
|
+
'homescreen_viewed',
|
|
11
|
+
'product_tile_clicked',
|
|
12
|
+
'session_started',
|
|
13
|
+
'collection_viewed',
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=rudderstack-event-routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rudderstack-event-routing.js","sourceRoot":"","sources":["../../../src/react-native/analytics-tool/rudderstack-event-routing.ts"],"names":[],"mappings":";;;AAUa,QAAA,uBAAuB,GAA6B;IAC/D,iBAAiB,EAAE;QACjB,UAAU;QACV,QAAQ;QACR,4BAA4B;QAC5B,YAAY;QACZ,mBAAmB;QACnB,sBAAsB;QACtB,iBAAiB;QACjB,mBAAmB;KACpB;CACF,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { InternetStats } from '../utils/DImentsionManager/dimension-manager';
|
|
|
5
5
|
declare class TrackAnalytics {
|
|
6
6
|
private initParams;
|
|
7
7
|
private analyticsWrapper;
|
|
8
|
+
private rudderstackWrapper;
|
|
8
9
|
private dimensionsManager;
|
|
9
10
|
reactNativeSegmentClient?: SegmentClient;
|
|
10
11
|
private firebaseAnalytics;
|
|
@@ -14,6 +15,7 @@ declare class TrackAnalytics {
|
|
|
14
15
|
initDimensions: (url?: string) => void;
|
|
15
16
|
initFirebaseInstanceId: (id: string) => void;
|
|
16
17
|
private checkInitDone;
|
|
18
|
+
private shouldSendToRudderstack;
|
|
17
19
|
private enrichEvent;
|
|
18
20
|
track: tRNTrack;
|
|
19
21
|
identify: tRNIdentify;
|