@fire-spark/analytics-masivo 0.3.0 → 0.3.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.
- package/dist/index.d.ts +16 -1
- package/dist/index.js +48 -3
- package/package.json +8 -4
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,21 @@ type MasivoOptions = {
|
|
|
5
5
|
publishableKey: string;
|
|
6
6
|
track?: MasivoTrack;
|
|
7
7
|
};
|
|
8
|
+
/** One reward redeemed with points / balance, as Masivo receives it. */
|
|
9
|
+
type MasivoRewardRedemption = {
|
|
10
|
+
reward_id: string;
|
|
11
|
+
quantity: number;
|
|
12
|
+
points: number;
|
|
13
|
+
value: number;
|
|
14
|
+
payment_id: string | null;
|
|
15
|
+
tender_id: string | null;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* One entry per reward of the REDEMPTION tenders. A tender groups every
|
|
19
|
+
* redeem of its `payment_id`, so each reward is reported individually
|
|
20
|
+
* from `details.rewards[]` (totals of the entry, not per unit).
|
|
21
|
+
*/
|
|
22
|
+
declare const masivoRewardRedemptions: (tenders: readonly unknown[]) => MasivoRewardRedemption[];
|
|
8
23
|
declare const masivo: (options: MasivoOptions) => AnalyticsAdapter;
|
|
9
24
|
//#endregion
|
|
10
|
-
export { MasivoOptions, MasivoTrack, masivo };
|
|
25
|
+
export { MasivoOptions, MasivoRewardRedemption, MasivoTrack, masivo, masivoRewardRedemptions };
|
package/dist/index.js
CHANGED
|
@@ -1,25 +1,70 @@
|
|
|
1
|
+
import { redemptionDetailsOf } from "@fire-spark/payments";
|
|
1
2
|
//#region src/index.ts
|
|
2
3
|
const existingSdk = () => {
|
|
3
4
|
const root = globalThis;
|
|
4
5
|
if (root.masivo) return root.masivo;
|
|
5
6
|
return globalThis.window?.masivo;
|
|
6
7
|
};
|
|
8
|
+
const stringOr = (value) => {
|
|
9
|
+
return typeof value === "string" ? value : null;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* One entry per reward of the REDEMPTION tenders. A tender groups every
|
|
13
|
+
* redeem of its `payment_id`, so each reward is reported individually
|
|
14
|
+
* from `details.rewards[]` (totals of the entry, not per unit).
|
|
15
|
+
*/
|
|
16
|
+
const masivoRewardRedemptions = (tenders) => {
|
|
17
|
+
return tenders.flatMap((item) => {
|
|
18
|
+
const tender = item ?? {};
|
|
19
|
+
const details = redemptionDetailsOf(tender.details);
|
|
20
|
+
if (!details) return [];
|
|
21
|
+
const payment_id = stringOr(tender.payment_id);
|
|
22
|
+
const tender_id = stringOr(tender.id);
|
|
23
|
+
return details.rewards.map((reward) => {
|
|
24
|
+
const r1 = {
|
|
25
|
+
reward_id: reward.reward_id,
|
|
26
|
+
quantity: reward.quantity
|
|
27
|
+
};
|
|
28
|
+
const r2 = {
|
|
29
|
+
points: reward.points,
|
|
30
|
+
value: reward.points_value
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
...r1,
|
|
34
|
+
...r2,
|
|
35
|
+
payment_id,
|
|
36
|
+
tender_id
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
/** Adds `redemptions` (one per reward) when the event carries `tenders`. */
|
|
42
|
+
const withRedemptions = (params) => {
|
|
43
|
+
if (!Array.isArray(params.tenders)) return params;
|
|
44
|
+
const redemptions = masivoRewardRedemptions(params.tenders);
|
|
45
|
+
if (redemptions.length === 0) return params;
|
|
46
|
+
return {
|
|
47
|
+
...params,
|
|
48
|
+
redemptions
|
|
49
|
+
};
|
|
50
|
+
};
|
|
7
51
|
const masivo = (options) => {
|
|
8
52
|
const key = options.publishableKey?.trim() ?? "";
|
|
9
53
|
if (!key) throw new Error("Masivo publishableKey is required");
|
|
10
54
|
return {
|
|
11
55
|
provider: "masivo",
|
|
12
56
|
send: async (event) => {
|
|
57
|
+
const params = withRedemptions(event.params);
|
|
13
58
|
if (options.track) {
|
|
14
|
-
await options.track(event.name,
|
|
59
|
+
await options.track(event.name, params);
|
|
15
60
|
return;
|
|
16
61
|
}
|
|
17
62
|
const sdk = existingSdk();
|
|
18
63
|
sdk?.init?.(key);
|
|
19
64
|
if (!sdk?.track) return;
|
|
20
|
-
await sdk.track(event.name,
|
|
65
|
+
await sdk.track(event.name, params);
|
|
21
66
|
}
|
|
22
67
|
};
|
|
23
68
|
};
|
|
24
69
|
//#endregion
|
|
25
|
-
export { masivo };
|
|
70
|
+
export { masivo, masivoRewardRedemptions };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fire-spark/analytics-masivo",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Fire Spark Masivo analytics adapter (public-key SDK)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -16,14 +16,17 @@
|
|
|
16
16
|
"default": "./dist/index.js"
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@fire-spark/payments": "^0.3.1"
|
|
21
|
+
},
|
|
19
22
|
"peerDependencies": {
|
|
20
|
-
"@fire-spark/analytics": "^0.3.
|
|
23
|
+
"@fire-spark/analytics": "^0.3.1"
|
|
21
24
|
},
|
|
22
25
|
"devDependencies": {
|
|
23
26
|
"tsdown": "^0.22.14",
|
|
24
27
|
"typescript": "^7.0.2",
|
|
25
28
|
"vitest": "^2.1.8",
|
|
26
|
-
"@fire-spark/analytics": "0.3.
|
|
29
|
+
"@fire-spark/analytics": "0.3.1"
|
|
27
30
|
},
|
|
28
31
|
"publishConfig": {
|
|
29
32
|
"access": "public"
|
|
@@ -42,7 +45,8 @@
|
|
|
42
45
|
"clean": true,
|
|
43
46
|
"deps": {
|
|
44
47
|
"neverBundle": [
|
|
45
|
-
"@fire-spark/analytics"
|
|
48
|
+
"@fire-spark/analytics",
|
|
49
|
+
"@fire-spark/payments"
|
|
46
50
|
]
|
|
47
51
|
}
|
|
48
52
|
},
|