@subdynamics/event-hub-api-types 1.0.0
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/generated.d.ts +508 -0
- package/dist/generated.d.ts.map +1 -0
- package/dist/generated.js +5 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/mappers.d.ts +73 -0
- package/dist/mappers.d.ts.map +1 -0
- package/dist/mappers.js +63 -0
- package/package.json +36 -0
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was auto-generated by openapi-typescript.
|
|
3
|
+
* Do not make direct changes to the file.
|
|
4
|
+
*/
|
|
5
|
+
export interface paths {
|
|
6
|
+
"/events/permalink/{hostSlug}/{eventSlug}": {
|
|
7
|
+
parameters: {
|
|
8
|
+
query?: never;
|
|
9
|
+
header?: never;
|
|
10
|
+
path?: never;
|
|
11
|
+
cookie?: never;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Get event by permalink
|
|
15
|
+
* @description Fetches a single published event by its canonical permalink (host slug + event slug).
|
|
16
|
+
*/
|
|
17
|
+
get: operations["getEventByPermalink"];
|
|
18
|
+
put?: never;
|
|
19
|
+
post?: never;
|
|
20
|
+
delete?: never;
|
|
21
|
+
options?: never;
|
|
22
|
+
head?: never;
|
|
23
|
+
patch?: never;
|
|
24
|
+
trace?: never;
|
|
25
|
+
};
|
|
26
|
+
"/events/{id}": {
|
|
27
|
+
parameters: {
|
|
28
|
+
query?: never;
|
|
29
|
+
header?: never;
|
|
30
|
+
path?: never;
|
|
31
|
+
cookie?: never;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Get event by ID
|
|
35
|
+
* @description Fetches a single published event by its UUID.
|
|
36
|
+
*/
|
|
37
|
+
get: operations["getEventById"];
|
|
38
|
+
put?: never;
|
|
39
|
+
post?: never;
|
|
40
|
+
delete?: never;
|
|
41
|
+
options?: never;
|
|
42
|
+
head?: never;
|
|
43
|
+
patch?: never;
|
|
44
|
+
trace?: never;
|
|
45
|
+
};
|
|
46
|
+
"/events": {
|
|
47
|
+
parameters: {
|
|
48
|
+
query?: never;
|
|
49
|
+
header?: never;
|
|
50
|
+
path?: never;
|
|
51
|
+
cookie?: never;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* List events
|
|
55
|
+
* @description Returns a cursor-paginated list of published, public events matching the given filters.
|
|
56
|
+
*/
|
|
57
|
+
get: operations["listEvents"];
|
|
58
|
+
put?: never;
|
|
59
|
+
post?: never;
|
|
60
|
+
delete?: never;
|
|
61
|
+
options?: never;
|
|
62
|
+
head?: never;
|
|
63
|
+
patch?: never;
|
|
64
|
+
trace?: never;
|
|
65
|
+
};
|
|
66
|
+
"/regions/{region}/hosts": {
|
|
67
|
+
parameters: {
|
|
68
|
+
query?: never;
|
|
69
|
+
header?: never;
|
|
70
|
+
path?: never;
|
|
71
|
+
cookie?: never;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* List hosts in a region
|
|
75
|
+
* @description Returns all hosts belonging to the specified region, optionally filtered by host type.
|
|
76
|
+
*/
|
|
77
|
+
get: operations["listRegionHosts"];
|
|
78
|
+
put?: never;
|
|
79
|
+
post?: never;
|
|
80
|
+
delete?: never;
|
|
81
|
+
options?: never;
|
|
82
|
+
head?: never;
|
|
83
|
+
patch?: never;
|
|
84
|
+
trace?: never;
|
|
85
|
+
};
|
|
86
|
+
"/regions/{region}/venues": {
|
|
87
|
+
parameters: {
|
|
88
|
+
query?: never;
|
|
89
|
+
header?: never;
|
|
90
|
+
path?: never;
|
|
91
|
+
cookie?: never;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* List venues in a region
|
|
95
|
+
* @description Returns all venues belonging to the specified region, sorted by venue name.
|
|
96
|
+
*/
|
|
97
|
+
get: operations["listRegionVenues"];
|
|
98
|
+
put?: never;
|
|
99
|
+
post?: never;
|
|
100
|
+
delete?: never;
|
|
101
|
+
options?: never;
|
|
102
|
+
head?: never;
|
|
103
|
+
patch?: never;
|
|
104
|
+
trace?: never;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export type webhooks = Record<string, never>;
|
|
108
|
+
export interface components {
|
|
109
|
+
schemas: {
|
|
110
|
+
/**
|
|
111
|
+
* Event
|
|
112
|
+
* @description Full event record as returned by GET /api/v1/events and GET /api/v1/events/:id.
|
|
113
|
+
*/
|
|
114
|
+
ApiEventDto: {
|
|
115
|
+
/**
|
|
116
|
+
* Format: uuid
|
|
117
|
+
* @description UUID of the event record.
|
|
118
|
+
* @example c3d4e5f6-a7b8-9012-cdef-123456789012
|
|
119
|
+
*/
|
|
120
|
+
id: string;
|
|
121
|
+
/**
|
|
122
|
+
* @description Display title of the event.
|
|
123
|
+
* @example Fleet Foxes Live
|
|
124
|
+
*/
|
|
125
|
+
title: string;
|
|
126
|
+
/** @description Long-form description; may be null. */
|
|
127
|
+
description?: string | null;
|
|
128
|
+
/**
|
|
129
|
+
* Format: date-time
|
|
130
|
+
* @description Event start time, normalised to UTC and formatted as ISO 8601 (e.g. "2026-03-22T03:00:00+00:00").
|
|
131
|
+
* @example 2026-03-22T03:00:00+00:00
|
|
132
|
+
*/
|
|
133
|
+
startsAtUtc: string;
|
|
134
|
+
/**
|
|
135
|
+
* Format: date-time
|
|
136
|
+
* @description Event end time, normalised to UTC (same format as startsAtUtc).
|
|
137
|
+
* @example 2026-03-22T06:00:00+00:00
|
|
138
|
+
*/
|
|
139
|
+
endsAtUtc: string;
|
|
140
|
+
/**
|
|
141
|
+
* @description IANA timezone identifier for the event's local time (e.g. "America/Los_Angeles").
|
|
142
|
+
* @example America/Los_Angeles
|
|
143
|
+
*/
|
|
144
|
+
timezone: string;
|
|
145
|
+
/**
|
|
146
|
+
* @description Region key (e.g. "SEA").
|
|
147
|
+
* @example SEA
|
|
148
|
+
*/
|
|
149
|
+
regionKey: string;
|
|
150
|
+
/**
|
|
151
|
+
* Format: uuid
|
|
152
|
+
* @description UUID of the venue; may be null for virtual events.
|
|
153
|
+
*/
|
|
154
|
+
venueId?: string | null;
|
|
155
|
+
/**
|
|
156
|
+
* @description Audience visibility of the event.
|
|
157
|
+
* @example public
|
|
158
|
+
* @enum {string}
|
|
159
|
+
*/
|
|
160
|
+
visibility: "public" | "private" | "unlisted";
|
|
161
|
+
/**
|
|
162
|
+
* @description The event-portion of the permalink (e.g. "fleet-foxes-live-20260321").
|
|
163
|
+
* @example fleet-foxes-live-20260321
|
|
164
|
+
*/
|
|
165
|
+
permalinkSlug: string;
|
|
166
|
+
/**
|
|
167
|
+
* @description Full canonical permalink path (e.g. "/the-showbox/fleet-foxes-live-20260321").
|
|
168
|
+
* @example /the-showbox/fleet-foxes-live-20260321
|
|
169
|
+
*/
|
|
170
|
+
permalinkPath: string;
|
|
171
|
+
/**
|
|
172
|
+
* Format: uri
|
|
173
|
+
* @description URL of the hero/banner image; may be null.
|
|
174
|
+
*/
|
|
175
|
+
heroImageUrl?: string | null;
|
|
176
|
+
/**
|
|
177
|
+
* @description Publication status.
|
|
178
|
+
* @example published
|
|
179
|
+
* @enum {string}
|
|
180
|
+
*/
|
|
181
|
+
status: "draft" | "published" | "canceled";
|
|
182
|
+
/** @description Venue summary; null when no venue is associated or the relation is not loaded. */
|
|
183
|
+
venue?: components["schemas"]["ApiVenueSummaryDto"] | null;
|
|
184
|
+
/** @description Hosts (organizers, performers, etc.) attached to the event. */
|
|
185
|
+
hosts: components["schemas"]["ApiHostSummaryDto"][];
|
|
186
|
+
/**
|
|
187
|
+
* @description Category slugs attached to the event (e.g. ["live-music", "indie"]).
|
|
188
|
+
* @example [
|
|
189
|
+
* "live-music",
|
|
190
|
+
* "indie"
|
|
191
|
+
* ]
|
|
192
|
+
*/
|
|
193
|
+
categories: string[];
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Host Summary
|
|
197
|
+
* @description Summary of a host (venue, band, promoter, or individual) attached to an event or returned from a region hosts listing.
|
|
198
|
+
*/
|
|
199
|
+
ApiHostSummaryDto: {
|
|
200
|
+
/**
|
|
201
|
+
* Format: uuid
|
|
202
|
+
* @description UUID of the host record.
|
|
203
|
+
* @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
|
|
204
|
+
*/
|
|
205
|
+
id: string;
|
|
206
|
+
/**
|
|
207
|
+
* @description URL-safe slug identifying the host.
|
|
208
|
+
* @example the-showbox
|
|
209
|
+
*/
|
|
210
|
+
slug: string;
|
|
211
|
+
/**
|
|
212
|
+
* @description Display name of the host.
|
|
213
|
+
* @example The Showbox
|
|
214
|
+
*/
|
|
215
|
+
name: string;
|
|
216
|
+
/**
|
|
217
|
+
* @description Category of host.
|
|
218
|
+
* @example venue
|
|
219
|
+
* @enum {string}
|
|
220
|
+
*/
|
|
221
|
+
hostType: "venue" | "band" | "promoter" | "individual";
|
|
222
|
+
/**
|
|
223
|
+
* @description Region the host belongs to (e.g. "SEA").
|
|
224
|
+
* @example SEA
|
|
225
|
+
*/
|
|
226
|
+
regionKey: string;
|
|
227
|
+
/**
|
|
228
|
+
* @description Role of this host on the event (e.g. "organizer", "performer"). Null when returned outside of an event context (e.g. GET /regions/:region/hosts).
|
|
229
|
+
* @example organizer
|
|
230
|
+
*/
|
|
231
|
+
role: string | null;
|
|
232
|
+
};
|
|
233
|
+
/**
|
|
234
|
+
* Venue Summary
|
|
235
|
+
* @description Summary of a venue, embedded inside an event response or returned from a region venues listing.
|
|
236
|
+
*/
|
|
237
|
+
ApiVenueSummaryDto: {
|
|
238
|
+
/**
|
|
239
|
+
* Format: uuid
|
|
240
|
+
* @description UUID of the venue record.
|
|
241
|
+
* @example b2c3d4e5-f6a7-8901-bcde-f12345678901
|
|
242
|
+
*/
|
|
243
|
+
id: string;
|
|
244
|
+
/**
|
|
245
|
+
* @description Display name of the venue (sourced from the venue's host record).
|
|
246
|
+
* @example The Showbox
|
|
247
|
+
*/
|
|
248
|
+
name: string;
|
|
249
|
+
/**
|
|
250
|
+
* @description Street address.
|
|
251
|
+
* @example 1426 1st Ave
|
|
252
|
+
*/
|
|
253
|
+
address: string;
|
|
254
|
+
/**
|
|
255
|
+
* @description City name.
|
|
256
|
+
* @example Seattle
|
|
257
|
+
*/
|
|
258
|
+
city: string;
|
|
259
|
+
/**
|
|
260
|
+
* @description State or province abbreviation.
|
|
261
|
+
* @example WA
|
|
262
|
+
*/
|
|
263
|
+
state: string;
|
|
264
|
+
/**
|
|
265
|
+
* @description Postal code; may be null.
|
|
266
|
+
* @example 98101
|
|
267
|
+
*/
|
|
268
|
+
zip?: string | null;
|
|
269
|
+
/**
|
|
270
|
+
* Format: double
|
|
271
|
+
* @description Latitude in decimal degrees; null if unknown.
|
|
272
|
+
* @example 47.608
|
|
273
|
+
*/
|
|
274
|
+
lat?: number | null;
|
|
275
|
+
/**
|
|
276
|
+
* Format: double
|
|
277
|
+
* @description Longitude in decimal degrees; null if unknown.
|
|
278
|
+
* @example -122.342
|
|
279
|
+
*/
|
|
280
|
+
lng?: number | null;
|
|
281
|
+
/**
|
|
282
|
+
* @description IANA timezone identifier for the venue (e.g. "America/Los_Angeles").
|
|
283
|
+
* @example America/Los_Angeles
|
|
284
|
+
*/
|
|
285
|
+
timezone: string;
|
|
286
|
+
/**
|
|
287
|
+
* @description Region the venue belongs to (e.g. "SEA").
|
|
288
|
+
* @example SEA
|
|
289
|
+
*/
|
|
290
|
+
regionKey: string;
|
|
291
|
+
};
|
|
292
|
+
};
|
|
293
|
+
responses: never;
|
|
294
|
+
parameters: never;
|
|
295
|
+
requestBodies: never;
|
|
296
|
+
headers: never;
|
|
297
|
+
pathItems: never;
|
|
298
|
+
}
|
|
299
|
+
export type $defs = Record<string, never>;
|
|
300
|
+
export interface operations {
|
|
301
|
+
getEventByPermalink: {
|
|
302
|
+
parameters: {
|
|
303
|
+
query?: never;
|
|
304
|
+
header?: never;
|
|
305
|
+
path: {
|
|
306
|
+
/** @description URL-safe slug of the host (e.g. "the-showbox"). */
|
|
307
|
+
hostSlug: string;
|
|
308
|
+
/** @description URL-safe slug of the event (e.g. "fleet-foxes-live-20260321"). */
|
|
309
|
+
eventSlug: string;
|
|
310
|
+
};
|
|
311
|
+
cookie?: never;
|
|
312
|
+
};
|
|
313
|
+
requestBody?: never;
|
|
314
|
+
responses: {
|
|
315
|
+
/** @description Event found. */
|
|
316
|
+
200: {
|
|
317
|
+
headers: {
|
|
318
|
+
[name: string]: unknown;
|
|
319
|
+
};
|
|
320
|
+
content: {
|
|
321
|
+
"application/json": {
|
|
322
|
+
data?: components["schemas"]["ApiEventDto"];
|
|
323
|
+
};
|
|
324
|
+
};
|
|
325
|
+
};
|
|
326
|
+
/** @description Event not found. */
|
|
327
|
+
404: {
|
|
328
|
+
headers: {
|
|
329
|
+
[name: string]: unknown;
|
|
330
|
+
};
|
|
331
|
+
content: {
|
|
332
|
+
"application/json": {
|
|
333
|
+
/** @example Event not found. */
|
|
334
|
+
message?: string;
|
|
335
|
+
};
|
|
336
|
+
};
|
|
337
|
+
};
|
|
338
|
+
};
|
|
339
|
+
};
|
|
340
|
+
getEventById: {
|
|
341
|
+
parameters: {
|
|
342
|
+
query?: never;
|
|
343
|
+
header?: never;
|
|
344
|
+
path: {
|
|
345
|
+
/** @description UUID of the event. */
|
|
346
|
+
id: string;
|
|
347
|
+
};
|
|
348
|
+
cookie?: never;
|
|
349
|
+
};
|
|
350
|
+
requestBody?: never;
|
|
351
|
+
responses: {
|
|
352
|
+
/** @description Event found. */
|
|
353
|
+
200: {
|
|
354
|
+
headers: {
|
|
355
|
+
[name: string]: unknown;
|
|
356
|
+
};
|
|
357
|
+
content: {
|
|
358
|
+
"application/json": {
|
|
359
|
+
data?: components["schemas"]["ApiEventDto"];
|
|
360
|
+
};
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
/** @description Event not found. */
|
|
364
|
+
404: {
|
|
365
|
+
headers: {
|
|
366
|
+
[name: string]: unknown;
|
|
367
|
+
};
|
|
368
|
+
content: {
|
|
369
|
+
"application/json": {
|
|
370
|
+
/** @example Event not found. */
|
|
371
|
+
message?: string;
|
|
372
|
+
};
|
|
373
|
+
};
|
|
374
|
+
};
|
|
375
|
+
};
|
|
376
|
+
};
|
|
377
|
+
listEvents: {
|
|
378
|
+
parameters: {
|
|
379
|
+
query: {
|
|
380
|
+
/** @description Region key to filter events by (e.g. "SEA"). */
|
|
381
|
+
region: string;
|
|
382
|
+
/** @description Filter events starting at or after this ISO 8601 date/time. */
|
|
383
|
+
start?: string;
|
|
384
|
+
/** @description Filter events starting at or before this ISO 8601 date/time. */
|
|
385
|
+
end?: string;
|
|
386
|
+
/** @description Filter by category slug. */
|
|
387
|
+
category?: string;
|
|
388
|
+
/** @description Filter by host UUID. */
|
|
389
|
+
hostId?: string;
|
|
390
|
+
/** @description Filter by venue UUID. */
|
|
391
|
+
venueId?: string;
|
|
392
|
+
/** @description Opaque pagination cursor returned by a previous response. */
|
|
393
|
+
cursor?: string;
|
|
394
|
+
};
|
|
395
|
+
header?: never;
|
|
396
|
+
path?: never;
|
|
397
|
+
cookie?: never;
|
|
398
|
+
};
|
|
399
|
+
requestBody?: never;
|
|
400
|
+
responses: {
|
|
401
|
+
/** @description Paginated list of events. */
|
|
402
|
+
200: {
|
|
403
|
+
headers: {
|
|
404
|
+
[name: string]: unknown;
|
|
405
|
+
};
|
|
406
|
+
content: {
|
|
407
|
+
"application/json": {
|
|
408
|
+
data: components["schemas"]["ApiEventDto"][];
|
|
409
|
+
links: {
|
|
410
|
+
first?: string | null;
|
|
411
|
+
last?: string | null;
|
|
412
|
+
prev?: string | null;
|
|
413
|
+
next?: string | null;
|
|
414
|
+
};
|
|
415
|
+
meta: {
|
|
416
|
+
path?: string;
|
|
417
|
+
per_page?: number;
|
|
418
|
+
next_cursor?: string | null;
|
|
419
|
+
prev_cursor?: string | null;
|
|
420
|
+
};
|
|
421
|
+
};
|
|
422
|
+
};
|
|
423
|
+
};
|
|
424
|
+
/** @description Validation error (e.g. missing required "region" parameter). */
|
|
425
|
+
422: {
|
|
426
|
+
headers: {
|
|
427
|
+
[name: string]: unknown;
|
|
428
|
+
};
|
|
429
|
+
content: {
|
|
430
|
+
"application/json": {
|
|
431
|
+
message?: string;
|
|
432
|
+
errors?: {
|
|
433
|
+
[key: string]: string[];
|
|
434
|
+
};
|
|
435
|
+
};
|
|
436
|
+
};
|
|
437
|
+
};
|
|
438
|
+
};
|
|
439
|
+
};
|
|
440
|
+
listRegionHosts: {
|
|
441
|
+
parameters: {
|
|
442
|
+
query?: {
|
|
443
|
+
/** @description Filter hosts by type. */
|
|
444
|
+
type?: "venue" | "band" | "promoter" | "individual";
|
|
445
|
+
};
|
|
446
|
+
header?: never;
|
|
447
|
+
path: {
|
|
448
|
+
/** @description Region key (e.g. "SEA"). */
|
|
449
|
+
region: string;
|
|
450
|
+
};
|
|
451
|
+
cookie?: never;
|
|
452
|
+
};
|
|
453
|
+
requestBody?: never;
|
|
454
|
+
responses: {
|
|
455
|
+
/** @description List of hosts. */
|
|
456
|
+
200: {
|
|
457
|
+
headers: {
|
|
458
|
+
[name: string]: unknown;
|
|
459
|
+
};
|
|
460
|
+
content: {
|
|
461
|
+
"application/json": {
|
|
462
|
+
data?: components["schemas"]["ApiHostSummaryDto"][];
|
|
463
|
+
};
|
|
464
|
+
};
|
|
465
|
+
};
|
|
466
|
+
/** @description Validation error (e.g. invalid "type" value). */
|
|
467
|
+
422: {
|
|
468
|
+
headers: {
|
|
469
|
+
[name: string]: unknown;
|
|
470
|
+
};
|
|
471
|
+
content: {
|
|
472
|
+
"application/json": {
|
|
473
|
+
message?: string;
|
|
474
|
+
errors?: {
|
|
475
|
+
[key: string]: string[];
|
|
476
|
+
};
|
|
477
|
+
};
|
|
478
|
+
};
|
|
479
|
+
};
|
|
480
|
+
};
|
|
481
|
+
};
|
|
482
|
+
listRegionVenues: {
|
|
483
|
+
parameters: {
|
|
484
|
+
query?: never;
|
|
485
|
+
header?: never;
|
|
486
|
+
path: {
|
|
487
|
+
/** @description Region key (e.g. "SEA"). */
|
|
488
|
+
region: string;
|
|
489
|
+
};
|
|
490
|
+
cookie?: never;
|
|
491
|
+
};
|
|
492
|
+
requestBody?: never;
|
|
493
|
+
responses: {
|
|
494
|
+
/** @description List of venues. */
|
|
495
|
+
200: {
|
|
496
|
+
headers: {
|
|
497
|
+
[name: string]: unknown;
|
|
498
|
+
};
|
|
499
|
+
content: {
|
|
500
|
+
"application/json": {
|
|
501
|
+
data?: components["schemas"]["ApiVenueSummaryDto"][];
|
|
502
|
+
};
|
|
503
|
+
};
|
|
504
|
+
};
|
|
505
|
+
};
|
|
506
|
+
};
|
|
507
|
+
}
|
|
508
|
+
//# sourceMappingURL=generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../src/generated.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @subdynamics/event-hub-api-types
|
|
3
|
+
*
|
|
4
|
+
* TypeScript types and mapper functions generated from the Event Hub API
|
|
5
|
+
* OpenAPI spec (docs/openapi.yaml). Re-run `npm run generate` in this package
|
|
6
|
+
* to regenerate src/generated.ts from the latest spec.
|
|
7
|
+
*
|
|
8
|
+
* Usage (types only):
|
|
9
|
+
* import type { ApiEventDto, ApiHostSummaryDto, ApiVenueSummaryDto } from '@subdynamics/event-hub-api-types';
|
|
10
|
+
*
|
|
11
|
+
* Usage (mappers):
|
|
12
|
+
* import { mapEventDto, mapHostSummaryDto, mapVenueSummaryDto } from '@subdynamics/event-hub-api-types';
|
|
13
|
+
* // or via the dedicated sub-path:
|
|
14
|
+
* import { mapEventDto } from '@subdynamics/event-hub-api-types/mappers';
|
|
15
|
+
*/
|
|
16
|
+
export type { components, operations, paths } from './generated.js';
|
|
17
|
+
import type { components } from './generated.js';
|
|
18
|
+
/** Full event record as returned by GET /api/v1/events and GET /api/v1/events/:id. */
|
|
19
|
+
export type ApiEventDto = components['schemas']['ApiEventDto'];
|
|
20
|
+
/** Summary of a host attached to an event or returned from a region hosts listing. */
|
|
21
|
+
export type ApiHostSummaryDto = components['schemas']['ApiHostSummaryDto'];
|
|
22
|
+
/** Summary of a venue embedded inside an event response or a region venues listing. */
|
|
23
|
+
export type ApiVenueSummaryDto = components['schemas']['ApiVenueSummaryDto'];
|
|
24
|
+
export type { HostItem, VenueItem, EventItem } from './mappers.js';
|
|
25
|
+
export { mapHostSummaryDto, mapVenueSummaryDto, mapEventDto } from './mappers.js';
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,sFAAsF;AACtF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;AAE/D,sFAAsF;AACtF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAE3E,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAI7E,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @subdynamics/event-hub-api-types
|
|
3
|
+
*
|
|
4
|
+
* TypeScript types and mapper functions generated from the Event Hub API
|
|
5
|
+
* OpenAPI spec (docs/openapi.yaml). Re-run `npm run generate` in this package
|
|
6
|
+
* to regenerate src/generated.ts from the latest spec.
|
|
7
|
+
*
|
|
8
|
+
* Usage (types only):
|
|
9
|
+
* import type { ApiEventDto, ApiHostSummaryDto, ApiVenueSummaryDto } from '@subdynamics/event-hub-api-types';
|
|
10
|
+
*
|
|
11
|
+
* Usage (mappers):
|
|
12
|
+
* import { mapEventDto, mapHostSummaryDto, mapVenueSummaryDto } from '@subdynamics/event-hub-api-types';
|
|
13
|
+
* // or via the dedicated sub-path:
|
|
14
|
+
* import { mapEventDto } from '@subdynamics/event-hub-api-types/mappers';
|
|
15
|
+
*/
|
|
16
|
+
export { mapHostSummaryDto, mapVenueSummaryDto, mapEventDto } from './mappers.js';
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mapper functions: convert raw API DTOs (generated from the OpenAPI spec) to
|
|
3
|
+
* the internal data model defined below.
|
|
4
|
+
*
|
|
5
|
+
* Import from the published package:
|
|
6
|
+
* import { mapEventDto, mapHostSummaryDto, mapVenueSummaryDto } from '@subdynamics/event-hub-api-types/mappers';
|
|
7
|
+
* // or, using the barrel:
|
|
8
|
+
* import { mapEventDto } from '@subdynamics/event-hub-api-types';
|
|
9
|
+
*/
|
|
10
|
+
import type { components } from './generated.js';
|
|
11
|
+
export type ApiEventDto = components['schemas']['ApiEventDto'];
|
|
12
|
+
export type ApiHostSummaryDto = components['schemas']['ApiHostSummaryDto'];
|
|
13
|
+
export type ApiVenueSummaryDto = components['schemas']['ApiVenueSummaryDto'];
|
|
14
|
+
/** Internal representation of a host used throughout the frontend. */
|
|
15
|
+
export interface HostItem {
|
|
16
|
+
id: string;
|
|
17
|
+
slug: string;
|
|
18
|
+
name: string;
|
|
19
|
+
hostType: 'venue' | 'band' | 'promoter' | 'individual';
|
|
20
|
+
regionKey: string;
|
|
21
|
+
/** Role on the associated event, if applicable. */
|
|
22
|
+
role: string | null;
|
|
23
|
+
}
|
|
24
|
+
/** Internal representation of a venue used throughout the frontend. */
|
|
25
|
+
export interface VenueItem {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
address: string;
|
|
29
|
+
city: string;
|
|
30
|
+
state: string;
|
|
31
|
+
zip: string | null;
|
|
32
|
+
lat: number | null;
|
|
33
|
+
lng: number | null;
|
|
34
|
+
timezone: string;
|
|
35
|
+
regionKey: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Internal representation of an event used throughout the frontend.
|
|
39
|
+
*
|
|
40
|
+
* Timestamps are stored as `Date` objects so consumers can call `.toLocaleString()`
|
|
41
|
+
* etc. without worrying about ISO parsing.
|
|
42
|
+
*/
|
|
43
|
+
export interface EventItem {
|
|
44
|
+
id: string;
|
|
45
|
+
title: string;
|
|
46
|
+
description: string | null;
|
|
47
|
+
/** Parsed UTC start time. */
|
|
48
|
+
startsAt: Date;
|
|
49
|
+
/** Parsed UTC end time. */
|
|
50
|
+
endsAt: Date;
|
|
51
|
+
timezone: string;
|
|
52
|
+
regionKey: string;
|
|
53
|
+
venueId: string | null;
|
|
54
|
+
visibility: 'public' | 'private' | 'unlisted';
|
|
55
|
+
permalinkSlug: string;
|
|
56
|
+
permalinkPath: string;
|
|
57
|
+
heroImageUrl: string | null;
|
|
58
|
+
status: 'draft' | 'published' | 'canceled';
|
|
59
|
+
venue: VenueItem | null;
|
|
60
|
+
hosts: HostItem[];
|
|
61
|
+
categories: string[];
|
|
62
|
+
}
|
|
63
|
+
/** Maps an {@link ApiHostSummaryDto} to an internal {@link HostItem}. */
|
|
64
|
+
export declare function mapHostSummaryDto(dto: ApiHostSummaryDto): HostItem;
|
|
65
|
+
/** Maps an {@link ApiVenueSummaryDto} to an internal {@link VenueItem}. */
|
|
66
|
+
export declare function mapVenueSummaryDto(dto: ApiVenueSummaryDto): VenueItem;
|
|
67
|
+
/**
|
|
68
|
+
* Maps an {@link ApiEventDto} to an internal {@link EventItem}.
|
|
69
|
+
*
|
|
70
|
+
* ISO 8601 timestamp strings are parsed into `Date` objects.
|
|
71
|
+
*/
|
|
72
|
+
export declare function mapEventDto(dto: ApiEventDto): EventItem;
|
|
73
|
+
//# sourceMappingURL=mappers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../src/mappers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMjD,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;AAC/D,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC3E,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAM7E,sEAAsE;AACtE,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6BAA6B;IAC7B,QAAQ,EAAE,IAAI,CAAC;IACf,2BAA2B;IAC3B,MAAM,EAAE,IAAI,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;IAC3C,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB;AAMD,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,QAAQ,CASlE;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,SAAS,CAarE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,CAmBvD"}
|
package/dist/mappers.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mapper functions: convert raw API DTOs (generated from the OpenAPI spec) to
|
|
3
|
+
* the internal data model defined below.
|
|
4
|
+
*
|
|
5
|
+
* Import from the published package:
|
|
6
|
+
* import { mapEventDto, mapHostSummaryDto, mapVenueSummaryDto } from '@subdynamics/event-hub-api-types/mappers';
|
|
7
|
+
* // or, using the barrel:
|
|
8
|
+
* import { mapEventDto } from '@subdynamics/event-hub-api-types';
|
|
9
|
+
*/
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Mapper functions
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
/** Maps an {@link ApiHostSummaryDto} to an internal {@link HostItem}. */
|
|
14
|
+
export function mapHostSummaryDto(dto) {
|
|
15
|
+
return {
|
|
16
|
+
id: dto.id,
|
|
17
|
+
slug: dto.slug,
|
|
18
|
+
name: dto.name,
|
|
19
|
+
hostType: dto.hostType,
|
|
20
|
+
regionKey: dto.regionKey,
|
|
21
|
+
role: dto.role,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** Maps an {@link ApiVenueSummaryDto} to an internal {@link VenueItem}. */
|
|
25
|
+
export function mapVenueSummaryDto(dto) {
|
|
26
|
+
return {
|
|
27
|
+
id: dto.id,
|
|
28
|
+
name: dto.name,
|
|
29
|
+
address: dto.address,
|
|
30
|
+
city: dto.city,
|
|
31
|
+
state: dto.state,
|
|
32
|
+
zip: dto.zip ?? null,
|
|
33
|
+
lat: dto.lat ?? null,
|
|
34
|
+
lng: dto.lng ?? null,
|
|
35
|
+
timezone: dto.timezone,
|
|
36
|
+
regionKey: dto.regionKey,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Maps an {@link ApiEventDto} to an internal {@link EventItem}.
|
|
41
|
+
*
|
|
42
|
+
* ISO 8601 timestamp strings are parsed into `Date` objects.
|
|
43
|
+
*/
|
|
44
|
+
export function mapEventDto(dto) {
|
|
45
|
+
return {
|
|
46
|
+
id: dto.id,
|
|
47
|
+
title: dto.title,
|
|
48
|
+
description: dto.description ?? null,
|
|
49
|
+
startsAt: new Date(dto.startsAtUtc),
|
|
50
|
+
endsAt: new Date(dto.endsAtUtc),
|
|
51
|
+
timezone: dto.timezone,
|
|
52
|
+
regionKey: dto.regionKey,
|
|
53
|
+
venueId: dto.venueId ?? null,
|
|
54
|
+
visibility: dto.visibility,
|
|
55
|
+
permalinkSlug: dto.permalinkSlug,
|
|
56
|
+
permalinkPath: dto.permalinkPath,
|
|
57
|
+
heroImageUrl: dto.heroImageUrl ?? null,
|
|
58
|
+
status: dto.status,
|
|
59
|
+
venue: dto.venue ? mapVenueSummaryDto(dto.venue) : null,
|
|
60
|
+
hosts: dto.hosts.map(mapHostSummaryDto),
|
|
61
|
+
categories: dto.categories,
|
|
62
|
+
};
|
|
63
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://www.schemastore.org/package.json",
|
|
3
|
+
"name": "@subdynamics/event-hub-api-types",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"description": "TypeScript types generated from the Event Hub API OpenAPI spec.",
|
|
6
|
+
"keywords": ["event-hub", "openapi", "typescript", "types"],
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/SubDynamics/event-hub-api.git",
|
|
11
|
+
"directory": "packages/types"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"import": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts"
|
|
20
|
+
},
|
|
21
|
+
"./mappers": {
|
|
22
|
+
"import": "./dist/mappers.js",
|
|
23
|
+
"types": "./dist/mappers.d.ts"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"files": ["dist"],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"generate": "openapi-typescript ../../docs/openapi.yaml -o src/generated.ts",
|
|
29
|
+
"build": "tsc",
|
|
30
|
+
"prepublishOnly": "npm run generate && npm run build"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"openapi-typescript": "^7.0.0",
|
|
34
|
+
"typescript": "^5.0.0"
|
|
35
|
+
}
|
|
36
|
+
}
|