fleek-track-analytics 1.17.46 → 1.17.48
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/README.md +69 -0
- package/lib/react-native/analytics-tool/react-native-rudderstack.d.ts +12 -0
- package/lib/react-native/analytics-tool/react-native-rudderstack.js +66 -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 +6 -0
- package/lib/react-native/analytics-tool/rudderstack-event-routing.js +17 -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 +152 -32
- package/lib/react-native/track-analytics/track-analytics.js.map +1 -1
- package/lib/track-analytics-types.d.ts +5 -0
- package/lib/web/analytics-tool/rudderstack-default-config.d.ts +4 -0
- package/lib/web/analytics-tool/rudderstack-default-config.js +8 -0
- package/lib/web/analytics-tool/rudderstack-default-config.js.map +1 -0
- package/lib/web/analytics-tool/rudderstack-event-routing.d.ts +5 -0
- package/lib/web/analytics-tool/rudderstack-event-routing.js +16 -0
- package/lib/web/analytics-tool/rudderstack-event-routing.js.map +1 -0
- package/lib/web/analytics-tool/web-rudderstack.d.ts +17 -0
- package/lib/web/analytics-tool/web-rudderstack.js +76 -0
- package/lib/web/analytics-tool/web-rudderstack.js.map +1 -0
- package/lib/web/track-analytics/track-analytics.d.ts +2 -0
- package/lib/web/track-analytics/track-analytics.js +139 -38
- package/lib/web/track-analytics/track-analytics.js.map +1 -1
- package/package.json +3 -1
- package/spec-files/rudderstack-migration/HLD_LLD.md +353 -0
- package/spec-files/rudderstack-migration/RUDDERSTACK_SELF_HOSTED_PARAMETERS.md +283 -0
- package/spec-files/rudderstack-migration/SEGMENT_VS_RUDDERSTACK_SDK_COMPARISON.md +140 -0
|
@@ -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
|
+
```
|
package/README.md
CHANGED
|
@@ -76,6 +76,75 @@ Parameter description for TrackAnalytics class constructor
|
|
|
76
76
|
| devMode | boolean | if enabled, only log the event do not trigger network calls |
|
|
77
77
|
| debug | boolean | if enabled, triggers network calls for events when devMode is true. |
|
|
78
78
|
| errorHandler | function | an error handler to manage any errors thrown while initialising and sending events |
|
|
79
|
+
| rudderstack | object (optional) | RudderStack configuration for self-hosted migration (see RudderStack Setup below) |
|
|
80
|
+
|
|
81
|
+
## RudderStack Setup (Self-Hosted Migration)
|
|
82
|
+
|
|
83
|
+
This library supports dual-sending events to both Segment and RudderStack for gradual migration. RudderStack integration is currently available for **Web platform only** (PoC phase).
|
|
84
|
+
|
|
85
|
+
### Configuration
|
|
86
|
+
|
|
87
|
+
To enable RudderStack, add the `rudderstack` configuration to your `TrackAnalytics` initialization:
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
const analyticsWrapper = new TrackAnalytics({
|
|
91
|
+
platform: 'WEB',
|
|
92
|
+
App: 'CONSUMER_WEB',
|
|
93
|
+
segment: true,
|
|
94
|
+
segmentKey: process.env.SEGMENT_KEY || '',
|
|
95
|
+
rudderstack: {
|
|
96
|
+
enabled: true,
|
|
97
|
+
writeKey: process.env.RUDDERSTACK_WRITE_KEY || '',
|
|
98
|
+
dataPlaneUrl: process.env.RUDDERSTACK_DATA_PLANE_URL || '', // e.g., 'https://dataplane.yourdomain.com'
|
|
99
|
+
},
|
|
100
|
+
errorHandler: analyticsException,
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Event Routing
|
|
105
|
+
|
|
106
|
+
Event routing to RudderStack is controlled by an **internal library configuration** file (`src/web/analytics-tool/rudderstack-event-routing.ts`). This allows you to selectively send specific events to RudderStack during the PoC phase without requiring application changes.
|
|
107
|
+
|
|
108
|
+
**Important**:
|
|
109
|
+
- All events are **always sent to Segment** (unchanged behavior)
|
|
110
|
+
- Events are **conditionally sent to RudderStack** based on the internal routing configuration
|
|
111
|
+
- RudderStack failures do not affect Segment sending
|
|
112
|
+
|
|
113
|
+
### How It Works
|
|
114
|
+
|
|
115
|
+
1. **Dual-Send Architecture**: Events are sent to both Segment and RudderStack (when configured)
|
|
116
|
+
2. **Internal Routing Config**: Modify `src/web/analytics-tool/rudderstack-event-routing.ts` in this repository to control which events are sent to RudderStack
|
|
117
|
+
3. **Fail-Safe**: If RudderStack initialization or sending fails, the library continues with Segment only
|
|
118
|
+
|
|
119
|
+
### Event Routing Configuration
|
|
120
|
+
|
|
121
|
+
To control which events are sent to RudderStack, modify the `rudderstackEventRouting` object in `src/web/analytics-tool/rudderstack-event-routing.ts`:
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
export const rudderstackEventRouting: IRudderstackEventRouting = {
|
|
125
|
+
// Option 1: List specific event names
|
|
126
|
+
sendToRudderstack: [
|
|
127
|
+
'event_name_1',
|
|
128
|
+
'event_name_2',
|
|
129
|
+
],
|
|
130
|
+
|
|
131
|
+
// Option 2: Use regex patterns
|
|
132
|
+
eventPatterns: ['^test_', '^poc_'], // Matches events starting with 'test_' or 'poc_'
|
|
133
|
+
};
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Requirements
|
|
137
|
+
|
|
138
|
+
- **Data Plane URL**: Your self-hosted RudderStack data plane endpoint
|
|
139
|
+
- **Write Key**: Source write key from RudderStack control plane
|
|
140
|
+
- **Self-Hosted Setup**: See `spec-files/rudderstack-migration/RUDDERSTACK_SELF_HOSTED_PARAMETERS.md` for detailed setup instructions
|
|
141
|
+
|
|
142
|
+
### Documentation
|
|
143
|
+
|
|
144
|
+
For more details on the migration, see:
|
|
145
|
+
- SDK Comparison: `spec-files/rudderstack-migration/SEGMENT_VS_RUDDERSTACK_SDK_COMPARISON.md`
|
|
146
|
+
- Self-Hosted Parameters: `spec-files/rudderstack-migration/RUDDERSTACK_SELF_HOSTED_PARAMETERS.md`
|
|
147
|
+
- Architecture (HLD/LLD): `spec-files/rudderstack-migration/HLD_LLD.md`
|
|
79
148
|
|
|
80
149
|
4. Use the intialised instance in your app to send events by using the Event Names
|
|
81
150
|
|
|
@@ -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,66 @@
|
|
|
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
|
+
const normalizedDataPlaneUrl = dataPlaneUrl.endsWith('/') ? dataPlaneUrl.slice(0, -1) : dataPlaneUrl;
|
|
14
|
+
if (!isInitialized || currentWriteKey !== writeKey || currentDataPlaneUrl !== normalizedDataPlaneUrl) {
|
|
15
|
+
await rudder_sdk_react_native_1.default.setup(writeKey, {
|
|
16
|
+
dataPlaneUrl: normalizedDataPlaneUrl,
|
|
17
|
+
trackAppLifecycleEvents: true,
|
|
18
|
+
recordScreenViews: false,
|
|
19
|
+
flushQueueSize: 5,
|
|
20
|
+
sleepTimeOut: 10,
|
|
21
|
+
});
|
|
22
|
+
await rudder_sdk_react_native_1.default.optOut(false);
|
|
23
|
+
isInitialized = true;
|
|
24
|
+
currentWriteKey = writeKey;
|
|
25
|
+
currentDataPlaneUrl = normalizedDataPlaneUrl;
|
|
26
|
+
}
|
|
27
|
+
const trackWrapper = async (eventName, eventParams) => {
|
|
28
|
+
const data = eventParams;
|
|
29
|
+
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 });
|
|
30
|
+
console.log('RUDDERSTACK CHECK: [TRACK] eventName:', eventName, 'eventData:', JSON.stringify(eventData));
|
|
31
|
+
await rudder_sdk_react_native_1.default.track(eventName, eventData);
|
|
32
|
+
await rudder_sdk_react_native_1.default.flush();
|
|
33
|
+
return Promise.resolve();
|
|
34
|
+
};
|
|
35
|
+
const screenWrapper = async (name, options) => {
|
|
36
|
+
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 });
|
|
37
|
+
console.log('RUDDERSTACK CHECK: [SCREEN] name:', name, 'screenData:', JSON.stringify(screenData));
|
|
38
|
+
await rudder_sdk_react_native_1.default.screen(name, screenData);
|
|
39
|
+
await rudder_sdk_react_native_1.default.flush();
|
|
40
|
+
return Promise.resolve();
|
|
41
|
+
};
|
|
42
|
+
const identifyWrapper = async (id, traits) => {
|
|
43
|
+
const traitsObj = traits || {};
|
|
44
|
+
const options = {};
|
|
45
|
+
console.log('RUDDERSTACK CHECK: [IDENTIFY] id:', id, 'traits:', JSON.stringify(traits));
|
|
46
|
+
if (id) {
|
|
47
|
+
await rudder_sdk_react_native_1.default.identify(id, traitsObj, options);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
await rudder_sdk_react_native_1.default.identify(traitsObj, options);
|
|
51
|
+
}
|
|
52
|
+
await rudder_sdk_react_native_1.default.flush();
|
|
53
|
+
};
|
|
54
|
+
const getUserId = () => {
|
|
55
|
+
return '';
|
|
56
|
+
};
|
|
57
|
+
return {
|
|
58
|
+
track: trackWrapper,
|
|
59
|
+
screen: screenWrapper,
|
|
60
|
+
identify: identifyWrapper,
|
|
61
|
+
type: 'RN_RUDDERSTACK',
|
|
62
|
+
getUserId,
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
exports.reactNativeRudderstack = reactNativeRudderstack;
|
|
66
|
+
//# 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,17 @@
|
|
|
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
|
+
enableAllEvents: true,
|
|
16
|
+
};
|
|
17
|
+
//# 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":";;;AAWa,QAAA,uBAAuB,GAA6B;IAC/D,iBAAiB,EAAE;QACjB,UAAU;QACV,QAAQ;QACR,4BAA4B;QAC5B,YAAY;QACZ,mBAAmB;QACnB,sBAAsB;QACtB,iBAAiB;QACjB,mBAAmB;KACpB;IACD,eAAe,EAAE,IAAI;CACtB,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;
|