@mac777/project-pinecone-schema 1.0.15 → 1.1.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/events/events.schema.d.ts +432 -55
- package/dist/events/events.schema.js +106 -26
- package/package.json +1 -1
- package/src/events/events.schema.ts +105 -31
|
@@ -1653,14 +1653,92 @@ export declare const pendingApprovalEditSchema: z.ZodObject<{
|
|
|
1653
1653
|
url?: string | undefined;
|
|
1654
1654
|
}>, "many">>;
|
|
1655
1655
|
tickets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
1656
|
-
_id: z.ZodString
|
|
1656
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
1657
|
+
name: z.ZodString;
|
|
1658
|
+
description: z.ZodOptional<z.ZodString>;
|
|
1659
|
+
price: z.ZodObject<{
|
|
1660
|
+
amount: z.ZodNumber;
|
|
1661
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
1662
|
+
}, "strip", z.ZodTypeAny, {
|
|
1663
|
+
amount: number;
|
|
1664
|
+
currency: string;
|
|
1665
|
+
}, {
|
|
1666
|
+
amount: number;
|
|
1667
|
+
currency?: string | undefined;
|
|
1668
|
+
}>;
|
|
1669
|
+
quantity: z.ZodNumber;
|
|
1670
|
+
tier: z.ZodDefault<z.ZodString>;
|
|
1657
1671
|
benefits: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1672
|
+
wristbandColor: z.ZodDefault<z.ZodString>;
|
|
1673
|
+
accentColor: z.ZodDefault<z.ZodString>;
|
|
1674
|
+
isDark: z.ZodDefault<z.ZodBoolean>;
|
|
1675
|
+
glassMode: z.ZodDefault<z.ZodBoolean>;
|
|
1676
|
+
cornerRadius: z.ZodDefault<z.ZodNumber>;
|
|
1677
|
+
perforationStyle: z.ZodDefault<z.ZodEnum<["solid", "dashed", "dotted"]>>;
|
|
1678
|
+
isVisible: z.ZodDefault<z.ZodBoolean>;
|
|
1679
|
+
isActive: z.ZodDefault<z.ZodBoolean>;
|
|
1680
|
+
limits: z.ZodEffects<z.ZodOptional<z.ZodObject<{
|
|
1681
|
+
minPerOrder: z.ZodNumber;
|
|
1682
|
+
maxPerOrder: z.ZodNumber;
|
|
1683
|
+
}, "strip", z.ZodTypeAny, {
|
|
1684
|
+
minPerOrder: number;
|
|
1685
|
+
maxPerOrder: number;
|
|
1686
|
+
}, {
|
|
1687
|
+
minPerOrder: number;
|
|
1688
|
+
maxPerOrder: number;
|
|
1689
|
+
}>>, {
|
|
1690
|
+
minPerOrder: number;
|
|
1691
|
+
maxPerOrder: number;
|
|
1692
|
+
} | undefined, {
|
|
1693
|
+
minPerOrder: number;
|
|
1694
|
+
maxPerOrder: number;
|
|
1695
|
+
} | undefined>;
|
|
1658
1696
|
}, "strip", z.ZodTypeAny, {
|
|
1659
|
-
|
|
1697
|
+
name: string;
|
|
1698
|
+
price: {
|
|
1699
|
+
amount: number;
|
|
1700
|
+
currency: string;
|
|
1701
|
+
};
|
|
1702
|
+
quantity: number;
|
|
1703
|
+
wristbandColor: string;
|
|
1704
|
+
accentColor: string;
|
|
1705
|
+
isDark: boolean;
|
|
1706
|
+
glassMode: boolean;
|
|
1707
|
+
cornerRadius: number;
|
|
1708
|
+
perforationStyle: "solid" | "dashed" | "dotted";
|
|
1709
|
+
isVisible: boolean;
|
|
1710
|
+
isActive: boolean;
|
|
1711
|
+
tier: string;
|
|
1712
|
+
_id?: string | undefined;
|
|
1713
|
+
description?: string | undefined;
|
|
1714
|
+
limits?: {
|
|
1715
|
+
minPerOrder: number;
|
|
1716
|
+
maxPerOrder: number;
|
|
1717
|
+
} | undefined;
|
|
1660
1718
|
benefits?: string[] | undefined;
|
|
1661
1719
|
}, {
|
|
1662
|
-
|
|
1720
|
+
name: string;
|
|
1721
|
+
price: {
|
|
1722
|
+
amount: number;
|
|
1723
|
+
currency?: string | undefined;
|
|
1724
|
+
};
|
|
1725
|
+
quantity: number;
|
|
1726
|
+
_id?: string | undefined;
|
|
1727
|
+
description?: string | undefined;
|
|
1728
|
+
limits?: {
|
|
1729
|
+
minPerOrder: number;
|
|
1730
|
+
maxPerOrder: number;
|
|
1731
|
+
} | undefined;
|
|
1732
|
+
wristbandColor?: string | undefined;
|
|
1733
|
+
accentColor?: string | undefined;
|
|
1734
|
+
isDark?: boolean | undefined;
|
|
1735
|
+
glassMode?: boolean | undefined;
|
|
1736
|
+
cornerRadius?: number | undefined;
|
|
1737
|
+
perforationStyle?: "solid" | "dashed" | "dotted" | undefined;
|
|
1738
|
+
isVisible?: boolean | undefined;
|
|
1739
|
+
isActive?: boolean | undefined;
|
|
1663
1740
|
benefits?: string[] | undefined;
|
|
1741
|
+
tier?: string | undefined;
|
|
1664
1742
|
}>, "many">>;
|
|
1665
1743
|
}, "strip", z.ZodTypeAny, {
|
|
1666
1744
|
eventId: string;
|
|
@@ -1681,7 +1759,27 @@ export declare const pendingApprovalEditSchema: z.ZodObject<{
|
|
|
1681
1759
|
} | undefined;
|
|
1682
1760
|
highlights?: string[] | undefined;
|
|
1683
1761
|
tickets?: {
|
|
1684
|
-
|
|
1762
|
+
name: string;
|
|
1763
|
+
price: {
|
|
1764
|
+
amount: number;
|
|
1765
|
+
currency: string;
|
|
1766
|
+
};
|
|
1767
|
+
quantity: number;
|
|
1768
|
+
wristbandColor: string;
|
|
1769
|
+
accentColor: string;
|
|
1770
|
+
isDark: boolean;
|
|
1771
|
+
glassMode: boolean;
|
|
1772
|
+
cornerRadius: number;
|
|
1773
|
+
perforationStyle: "solid" | "dashed" | "dotted";
|
|
1774
|
+
isVisible: boolean;
|
|
1775
|
+
isActive: boolean;
|
|
1776
|
+
tier: string;
|
|
1777
|
+
_id?: string | undefined;
|
|
1778
|
+
description?: string | undefined;
|
|
1779
|
+
limits?: {
|
|
1780
|
+
minPerOrder: number;
|
|
1781
|
+
maxPerOrder: number;
|
|
1782
|
+
} | undefined;
|
|
1685
1783
|
benefits?: string[] | undefined;
|
|
1686
1784
|
}[] | undefined;
|
|
1687
1785
|
languages?: string[] | undefined;
|
|
@@ -1710,8 +1808,28 @@ export declare const pendingApprovalEditSchema: z.ZodObject<{
|
|
|
1710
1808
|
} | undefined;
|
|
1711
1809
|
highlights?: string[] | undefined;
|
|
1712
1810
|
tickets?: {
|
|
1713
|
-
|
|
1811
|
+
name: string;
|
|
1812
|
+
price: {
|
|
1813
|
+
amount: number;
|
|
1814
|
+
currency?: string | undefined;
|
|
1815
|
+
};
|
|
1816
|
+
quantity: number;
|
|
1817
|
+
_id?: string | undefined;
|
|
1818
|
+
description?: string | undefined;
|
|
1819
|
+
limits?: {
|
|
1820
|
+
minPerOrder: number;
|
|
1821
|
+
maxPerOrder: number;
|
|
1822
|
+
} | undefined;
|
|
1823
|
+
wristbandColor?: string | undefined;
|
|
1824
|
+
accentColor?: string | undefined;
|
|
1825
|
+
isDark?: boolean | undefined;
|
|
1826
|
+
glassMode?: boolean | undefined;
|
|
1827
|
+
cornerRadius?: number | undefined;
|
|
1828
|
+
perforationStyle?: "solid" | "dashed" | "dotted" | undefined;
|
|
1829
|
+
isVisible?: boolean | undefined;
|
|
1830
|
+
isActive?: boolean | undefined;
|
|
1714
1831
|
benefits?: string[] | undefined;
|
|
1832
|
+
tier?: string | undefined;
|
|
1715
1833
|
}[] | undefined;
|
|
1716
1834
|
languages?: string[] | undefined;
|
|
1717
1835
|
additionalDocuments?: {
|
|
@@ -2034,47 +2152,92 @@ export declare const publishedEventEditSchema: z.ZodObject<{
|
|
|
2034
2152
|
}[] | undefined;
|
|
2035
2153
|
}>>;
|
|
2036
2154
|
tickets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
2037
|
-
_id: z.ZodString
|
|
2038
|
-
|
|
2039
|
-
|
|
2155
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
2156
|
+
name: z.ZodString;
|
|
2157
|
+
description: z.ZodOptional<z.ZodString>;
|
|
2158
|
+
price: z.ZodObject<{
|
|
2159
|
+
amount: z.ZodNumber;
|
|
2160
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
2161
|
+
}, "strip", z.ZodTypeAny, {
|
|
2162
|
+
amount: number;
|
|
2163
|
+
currency: string;
|
|
2164
|
+
}, {
|
|
2165
|
+
amount: number;
|
|
2166
|
+
currency?: string | undefined;
|
|
2167
|
+
}>;
|
|
2168
|
+
quantity: z.ZodNumber;
|
|
2169
|
+
tier: z.ZodDefault<z.ZodString>;
|
|
2040
2170
|
benefits: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
2041
|
-
wristbandColor: z.ZodDefault<z.
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2171
|
+
wristbandColor: z.ZodDefault<z.ZodString>;
|
|
2172
|
+
accentColor: z.ZodDefault<z.ZodString>;
|
|
2173
|
+
isDark: z.ZodDefault<z.ZodBoolean>;
|
|
2174
|
+
glassMode: z.ZodDefault<z.ZodBoolean>;
|
|
2175
|
+
cornerRadius: z.ZodDefault<z.ZodNumber>;
|
|
2176
|
+
perforationStyle: z.ZodDefault<z.ZodEnum<["solid", "dashed", "dotted"]>>;
|
|
2177
|
+
isVisible: z.ZodDefault<z.ZodBoolean>;
|
|
2178
|
+
isActive: z.ZodDefault<z.ZodBoolean>;
|
|
2179
|
+
limits: z.ZodEffects<z.ZodOptional<z.ZodObject<{
|
|
2180
|
+
minPerOrder: z.ZodNumber;
|
|
2181
|
+
maxPerOrder: z.ZodNumber;
|
|
2047
2182
|
}, "strip", z.ZodTypeAny, {
|
|
2048
|
-
minPerOrder
|
|
2049
|
-
maxPerOrder
|
|
2183
|
+
minPerOrder: number;
|
|
2184
|
+
maxPerOrder: number;
|
|
2050
2185
|
}, {
|
|
2051
|
-
minPerOrder
|
|
2052
|
-
maxPerOrder
|
|
2053
|
-
}
|
|
2186
|
+
minPerOrder: number;
|
|
2187
|
+
maxPerOrder: number;
|
|
2188
|
+
}>>, {
|
|
2189
|
+
minPerOrder: number;
|
|
2190
|
+
maxPerOrder: number;
|
|
2191
|
+
} | undefined, {
|
|
2192
|
+
minPerOrder: number;
|
|
2193
|
+
maxPerOrder: number;
|
|
2194
|
+
} | undefined>;
|
|
2054
2195
|
}, "strip", z.ZodTypeAny, {
|
|
2055
|
-
|
|
2196
|
+
name: string;
|
|
2197
|
+
price: {
|
|
2198
|
+
amount: number;
|
|
2199
|
+
currency: string;
|
|
2200
|
+
};
|
|
2201
|
+
quantity: number;
|
|
2056
2202
|
wristbandColor: string;
|
|
2203
|
+
accentColor: string;
|
|
2204
|
+
isDark: boolean;
|
|
2205
|
+
glassMode: boolean;
|
|
2206
|
+
cornerRadius: number;
|
|
2207
|
+
perforationStyle: "solid" | "dashed" | "dotted";
|
|
2057
2208
|
isVisible: boolean;
|
|
2058
2209
|
isActive: boolean;
|
|
2059
|
-
|
|
2060
|
-
|
|
2210
|
+
tier: string;
|
|
2211
|
+
_id?: string | undefined;
|
|
2212
|
+
description?: string | undefined;
|
|
2061
2213
|
limits?: {
|
|
2062
|
-
minPerOrder
|
|
2063
|
-
maxPerOrder
|
|
2214
|
+
minPerOrder: number;
|
|
2215
|
+
maxPerOrder: number;
|
|
2064
2216
|
} | undefined;
|
|
2065
2217
|
benefits?: string[] | undefined;
|
|
2066
2218
|
}, {
|
|
2067
|
-
|
|
2068
|
-
price
|
|
2069
|
-
|
|
2219
|
+
name: string;
|
|
2220
|
+
price: {
|
|
2221
|
+
amount: number;
|
|
2222
|
+
currency?: string | undefined;
|
|
2223
|
+
};
|
|
2224
|
+
quantity: number;
|
|
2225
|
+
_id?: string | undefined;
|
|
2226
|
+
description?: string | undefined;
|
|
2070
2227
|
limits?: {
|
|
2071
|
-
minPerOrder
|
|
2072
|
-
maxPerOrder
|
|
2228
|
+
minPerOrder: number;
|
|
2229
|
+
maxPerOrder: number;
|
|
2073
2230
|
} | undefined;
|
|
2074
2231
|
wristbandColor?: string | undefined;
|
|
2232
|
+
accentColor?: string | undefined;
|
|
2233
|
+
isDark?: boolean | undefined;
|
|
2234
|
+
glassMode?: boolean | undefined;
|
|
2235
|
+
cornerRadius?: number | undefined;
|
|
2236
|
+
perforationStyle?: "solid" | "dashed" | "dotted" | undefined;
|
|
2075
2237
|
isVisible?: boolean | undefined;
|
|
2076
2238
|
isActive?: boolean | undefined;
|
|
2077
2239
|
benefits?: string[] | undefined;
|
|
2240
|
+
tier?: string | undefined;
|
|
2078
2241
|
}>, "many">>;
|
|
2079
2242
|
}, "strip", z.ZodTypeAny, {
|
|
2080
2243
|
eventId: string;
|
|
@@ -2094,15 +2257,26 @@ export declare const publishedEventEditSchema: z.ZodObject<{
|
|
|
2094
2257
|
} | undefined;
|
|
2095
2258
|
highlights?: string[] | undefined;
|
|
2096
2259
|
tickets?: {
|
|
2097
|
-
|
|
2260
|
+
name: string;
|
|
2261
|
+
price: {
|
|
2262
|
+
amount: number;
|
|
2263
|
+
currency: string;
|
|
2264
|
+
};
|
|
2265
|
+
quantity: number;
|
|
2098
2266
|
wristbandColor: string;
|
|
2267
|
+
accentColor: string;
|
|
2268
|
+
isDark: boolean;
|
|
2269
|
+
glassMode: boolean;
|
|
2270
|
+
cornerRadius: number;
|
|
2271
|
+
perforationStyle: "solid" | "dashed" | "dotted";
|
|
2099
2272
|
isVisible: boolean;
|
|
2100
2273
|
isActive: boolean;
|
|
2101
|
-
|
|
2102
|
-
|
|
2274
|
+
tier: string;
|
|
2275
|
+
_id?: string | undefined;
|
|
2276
|
+
description?: string | undefined;
|
|
2103
2277
|
limits?: {
|
|
2104
|
-
minPerOrder
|
|
2105
|
-
maxPerOrder
|
|
2278
|
+
minPerOrder: number;
|
|
2279
|
+
maxPerOrder: number;
|
|
2106
2280
|
} | undefined;
|
|
2107
2281
|
benefits?: string[] | undefined;
|
|
2108
2282
|
}[] | undefined;
|
|
@@ -2125,17 +2299,28 @@ export declare const publishedEventEditSchema: z.ZodObject<{
|
|
|
2125
2299
|
} | undefined;
|
|
2126
2300
|
highlights?: string[] | undefined;
|
|
2127
2301
|
tickets?: {
|
|
2128
|
-
|
|
2129
|
-
price
|
|
2130
|
-
|
|
2302
|
+
name: string;
|
|
2303
|
+
price: {
|
|
2304
|
+
amount: number;
|
|
2305
|
+
currency?: string | undefined;
|
|
2306
|
+
};
|
|
2307
|
+
quantity: number;
|
|
2308
|
+
_id?: string | undefined;
|
|
2309
|
+
description?: string | undefined;
|
|
2131
2310
|
limits?: {
|
|
2132
|
-
minPerOrder
|
|
2133
|
-
maxPerOrder
|
|
2311
|
+
minPerOrder: number;
|
|
2312
|
+
maxPerOrder: number;
|
|
2134
2313
|
} | undefined;
|
|
2135
2314
|
wristbandColor?: string | undefined;
|
|
2315
|
+
accentColor?: string | undefined;
|
|
2316
|
+
isDark?: boolean | undefined;
|
|
2317
|
+
glassMode?: boolean | undefined;
|
|
2318
|
+
cornerRadius?: number | undefined;
|
|
2319
|
+
perforationStyle?: "solid" | "dashed" | "dotted" | undefined;
|
|
2136
2320
|
isVisible?: boolean | undefined;
|
|
2137
2321
|
isActive?: boolean | undefined;
|
|
2138
2322
|
benefits?: string[] | undefined;
|
|
2323
|
+
tier?: string | undefined;
|
|
2139
2324
|
}[] | undefined;
|
|
2140
2325
|
languages?: string[] | undefined;
|
|
2141
2326
|
}>;
|
|
@@ -2143,35 +2328,189 @@ export declare const liveEventEditSchema: z.ZodObject<{
|
|
|
2143
2328
|
eventId: z.ZodString;
|
|
2144
2329
|
hostId: z.ZodString;
|
|
2145
2330
|
liveUpdate: z.ZodOptional<z.ZodString>;
|
|
2331
|
+
media: z.ZodOptional<z.ZodObject<{
|
|
2332
|
+
gallery: z.ZodArray<z.ZodObject<{
|
|
2333
|
+
url: z.ZodString;
|
|
2334
|
+
caption: z.ZodOptional<z.ZodString>;
|
|
2335
|
+
order: z.ZodOptional<z.ZodNumber>;
|
|
2336
|
+
}, "strip", z.ZodTypeAny, {
|
|
2337
|
+
url: string;
|
|
2338
|
+
order?: number | undefined;
|
|
2339
|
+
caption?: string | undefined;
|
|
2340
|
+
}, {
|
|
2341
|
+
url: string;
|
|
2342
|
+
order?: number | undefined;
|
|
2343
|
+
caption?: string | undefined;
|
|
2344
|
+
}>, "many">;
|
|
2345
|
+
}, "strip", z.ZodTypeAny, {
|
|
2346
|
+
gallery: {
|
|
2347
|
+
url: string;
|
|
2348
|
+
order?: number | undefined;
|
|
2349
|
+
caption?: string | undefined;
|
|
2350
|
+
}[];
|
|
2351
|
+
}, {
|
|
2352
|
+
gallery: {
|
|
2353
|
+
url: string;
|
|
2354
|
+
order?: number | undefined;
|
|
2355
|
+
caption?: string | undefined;
|
|
2356
|
+
}[];
|
|
2357
|
+
}>>;
|
|
2146
2358
|
tickets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
2147
|
-
_id: z.ZodString
|
|
2148
|
-
|
|
2149
|
-
|
|
2359
|
+
_id: z.ZodOptional<z.ZodString>;
|
|
2360
|
+
name: z.ZodString;
|
|
2361
|
+
description: z.ZodOptional<z.ZodString>;
|
|
2362
|
+
price: z.ZodObject<{
|
|
2363
|
+
amount: z.ZodNumber;
|
|
2364
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
2365
|
+
}, "strip", z.ZodTypeAny, {
|
|
2366
|
+
amount: number;
|
|
2367
|
+
currency: string;
|
|
2368
|
+
}, {
|
|
2369
|
+
amount: number;
|
|
2370
|
+
currency?: string | undefined;
|
|
2371
|
+
}>;
|
|
2372
|
+
quantity: z.ZodNumber;
|
|
2373
|
+
tier: z.ZodDefault<z.ZodString>;
|
|
2374
|
+
benefits: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
2375
|
+
wristbandColor: z.ZodDefault<z.ZodString>;
|
|
2376
|
+
accentColor: z.ZodDefault<z.ZodString>;
|
|
2377
|
+
isDark: z.ZodDefault<z.ZodBoolean>;
|
|
2378
|
+
glassMode: z.ZodDefault<z.ZodBoolean>;
|
|
2379
|
+
cornerRadius: z.ZodDefault<z.ZodNumber>;
|
|
2380
|
+
perforationStyle: z.ZodDefault<z.ZodEnum<["solid", "dashed", "dotted"]>>;
|
|
2381
|
+
isVisible: z.ZodDefault<z.ZodBoolean>;
|
|
2382
|
+
isActive: z.ZodDefault<z.ZodBoolean>;
|
|
2383
|
+
limits: z.ZodEffects<z.ZodOptional<z.ZodObject<{
|
|
2384
|
+
minPerOrder: z.ZodNumber;
|
|
2385
|
+
maxPerOrder: z.ZodNumber;
|
|
2386
|
+
}, "strip", z.ZodTypeAny, {
|
|
2387
|
+
minPerOrder: number;
|
|
2388
|
+
maxPerOrder: number;
|
|
2389
|
+
}, {
|
|
2390
|
+
minPerOrder: number;
|
|
2391
|
+
maxPerOrder: number;
|
|
2392
|
+
}>>, {
|
|
2393
|
+
minPerOrder: number;
|
|
2394
|
+
maxPerOrder: number;
|
|
2395
|
+
} | undefined, {
|
|
2396
|
+
minPerOrder: number;
|
|
2397
|
+
maxPerOrder: number;
|
|
2398
|
+
} | undefined>;
|
|
2150
2399
|
}, "strip", z.ZodTypeAny, {
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2400
|
+
name: string;
|
|
2401
|
+
price: {
|
|
2402
|
+
amount: number;
|
|
2403
|
+
currency: string;
|
|
2404
|
+
};
|
|
2405
|
+
quantity: number;
|
|
2406
|
+
wristbandColor: string;
|
|
2407
|
+
accentColor: string;
|
|
2408
|
+
isDark: boolean;
|
|
2409
|
+
glassMode: boolean;
|
|
2410
|
+
cornerRadius: number;
|
|
2411
|
+
perforationStyle: "solid" | "dashed" | "dotted";
|
|
2412
|
+
isVisible: boolean;
|
|
2413
|
+
isActive: boolean;
|
|
2414
|
+
tier: string;
|
|
2415
|
+
_id?: string | undefined;
|
|
2416
|
+
description?: string | undefined;
|
|
2417
|
+
limits?: {
|
|
2418
|
+
minPerOrder: number;
|
|
2419
|
+
maxPerOrder: number;
|
|
2420
|
+
} | undefined;
|
|
2421
|
+
benefits?: string[] | undefined;
|
|
2154
2422
|
}, {
|
|
2155
|
-
|
|
2156
|
-
|
|
2423
|
+
name: string;
|
|
2424
|
+
price: {
|
|
2425
|
+
amount: number;
|
|
2426
|
+
currency?: string | undefined;
|
|
2427
|
+
};
|
|
2428
|
+
quantity: number;
|
|
2429
|
+
_id?: string | undefined;
|
|
2430
|
+
description?: string | undefined;
|
|
2431
|
+
limits?: {
|
|
2432
|
+
minPerOrder: number;
|
|
2433
|
+
maxPerOrder: number;
|
|
2434
|
+
} | undefined;
|
|
2435
|
+
wristbandColor?: string | undefined;
|
|
2436
|
+
accentColor?: string | undefined;
|
|
2437
|
+
isDark?: boolean | undefined;
|
|
2438
|
+
glassMode?: boolean | undefined;
|
|
2439
|
+
cornerRadius?: number | undefined;
|
|
2440
|
+
perforationStyle?: "solid" | "dashed" | "dotted" | undefined;
|
|
2441
|
+
isVisible?: boolean | undefined;
|
|
2157
2442
|
isActive?: boolean | undefined;
|
|
2443
|
+
benefits?: string[] | undefined;
|
|
2444
|
+
tier?: string | undefined;
|
|
2158
2445
|
}>, "many">>;
|
|
2159
2446
|
}, "strip", z.ZodTypeAny, {
|
|
2160
2447
|
eventId: string;
|
|
2161
2448
|
hostId: string;
|
|
2449
|
+
media?: {
|
|
2450
|
+
gallery: {
|
|
2451
|
+
url: string;
|
|
2452
|
+
order?: number | undefined;
|
|
2453
|
+
caption?: string | undefined;
|
|
2454
|
+
}[];
|
|
2455
|
+
} | undefined;
|
|
2162
2456
|
tickets?: {
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2457
|
+
name: string;
|
|
2458
|
+
price: {
|
|
2459
|
+
amount: number;
|
|
2460
|
+
currency: string;
|
|
2461
|
+
};
|
|
2462
|
+
quantity: number;
|
|
2463
|
+
wristbandColor: string;
|
|
2464
|
+
accentColor: string;
|
|
2465
|
+
isDark: boolean;
|
|
2466
|
+
glassMode: boolean;
|
|
2467
|
+
cornerRadius: number;
|
|
2468
|
+
perforationStyle: "solid" | "dashed" | "dotted";
|
|
2469
|
+
isVisible: boolean;
|
|
2470
|
+
isActive: boolean;
|
|
2471
|
+
tier: string;
|
|
2472
|
+
_id?: string | undefined;
|
|
2473
|
+
description?: string | undefined;
|
|
2474
|
+
limits?: {
|
|
2475
|
+
minPerOrder: number;
|
|
2476
|
+
maxPerOrder: number;
|
|
2477
|
+
} | undefined;
|
|
2478
|
+
benefits?: string[] | undefined;
|
|
2166
2479
|
}[] | undefined;
|
|
2167
2480
|
liveUpdate?: string | undefined;
|
|
2168
2481
|
}, {
|
|
2169
2482
|
eventId: string;
|
|
2170
2483
|
hostId: string;
|
|
2484
|
+
media?: {
|
|
2485
|
+
gallery: {
|
|
2486
|
+
url: string;
|
|
2487
|
+
order?: number | undefined;
|
|
2488
|
+
caption?: string | undefined;
|
|
2489
|
+
}[];
|
|
2490
|
+
} | undefined;
|
|
2171
2491
|
tickets?: {
|
|
2172
|
-
|
|
2173
|
-
|
|
2492
|
+
name: string;
|
|
2493
|
+
price: {
|
|
2494
|
+
amount: number;
|
|
2495
|
+
currency?: string | undefined;
|
|
2496
|
+
};
|
|
2497
|
+
quantity: number;
|
|
2498
|
+
_id?: string | undefined;
|
|
2499
|
+
description?: string | undefined;
|
|
2500
|
+
limits?: {
|
|
2501
|
+
minPerOrder: number;
|
|
2502
|
+
maxPerOrder: number;
|
|
2503
|
+
} | undefined;
|
|
2504
|
+
wristbandColor?: string | undefined;
|
|
2505
|
+
accentColor?: string | undefined;
|
|
2506
|
+
isDark?: boolean | undefined;
|
|
2507
|
+
glassMode?: boolean | undefined;
|
|
2508
|
+
cornerRadius?: number | undefined;
|
|
2509
|
+
perforationStyle?: "solid" | "dashed" | "dotted" | undefined;
|
|
2510
|
+
isVisible?: boolean | undefined;
|
|
2174
2511
|
isActive?: boolean | undefined;
|
|
2512
|
+
benefits?: string[] | undefined;
|
|
2513
|
+
tier?: string | undefined;
|
|
2175
2514
|
}[] | undefined;
|
|
2176
2515
|
liveUpdate?: string | undefined;
|
|
2177
2516
|
}>;
|
|
@@ -2179,17 +2518,55 @@ export declare const endedEventEditSchema: z.ZodObject<{
|
|
|
2179
2518
|
eventId: z.ZodString;
|
|
2180
2519
|
hostId: z.ZodString;
|
|
2181
2520
|
recap: z.ZodOptional<z.ZodString>;
|
|
2182
|
-
|
|
2521
|
+
media: z.ZodOptional<z.ZodObject<{
|
|
2522
|
+
gallery: z.ZodArray<z.ZodObject<{
|
|
2523
|
+
url: z.ZodString;
|
|
2524
|
+
caption: z.ZodOptional<z.ZodString>;
|
|
2525
|
+
order: z.ZodOptional<z.ZodNumber>;
|
|
2526
|
+
}, "strip", z.ZodTypeAny, {
|
|
2527
|
+
url: string;
|
|
2528
|
+
order?: number | undefined;
|
|
2529
|
+
caption?: string | undefined;
|
|
2530
|
+
}, {
|
|
2531
|
+
url: string;
|
|
2532
|
+
order?: number | undefined;
|
|
2533
|
+
caption?: string | undefined;
|
|
2534
|
+
}>, "many">;
|
|
2535
|
+
}, "strip", z.ZodTypeAny, {
|
|
2536
|
+
gallery: {
|
|
2537
|
+
url: string;
|
|
2538
|
+
order?: number | undefined;
|
|
2539
|
+
caption?: string | undefined;
|
|
2540
|
+
}[];
|
|
2541
|
+
}, {
|
|
2542
|
+
gallery: {
|
|
2543
|
+
url: string;
|
|
2544
|
+
order?: number | undefined;
|
|
2545
|
+
caption?: string | undefined;
|
|
2546
|
+
}[];
|
|
2547
|
+
}>>;
|
|
2183
2548
|
}, "strip", z.ZodTypeAny, {
|
|
2184
2549
|
eventId: string;
|
|
2185
2550
|
hostId: string;
|
|
2551
|
+
media?: {
|
|
2552
|
+
gallery: {
|
|
2553
|
+
url: string;
|
|
2554
|
+
order?: number | undefined;
|
|
2555
|
+
caption?: string | undefined;
|
|
2556
|
+
}[];
|
|
2557
|
+
} | undefined;
|
|
2186
2558
|
recap?: string | undefined;
|
|
2187
|
-
eventPhotos?: string[] | undefined;
|
|
2188
2559
|
}, {
|
|
2189
2560
|
eventId: string;
|
|
2190
2561
|
hostId: string;
|
|
2562
|
+
media?: {
|
|
2563
|
+
gallery: {
|
|
2564
|
+
url: string;
|
|
2565
|
+
order?: number | undefined;
|
|
2566
|
+
caption?: string | undefined;
|
|
2567
|
+
}[];
|
|
2568
|
+
} | undefined;
|
|
2191
2569
|
recap?: string | undefined;
|
|
2192
|
-
eventPhotos?: string[] | undefined;
|
|
2193
2570
|
}>;
|
|
2194
2571
|
export declare const submitEventSchema: z.ZodObject<{
|
|
2195
2572
|
title: z.ZodString;
|
|
@@ -102,11 +102,37 @@ exports.pendingApprovalEditSchema = zod_1.z.object({
|
|
|
102
102
|
media: media_schema_1.mediaSchema.optional(),
|
|
103
103
|
// Can add docs, not remove
|
|
104
104
|
additionalDocuments: zod_1.z.array(document_schema_1.documentSchema).optional(),
|
|
105
|
-
// Can clarify benefits, not change structure
|
|
106
105
|
tickets: zod_1.z.array(zod_1.z.object({
|
|
107
|
-
_id: zod_1.z.string(),
|
|
108
|
-
|
|
109
|
-
|
|
106
|
+
_id: zod_1.z.string().regex(/^[0-9a-fA-F]{24}$/, 'Invalid ticket ID').optional(), // Undefined = new tier
|
|
107
|
+
name: zod_1.z.string({ required_error: 'Ticket name is required' }).min(1).max(100),
|
|
108
|
+
description: zod_1.z.string().max(500).optional(),
|
|
109
|
+
price: zod_1.z.object({
|
|
110
|
+
amount: zod_1.z.number({ required_error: 'Ticket price amount is required' }).min(0, 'Price cannot be negative').max(1000000, 'Price exceeds maximum'),
|
|
111
|
+
currency: zod_1.z.string().default('BDT')
|
|
112
|
+
}),
|
|
113
|
+
quantity: zod_1.z.number({ required_error: 'Ticket quantity is required' }).int('Quantity must be an integer').min(1, 'Ticket quantity must be at least 1').max(100000, 'Quantity exceeds maximum'),
|
|
114
|
+
tier: zod_1.z.string().min(1).max(50).default('regular'),
|
|
115
|
+
benefits: zod_1.z.array(zod_1.z.string().max(200)).max(20).optional(),
|
|
116
|
+
wristbandColor: zod_1.z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
117
|
+
accentColor: zod_1.z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
118
|
+
isDark: zod_1.z.boolean().default(false),
|
|
119
|
+
glassMode: zod_1.z.boolean().default(false),
|
|
120
|
+
cornerRadius: zod_1.z.number().min(0).max(50).default(32),
|
|
121
|
+
perforationStyle: zod_1.z.enum(['solid', 'dashed', 'dotted']).default('solid'),
|
|
122
|
+
isVisible: zod_1.z.boolean().default(true),
|
|
123
|
+
isActive: zod_1.z.boolean().default(true),
|
|
124
|
+
limits: zod_1.z.object({
|
|
125
|
+
minPerOrder: zod_1.z.number({ required_error: 'Min per order is required' }).int().min(1, 'Min per order must be at least 1').max(100),
|
|
126
|
+
maxPerOrder: zod_1.z.number({ required_error: 'Max per order is required' }).int().min(1, 'Max per order must be at least 1').max(100)
|
|
127
|
+
}).optional().refine((data) => {
|
|
128
|
+
if (!data)
|
|
129
|
+
return true;
|
|
130
|
+
return data.maxPerOrder >= data.minPerOrder;
|
|
131
|
+
}, {
|
|
132
|
+
message: 'Max per order must be greater than or equal to min per order',
|
|
133
|
+
path: ['maxPerOrder']
|
|
134
|
+
})
|
|
135
|
+
})).optional(),
|
|
110
136
|
});
|
|
111
137
|
// Approved
|
|
112
138
|
exports.approvedEventEditSchema = zod_1.z.object({
|
|
@@ -176,22 +202,35 @@ exports.publishedEventEditSchema = zod_1.z.object({
|
|
|
176
202
|
media: media_schema_1.mediaSchema.optional(),
|
|
177
203
|
// Ticket updates (complex validation)
|
|
178
204
|
tickets: zod_1.z.array(zod_1.z.object({
|
|
179
|
-
_id: zod_1.z.string(),
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
205
|
+
_id: zod_1.z.string().regex(/^[0-9a-fA-F]{24}$/, 'Invalid ticket ID').optional(), // Undefined = new tier
|
|
206
|
+
name: zod_1.z.string({ required_error: 'Ticket name is required' }).min(1).max(100),
|
|
207
|
+
description: zod_1.z.string().max(500).optional(),
|
|
208
|
+
price: zod_1.z.object({
|
|
209
|
+
amount: zod_1.z.number({ required_error: 'Ticket price amount is required' }).min(0, 'Price cannot be negative').max(1000000, 'Price exceeds maximum'),
|
|
210
|
+
currency: zod_1.z.string().default('BDT')
|
|
211
|
+
}),
|
|
212
|
+
quantity: zod_1.z.number({ required_error: 'Ticket quantity is required' }).int('Quantity must be an integer').min(1, 'Ticket quantity must be at least 1').max(100000, 'Quantity exceeds maximum'),
|
|
213
|
+
tier: zod_1.z.string().min(1).max(50).default('regular'),
|
|
214
|
+
benefits: zod_1.z.array(zod_1.z.string().max(200)).max(20).optional(),
|
|
215
|
+
wristbandColor: zod_1.z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
216
|
+
accentColor: zod_1.z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
217
|
+
isDark: zod_1.z.boolean().default(false),
|
|
218
|
+
glassMode: zod_1.z.boolean().default(false),
|
|
219
|
+
cornerRadius: zod_1.z.number().min(0).max(50).default(32),
|
|
220
|
+
perforationStyle: zod_1.z.enum(['solid', 'dashed', 'dotted']).default('solid'),
|
|
221
|
+
isVisible: zod_1.z.boolean().default(true),
|
|
222
|
+
isActive: zod_1.z.boolean().default(true),
|
|
191
223
|
limits: zod_1.z.object({
|
|
192
|
-
minPerOrder: zod_1.z.number().min(1, 'Min per order must be at least 1').
|
|
193
|
-
maxPerOrder: zod_1.z.number().min(1, 'Max per order must be at least 1').
|
|
194
|
-
}).optional()
|
|
224
|
+
minPerOrder: zod_1.z.number({ required_error: 'Min per order is required' }).int().min(1, 'Min per order must be at least 1').max(100),
|
|
225
|
+
maxPerOrder: zod_1.z.number({ required_error: 'Max per order is required' }).int().min(1, 'Max per order must be at least 1').max(100)
|
|
226
|
+
}).optional().refine((data) => {
|
|
227
|
+
if (!data)
|
|
228
|
+
return true;
|
|
229
|
+
return data.maxPerOrder >= data.minPerOrder;
|
|
230
|
+
}, {
|
|
231
|
+
message: 'Max per order must be greater than or equal to min per order',
|
|
232
|
+
path: ['maxPerOrder']
|
|
233
|
+
})
|
|
195
234
|
})).optional(),
|
|
196
235
|
});
|
|
197
236
|
// Live
|
|
@@ -199,21 +238,62 @@ exports.liveEventEditSchema = zod_1.z.object({
|
|
|
199
238
|
eventId: zod_1.z.string({ required_error: 'Event not found' }).regex(/^[0-9a-fA-F]{24}$/),
|
|
200
239
|
hostId: zod_1.z.string({ required_error: 'Unauthorized' }).regex(/^[0-9a-fA-F]{24}$/),
|
|
201
240
|
// Live update only
|
|
202
|
-
liveUpdate: zod_1.z.string().max(500, 'Live update cannot exceed 500 characters').optional(),
|
|
241
|
+
liveUpdate: zod_1.z.string().min(1).max(500, 'Live update cannot exceed 500 characters').optional(),
|
|
242
|
+
// Gallery updates (can add event photos)
|
|
243
|
+
media: zod_1.z.object({
|
|
244
|
+
gallery: zod_1.z.array(zod_1.z.object({
|
|
245
|
+
url: zod_1.z.string().url('Invalid image URL'),
|
|
246
|
+
caption: zod_1.z.string().max(200).optional(),
|
|
247
|
+
order: zod_1.z.number().int().min(0).optional()
|
|
248
|
+
})).max(50, 'Cannot have more than 50 gallery images')
|
|
249
|
+
}).optional(),
|
|
203
250
|
// Ticket operational controls
|
|
204
251
|
tickets: zod_1.z.array(zod_1.z.object({
|
|
205
|
-
_id: zod_1.z.string(),
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
252
|
+
_id: zod_1.z.string().regex(/^[0-9a-fA-F]{24}$/, 'Invalid ticket ID').optional(), // Undefined = new tier
|
|
253
|
+
name: zod_1.z.string({ required_error: 'Ticket name is required' }).min(1).max(100),
|
|
254
|
+
description: zod_1.z.string().max(500).optional(),
|
|
255
|
+
price: zod_1.z.object({
|
|
256
|
+
amount: zod_1.z.number({ required_error: 'Ticket price amount is required' }).min(0, 'Price cannot be negative').max(1000000, 'Price exceeds maximum'),
|
|
257
|
+
currency: zod_1.z.string().default('BDT')
|
|
258
|
+
}),
|
|
259
|
+
quantity: zod_1.z.number({ required_error: 'Ticket quantity is required' }).int('Quantity must be an integer').min(1, 'Ticket quantity must be at least 1').max(100000, 'Quantity exceeds maximum'),
|
|
260
|
+
tier: zod_1.z.string().min(1).max(50).default('regular'),
|
|
261
|
+
benefits: zod_1.z.array(zod_1.z.string().max(200)).max(20).optional(),
|
|
262
|
+
wristbandColor: zod_1.z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
263
|
+
accentColor: zod_1.z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
264
|
+
isDark: zod_1.z.boolean().default(false),
|
|
265
|
+
glassMode: zod_1.z.boolean().default(false),
|
|
266
|
+
cornerRadius: zod_1.z.number().min(0).max(50).default(32),
|
|
267
|
+
perforationStyle: zod_1.z.enum(['solid', 'dashed', 'dotted']).default('solid'),
|
|
268
|
+
isVisible: zod_1.z.boolean().default(true),
|
|
269
|
+
isActive: zod_1.z.boolean().default(true),
|
|
270
|
+
limits: zod_1.z.object({
|
|
271
|
+
minPerOrder: zod_1.z.number({ required_error: 'Min per order is required' }).int().min(1, 'Min per order must be at least 1').max(100),
|
|
272
|
+
maxPerOrder: zod_1.z.number({ required_error: 'Max per order is required' }).int().min(1, 'Max per order must be at least 1').max(100)
|
|
273
|
+
}).optional().refine((data) => {
|
|
274
|
+
if (!data)
|
|
275
|
+
return true;
|
|
276
|
+
return data.maxPerOrder >= data.minPerOrder;
|
|
277
|
+
}, {
|
|
278
|
+
message: 'Max per order must be greater than or equal to min per order',
|
|
279
|
+
path: ['maxPerOrder']
|
|
280
|
+
})
|
|
281
|
+
})).optional(),
|
|
209
282
|
});
|
|
210
283
|
// Ended
|
|
211
284
|
exports.endedEventEditSchema = zod_1.z.object({
|
|
212
285
|
eventId: zod_1.z.string({ required_error: 'Event not found' }).regex(/^[0-9a-fA-F]{24}$/),
|
|
213
286
|
hostId: zod_1.z.string({ required_error: 'Unauthorized' }).regex(/^[0-9a-fA-F]{24}$/),
|
|
214
287
|
// Post-event content
|
|
215
|
-
recap: zod_1.z.string().max(2000, 'Recap cannot exceed 2000 characters').optional(),
|
|
216
|
-
|
|
288
|
+
recap: zod_1.z.string().min(10, 'Recap must be at least 10 characters').max(2000, 'Recap cannot exceed 2000 characters').optional(),
|
|
289
|
+
// Event photos (gallery)
|
|
290
|
+
media: zod_1.z.object({
|
|
291
|
+
gallery: zod_1.z.array(zod_1.z.object({
|
|
292
|
+
url: zod_1.z.string().url('Invalid image URL'),
|
|
293
|
+
caption: zod_1.z.string().max(200).optional(),
|
|
294
|
+
order: zod_1.z.number().int().min(0).optional()
|
|
295
|
+
})).max(50, 'Cannot have more than 50 event photos')
|
|
296
|
+
}).optional()
|
|
217
297
|
});
|
|
218
298
|
// =============================================================================
|
|
219
299
|
// COMPOSITE SCHEMAS
|
package/package.json
CHANGED
|
@@ -113,11 +113,36 @@ export const pendingApprovalEditSchema = z.object({
|
|
|
113
113
|
// Can add docs, not remove
|
|
114
114
|
additionalDocuments: z.array(documentSchema).optional(),
|
|
115
115
|
|
|
116
|
-
// Can clarify benefits, not change structure
|
|
117
116
|
tickets: z.array(z.object({
|
|
118
|
-
_id: z.string(),
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
_id: z.string().regex(/^[0-9a-fA-F]{24}$/, 'Invalid ticket ID').optional(), // Undefined = new tier
|
|
118
|
+
name: z.string({ required_error: 'Ticket name is required' }).min(1).max(100),
|
|
119
|
+
description: z.string().max(500).optional(),
|
|
120
|
+
price: z.object({
|
|
121
|
+
amount: z.number({ required_error: 'Ticket price amount is required' }).min(0, 'Price cannot be negative').max(1000000, 'Price exceeds maximum'),
|
|
122
|
+
currency: z.string().default('BDT')
|
|
123
|
+
}),
|
|
124
|
+
quantity: z.number({ required_error: 'Ticket quantity is required' }).int('Quantity must be an integer').min(1, 'Ticket quantity must be at least 1').max(100000, 'Quantity exceeds maximum'),
|
|
125
|
+
tier: z.string().min(1).max(50).default('regular'),
|
|
126
|
+
benefits: z.array(z.string().max(200)).max(20).optional(),
|
|
127
|
+
wristbandColor: z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
128
|
+
accentColor: z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
129
|
+
isDark: z.boolean().default(false),
|
|
130
|
+
glassMode: z.boolean().default(false),
|
|
131
|
+
cornerRadius: z.number().min(0).max(50).default(32),
|
|
132
|
+
perforationStyle: z.enum(['solid', 'dashed', 'dotted']).default('solid'),
|
|
133
|
+
isVisible: z.boolean().default(true),
|
|
134
|
+
isActive: z.boolean().default(true),
|
|
135
|
+
limits: z.object({
|
|
136
|
+
minPerOrder: z.number({ required_error: 'Min per order is required' }).int().min(1, 'Min per order must be at least 1').max(100),
|
|
137
|
+
maxPerOrder: z.number({ required_error: 'Max per order is required' }).int().min(1, 'Max per order must be at least 1').max(100)
|
|
138
|
+
}).optional().refine((data) => {
|
|
139
|
+
if (!data) return true;
|
|
140
|
+
return data.maxPerOrder >= data.minPerOrder;
|
|
141
|
+
}, {
|
|
142
|
+
message: 'Max per order must be greater than or equal to min per order',
|
|
143
|
+
path: ['maxPerOrder']
|
|
144
|
+
})
|
|
145
|
+
})).optional(),
|
|
121
146
|
});
|
|
122
147
|
|
|
123
148
|
// Approved
|
|
@@ -193,27 +218,34 @@ export const publishedEventEditSchema = z.object({
|
|
|
193
218
|
|
|
194
219
|
// Ticket updates (complex validation)
|
|
195
220
|
tickets: z.array(z.object({
|
|
196
|
-
_id: z.string(),
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
price: z.
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
benefits: z.array(z.string()).optional(),
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
221
|
+
_id: z.string().regex(/^[0-9a-fA-F]{24}$/, 'Invalid ticket ID').optional(), // Undefined = new tier
|
|
222
|
+
name: z.string({ required_error: 'Ticket name is required' }).min(1).max(100),
|
|
223
|
+
description: z.string().max(500).optional(),
|
|
224
|
+
price: z.object({
|
|
225
|
+
amount: z.number({ required_error: 'Ticket price amount is required' }).min(0, 'Price cannot be negative').max(1000000, 'Price exceeds maximum'),
|
|
226
|
+
currency: z.string().default('BDT')
|
|
227
|
+
}),
|
|
228
|
+
quantity: z.number({ required_error: 'Ticket quantity is required' }).int('Quantity must be an integer').min(1, 'Ticket quantity must be at least 1').max(100000, 'Quantity exceeds maximum'),
|
|
229
|
+
tier: z.string().min(1).max(50).default('regular'),
|
|
230
|
+
benefits: z.array(z.string().max(200)).max(20).optional(),
|
|
231
|
+
wristbandColor: z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
232
|
+
accentColor: z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
233
|
+
isDark: z.boolean().default(false),
|
|
234
|
+
glassMode: z.boolean().default(false),
|
|
235
|
+
cornerRadius: z.number().min(0).max(50).default(32),
|
|
236
|
+
perforationStyle: z.enum(['solid', 'dashed', 'dotted']).default('solid'),
|
|
237
|
+
isVisible: z.boolean().default(true),
|
|
238
|
+
isActive: z.boolean().default(true),
|
|
213
239
|
limits: z.object({
|
|
214
|
-
minPerOrder: z.number().min(1, 'Min per order must be at least 1').
|
|
215
|
-
maxPerOrder: z.number().min(1, 'Max per order must be at least 1').
|
|
216
|
-
}).optional()
|
|
240
|
+
minPerOrder: z.number({ required_error: 'Min per order is required' }).int().min(1, 'Min per order must be at least 1').max(100),
|
|
241
|
+
maxPerOrder: z.number({ required_error: 'Max per order is required' }).int().min(1, 'Max per order must be at least 1').max(100)
|
|
242
|
+
}).optional().refine((data) => {
|
|
243
|
+
if (!data) return true;
|
|
244
|
+
return data.maxPerOrder >= data.minPerOrder;
|
|
245
|
+
}, {
|
|
246
|
+
message: 'Max per order must be greater than or equal to min per order',
|
|
247
|
+
path: ['maxPerOrder']
|
|
248
|
+
})
|
|
217
249
|
})).optional(),
|
|
218
250
|
});
|
|
219
251
|
|
|
@@ -223,14 +255,48 @@ export const liveEventEditSchema = z.object({
|
|
|
223
255
|
hostId: z.string({ required_error: 'Unauthorized' }).regex(/^[0-9a-fA-F]{24}$/),
|
|
224
256
|
|
|
225
257
|
// Live update only
|
|
226
|
-
liveUpdate: z.string().max(500, 'Live update cannot exceed 500 characters').optional(),
|
|
258
|
+
liveUpdate: z.string().min(1).max(500, 'Live update cannot exceed 500 characters').optional(),
|
|
259
|
+
|
|
260
|
+
// Gallery updates (can add event photos)
|
|
261
|
+
media: z.object({
|
|
262
|
+
gallery: z.array(z.object({
|
|
263
|
+
url: z.string().url('Invalid image URL'),
|
|
264
|
+
caption: z.string().max(200).optional(),
|
|
265
|
+
order: z.number().int().min(0).optional()
|
|
266
|
+
})).max(50, 'Cannot have more than 50 gallery images')
|
|
267
|
+
}).optional(),
|
|
227
268
|
|
|
228
269
|
// Ticket operational controls
|
|
229
270
|
tickets: z.array(z.object({
|
|
230
|
-
_id: z.string(),
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
271
|
+
_id: z.string().regex(/^[0-9a-fA-F]{24}$/, 'Invalid ticket ID').optional(), // Undefined = new tier
|
|
272
|
+
name: z.string({ required_error: 'Ticket name is required' }).min(1).max(100),
|
|
273
|
+
description: z.string().max(500).optional(),
|
|
274
|
+
price: z.object({
|
|
275
|
+
amount: z.number({ required_error: 'Ticket price amount is required' }).min(0, 'Price cannot be negative').max(1000000, 'Price exceeds maximum'),
|
|
276
|
+
currency: z.string().default('BDT')
|
|
277
|
+
}),
|
|
278
|
+
quantity: z.number({ required_error: 'Ticket quantity is required' }).int('Quantity must be an integer').min(1, 'Ticket quantity must be at least 1').max(100000, 'Quantity exceeds maximum'),
|
|
279
|
+
tier: z.string().min(1).max(50).default('regular'),
|
|
280
|
+
benefits: z.array(z.string().max(200)).max(20).optional(),
|
|
281
|
+
wristbandColor: z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
282
|
+
accentColor: z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format').default('#4f46e5'),
|
|
283
|
+
isDark: z.boolean().default(false),
|
|
284
|
+
glassMode: z.boolean().default(false),
|
|
285
|
+
cornerRadius: z.number().min(0).max(50).default(32),
|
|
286
|
+
perforationStyle: z.enum(['solid', 'dashed', 'dotted']).default('solid'),
|
|
287
|
+
isVisible: z.boolean().default(true),
|
|
288
|
+
isActive: z.boolean().default(true),
|
|
289
|
+
limits: z.object({
|
|
290
|
+
minPerOrder: z.number({ required_error: 'Min per order is required' }).int().min(1, 'Min per order must be at least 1').max(100),
|
|
291
|
+
maxPerOrder: z.number({ required_error: 'Max per order is required' }).int().min(1, 'Max per order must be at least 1').max(100)
|
|
292
|
+
}).optional().refine((data) => {
|
|
293
|
+
if (!data) return true;
|
|
294
|
+
return data.maxPerOrder >= data.minPerOrder;
|
|
295
|
+
}, {
|
|
296
|
+
message: 'Max per order must be greater than or equal to min per order',
|
|
297
|
+
path: ['maxPerOrder']
|
|
298
|
+
})
|
|
299
|
+
})).optional(),
|
|
234
300
|
});
|
|
235
301
|
|
|
236
302
|
// Ended
|
|
@@ -239,8 +305,16 @@ export const endedEventEditSchema = z.object({
|
|
|
239
305
|
hostId: z.string({ required_error: 'Unauthorized' }).regex(/^[0-9a-fA-F]{24}$/),
|
|
240
306
|
|
|
241
307
|
// Post-event content
|
|
242
|
-
recap: z.string().max(2000, 'Recap cannot exceed 2000 characters').optional(),
|
|
243
|
-
|
|
308
|
+
recap: z.string().min(10, 'Recap must be at least 10 characters').max(2000, 'Recap cannot exceed 2000 characters').optional(),
|
|
309
|
+
|
|
310
|
+
// Event photos (gallery)
|
|
311
|
+
media: z.object({
|
|
312
|
+
gallery: z.array(z.object({
|
|
313
|
+
url: z.string().url('Invalid image URL'),
|
|
314
|
+
caption: z.string().max(200).optional(),
|
|
315
|
+
order: z.number().int().min(0).optional()
|
|
316
|
+
})).max(50, 'Cannot have more than 50 event photos')
|
|
317
|
+
}).optional()
|
|
244
318
|
});
|
|
245
319
|
|
|
246
320
|
// =============================================================================
|