S.Struct({
periods: S.optional(S.Positive.pipe(S.int())),
since: S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/))),
periodType: S.optional(S.Union(S.Literal("week"), S.Literal("month"))),
}).pipe(
S.filter(
({ periods, since }) => periods !== undefined || since !== undefined,
{ message: () => "At least one of periods or since must be provided" }
)
)
S.Struct({
periods: S.optional(S.Positive.pipe(S.int())),
since: S.optional(S.String.pipe(S.pattern(/^\d{4}-\d{2}-\d{2}$/))),
periodType: S.optional(S.Union(S.Literal("week"), S.Literal("month"))),
}).pipe(
S.filter(
({ periods, since }) => periods !== undefined || since !== undefined,
{ message: () => "At least one of periods or since must be provided" }
)
)