fix: validate revenue to not be negative
This commit is contained in:
@@ -1,7 +1,5 @@
|
|||||||
import { z } from 'zod';
|
|
||||||
|
|
||||||
import { RESERVED_EVENT_NAMES } from '@openpanel/constants';
|
import { RESERVED_EVENT_NAMES } from '@openpanel/constants';
|
||||||
|
import { z } from 'zod';
|
||||||
import { isBlockedEventName } from './event-blocklist';
|
import { isBlockedEventName } from './event-blocklist';
|
||||||
|
|
||||||
export const zTrackPayload = z
|
export const zTrackPayload = z
|
||||||
@@ -20,15 +18,23 @@ export const zTrackPayload = z
|
|||||||
})
|
})
|
||||||
.refine(
|
.refine(
|
||||||
(data) => {
|
(data) => {
|
||||||
if (data.name !== 'revenue') return true;
|
if (data.name !== 'revenue') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
const revenue = data.properties?.__revenue;
|
const revenue = data.properties?.__revenue;
|
||||||
if (revenue === undefined) return true;
|
if (revenue === undefined || revenue === null) {
|
||||||
return Number.isInteger(revenue);
|
return true;
|
||||||
|
}
|
||||||
|
const isInt = Number.isInteger(revenue);
|
||||||
|
if (isInt && Number(revenue) < 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return isInt;
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
message: '__revenue must be an integer (no floats or strings)',
|
message: '__revenue must be an integer (no floats or strings)',
|
||||||
path: ['properties', '__revenue'],
|
path: ['properties', '__revenue'],
|
||||||
},
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
export const zIdentifyPayload = z.object({
|
export const zIdentifyPayload = z.object({
|
||||||
|
|||||||
Reference in New Issue
Block a user