@lcas58/esmi-api-types 1.0.16 → 1.0.17

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.
@@ -0,0 +1,3 @@
1
+ import type { AppRouteHandler } from "../../lib/types.js";
2
+ import type { DiscoverRoute } from "./discover.routes.js";
3
+ export declare const discover: AppRouteHandler<DiscoverRoute>;
@@ -0,0 +1,15 @@
1
+ import * as HttpStatusCodes from "stoker/http-status-codes";
2
+ import { runDiscoveryAgent } from "../../agent/runner.js";
3
+ import { createDb } from "../../db/index.js";
4
+ export const discover = async (c) => {
5
+ const body = c.req.valid("json");
6
+ const { db } = createDb(c.env);
7
+ const events = await runDiscoveryAgent(c.env, db, {
8
+ sportId: body.sportId,
9
+ city: body.city,
10
+ state: body.state,
11
+ from: body.from,
12
+ to: body.to,
13
+ });
14
+ return c.json(events, HttpStatusCodes.OK);
15
+ };
@@ -0,0 +1,72 @@
1
+ declare const router: import("@hono/zod-openapi").OpenAPIHono<import("../../shared/index.js").AppBindings, {
2
+ "/events/discover": {
3
+ $post: {
4
+ input: {
5
+ json: {
6
+ sportId: string;
7
+ city: string;
8
+ state: string;
9
+ from?: string | undefined;
10
+ to?: string | undefined;
11
+ };
12
+ };
13
+ output: {
14
+ metadata: any;
15
+ id: string;
16
+ title: string;
17
+ createdAt: string;
18
+ sport: {
19
+ id: string;
20
+ name: string;
21
+ icon: string | null;
22
+ } | null;
23
+ sportId: string;
24
+ startsAt: string;
25
+ endsAt: string | null;
26
+ timezone: string;
27
+ location: {
28
+ id: string;
29
+ name: string;
30
+ formattedAddress: string;
31
+ city: string | null;
32
+ state: string | null;
33
+ latitude: number | null;
34
+ longitude: number | null;
35
+ } | null;
36
+ locationId: string | null;
37
+ externalLinkId: string | null;
38
+ source: "external" | "community";
39
+ thumbnailUrl: string | null;
40
+ createdByUserId: string | null;
41
+ creator: {
42
+ image: string | null;
43
+ id: string;
44
+ name: string;
45
+ } | null;
46
+ externalLink: {
47
+ url: string;
48
+ id: string;
49
+ domain: string;
50
+ } | null;
51
+ }[];
52
+ outputFormat: "text" | "json";
53
+ status: 200;
54
+ } | {
55
+ input: {
56
+ json: {
57
+ sportId: string;
58
+ city: string;
59
+ state: string;
60
+ from?: string | undefined;
61
+ to?: string | undefined;
62
+ };
63
+ };
64
+ output: {
65
+ message: string;
66
+ };
67
+ outputFormat: "text" | "json";
68
+ status: 401;
69
+ };
70
+ };
71
+ }, "/">;
72
+ export default router;
@@ -0,0 +1,6 @@
1
+ import { createRouter } from "../../lib/create-app.js";
2
+ import * as handlers from "./discover.handlers.js";
3
+ import * as routes from "./discover.routes.js";
4
+ const router = createRouter()
5
+ .openapi(routes.discover, handlers.discover);
6
+ export default router;
@@ -0,0 +1,333 @@
1
+ import { z } from "@hono/zod-openapi";
2
+ export declare const discoverRequestSchema: z.ZodObject<{
3
+ sportId: z.ZodString;
4
+ city: z.ZodString;
5
+ state: z.ZodString;
6
+ from: z.ZodOptional<z.ZodString>;
7
+ to: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ sportId: string;
10
+ city: string;
11
+ state: string;
12
+ from?: string | undefined;
13
+ to?: string | undefined;
14
+ }, {
15
+ sportId: string;
16
+ city: string;
17
+ state: string;
18
+ from?: string | undefined;
19
+ to?: string | undefined;
20
+ }>;
21
+ export declare const discover: {
22
+ path: "/events/discover";
23
+ method: "post";
24
+ tags: string[];
25
+ middleware: [import("hono").MiddlewareHandler];
26
+ request: {
27
+ body: {
28
+ required: boolean;
29
+ content: {
30
+ "application/json": {
31
+ schema: z.ZodObject<{
32
+ sportId: z.ZodString;
33
+ city: z.ZodString;
34
+ state: z.ZodString;
35
+ from: z.ZodOptional<z.ZodString>;
36
+ to: z.ZodOptional<z.ZodString>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ sportId: string;
39
+ city: string;
40
+ state: string;
41
+ from?: string | undefined;
42
+ to?: string | undefined;
43
+ }, {
44
+ sportId: string;
45
+ city: string;
46
+ state: string;
47
+ from?: string | undefined;
48
+ to?: string | undefined;
49
+ }>;
50
+ };
51
+ };
52
+ description: string;
53
+ };
54
+ };
55
+ responses: {
56
+ 200: {
57
+ content: {
58
+ "application/json": {
59
+ schema: z.ZodArray<z.ZodObject<z.objectUtil.extendShape<{
60
+ id: z.ZodString;
61
+ sportId: z.ZodString;
62
+ title: z.ZodString;
63
+ startsAt: z.ZodDate;
64
+ endsAt: z.ZodNullable<z.ZodDate>;
65
+ timezone: z.ZodString;
66
+ locationId: z.ZodNullable<z.ZodString>;
67
+ externalLinkId: z.ZodNullable<z.ZodString>;
68
+ source: z.ZodEnum<["external", "community"]>;
69
+ thumbnailUrl: z.ZodNullable<z.ZodString>;
70
+ metadata: z.ZodNullable<z.ZodType<string | number | boolean | {
71
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
72
+ } | (string | number | boolean | {
73
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
74
+ } | (string | number | boolean | {
75
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
76
+ } | (string | number | boolean | {
77
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
78
+ } | (string | number | boolean | {
79
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
80
+ } | (string | number | boolean | {
81
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
82
+ } | (string | number | boolean | {
83
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null;
84
+ } | (string | number | boolean | {
85
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null;
86
+ } | (string | number | boolean | {
87
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null;
88
+ } | (string | number | boolean | {
89
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null;
90
+ } | (string | number | boolean | {
91
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null;
92
+ } | (string | number | boolean | {
93
+ [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null;
94
+ } | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null, z.ZodTypeDef, string | number | boolean | {
95
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
96
+ } | (string | number | boolean | {
97
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
98
+ } | (string | number | boolean | {
99
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
100
+ } | (string | number | boolean | {
101
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
102
+ } | (string | number | boolean | {
103
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
104
+ } | (string | number | boolean | {
105
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
106
+ } | (string | number | boolean | {
107
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null;
108
+ } | (string | number | boolean | {
109
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null;
110
+ } | (string | number | boolean | {
111
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null;
112
+ } | (string | number | boolean | {
113
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null;
114
+ } | (string | number | boolean | {
115
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null;
116
+ } | (string | number | boolean | {
117
+ [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null;
118
+ } | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null>>;
119
+ createdByUserId: z.ZodNullable<z.ZodString>;
120
+ createdAt: z.ZodDate;
121
+ }, {
122
+ sport: z.ZodNullable<z.ZodObject<{
123
+ id: z.ZodString;
124
+ name: z.ZodString;
125
+ icon: z.ZodNullable<z.ZodString>;
126
+ }, "strip", z.ZodTypeAny, {
127
+ id: string;
128
+ name: string;
129
+ icon: string | null;
130
+ }, {
131
+ id: string;
132
+ name: string;
133
+ icon: string | null;
134
+ }>>;
135
+ location: z.ZodNullable<z.ZodObject<{
136
+ id: z.ZodString;
137
+ name: z.ZodString;
138
+ formattedAddress: z.ZodString;
139
+ city: z.ZodNullable<z.ZodString>;
140
+ state: z.ZodNullable<z.ZodString>;
141
+ latitude: z.ZodNullable<z.ZodNumber>;
142
+ longitude: z.ZodNullable<z.ZodNumber>;
143
+ }, "strip", z.ZodTypeAny, {
144
+ id: string;
145
+ name: string;
146
+ formattedAddress: string;
147
+ city: string | null;
148
+ state: string | null;
149
+ latitude: number | null;
150
+ longitude: number | null;
151
+ }, {
152
+ id: string;
153
+ name: string;
154
+ formattedAddress: string;
155
+ city: string | null;
156
+ state: string | null;
157
+ latitude: number | null;
158
+ longitude: number | null;
159
+ }>>;
160
+ externalLink: z.ZodNullable<z.ZodObject<{
161
+ id: z.ZodString;
162
+ url: z.ZodString;
163
+ domain: z.ZodString;
164
+ }, "strip", z.ZodTypeAny, {
165
+ url: string;
166
+ id: string;
167
+ domain: string;
168
+ }, {
169
+ url: string;
170
+ id: string;
171
+ domain: string;
172
+ }>>;
173
+ creator: z.ZodNullable<z.ZodObject<{
174
+ id: z.ZodString;
175
+ name: z.ZodString;
176
+ image: z.ZodNullable<z.ZodString>;
177
+ }, "strip", z.ZodTypeAny, {
178
+ image: string | null;
179
+ id: string;
180
+ name: string;
181
+ }, {
182
+ image: string | null;
183
+ id: string;
184
+ name: string;
185
+ }>>;
186
+ }>, z.UnknownKeysParam, z.ZodTypeAny, {
187
+ metadata: string | number | boolean | {
188
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
189
+ } | (string | number | boolean | {
190
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
191
+ } | (string | number | boolean | {
192
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
193
+ } | (string | number | boolean | {
194
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
195
+ } | (string | number | boolean | {
196
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
197
+ } | (string | number | boolean | {
198
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
199
+ } | (string | number | boolean | {
200
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null;
201
+ } | (string | number | boolean | {
202
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null;
203
+ } | (string | number | boolean | {
204
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null;
205
+ } | (string | number | boolean | {
206
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null;
207
+ } | (string | number | boolean | {
208
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null;
209
+ } | (string | number | boolean | {
210
+ [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null;
211
+ } | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
212
+ id: string;
213
+ title: string;
214
+ createdAt: Date;
215
+ sport: {
216
+ id: string;
217
+ name: string;
218
+ icon: string | null;
219
+ } | null;
220
+ sportId: string;
221
+ startsAt: Date;
222
+ endsAt: Date | null;
223
+ timezone: string;
224
+ location: {
225
+ id: string;
226
+ name: string;
227
+ formattedAddress: string;
228
+ city: string | null;
229
+ state: string | null;
230
+ latitude: number | null;
231
+ longitude: number | null;
232
+ } | null;
233
+ locationId: string | null;
234
+ externalLinkId: string | null;
235
+ source: "external" | "community";
236
+ thumbnailUrl: string | null;
237
+ createdByUserId: string | null;
238
+ creator: {
239
+ image: string | null;
240
+ id: string;
241
+ name: string;
242
+ } | null;
243
+ externalLink: {
244
+ url: string;
245
+ id: string;
246
+ domain: string;
247
+ } | null;
248
+ }, {
249
+ metadata: string | number | boolean | {
250
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
251
+ } | (string | number | boolean | {
252
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
253
+ } | (string | number | boolean | {
254
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
255
+ } | (string | number | boolean | {
256
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
257
+ } | (string | number | boolean | {
258
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
259
+ } | (string | number | boolean | {
260
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
261
+ } | (string | number | boolean | {
262
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null;
263
+ } | (string | number | boolean | {
264
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null;
265
+ } | (string | number | boolean | {
266
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null;
267
+ } | (string | number | boolean | {
268
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null;
269
+ } | (string | number | boolean | {
270
+ [key: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null;
271
+ } | (string | number | boolean | {
272
+ [key: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null;
273
+ } | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
274
+ id: string;
275
+ title: string;
276
+ createdAt: Date;
277
+ sport: {
278
+ id: string;
279
+ name: string;
280
+ icon: string | null;
281
+ } | null;
282
+ sportId: string;
283
+ startsAt: Date;
284
+ endsAt: Date | null;
285
+ timezone: string;
286
+ location: {
287
+ id: string;
288
+ name: string;
289
+ formattedAddress: string;
290
+ city: string | null;
291
+ state: string | null;
292
+ latitude: number | null;
293
+ longitude: number | null;
294
+ } | null;
295
+ locationId: string | null;
296
+ externalLinkId: string | null;
297
+ source: "external" | "community";
298
+ thumbnailUrl: string | null;
299
+ createdByUserId: string | null;
300
+ creator: {
301
+ image: string | null;
302
+ id: string;
303
+ name: string;
304
+ } | null;
305
+ externalLink: {
306
+ url: string;
307
+ id: string;
308
+ domain: string;
309
+ } | null;
310
+ }>, "many">;
311
+ };
312
+ };
313
+ description: string;
314
+ };
315
+ 401: {
316
+ content: {
317
+ "application/json": {
318
+ schema: z.ZodObject<{
319
+ message: z.ZodString;
320
+ }, "strip", z.ZodTypeAny, {
321
+ message: string;
322
+ }, {
323
+ message: string;
324
+ }>;
325
+ };
326
+ };
327
+ description: string;
328
+ };
329
+ };
330
+ } & {
331
+ getRoutingPath(): "/events/discover";
332
+ };
333
+ export type DiscoverRoute = typeof discover;
@@ -0,0 +1,26 @@
1
+ import { createRoute, z } from "@hono/zod-openapi";
2
+ import * as HttpStatusCodes from "stoker/http-status-codes";
3
+ import { jsonContent, jsonContentRequired } from "stoker/openapi/helpers";
4
+ import { unauthorizedSchema } from "../../lib/constants.js";
5
+ import { isAuth } from "../../middlewares/is-auth.js";
6
+ import { eventWithRelationsSchema } from "./schemas/index.js";
7
+ export const discoverRequestSchema = z.object({
8
+ sportId: z.string().min(1),
9
+ city: z.string().min(1),
10
+ state: z.string().min(1),
11
+ from: z.string().optional(),
12
+ to: z.string().optional(),
13
+ });
14
+ export const discover = createRoute({
15
+ path: "/events/discover",
16
+ method: "post",
17
+ tags: ["Events"],
18
+ middleware: [isAuth()],
19
+ request: {
20
+ body: jsonContentRequired(discoverRequestSchema, "Event discovery criteria"),
21
+ },
22
+ responses: {
23
+ [HttpStatusCodes.OK]: jsonContent(z.array(eventWithRelationsSchema), "Discovered events"),
24
+ [HttpStatusCodes.UNAUTHORIZED]: jsonContent(unauthorizedSchema, "Unauthorized"),
25
+ },
26
+ });
@@ -1,4 +1,4 @@
1
- import { and, eq, gte, inArray, lte } from "drizzle-orm";
1
+ import { and, eq, gte, ilike, inArray, isNotNull, lte } from "drizzle-orm";
2
2
  import * as HttpStatusCodes from "stoker/http-status-codes";
3
3
  import * as HttpStatusPhrases from "stoker/http-status-phrases";
4
4
  import { createDb } from "../../db/index.js";
@@ -27,14 +27,14 @@ export const list = async (c) => {
27
27
  // Time filtering (recommended for feed relevance)
28
28
  whereConditions.push(gte(event.startsAt, from));
29
29
  whereConditions.push(lte(event.startsAt, to));
30
- // City/state → locationIds → events
30
+ // City/state → locationIds → events (case-insensitive)
31
31
  if (city || state) {
32
32
  const locationConditions = [];
33
33
  if (city) {
34
- locationConditions.push(eq(location.city, city));
34
+ locationConditions.push(ilike(location.city, city));
35
35
  }
36
36
  if (state) {
37
- locationConditions.push(eq(location.state, state));
37
+ locationConditions.push(ilike(location.state, state));
38
38
  }
39
39
  const locations = await db.query.location.findMany({
40
40
  where: and(...locationConditions),
@@ -45,6 +45,7 @@ export const list = async (c) => {
45
45
  return c.json([], HttpStatusCodes.OK);
46
46
  }
47
47
  const locationIds = locations.map((l) => l.id);
48
+ whereConditions.push(isNotNull(event.locationId));
48
49
  whereConditions.push(inArray(event.locationId, locationIds));
49
50
  }
50
51
  const events = await db.query.event.findMany({
@@ -11,17 +11,17 @@ export declare const list: {
11
11
  state: z.ZodOptional<z.ZodString>;
12
12
  from: z.ZodOptional<z.ZodDate>;
13
13
  to: z.ZodOptional<z.ZodDate>;
14
- limit: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
15
- offset: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
14
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
15
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
16
16
  }, "strip", z.ZodTypeAny, {
17
+ limit: number;
18
+ offset: number;
17
19
  sportId?: string | undefined;
18
20
  city?: string | undefined;
19
21
  state?: string | undefined;
20
22
  source?: "external" | "community" | undefined;
21
23
  from?: Date | undefined;
22
24
  to?: Date | undefined;
23
- limit?: number | undefined;
24
- offset?: number | undefined;
25
25
  }, {
26
26
  sportId?: string | undefined;
27
27
  city?: string | undefined;
@@ -258,17 +258,17 @@ export declare const listEventsQuerySchema: z.ZodObject<{
258
258
  state: z.ZodOptional<z.ZodString>;
259
259
  from: z.ZodOptional<z.ZodDate>;
260
260
  to: z.ZodOptional<z.ZodDate>;
261
- limit: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
262
- offset: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
261
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
262
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
263
263
  }, "strip", z.ZodTypeAny, {
264
+ limit: number;
265
+ offset: number;
264
266
  sportId?: string | undefined;
265
267
  city?: string | undefined;
266
268
  state?: string | undefined;
267
269
  source?: "external" | "community" | undefined;
268
270
  from?: Date | undefined;
269
271
  to?: Date | undefined;
270
- limit?: number | undefined;
271
- offset?: number | undefined;
272
272
  }, {
273
273
  sportId?: string | undefined;
274
274
  city?: string | undefined;
@@ -33,6 +33,6 @@ export const listEventsQuerySchema = z.object({
33
33
  state: z.string().optional(),
34
34
  from: z.coerce.date().optional(),
35
35
  to: z.coerce.date().optional(),
36
- limit: z.coerce.number().min(1).max(100).default(20).optional(),
37
- offset: z.coerce.number().min(0).default(0).optional(),
36
+ limit: z.coerce.number().min(1).max(100).optional().default(20),
37
+ offset: z.coerce.number().min(0).optional().default(0),
38
38
  });
@@ -1,6 +1,13 @@
1
1
  declare const router: import("@hono/zod-openapi").OpenAPIHono<import("../../shared/index.js").AppBindings, {
2
2
  "/me": {
3
3
  $get: {
4
+ input: {};
5
+ output: {
6
+ message: string;
7
+ };
8
+ outputFormat: "text" | "json";
9
+ status: 401;
10
+ } | {
4
11
  input: {};
5
12
  output: {
6
13
  image: string | null;
@@ -18,13 +25,6 @@ declare const router: import("@hono/zod-openapi").OpenAPIHono<import("../../shar
18
25
  };
19
26
  outputFormat: "text" | "json";
20
27
  status: 200;
21
- } | {
22
- input: {};
23
- output: {
24
- message: string;
25
- };
26
- outputFormat: "text" | "json";
27
- status: 401;
28
28
  };
29
29
  };
30
30
  }, "/">;
@@ -3,6 +3,7 @@ export declare const me: {
3
3
  path: "/me";
4
4
  method: "get";
5
5
  tags: string[];
6
+ middleware: import("hono").MiddlewareHandler[];
6
7
  responses: {
7
8
  200: {
8
9
  content: {
@@ -2,6 +2,7 @@ import { createRoute, z } from "@hono/zod-openapi";
2
2
  import * as HttpStatusCodes from "stoker/http-status-codes";
3
3
  import { jsonContent } from "stoker/openapi/helpers";
4
4
  import { unauthorizedSchema } from "../../lib/constants.js";
5
+ import { isAuth } from "../../middlewares/is-auth.js";
5
6
  const userProfileSchema = z.object({
6
7
  id: z.string(),
7
8
  name: z.string(),
@@ -20,6 +21,7 @@ export const me = createRoute({
20
21
  path: "/me",
21
22
  method: "get",
22
23
  tags: ["Users"],
24
+ middleware: [isAuth()],
23
25
  responses: {
24
26
  [HttpStatusCodes.OK]: jsonContent(userProfileSchema, "Current user profile"),
25
27
  [HttpStatusCodes.UNAUTHORIZED]: jsonContent(unauthorizedSchema, "Not authenticated"),
@@ -1,7 +1,8 @@
1
+ import type discover from "../routes/events/discover.index.js";
1
2
  import type events from "../routes/events/events.index.js";
2
3
  import type index from "../routes/index.route.js";
3
4
  import type marketing from "../routes/marketing/marketing.index.js";
4
5
  import type sports from "../routes/sports/sports.index.js";
5
6
  import type users from "../routes/users/users.index.js";
6
7
  import type webhooks from "../routes/webhooks/webhooks.index.js";
7
- export type AppType = typeof index | typeof events | typeof sports | typeof users | typeof marketing | typeof webhooks;
8
+ export type AppType = typeof index | typeof events | typeof discover | typeof sports | typeof users | typeof marketing | typeof webhooks;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lcas58/esmi-api-types",
3
3
  "type": "module",
4
- "version": "1.0.16",
4
+ "version": "1.0.17",
5
5
  "license": "MIT",
6
6
  "exports": {
7
7
  ".": {
@@ -65,7 +65,7 @@
65
65
  "tsx": "^4.19.1",
66
66
  "typescript": "^5.9.3",
67
67
  "vitest": "^2.1.2",
68
- "wrangler": "^4.34.0",
68
+ "wrangler": "^4.68.0",
69
69
  "zod": "^3.25.76"
70
70
  }
71
71
  }