@cruxstack/node-sdk
Version:
A Node.js SDK for event tracking, user traits lookup, validation, and automatic retry with queueing.
42 lines (41 loc) • 1.49 kB
JavaScript
import { z } from 'zod';
export const initConfigSchema = z.object({
clientId: z.string().min(1, 'clientId is required'),
});
export const eventDataSchema = z.object({
eventTime: z.number().int().positive().optional(),
userId: z.string().min(1, 'userId is required').optional(),
customerId: z.string().min(1, 'customerId is required').optional(),
customerName: z.string().min(1, 'customerName is required').optional(),
}).passthrough(); // Allow additional properties
export const enrichedEventSchema = z.object({
eid: z.string().uuid(),
cid: z.string().min(1),
cna: z.string().min(1),
e: z.string().min(1),
dtm: z.number().int().positive(),
tz: z.string().min(1),
ev: z.record(z.any()),
uid: z.string().min(1),
client_id: z.string().min(1),
// Required static values
tna: z.string().min(1),
tv: z.string().min(1),
// Optional fields
sid: z.string().optional(),
ua: z.string().optional(),
sh: z.number().int().positive().optional(),
sw: z.number().int().positive().optional(),
l: z.string().optional(),
p: z.string().optional(),
an: z.boolean().optional(),
vh: z.number().int().positive().optional(),
vw: z.number().int().positive().optional(),
pt: z.string().optional(),
pu: z.string().optional(),
pp: z.string().optional(),
pd: z.string().optional(),
pl: z.number().int().positive().optional(),
pr: z.string().optional(),
ip: z.string().optional()
});