@teardown/schemas 0.1.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.
Files changed (61) hide show
  1. package/dist/common/index.d.ts +3 -0
  2. package/dist/common/index.js +3 -0
  3. package/dist/common/primitives.d.ts +11 -0
  4. package/dist/common/primitives.js +9 -0
  5. package/dist/common/responses.d.ts +27 -0
  6. package/dist/common/responses.js +13 -0
  7. package/dist/common/type-checks.d.ts +58 -0
  8. package/dist/common/type-checks.js +1 -0
  9. package/dist/index.d.ts +13 -0
  10. package/dist/index.js +14 -0
  11. package/dist/modules/analytics/index.d.ts +1 -0
  12. package/dist/modules/analytics/index.js +1 -0
  13. package/dist/modules/analytics/schemas.d.ts +239 -0
  14. package/dist/modules/analytics/schemas.js +136 -0
  15. package/dist/modules/builds/index.d.ts +1 -0
  16. package/dist/modules/builds/index.js +1 -0
  17. package/dist/modules/builds/schemas.d.ts +248 -0
  18. package/dist/modules/builds/schemas.js +137 -0
  19. package/dist/modules/devices/index.d.ts +1 -0
  20. package/dist/modules/devices/index.js +1 -0
  21. package/dist/modules/devices/schemas.d.ts +207 -0
  22. package/dist/modules/devices/schemas.js +165 -0
  23. package/dist/modules/environment/index.d.ts +1 -0
  24. package/dist/modules/environment/index.js +1 -0
  25. package/dist/modules/environment/schemas.d.ts +56 -0
  26. package/dist/modules/environment/schemas.js +57 -0
  27. package/dist/modules/events/index.d.ts +1 -0
  28. package/dist/modules/events/index.js +1 -0
  29. package/dist/modules/events/schemas.d.ts +138 -0
  30. package/dist/modules/events/schemas.js +116 -0
  31. package/dist/modules/identify/index.d.ts +1 -0
  32. package/dist/modules/identify/index.js +1 -0
  33. package/dist/modules/identify/schemas.d.ts +377 -0
  34. package/dist/modules/identify/schemas.js +221 -0
  35. package/dist/modules/index.d.ts +12 -0
  36. package/dist/modules/index.js +12 -0
  37. package/dist/modules/me/index.d.ts +1 -0
  38. package/dist/modules/me/index.js +1 -0
  39. package/dist/modules/me/schemas.d.ts +75 -0
  40. package/dist/modules/me/schemas.js +76 -0
  41. package/dist/modules/orgs/index.d.ts +1 -0
  42. package/dist/modules/orgs/index.js +1 -0
  43. package/dist/modules/orgs/schemas.d.ts +308 -0
  44. package/dist/modules/orgs/schemas.js +214 -0
  45. package/dist/modules/personas/index.d.ts +1 -0
  46. package/dist/modules/personas/index.js +1 -0
  47. package/dist/modules/personas/schemas.d.ts +170 -0
  48. package/dist/modules/personas/schemas.js +100 -0
  49. package/dist/modules/projects/index.d.ts +1 -0
  50. package/dist/modules/projects/index.js +1 -0
  51. package/dist/modules/projects/schemas.d.ts +222 -0
  52. package/dist/modules/projects/schemas.js +145 -0
  53. package/dist/modules/sessions/index.d.ts +1 -0
  54. package/dist/modules/sessions/index.js +1 -0
  55. package/dist/modules/sessions/schemas.d.ts +258 -0
  56. package/dist/modules/sessions/schemas.js +128 -0
  57. package/dist/modules/versions/index.d.ts +1 -0
  58. package/dist/modules/versions/index.js +1 -0
  59. package/dist/modules/versions/schemas.d.ts +248 -0
  60. package/dist/modules/versions/schemas.js +155 -0
  61. package/package.json +106 -0
@@ -0,0 +1,258 @@
1
+ import { type Static } from "elysia";
2
+ import type { AssertSchemaCompatibleWithRow, AssertTrue } from "../../common";
3
+ /**
4
+ * Base session schema
5
+ * Represents device_sessions table structure
6
+ */
7
+ export declare const SessionSchema: import("@sinclair/typebox").TObject<{
8
+ id: import("@sinclair/typebox").TString;
9
+ device_id: import("@sinclair/typebox").TString;
10
+ token: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
11
+ version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
12
+ version_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
13
+ version_build_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
14
+ os_version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
15
+ ota_updates_enabled: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
16
+ is_emergency_launch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
17
+ emergency_launch_reason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
18
+ is_embedded_launch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
19
+ ota_update_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
20
+ ota_update_runtime_version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
21
+ ota_update_created_at: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
22
+ metadata: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>, import("@sinclair/typebox").TNull]>;
23
+ started_at: import("@sinclair/typebox").TString;
24
+ created_at: import("@sinclair/typebox").TString;
25
+ updated_at: import("@sinclair/typebox").TString;
26
+ }>;
27
+ export type Session = Static<typeof SessionSchema>;
28
+ /**
29
+ * Session with device info for joined queries
30
+ */
31
+ export declare const SessionWithDeviceSchema: import("@sinclair/typebox").TObject<{
32
+ id: import("@sinclair/typebox").TString;
33
+ created_at: import("@sinclair/typebox").TString;
34
+ updated_at: import("@sinclair/typebox").TString;
35
+ device_id: import("@sinclair/typebox").TString;
36
+ ota_update_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
37
+ version_build_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
38
+ version_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
39
+ started_at: import("@sinclair/typebox").TString;
40
+ os_version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
41
+ metadata: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>, import("@sinclair/typebox").TNull]>;
42
+ version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
43
+ is_emergency_launch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
44
+ is_embedded_launch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
45
+ token: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
46
+ ota_updates_enabled: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
47
+ emergency_launch_reason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
48
+ ota_update_runtime_version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
49
+ ota_update_created_at: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
50
+ device: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
51
+ device_id: import("@sinclair/typebox").TString;
52
+ device_name: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
53
+ platform: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
54
+ }>>;
55
+ }>;
56
+ export type SessionWithDevice = Static<typeof SessionWithDeviceSchema>;
57
+ /**
58
+ * Session params schema
59
+ */
60
+ export declare const SessionParamsSchema: import("@sinclair/typebox").TObject<{
61
+ session_id: import("@sinclair/typebox").TString;
62
+ }>;
63
+ export type SessionParams = Static<typeof SessionParamsSchema>;
64
+ /**
65
+ * Search sessions query schema
66
+ * Supports pagination, search, and sorting
67
+ */
68
+ export declare const SearchSessionsQuerySchema: import("@sinclair/typebox").TObject<{
69
+ project_id: import("@sinclair/typebox").TString;
70
+ page: import("@sinclair/typebox").TNumber;
71
+ limit: import("@sinclair/typebox").TNumber;
72
+ search: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
73
+ sort_by: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"started_at">, import("@sinclair/typebox").TLiteral<"created_at">, import("@sinclair/typebox").TLiteral<"updated_at">, import("@sinclair/typebox").TLiteral<"version">, import("@sinclair/typebox").TLiteral<"os_version">]>;
74
+ sort_order: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"asc">, import("@sinclair/typebox").TLiteral<"desc">]>;
75
+ }>;
76
+ export type SearchSessionsQuery = Static<typeof SearchSessionsQuerySchema>;
77
+ /**
78
+ * Search sessions query schema without project_id (injected from headers)
79
+ */
80
+ export declare const SearchSessionsQueryParamsSchema: import("@sinclair/typebox").TObject<{
81
+ search: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
82
+ limit: import("@sinclair/typebox").TNumber;
83
+ page: import("@sinclair/typebox").TNumber;
84
+ sort_by: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"started_at">, import("@sinclair/typebox").TLiteral<"created_at">, import("@sinclair/typebox").TLiteral<"updated_at">, import("@sinclair/typebox").TLiteral<"version">, import("@sinclair/typebox").TLiteral<"os_version">]>;
85
+ sort_order: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"asc">, import("@sinclair/typebox").TLiteral<"desc">]>;
86
+ }>;
87
+ export type SearchSessionsQueryParams = Static<typeof SearchSessionsQueryParamsSchema>;
88
+ /**
89
+ * Sessions by IDs request schema
90
+ */
91
+ export declare const SessionsByIdsSchema: import("@sinclair/typebox").TObject<{
92
+ session_ids: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
93
+ }>;
94
+ export type SessionsByIds = Static<typeof SessionsByIdsSchema>;
95
+ /**
96
+ * Paginated sessions response schema
97
+ */
98
+ export declare const SessionsResponseSchema: import("@sinclair/typebox").TObject<{
99
+ sessions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
100
+ id: import("@sinclair/typebox").TString;
101
+ created_at: import("@sinclair/typebox").TString;
102
+ updated_at: import("@sinclair/typebox").TString;
103
+ device_id: import("@sinclair/typebox").TString;
104
+ ota_update_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
105
+ version_build_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
106
+ version_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
107
+ started_at: import("@sinclair/typebox").TString;
108
+ os_version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
109
+ metadata: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>, import("@sinclair/typebox").TNull]>;
110
+ version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
111
+ is_emergency_launch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
112
+ is_embedded_launch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
113
+ token: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
114
+ ota_updates_enabled: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
115
+ emergency_launch_reason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
116
+ ota_update_runtime_version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
117
+ ota_update_created_at: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
118
+ device: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
119
+ device_id: import("@sinclair/typebox").TString;
120
+ device_name: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
121
+ platform: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
122
+ }>>;
123
+ }>>;
124
+ pagination: import("@sinclair/typebox").TObject<{
125
+ page: import("@sinclair/typebox").TInteger;
126
+ limit: import("@sinclair/typebox").TInteger;
127
+ total: import("@sinclair/typebox").TInteger;
128
+ total_pages: import("@sinclair/typebox").TInteger;
129
+ }>;
130
+ }>;
131
+ export type SessionsResponse = Static<typeof SessionsResponseSchema>;
132
+ /**
133
+ * Single session response schema
134
+ */
135
+ export declare const SessionResponseSchema: import("@sinclair/typebox").TObject<{
136
+ success: import("@sinclair/typebox").TLiteral<true>;
137
+ data: import("@sinclair/typebox").TObject<{
138
+ id: import("@sinclair/typebox").TString;
139
+ created_at: import("@sinclair/typebox").TString;
140
+ updated_at: import("@sinclair/typebox").TString;
141
+ device_id: import("@sinclair/typebox").TString;
142
+ ota_update_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
143
+ version_build_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
144
+ version_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
145
+ started_at: import("@sinclair/typebox").TString;
146
+ os_version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
147
+ metadata: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>, import("@sinclair/typebox").TNull]>;
148
+ version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
149
+ is_emergency_launch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
150
+ is_embedded_launch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
151
+ token: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
152
+ ota_updates_enabled: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
153
+ emergency_launch_reason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
154
+ ota_update_runtime_version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
155
+ ota_update_created_at: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
156
+ device: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
157
+ device_id: import("@sinclair/typebox").TString;
158
+ device_name: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
159
+ platform: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
160
+ }>>;
161
+ }>;
162
+ }>;
163
+ export type SessionResponse = Static<typeof SessionResponseSchema>;
164
+ /**
165
+ * Session error response schema
166
+ * Discriminated union by error code
167
+ */
168
+ export declare const SessionErrorSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
169
+ code: import("@sinclair/typebox").TLiteral<"SESSION_NOT_FOUND">;
170
+ message: import("@sinclair/typebox").TString;
171
+ }>, import("@sinclair/typebox").TObject<{
172
+ code: import("@sinclair/typebox").TLiteral<"PROJECT_NOT_FOUND">;
173
+ message: import("@sinclair/typebox").TString;
174
+ }>, import("@sinclair/typebox").TObject<{
175
+ code: import("@sinclair/typebox").TLiteral<"FORBIDDEN">;
176
+ message: import("@sinclair/typebox").TString;
177
+ }>, import("@sinclair/typebox").TObject<{
178
+ code: import("@sinclair/typebox").TLiteral<"FETCH_FAILED">;
179
+ message: import("@sinclair/typebox").TString;
180
+ }>, import("@sinclair/typebox").TObject<{
181
+ code: import("@sinclair/typebox").TLiteral<"INVALID_PARAMS">;
182
+ message: import("@sinclair/typebox").TString;
183
+ }>]>;
184
+ export type SessionError = Static<typeof SessionErrorSchema>;
185
+ /**
186
+ * Session error response wrapper
187
+ */
188
+ export declare const SessionErrorResponseSchema: import("@sinclair/typebox").TObject<{
189
+ success: import("@sinclair/typebox").TLiteral<false>;
190
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
191
+ code: import("@sinclair/typebox").TLiteral<"SESSION_NOT_FOUND">;
192
+ message: import("@sinclair/typebox").TString;
193
+ }>, import("@sinclair/typebox").TObject<{
194
+ code: import("@sinclair/typebox").TLiteral<"PROJECT_NOT_FOUND">;
195
+ message: import("@sinclair/typebox").TString;
196
+ }>, import("@sinclair/typebox").TObject<{
197
+ code: import("@sinclair/typebox").TLiteral<"FORBIDDEN">;
198
+ message: import("@sinclair/typebox").TString;
199
+ }>, import("@sinclair/typebox").TObject<{
200
+ code: import("@sinclair/typebox").TLiteral<"FETCH_FAILED">;
201
+ message: import("@sinclair/typebox").TString;
202
+ }>, import("@sinclair/typebox").TObject<{
203
+ code: import("@sinclair/typebox").TLiteral<"INVALID_PARAMS">;
204
+ message: import("@sinclair/typebox").TString;
205
+ }>]>;
206
+ }>;
207
+ export type SessionErrorResponse = Static<typeof SessionErrorResponseSchema>;
208
+ /**
209
+ * Session request response schema
210
+ */
211
+ export declare const SessionRequestResponseSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
212
+ success: import("@sinclair/typebox").TLiteral<true>;
213
+ data: import("@sinclair/typebox").TObject<{
214
+ id: import("@sinclair/typebox").TString;
215
+ created_at: import("@sinclair/typebox").TString;
216
+ updated_at: import("@sinclair/typebox").TString;
217
+ device_id: import("@sinclair/typebox").TString;
218
+ ota_update_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
219
+ version_build_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
220
+ version_id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
221
+ started_at: import("@sinclair/typebox").TString;
222
+ os_version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
223
+ metadata: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>, import("@sinclair/typebox").TNull]>;
224
+ version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
225
+ is_emergency_launch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
226
+ is_embedded_launch: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
227
+ token: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
228
+ ota_updates_enabled: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
229
+ emergency_launch_reason: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
230
+ ota_update_runtime_version: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
231
+ ota_update_created_at: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
232
+ device: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
233
+ device_id: import("@sinclair/typebox").TString;
234
+ device_name: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
235
+ platform: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
236
+ }>>;
237
+ }>;
238
+ }>, import("@sinclair/typebox").TObject<{
239
+ success: import("@sinclair/typebox").TLiteral<false>;
240
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
241
+ code: import("@sinclair/typebox").TLiteral<"SESSION_NOT_FOUND">;
242
+ message: import("@sinclair/typebox").TString;
243
+ }>, import("@sinclair/typebox").TObject<{
244
+ code: import("@sinclair/typebox").TLiteral<"PROJECT_NOT_FOUND">;
245
+ message: import("@sinclair/typebox").TString;
246
+ }>, import("@sinclair/typebox").TObject<{
247
+ code: import("@sinclair/typebox").TLiteral<"FORBIDDEN">;
248
+ message: import("@sinclair/typebox").TString;
249
+ }>, import("@sinclair/typebox").TObject<{
250
+ code: import("@sinclair/typebox").TLiteral<"FETCH_FAILED">;
251
+ message: import("@sinclair/typebox").TString;
252
+ }>, import("@sinclair/typebox").TObject<{
253
+ code: import("@sinclair/typebox").TLiteral<"INVALID_PARAMS">;
254
+ message: import("@sinclair/typebox").TString;
255
+ }>]>;
256
+ }>]>;
257
+ export type SessionRequestResponse = Static<typeof SessionRequestResponseSchema>;
258
+ export type _CheckSessionRow = AssertTrue<AssertSchemaCompatibleWithRow<Session, "device_sessions">>;
@@ -0,0 +1,128 @@
1
+ import { t } from "elysia";
2
+ /**
3
+ * Base session schema
4
+ * Represents device_sessions table structure
5
+ */
6
+ export const SessionSchema = t.Object({
7
+ id: t.String({ format: "uuid" }),
8
+ device_id: t.String({ format: "uuid" }),
9
+ token: t.Union([t.String(), t.Null()]),
10
+ version: t.Union([t.String(), t.Null()]),
11
+ version_id: t.Union([t.String({ format: "uuid" }), t.Null()]),
12
+ version_build_id: t.Union([t.String({ format: "uuid" }), t.Null()]),
13
+ os_version: t.Union([t.String(), t.Null()]),
14
+ ota_updates_enabled: t.Union([t.Boolean(), t.Null()]),
15
+ is_emergency_launch: t.Union([t.Boolean(), t.Null()]),
16
+ emergency_launch_reason: t.Union([t.String(), t.Null()]),
17
+ is_embedded_launch: t.Union([t.Boolean(), t.Null()]),
18
+ ota_update_id: t.Union([t.String({ format: "uuid" }), t.Null()]),
19
+ ota_update_runtime_version: t.Union([t.String(), t.Null()]),
20
+ ota_update_created_at: t.Union([t.String(), t.Null()]),
21
+ metadata: t.Union([t.Record(t.String(), t.Unknown()), t.Null()]),
22
+ started_at: t.String(),
23
+ created_at: t.String(),
24
+ updated_at: t.String(),
25
+ });
26
+ /**
27
+ * Session with device info for joined queries
28
+ */
29
+ export const SessionWithDeviceSchema = t.Composite([
30
+ SessionSchema,
31
+ t.Object({
32
+ device: t.Optional(t.Object({
33
+ device_id: t.String(),
34
+ device_name: t.Union([t.String(), t.Null()]),
35
+ platform: t.Union([t.String(), t.Null()]),
36
+ })),
37
+ }),
38
+ ]);
39
+ /**
40
+ * Session params schema
41
+ */
42
+ export const SessionParamsSchema = t.Object({
43
+ session_id: t.String({ format: "uuid" }),
44
+ });
45
+ /**
46
+ * Search sessions query schema
47
+ * Supports pagination, search, and sorting
48
+ */
49
+ export const SearchSessionsQuerySchema = t.Object({
50
+ project_id: t.String({ format: "uuid" }),
51
+ page: t.Numeric({ minimum: 1, default: 1 }),
52
+ limit: t.Numeric({ minimum: 1, maximum: 100, default: 20 }),
53
+ search: t.Optional(t.String()),
54
+ sort_by: t.Union([
55
+ t.Literal("started_at"),
56
+ t.Literal("created_at"),
57
+ t.Literal("updated_at"),
58
+ t.Literal("version"),
59
+ t.Literal("os_version"),
60
+ ], { default: "started_at" }),
61
+ sort_order: t.Union([t.Literal("asc"), t.Literal("desc")], { default: "desc" }),
62
+ });
63
+ /**
64
+ * Search sessions query schema without project_id (injected from headers)
65
+ */
66
+ export const SearchSessionsQueryParamsSchema = t.Omit(SearchSessionsQuerySchema, ["project_id"]);
67
+ /**
68
+ * Sessions by IDs request schema
69
+ */
70
+ export const SessionsByIdsSchema = t.Object({
71
+ session_ids: t.Array(t.String({ format: "uuid" }), { minItems: 1, maxItems: 100 }),
72
+ });
73
+ /**
74
+ * Paginated sessions response schema
75
+ */
76
+ export const SessionsResponseSchema = t.Object({
77
+ sessions: t.Array(SessionWithDeviceSchema),
78
+ pagination: t.Object({
79
+ page: t.Integer({ minimum: 1 }),
80
+ limit: t.Integer({ minimum: 1 }),
81
+ total: t.Integer({ minimum: 0 }),
82
+ total_pages: t.Integer({ minimum: 0 }),
83
+ }),
84
+ });
85
+ /**
86
+ * Single session response schema
87
+ */
88
+ export const SessionResponseSchema = t.Object({
89
+ success: t.Literal(true),
90
+ data: SessionWithDeviceSchema,
91
+ });
92
+ /**
93
+ * Session error response schema
94
+ * Discriminated union by error code
95
+ */
96
+ export const SessionErrorSchema = t.Union([
97
+ t.Object({
98
+ code: t.Literal("SESSION_NOT_FOUND"),
99
+ message: t.String(),
100
+ }),
101
+ t.Object({
102
+ code: t.Literal("PROJECT_NOT_FOUND"),
103
+ message: t.String(),
104
+ }),
105
+ t.Object({
106
+ code: t.Literal("FORBIDDEN"),
107
+ message: t.String(),
108
+ }),
109
+ t.Object({
110
+ code: t.Literal("FETCH_FAILED"),
111
+ message: t.String(),
112
+ }),
113
+ t.Object({
114
+ code: t.Literal("INVALID_PARAMS"),
115
+ message: t.String(),
116
+ }),
117
+ ]);
118
+ /**
119
+ * Session error response wrapper
120
+ */
121
+ export const SessionErrorResponseSchema = t.Object({
122
+ success: t.Literal(false),
123
+ error: SessionErrorSchema,
124
+ });
125
+ /**
126
+ * Session request response schema
127
+ */
128
+ export const SessionRequestResponseSchema = t.Union([SessionResponseSchema, SessionErrorResponseSchema]);
@@ -0,0 +1 @@
1
+ export * from "./schemas";
@@ -0,0 +1 @@
1
+ export * from "./schemas";
@@ -0,0 +1,248 @@
1
+ import { VersionBuildStatusEnum } from "@teardown/types";
2
+ import { type Static } from "elysia";
3
+ import type { AssertSchemaCompatibleWithRow, AssertTrue } from "../../common";
4
+ /**
5
+ * Version status enum matching database
6
+ */
7
+ export declare const VersionBuildStatusSchema: import("@sinclair/typebox").TEnum<typeof VersionBuildStatusEnum>;
8
+ export type VersionBuildStatus = Static<typeof VersionBuildStatusSchema>;
9
+ /**
10
+ * Parse and validate a VersionBuildStatusEnum value
11
+ * Uses a switch statement to ensure type safety and runtime validation
12
+ * @param value - The value to parse
13
+ * @returns The validated VersionBuildStatusEnum value
14
+ * @throws Error if the value is not a valid VersionBuildStatusEnum
15
+ */
16
+ export declare function parseVersionStatusEnum(value: unknown): VersionBuildStatusEnum;
17
+ /**
18
+ * Base version schema
19
+ * Represents project_versions table structure
20
+ */
21
+ export declare const VersionSchema: import("@sinclair/typebox").TObject<{
22
+ id: import("@sinclair/typebox").TString;
23
+ project_id: import("@sinclair/typebox").TString;
24
+ name: import("@sinclair/typebox").TString;
25
+ major: import("@sinclair/typebox").TNumber;
26
+ minor: import("@sinclair/typebox").TNumber;
27
+ patch: import("@sinclair/typebox").TNumber;
28
+ status: import("@sinclair/typebox").TEnum<typeof VersionBuildStatusEnum>;
29
+ created_at: import("@sinclair/typebox").TString;
30
+ updated_at: import("@sinclair/typebox").TString;
31
+ }>;
32
+ export type Version = Static<typeof VersionSchema>;
33
+ /**
34
+ * Version params schema
35
+ */
36
+ export declare const VersionParamsSchema: import("@sinclair/typebox").TObject<{
37
+ version_id: import("@sinclair/typebox").TString;
38
+ }>;
39
+ export type VersionParams = Static<typeof VersionParamsSchema>;
40
+ /**
41
+ * Search versions query schema
42
+ * Supports pagination, search, and sorting
43
+ */
44
+ export declare const SearchVersionsQuerySchema: import("@sinclair/typebox").TObject<{
45
+ project_id: import("@sinclair/typebox").TString;
46
+ page: import("@sinclair/typebox").TNumber;
47
+ limit: import("@sinclair/typebox").TNumber;
48
+ search: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
49
+ sort_by: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"created_at">, import("@sinclair/typebox").TLiteral<"updated_at">, import("@sinclair/typebox").TLiteral<"name">, import("@sinclair/typebox").TLiteral<"major">, import("@sinclair/typebox").TLiteral<"minor">, import("@sinclair/typebox").TLiteral<"patch">]>;
50
+ sort_order: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"asc">, import("@sinclair/typebox").TLiteral<"desc">]>;
51
+ }>;
52
+ export type SearchVersionsQuery = Static<typeof SearchVersionsQuerySchema>;
53
+ /**
54
+ * Search versions query schema without project_id (injected from headers)
55
+ */
56
+ export declare const SearchVersionsQueryParamsSchema: import("@sinclair/typebox").TObject<{
57
+ search: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
58
+ limit: import("@sinclair/typebox").TNumber;
59
+ page: import("@sinclair/typebox").TNumber;
60
+ sort_by: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"created_at">, import("@sinclair/typebox").TLiteral<"updated_at">, import("@sinclair/typebox").TLiteral<"name">, import("@sinclair/typebox").TLiteral<"major">, import("@sinclair/typebox").TLiteral<"minor">, import("@sinclair/typebox").TLiteral<"patch">]>;
61
+ sort_order: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"asc">, import("@sinclair/typebox").TLiteral<"desc">]>;
62
+ }>;
63
+ export type SearchVersionsQueryParams = Static<typeof SearchVersionsQueryParamsSchema>;
64
+ /**
65
+ * Versions by IDs request schema
66
+ */
67
+ export declare const VersionsByIdsSchema: import("@sinclair/typebox").TObject<{
68
+ version_ids: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
69
+ }>;
70
+ export type VersionsByIds = Static<typeof VersionsByIdsSchema>;
71
+ /**
72
+ * Paginated versions response schema
73
+ */
74
+ export declare const VersionsResponseSchema: import("@sinclair/typebox").TObject<{
75
+ versions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
76
+ id: import("@sinclair/typebox").TString;
77
+ project_id: import("@sinclair/typebox").TString;
78
+ name: import("@sinclair/typebox").TString;
79
+ major: import("@sinclair/typebox").TNumber;
80
+ minor: import("@sinclair/typebox").TNumber;
81
+ patch: import("@sinclair/typebox").TNumber;
82
+ status: import("@sinclair/typebox").TEnum<typeof VersionBuildStatusEnum>;
83
+ created_at: import("@sinclair/typebox").TString;
84
+ updated_at: import("@sinclair/typebox").TString;
85
+ }>>;
86
+ pagination: import("@sinclair/typebox").TObject<{
87
+ page: import("@sinclair/typebox").TInteger;
88
+ limit: import("@sinclair/typebox").TInteger;
89
+ total: import("@sinclair/typebox").TInteger;
90
+ total_pages: import("@sinclair/typebox").TInteger;
91
+ }>;
92
+ }>;
93
+ export type VersionsResponse = Static<typeof VersionsResponseSchema>;
94
+ /**
95
+ * Single version response schema
96
+ */
97
+ export declare const VersionResponseSchema: import("@sinclair/typebox").TObject<{
98
+ success: import("@sinclair/typebox").TLiteral<true>;
99
+ data: import("@sinclair/typebox").TObject<{
100
+ id: import("@sinclair/typebox").TString;
101
+ project_id: import("@sinclair/typebox").TString;
102
+ name: import("@sinclair/typebox").TString;
103
+ major: import("@sinclair/typebox").TNumber;
104
+ minor: import("@sinclair/typebox").TNumber;
105
+ patch: import("@sinclair/typebox").TNumber;
106
+ status: import("@sinclair/typebox").TEnum<typeof VersionBuildStatusEnum>;
107
+ created_at: import("@sinclair/typebox").TString;
108
+ updated_at: import("@sinclair/typebox").TString;
109
+ }>;
110
+ }>;
111
+ export type VersionResponse = Static<typeof VersionResponseSchema>;
112
+ /**
113
+ * Version error response schema
114
+ * Discriminated union by error code
115
+ */
116
+ export declare const VersionErrorSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
117
+ code: import("@sinclair/typebox").TLiteral<"VERSION_NOT_FOUND">;
118
+ message: import("@sinclair/typebox").TString;
119
+ }>, import("@sinclair/typebox").TObject<{
120
+ code: import("@sinclair/typebox").TLiteral<"PROJECT_NOT_FOUND">;
121
+ message: import("@sinclair/typebox").TString;
122
+ }>, import("@sinclair/typebox").TObject<{
123
+ code: import("@sinclair/typebox").TLiteral<"FORBIDDEN">;
124
+ message: import("@sinclair/typebox").TString;
125
+ }>, import("@sinclair/typebox").TObject<{
126
+ code: import("@sinclair/typebox").TLiteral<"FETCH_FAILED">;
127
+ message: import("@sinclair/typebox").TString;
128
+ }>, import("@sinclair/typebox").TObject<{
129
+ code: import("@sinclair/typebox").TLiteral<"INVALID_PARAMS">;
130
+ message: import("@sinclair/typebox").TString;
131
+ }>]>;
132
+ export type VersionError = Static<typeof VersionErrorSchema>;
133
+ /**
134
+ * Version error response wrapper
135
+ */
136
+ export declare const VersionErrorResponseSchema: import("@sinclair/typebox").TObject<{
137
+ success: import("@sinclair/typebox").TLiteral<false>;
138
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
139
+ code: import("@sinclair/typebox").TLiteral<"VERSION_NOT_FOUND">;
140
+ message: import("@sinclair/typebox").TString;
141
+ }>, import("@sinclair/typebox").TObject<{
142
+ code: import("@sinclair/typebox").TLiteral<"PROJECT_NOT_FOUND">;
143
+ message: import("@sinclair/typebox").TString;
144
+ }>, import("@sinclair/typebox").TObject<{
145
+ code: import("@sinclair/typebox").TLiteral<"FORBIDDEN">;
146
+ message: import("@sinclair/typebox").TString;
147
+ }>, import("@sinclair/typebox").TObject<{
148
+ code: import("@sinclair/typebox").TLiteral<"FETCH_FAILED">;
149
+ message: import("@sinclair/typebox").TString;
150
+ }>, import("@sinclair/typebox").TObject<{
151
+ code: import("@sinclair/typebox").TLiteral<"INVALID_PARAMS">;
152
+ message: import("@sinclair/typebox").TString;
153
+ }>]>;
154
+ }>;
155
+ export type VersionErrorResponse = Static<typeof VersionErrorResponseSchema>;
156
+ /**
157
+ * Version request response schema
158
+ */
159
+ export declare const VersionRequestResponseSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
160
+ success: import("@sinclair/typebox").TLiteral<true>;
161
+ data: import("@sinclair/typebox").TObject<{
162
+ id: import("@sinclair/typebox").TString;
163
+ project_id: import("@sinclair/typebox").TString;
164
+ name: import("@sinclair/typebox").TString;
165
+ major: import("@sinclair/typebox").TNumber;
166
+ minor: import("@sinclair/typebox").TNumber;
167
+ patch: import("@sinclair/typebox").TNumber;
168
+ status: import("@sinclair/typebox").TEnum<typeof VersionBuildStatusEnum>;
169
+ created_at: import("@sinclair/typebox").TString;
170
+ updated_at: import("@sinclair/typebox").TString;
171
+ }>;
172
+ }>, import("@sinclair/typebox").TObject<{
173
+ success: import("@sinclair/typebox").TLiteral<false>;
174
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
175
+ code: import("@sinclair/typebox").TLiteral<"VERSION_NOT_FOUND">;
176
+ message: import("@sinclair/typebox").TString;
177
+ }>, import("@sinclair/typebox").TObject<{
178
+ code: import("@sinclair/typebox").TLiteral<"PROJECT_NOT_FOUND">;
179
+ message: import("@sinclair/typebox").TString;
180
+ }>, import("@sinclair/typebox").TObject<{
181
+ code: import("@sinclair/typebox").TLiteral<"FORBIDDEN">;
182
+ message: import("@sinclair/typebox").TString;
183
+ }>, import("@sinclair/typebox").TObject<{
184
+ code: import("@sinclair/typebox").TLiteral<"FETCH_FAILED">;
185
+ message: import("@sinclair/typebox").TString;
186
+ }>, import("@sinclair/typebox").TObject<{
187
+ code: import("@sinclair/typebox").TLiteral<"INVALID_PARAMS">;
188
+ message: import("@sinclair/typebox").TString;
189
+ }>]>;
190
+ }>]>;
191
+ export type VersionRequestResponse = Static<typeof VersionRequestResponseSchema>;
192
+ export type _CheckVersionRow = AssertTrue<AssertSchemaCompatibleWithRow<Version, "project_versions">>;
193
+ /**
194
+ * Update version status request body schema
195
+ */
196
+ export declare const UpdateVersionStatusBodySchema: import("@sinclair/typebox").TObject<{
197
+ status: import("@sinclair/typebox").TEnum<typeof VersionBuildStatusEnum>;
198
+ }>;
199
+ export type UpdateVersionStatusBody = Static<typeof UpdateVersionStatusBodySchema>;
200
+ /**
201
+ * Add UPDATE_FAILED error code for update operations
202
+ */
203
+ export declare const VersionErrorSchemaWithUpdate: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
204
+ code: import("@sinclair/typebox").TLiteral<"VERSION_NOT_FOUND">;
205
+ message: import("@sinclair/typebox").TString;
206
+ }>, import("@sinclair/typebox").TObject<{
207
+ code: import("@sinclair/typebox").TLiteral<"PROJECT_NOT_FOUND">;
208
+ message: import("@sinclair/typebox").TString;
209
+ }>, import("@sinclair/typebox").TObject<{
210
+ code: import("@sinclair/typebox").TLiteral<"FORBIDDEN">;
211
+ message: import("@sinclair/typebox").TString;
212
+ }>, import("@sinclair/typebox").TObject<{
213
+ code: import("@sinclair/typebox").TLiteral<"FETCH_FAILED">;
214
+ message: import("@sinclair/typebox").TString;
215
+ }>, import("@sinclair/typebox").TObject<{
216
+ code: import("@sinclair/typebox").TLiteral<"INVALID_PARAMS">;
217
+ message: import("@sinclair/typebox").TString;
218
+ }>]>, import("@sinclair/typebox").TObject<{
219
+ code: import("@sinclair/typebox").TLiteral<"UPDATE_FAILED">;
220
+ message: import("@sinclair/typebox").TString;
221
+ }>]>;
222
+ export type VersionErrorWithUpdate = Static<typeof VersionErrorSchemaWithUpdate>;
223
+ /**
224
+ * Version error response wrapper with update error
225
+ */
226
+ export declare const VersionErrorResponseWithUpdateSchema: import("@sinclair/typebox").TObject<{
227
+ success: import("@sinclair/typebox").TLiteral<false>;
228
+ error: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
229
+ code: import("@sinclair/typebox").TLiteral<"VERSION_NOT_FOUND">;
230
+ message: import("@sinclair/typebox").TString;
231
+ }>, import("@sinclair/typebox").TObject<{
232
+ code: import("@sinclair/typebox").TLiteral<"PROJECT_NOT_FOUND">;
233
+ message: import("@sinclair/typebox").TString;
234
+ }>, import("@sinclair/typebox").TObject<{
235
+ code: import("@sinclair/typebox").TLiteral<"FORBIDDEN">;
236
+ message: import("@sinclair/typebox").TString;
237
+ }>, import("@sinclair/typebox").TObject<{
238
+ code: import("@sinclair/typebox").TLiteral<"FETCH_FAILED">;
239
+ message: import("@sinclair/typebox").TString;
240
+ }>, import("@sinclair/typebox").TObject<{
241
+ code: import("@sinclair/typebox").TLiteral<"INVALID_PARAMS">;
242
+ message: import("@sinclair/typebox").TString;
243
+ }>]>, import("@sinclair/typebox").TObject<{
244
+ code: import("@sinclair/typebox").TLiteral<"UPDATE_FAILED">;
245
+ message: import("@sinclair/typebox").TString;
246
+ }>]>;
247
+ }>;
248
+ export type VersionErrorResponseWithUpdate = Static<typeof VersionErrorResponseWithUpdateSchema>;