@reservamos/browser-analytics 1.0.12 → 1.0.13
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/dist/browser-analytics.cjs +3 -3
- package/dist/browser-analytics.cjs.map +1 -1
- package/dist/browser-analytics.d.ts +58 -1
- package/dist/browser-analytics.esm.js +134 -94
- package/dist/browser-analytics.esm.js.map +1 -1
- package/dist/browser-analytics.iife.js +3 -3
- package/dist/browser-analytics.iife.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +7 -1
- package/src/recommendations/createFrequentPassengers/createFrequentPassengers.ts +35 -0
- package/src/recommendations/createFrequentPassengers/createFrequentPassengersSchema.ts +23 -0
- package/src/recommendations/createFrequentPassengers/index.ts +5 -0
- package/src/recommendations/getFrequentPassengers/getFrequentPassengers.ts +24 -0
- package/src/recommendations/getFrequentPassengers/index.ts +3 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reservamos/browser-analytics",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/reservamos/reservamos-browser-analytics.git"
|
|
@@ -88,6 +88,6 @@
|
|
|
88
88
|
"upgradeps": "^2.0.6",
|
|
89
89
|
"vite": "^5.0.12",
|
|
90
90
|
"vitest": "^1.2.1",
|
|
91
|
-
"@reservamos/js-api-client": "6.0.0-alpha.
|
|
91
|
+
"@reservamos/js-api-client": "6.0.0-alpha.6"
|
|
92
92
|
}
|
|
93
93
|
}
|
package/src/index.ts
CHANGED
|
@@ -10,10 +10,11 @@ import type { SearchProps } from '@/events/search';
|
|
|
10
10
|
import type { SeatChangeProps } from '@/events/seatChange';
|
|
11
11
|
import type { ViewResultsProps } from '@/events/viewResults';
|
|
12
12
|
import type { CreateAnonymousProfileProps } from '@/profiles/createAnonymousProfile';
|
|
13
|
+
import type { CreateFrequentPassengersSchemaProps } from '@/recommendations/createFrequentPassengers';
|
|
13
14
|
import type { CreateRecommendedSeatsSchemaProps } from '@/recommendations/createRecommendedSeats';
|
|
14
15
|
import type { GetRecommendedSeatsSchemaProps } from '@/recommendations/getRecommendedSeats';
|
|
15
|
-
import type { EventData, EventMetadata } from '@/types/eventData';
|
|
16
16
|
import type { GetRecommendedTripsProps } from '@/recommendations/getRecommendedTrips';
|
|
17
|
+
import type { EventData, EventMetadata } from '@/types/eventData';
|
|
17
18
|
import trackCustomEvent from '@/events/customEvent';
|
|
18
19
|
import identify from '@/events/identify';
|
|
19
20
|
import trackInterestInHome from '@/events/interestInHome';
|
|
@@ -28,7 +29,9 @@ import trackSeatChange from '@/events/seatChange';
|
|
|
28
29
|
import trackViewResults from '@/events/viewResults';
|
|
29
30
|
import init, { isTrackerReady } from '@/init';
|
|
30
31
|
import createAnonymousProfile from '@/profiles/createAnonymousProfile';
|
|
32
|
+
import createFrequentPassengers from '@/recommendations/createFrequentPassengers';
|
|
31
33
|
import createRecommendedSeats from '@/recommendations/createRecommendedSeats';
|
|
34
|
+
import getFrequentPassengers from '@/recommendations/getFrequentPassengers';
|
|
32
35
|
import getRecommendedPlaces from '@/recommendations/getRecommendedPlaces';
|
|
33
36
|
import getRecommendedSeats from '@/recommendations/getRecommendedSeats';
|
|
34
37
|
import getRecommendedTrips from '@/recommendations/getRecommendedTrips';
|
|
@@ -51,6 +54,8 @@ const analytics = {
|
|
|
51
54
|
createRecommendedSeats,
|
|
52
55
|
getRecommendedSeats,
|
|
53
56
|
getRecommendedTrips,
|
|
57
|
+
createFrequentPassengers,
|
|
58
|
+
getFrequentPassengers,
|
|
54
59
|
},
|
|
55
60
|
track: {
|
|
56
61
|
search: trackSearch,
|
|
@@ -85,6 +90,7 @@ export type {
|
|
|
85
90
|
GetRecommendedSeatsSchemaProps,
|
|
86
91
|
CreateRecommendedSeatsSchemaProps,
|
|
87
92
|
GetRecommendedTripsProps,
|
|
93
|
+
CreateFrequentPassengersSchemaProps,
|
|
88
94
|
};
|
|
89
95
|
|
|
90
96
|
export default analytics;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { CreateFrequentPassengersResponse } from '@reservamos/js-api-client/core';
|
|
2
|
+
import type { CreateFrequentPassengersSchemaProps } from './createFrequentPassengersSchema';
|
|
3
|
+
import coreApi from '@reservamos/js-api-client/core';
|
|
4
|
+
import fingerprintService from '@/services/fingerprint';
|
|
5
|
+
import mixpanelService from '@/services/mixpanel';
|
|
6
|
+
import validatorService from '@/services/validator';
|
|
7
|
+
import CreateFrequentPassengersSchema from './createFrequentPassengersSchema';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Creates frequent passengers for a user and associates them with Mixpanel tracking.
|
|
11
|
+
* @param {CreateFrequentPassengersSchemaProps} payload - The passenger information to be created
|
|
12
|
+
* @returns {Promise<CreateFrequentPassengersResponse>} A promise that resolves with the created passengers data
|
|
13
|
+
* @throws error if distinct id is not found, props are invalid or if the backend request fails
|
|
14
|
+
*/
|
|
15
|
+
async function createFrequentPassengers(
|
|
16
|
+
payload: CreateFrequentPassengersSchemaProps,
|
|
17
|
+
): Promise<CreateFrequentPassengersResponse> {
|
|
18
|
+
try {
|
|
19
|
+
validatorService.validateProps(payload, CreateFrequentPassengersSchema);
|
|
20
|
+
const distinctId = mixpanelService.getMixpanelDistinctId();
|
|
21
|
+
const userFingerprintId = fingerprintService.getCachedFingerprint();
|
|
22
|
+
if (!distinctId) {
|
|
23
|
+
throw new Error('No distinct ID found');
|
|
24
|
+
}
|
|
25
|
+
return await coreApi.recommendations.createFrequentPassengers({
|
|
26
|
+
...payload,
|
|
27
|
+
distinct_id: distinctId,
|
|
28
|
+
device_fingerprint: userFingerprintId || '',
|
|
29
|
+
});
|
|
30
|
+
} catch (error) {
|
|
31
|
+
throw new Error(error instanceof Error ? error.message : String(error));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export default createFrequentPassengers;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
const FrequentPassengersSchema = z.object({
|
|
4
|
+
id: z.number(),
|
|
5
|
+
first_name: z.string(),
|
|
6
|
+
last_name: z.string(),
|
|
7
|
+
second_last_name: z.string(),
|
|
8
|
+
category: z.string(),
|
|
9
|
+
bus_category: z.string(),
|
|
10
|
+
gender: z.string(),
|
|
11
|
+
email: z.string(),
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const CreateFrequentPassengersSchema = z.object({
|
|
15
|
+
passengers: z.array(FrequentPassengersSchema).min(1),
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
type CreateFrequentPassengersSchemaProps = z.infer<
|
|
19
|
+
typeof CreateFrequentPassengersSchema
|
|
20
|
+
>;
|
|
21
|
+
|
|
22
|
+
export type { CreateFrequentPassengersSchemaProps };
|
|
23
|
+
export default CreateFrequentPassengersSchema;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { FrequentPassengersResponse } from '@reservamos/js-api-client/core';
|
|
2
|
+
import coreApi from '@reservamos/js-api-client/core';
|
|
3
|
+
import mixpanelService from '@/services/mixpanel';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Retrieves frequent passengers data using the Mixpanel distinct ID.
|
|
7
|
+
* @async
|
|
8
|
+
* @returns {Promise<FrequentPassengersResponse>} A promise that resolves to the frequent passengers data
|
|
9
|
+
* @throws {Error} if distinct id is not found, props are invalid or if the backend request fails
|
|
10
|
+
* @throws {Error} When the API request fails
|
|
11
|
+
*/
|
|
12
|
+
async function getFrequentPassengers(): Promise<FrequentPassengersResponse> {
|
|
13
|
+
try {
|
|
14
|
+
const distinctId = mixpanelService.getMixpanelDistinctId();
|
|
15
|
+
if (!distinctId) {
|
|
16
|
+
throw new Error('No distinct ID found');
|
|
17
|
+
}
|
|
18
|
+
return await coreApi.recommendations.getFrequentPassengers(distinctId);
|
|
19
|
+
} catch (error) {
|
|
20
|
+
throw new Error(error instanceof Error ? error.message : String(error));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export default getFrequentPassengers;
|