autumn-js
Version:
Autumn JS Library
63 lines (60 loc) • 2.25 kB
JavaScript
"use client";
// src/libraries/react/client/types/clientAnalyticsTypes.ts
import { z } from "zod/v4";
var PagePaginationDefaults = {
Limit: 100,
MaxLimit: 1e3
};
var PagePaginationQuerySchema = z.object({
offset: z.coerce.number().int().min(0).default(0).optional().describe("Number of items to skip"),
limit: z.coerce.number().int().min(1).max(PagePaginationDefaults.MaxLimit).optional().describe(
`Number of items to return. Default ${PagePaginationDefaults.Limit}, max ${PagePaginationDefaults.MaxLimit}.`
)
});
var EventsListParamsSchema = PagePaginationQuerySchema.extend({
featureId: z.string().min(1).or(z.array(z.string().min(1))).describe("Filter by specific feature ID(s)"),
customRange: z.object({
start: z.coerce.number().optional().describe("Filter events after this timestamp (epoch milliseconds)"),
end: z.coerce.number().optional().describe("Filter events before this timestamp (epoch milliseconds)")
}).optional().describe("Filter events by time range")
});
var RangeEnumSchema = z.enum([
"24h",
"7d",
"30d",
"90d",
"last_cycle",
"1bc",
"3bc"
]);
var BinSizeEnumSchema = z.enum(["day", "hour"]).default("day");
var EventAggregationParamsSchema = z.object({
featureId: z.string().min(1).or(z.array(z.string().min(1))).describe("Feature ID(s) to aggregate"),
groupBy: z.string().startsWith("properties.").optional().describe("Group results by a property field (e.g., 'properties.region')"),
range: RangeEnumSchema.optional().describe(
"Predefined time range. One of: 24h, 7d, 30d, 90d, last_cycle, 1bc, 3bc"
),
binSize: BinSizeEnumSchema.describe(
"Bin size for aggregation: 'day' or 'hour'"
).optional(),
customRange: z.object({
start: z.number().describe("Start timestamp (epoch milliseconds)"),
end: z.number().describe("End timestamp (epoch milliseconds)")
}).optional().describe("Custom time range (mutually exclusive with range)")
});
var EventAggregationTotalSchema = z.record(
z.string(),
z.object({
count: z.number(),
sum: z.number()
})
);
export {
BinSizeEnumSchema,
EventAggregationParamsSchema,
EventAggregationTotalSchema,
EventsListParamsSchema,
PagePaginationDefaults,
PagePaginationQuerySchema,
RangeEnumSchema
};