@teardown/ingest-api 0.0.21-alpha.11 → 0.0.21-alpha.13

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.
@@ -1,70 +1,60 @@
1
1
  import { DevicePlatformEnum } from "../types/generated-consts";
2
- import { ValidationError } from "elysia";
3
- import { z } from "zod";
2
+ import { t } from "elysia";
3
+ import { EmailSchema } from "../common/primitives";
4
4
  export { DevicePlatformEnum };
5
5
  /**
6
6
  * Application info schema
7
7
  */
8
- export const ApplicationInfoSchema = z.object({
9
- version: z.string("version is required"),
10
- build_number: z.string("build_number is required"),
11
- }, {
12
- error: "Application info is required",
8
+ export const ApplicationInfoSchema = t.Object({
9
+ version: t.String({ error: "version is required" }),
10
+ build_number: t.String({ error: "build_number is required" }),
13
11
  });
14
12
  /**
15
13
  * OS info schema
16
14
  */
17
- export const OSInfoSchema = z.object({
15
+ export const OSInfoSchema = t.Object({
18
16
  /**
19
17
  * Device platform
20
18
  */
21
- platform: z.enum(DevicePlatformEnum, "platform is required"),
19
+ platform: t.Enum(DevicePlatformEnum, { error: "platform is required" }),
22
20
  /**
23
21
  * OS name
24
22
  */
25
- name: z.string("name is required"),
23
+ name: t.String({ error: "name is required" }),
26
24
  /**
27
25
  * OS version
28
26
  */
29
- version: z.string("version is required"),
30
- }, {
31
- error: "OS info is required",
27
+ version: t.String({ error: "version is required" }),
32
28
  });
33
29
  /**
34
30
  * Hardware info schema
35
31
  */
36
- export const HardwareInfoSchema = z.object({
37
- device_name: z.string("device_name is required"),
38
- device_type: z.string("device_type is required"),
39
- device_brand: z.string("device_brand is required"),
40
- }, {
41
- error: "Hardware info is required",
42
- });
43
- export const EmergencyLaunchSchema = z.union([
44
- z.object({
45
- is_emergency_launch: z.literal(true),
46
- reason: z.string("reason is required when is_emergency_launch is true"),
32
+ export const HardwareInfoSchema = t.Object({
33
+ device_name: t.String({ error: "device_name is required" }),
34
+ device_type: t.String({ error: "device_type is required" }),
35
+ device_brand: t.String({ error: "device_brand is required" }),
36
+ });
37
+ export const EmergencyLaunchSchema = t.Union([
38
+ t.Object({
39
+ is_emergency_launch: t.Literal(true),
40
+ reason: t.String({ error: "reason is required when is_emergency_launch is true" }),
47
41
  }),
48
- z.object({
49
- is_emergency_launch: z.literal(false),
50
- reason: z.never().optional(),
42
+ t.Object({
43
+ is_emergency_launch: t.Literal(false),
44
+ reason: t.Optional(t.Never()),
51
45
  }),
52
- ], {
53
- error: "Emergency launch is required",
54
- });
46
+ ]);
55
47
  /**
56
48
  * Update info schema
57
49
  */
58
- export const DeviceUpdateInfoSchema = z.object({
59
- is_enabled: z.boolean(),
60
- update_id: z.string("update_id is required"),
61
- update_channel: z.string("update_channel is required"),
62
- runtime_version: z.string("runtime_version is required"),
50
+ export const DeviceUpdateInfoSchema = t.Object({
51
+ is_enabled: t.Boolean(),
52
+ update_id: t.String({ error: "update_id is required" }),
53
+ update_channel: t.String({ error: "update_channel is required" }),
54
+ runtime_version: t.String({ error: "runtime_version is required" }),
63
55
  emergency_launch: EmergencyLaunchSchema,
64
- is_embedded_launch: z.boolean("is_embedded_launch is required"),
65
- created_at: z.coerce.date(),
66
- }, {
67
- error: "Update info is required",
56
+ is_embedded_launch: t.Boolean({ error: "is_embedded_launch is required" }),
57
+ created_at: t.String(),
68
58
  });
69
59
  export var NotificationPlatform;
70
60
  (function (NotificationPlatform) {
@@ -75,27 +65,23 @@ export var NotificationPlatform;
75
65
  /**
76
66
  * Push notification info schema
77
67
  */
78
- export const PushNotificationInfoSchema = z.object({
79
- enabled: z.boolean("enabled is required"),
80
- granted: z.boolean("granted is required"),
81
- token: z.string("token is required").nullable(),
82
- platform: z.enum(NotificationPlatform, "platform is required"),
83
- }, {
84
- error: "Push notification info is required",
68
+ export const PushNotificationInfoSchema = t.Object({
69
+ enabled: t.Boolean({ error: "enabled is required" }),
70
+ granted: t.Boolean({ error: "granted is required" }),
71
+ token: t.Union([t.String({ error: "token is required" }), t.Null()]),
72
+ platform: t.Enum(NotificationPlatform, { error: "platform is required" }),
85
73
  });
86
- export const NotificationsInfoSchema = z.object({
74
+ export const NotificationsInfoSchema = t.Object({
87
75
  push: PushNotificationInfoSchema,
88
- }, {
89
- error: "Notifications info is required",
90
76
  });
91
77
  /**
92
78
  * Device info schema
93
79
  */
94
- export const DeviceInfoSchema = z.object({
80
+ export const DeviceInfoSchema = t.Object({
95
81
  /**
96
82
  * Timestamp of collection on device (optional, generated server-side if not provided)
97
83
  */
98
- timestamp: z.coerce.date("timestamp is required").optional(),
84
+ timestamp: t.Optional(t.Date({ error: "timestamp is required" })),
99
85
  /**
100
86
  * Application info, required
101
87
  */
@@ -103,7 +89,7 @@ export const DeviceInfoSchema = z.object({
103
89
  /**
104
90
  * Update info (optional) - not all builds will have an update
105
91
  */
106
- update: DeviceUpdateInfoSchema.nullable(),
92
+ update: t.Union([DeviceUpdateInfoSchema, t.Null()]),
107
93
  /**
108
94
  * Hardware info, required
109
95
  */
@@ -116,34 +102,23 @@ export const DeviceInfoSchema = z.object({
116
102
  * Notifications info, required
117
103
  */
118
104
  notifications: NotificationsInfoSchema,
119
- }, {
120
- error: "Device info is required",
121
105
  });
122
106
  /**
123
107
  * Persona info schema (optional fields)
124
108
  * Matches personas table structure
125
109
  */
126
- export const PersonaInfoSchema = z.object({
127
- user_id: z.string("user_id is required").optional(),
128
- email: z
129
- .string("email is required")
130
- .refine((val) => !val || /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(val), {
131
- message: "Invalid email format",
132
- })
133
- .optional(),
134
- name: z.string("name is required").optional(),
135
- }, {
136
- error: "Persona info is required",
110
+ export const PersonaInfoSchema = t.Object({
111
+ user_id: t.Optional(t.String({ error: "user_id is required" })),
112
+ email: t.Optional(EmailSchema),
113
+ name: t.Optional(t.String({ error: "name is required" })),
137
114
  });
138
115
  /**
139
116
  * Identify request schema
140
117
  * Ties a device to a persona with optional persona data
141
118
  */
142
- export const IdentifyRequestSchema = z.object({
119
+ export const IdentifyRequestSchema = t.Object({
143
120
  device: DeviceInfoSchema,
144
- persona: PersonaInfoSchema.optional(),
145
- }, {
146
- error: "Identify request is required",
121
+ persona: t.Optional(PersonaInfoSchema),
147
122
  });
148
123
  export var IdentifyVersionStatusEnum;
149
124
  (function (IdentifyVersionStatusEnum) {
@@ -159,102 +134,88 @@ export var IdentifyVersionStatusEnum;
159
134
  * The current version is valid & up to date
160
135
  */
161
136
  IdentifyVersionStatusEnum["UP_TO_DATE"] = "UP_TO_DATE";
137
+ /**
138
+ * The version or build has been disabled
139
+ */
140
+ IdentifyVersionStatusEnum["DISABLED"] = "DISABLED";
162
141
  })(IdentifyVersionStatusEnum || (IdentifyVersionStatusEnum = {}));
163
- export const UpdateInfoSchema = z.object({
164
- version: z.string("version is required"),
165
- build: z.string("build is required"),
166
- update_id: z.string("update_id is required"),
167
- effective_date: z.coerce.date("effective_date is required"),
168
- }, {
169
- error: "Update available info is required",
170
- });
171
- export const UpToDateInfoSchema = z.object({
172
- status: z.literal(IdentifyVersionStatusEnum.UP_TO_DATE),
173
- update: z.null(),
174
- }, {
175
- error: "Up to date info is required",
176
- });
177
- export const UpdateRequiredInfoSchema = z.object({
178
- status: z.literal(IdentifyVersionStatusEnum.UPDATE_REQUIRED),
142
+ export const UpdateInfoSchema = t.Object({
143
+ version: t.String({ error: "version is required" }),
144
+ build: t.String({ error: "build is required" }),
145
+ update_id: t.String({ error: "update_id is required" }),
146
+ effective_date: t.Date({ error: "effective_date is required" }),
147
+ });
148
+ export const UpToDateInfoSchema = t.Object({
149
+ status: t.Literal(IdentifyVersionStatusEnum.UP_TO_DATE),
150
+ update: t.Null(),
151
+ });
152
+ export const UpdateRequiredInfoSchema = t.Object({
153
+ status: t.Literal(IdentifyVersionStatusEnum.UPDATE_REQUIRED),
179
154
  update: UpdateInfoSchema,
180
- }, {
181
- error: "Update required info is required",
182
155
  });
183
- export const UpdateAvailableInfoSchema = z.object({
184
- status: z.literal(IdentifyVersionStatusEnum.UPDATE_AVAILABLE),
156
+ export const UpdateAvailableInfoSchema = t.Object({
157
+ status: t.Literal(IdentifyVersionStatusEnum.UPDATE_AVAILABLE),
185
158
  update: UpdateInfoSchema,
186
- }, {
187
- error: "Update available info is required",
188
159
  });
189
- export const VersionInfoSchema = z.object({
160
+ export const VersionInfoSchema = t.Object({
190
161
  /**
191
162
  * The status of the version
192
163
  */
193
- status: z.enum(IdentifyVersionStatusEnum, "status is required"),
194
- update: UpdateAvailableInfoSchema.nullish(),
195
- }, {
196
- error: "Version info is required",
164
+ status: t.Enum(IdentifyVersionStatusEnum, { error: "status is required" }),
165
+ update: t.Optional(t.Union([UpdateAvailableInfoSchema, t.Null()])),
197
166
  });
198
167
  /**
199
168
  * Identify response schema
200
169
  */
201
- export const IdentifyResponseSchema = z.object({
202
- success: z.literal(true),
203
- data: z.object({
204
- session_id: z.string("session_id is required"),
205
- device_id: z.string("device_id is required"),
206
- persona_id: z.string("persona_id is required"),
207
- token: z.string("token is required"), // JWT token for session authentication
170
+ export const IdentifyResponseSchema = t.Object({
171
+ success: t.Literal(true),
172
+ data: t.Object({
173
+ session_id: t.String({ error: "session_id is required" }),
174
+ device_id: t.String({ error: "device_id is required" }),
175
+ persona_id: t.String({ error: "persona_id is required" }),
176
+ token: t.String({ error: "token is required" }), // JWT token for session authentication
208
177
  version_info: VersionInfoSchema,
209
178
  }),
210
- }, {
211
- error: "Identify response is required",
212
179
  });
213
- export const IdentifyErrorResponseSchema = z.object({
214
- success: z.literal(false),
215
- error: z.discriminatedUnion("code", [
216
- z.object({
217
- code: z.literal("MISSING_ORG_ID"),
218
- message: z.string(),
180
+ export const IdentifyErrorResponseSchema = t.Object({
181
+ success: t.Literal(false),
182
+ error: t.Union([
183
+ t.Object({
184
+ code: t.Literal("MISSING_ORG_ID"),
185
+ message: t.String(),
219
186
  }),
220
- z.object({
221
- code: z.literal("MISSING_PROJECT_ID"),
222
- message: z.string(),
187
+ t.Object({
188
+ code: t.Literal("MISSING_PROJECT_ID"),
189
+ message: t.String(),
223
190
  }),
224
- z.object({
225
- code: z.literal("MISSING_ENVIRONMENT_SLUG"),
226
- message: z.string(),
191
+ t.Object({
192
+ code: t.Literal("MISSING_ENVIRONMENT_SLUG"),
193
+ message: t.String(),
227
194
  }),
228
- z.object({
229
- code: z.literal("MISSING_DEVICE_ID"),
230
- message: z.string(),
195
+ t.Object({
196
+ code: t.Literal("MISSING_DEVICE_ID"),
197
+ message: t.String(),
231
198
  }),
232
- z.object({
233
- code: z.literal("IDENTIFY_FAILED"),
234
- message: z.string(),
199
+ t.Object({
200
+ code: t.Literal("IDENTIFY_FAILED"),
201
+ message: t.String(),
235
202
  }),
236
- z.object({
237
- code: z.literal("NO_SESSION_ID_GENERATED"),
238
- message: z.string(),
203
+ t.Object({
204
+ code: t.Literal("NO_SESSION_ID_GENERATED"),
205
+ message: t.String(),
239
206
  }),
240
- z.object({
241
- code: z.literal("NO_DEVICE_ID_GENERATED"),
242
- message: z.string(),
207
+ t.Object({
208
+ code: t.Literal("NO_DEVICE_ID_GENERATED"),
209
+ message: t.String(),
243
210
  }),
244
- z.object({
245
- code: z.literal("NO_PERSONA_ID_GENERATED"),
246
- message: z.string(),
211
+ t.Object({
212
+ code: t.Literal("NO_PERSONA_ID_GENERATED"),
213
+ message: t.String(),
247
214
  }),
248
215
  ]),
249
- }, {
250
- error: "Identify error response is required",
251
216
  });
252
- export const ValidationErrorSchema = z.object({
253
- success: z.literal(false),
254
- error: z.literal("VALIDATION"),
255
- message: z.string(),
256
- }, {
257
- error: "Validation error is required",
217
+ export const ValidationErrorSchema = t.Object({
218
+ success: t.Literal(false),
219
+ error: t.Literal("VALIDATION"),
220
+ message: t.String(),
258
221
  });
259
- // export type ValidationError = z.infer<typeof ValidationErrorSchema>;
260
- ValidationError;
@@ -37,11 +37,25 @@ export declare enum ProjectApiKeyKindEnum {
37
37
  publishable = "publishable",
38
38
  secret = "secret"
39
39
  }
40
+ export declare enum ProjectStatusEnum {
41
+ PENDING_SETUP = "PENDING_SETUP",
42
+ ACTIVE = "ACTIVE",
43
+ PAUSED = "PAUSED",
44
+ ARCHIVED = "ARCHIVED"
45
+ }
40
46
  export declare enum ProjectTypeEnum {
41
47
  REACT_NATIVE = "REACT_NATIVE",
42
48
  EXPO = "EXPO"
43
49
  }
44
- export declare enum VersionStatusEnum {
45
- LIVE = "LIVE",
46
- DISABLED = "DISABLED"
50
+ export declare enum ProjectVersionStatusEnum {
51
+ SUPPORTED = "SUPPORTED",
52
+ UPDATE_AVAILABLE = "UPDATE_AVAILABLE",
53
+ UPDATE_RECOMMENDED = "UPDATE_RECOMMENDED",
54
+ UPDATE_REQUIRED = "UPDATE_REQUIRED"
55
+ }
56
+ export declare enum VersionBuildStatusEnum {
57
+ SUPPORTED = "SUPPORTED",
58
+ UPDATE_AVAILABLE = "UPDATE_AVAILABLE",
59
+ UPDATE_RECOMMENDED = "UPDATE_RECOMMENDED",
60
+ UPDATE_REQUIRED = "UPDATE_REQUIRED"
47
61
  }
@@ -42,13 +42,29 @@ export var ProjectApiKeyKindEnum;
42
42
  ProjectApiKeyKindEnum["publishable"] = "publishable";
43
43
  ProjectApiKeyKindEnum["secret"] = "secret";
44
44
  })(ProjectApiKeyKindEnum || (ProjectApiKeyKindEnum = {}));
45
+ export var ProjectStatusEnum;
46
+ (function (ProjectStatusEnum) {
47
+ ProjectStatusEnum["PENDING_SETUP"] = "PENDING_SETUP";
48
+ ProjectStatusEnum["ACTIVE"] = "ACTIVE";
49
+ ProjectStatusEnum["PAUSED"] = "PAUSED";
50
+ ProjectStatusEnum["ARCHIVED"] = "ARCHIVED";
51
+ })(ProjectStatusEnum || (ProjectStatusEnum = {}));
45
52
  export var ProjectTypeEnum;
46
53
  (function (ProjectTypeEnum) {
47
54
  ProjectTypeEnum["REACT_NATIVE"] = "REACT_NATIVE";
48
55
  ProjectTypeEnum["EXPO"] = "EXPO";
49
56
  })(ProjectTypeEnum || (ProjectTypeEnum = {}));
50
- export var VersionStatusEnum;
51
- (function (VersionStatusEnum) {
52
- VersionStatusEnum["LIVE"] = "LIVE";
53
- VersionStatusEnum["DISABLED"] = "DISABLED";
54
- })(VersionStatusEnum || (VersionStatusEnum = {}));
57
+ export var ProjectVersionStatusEnum;
58
+ (function (ProjectVersionStatusEnum) {
59
+ ProjectVersionStatusEnum["SUPPORTED"] = "SUPPORTED";
60
+ ProjectVersionStatusEnum["UPDATE_AVAILABLE"] = "UPDATE_AVAILABLE";
61
+ ProjectVersionStatusEnum["UPDATE_RECOMMENDED"] = "UPDATE_RECOMMENDED";
62
+ ProjectVersionStatusEnum["UPDATE_REQUIRED"] = "UPDATE_REQUIRED";
63
+ })(ProjectVersionStatusEnum || (ProjectVersionStatusEnum = {}));
64
+ export var VersionBuildStatusEnum;
65
+ (function (VersionBuildStatusEnum) {
66
+ VersionBuildStatusEnum["SUPPORTED"] = "SUPPORTED";
67
+ VersionBuildStatusEnum["UPDATE_AVAILABLE"] = "UPDATE_AVAILABLE";
68
+ VersionBuildStatusEnum["UPDATE_RECOMMENDED"] = "UPDATE_RECOMMENDED";
69
+ VersionBuildStatusEnum["UPDATE_REQUIRED"] = "UPDATE_REQUIRED";
70
+ })(VersionBuildStatusEnum || (VersionBuildStatusEnum = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teardown/ingest-api",
3
- "version": "0.0.21-alpha.11",
3
+ "version": "0.0.21-alpha.13",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -36,7 +36,7 @@
36
36
  "prebuild": "bun run copy:schemas",
37
37
  "build": "bun x tsc --project ./tsconfig.lib.json",
38
38
  "dev": "bun x tsc --watch --project ./tsconfig.lib.json",
39
- "check:types": "bun x tsc --noEmit --project ./tsconfig.lib.json",
39
+ "typecheck": "bun x tsc --noEmit --project ./tsconfig.lib.json",
40
40
  "prepublishOnly": "bun x turbo run build"
41
41
  },
42
42
  "dependencies": {
@@ -48,6 +48,7 @@
48
48
  "elysia": ">= 1.4.0"
49
49
  },
50
50
  "devDependencies": {
51
+ "@sinclair/typebox": "^0.34.41",
51
52
  "@types/bun": "1.3.3",
52
53
  "@teardown/ingest": "0.0.1",
53
54
  "@teardown/tsconfig": "1.0.0",