tempest.games 0.1.46 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,487 @@
1
+ {
2
+ "id": "4695745b-981c-4af5-ab2a-a8dd779414e4",
3
+ "prevId": "867cea97-0f6f-4013-b53f-21dabcce7098",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "public.accountActions": {
8
+ "name": "accountActions",
9
+ "schema": "",
10
+ "columns": {
11
+ "userId": {
12
+ "name": "userId",
13
+ "type": "uuid",
14
+ "primaryKey": true,
15
+ "notNull": true
16
+ },
17
+ "action": {
18
+ "name": "action",
19
+ "type": "accountAction",
20
+ "typeSchema": "public",
21
+ "primaryKey": false,
22
+ "notNull": true
23
+ },
24
+ "code": {
25
+ "name": "code",
26
+ "type": "varchar(254)",
27
+ "primaryKey": false,
28
+ "notNull": true
29
+ },
30
+ "wrongCodeCount": {
31
+ "name": "wrongCodeCount",
32
+ "type": "integer",
33
+ "primaryKey": false,
34
+ "notNull": true,
35
+ "default": 0
36
+ },
37
+ "expiresAt": {
38
+ "name": "expiresAt",
39
+ "type": "timestamp with time zone",
40
+ "primaryKey": false,
41
+ "notNull": true
42
+ }
43
+ },
44
+ "indexes": {},
45
+ "foreignKeys": {
46
+ "accountActions_userId_users_id_fk": {
47
+ "name": "accountActions_userId_users_id_fk",
48
+ "tableFrom": "accountActions",
49
+ "tableTo": "users",
50
+ "columnsFrom": [
51
+ "userId"
52
+ ],
53
+ "columnsTo": [
54
+ "id"
55
+ ],
56
+ "onDelete": "no action",
57
+ "onUpdate": "no action"
58
+ }
59
+ },
60
+ "compositePrimaryKeys": {},
61
+ "uniqueConstraints": {},
62
+ "policies": {},
63
+ "checkConstraints": {},
64
+ "isRLSEnabled": false
65
+ },
66
+ "public.banishedIps": {
67
+ "name": "banishedIps",
68
+ "schema": "",
69
+ "columns": {
70
+ "ip": {
71
+ "name": "ip",
72
+ "type": "varchar(45)",
73
+ "primaryKey": true,
74
+ "notNull": true
75
+ },
76
+ "reason": {
77
+ "name": "reason",
78
+ "type": "varchar(2048)",
79
+ "primaryKey": false,
80
+ "notNull": true
81
+ },
82
+ "banishedAt": {
83
+ "name": "banishedAt",
84
+ "type": "timestamp with time zone",
85
+ "primaryKey": false,
86
+ "notNull": true,
87
+ "default": "now()"
88
+ },
89
+ "banishedUntil": {
90
+ "name": "banishedUntil",
91
+ "type": "timestamp with time zone",
92
+ "primaryKey": false,
93
+ "notNull": false
94
+ }
95
+ },
96
+ "indexes": {},
97
+ "foreignKeys": {},
98
+ "compositePrimaryKeys": {},
99
+ "uniqueConstraints": {},
100
+ "policies": {},
101
+ "checkConstraints": {},
102
+ "isRLSEnabled": false
103
+ },
104
+ "public.games": {
105
+ "name": "games",
106
+ "schema": "",
107
+ "columns": {
108
+ "id": {
109
+ "name": "id",
110
+ "type": "uuid",
111
+ "primaryKey": true,
112
+ "notNull": true,
113
+ "default": "gen_random_uuid()"
114
+ }
115
+ },
116
+ "indexes": {},
117
+ "foreignKeys": {},
118
+ "compositePrimaryKeys": {},
119
+ "uniqueConstraints": {},
120
+ "policies": {},
121
+ "checkConstraints": {},
122
+ "isRLSEnabled": false
123
+ },
124
+ "public.passwordResetAttempts": {
125
+ "name": "passwordResetAttempts",
126
+ "schema": "",
127
+ "columns": {
128
+ "id": {
129
+ "name": "id",
130
+ "type": "uuid",
131
+ "primaryKey": true,
132
+ "notNull": true,
133
+ "default": "gen_random_uuid()"
134
+ },
135
+ "userId": {
136
+ "name": "userId",
137
+ "type": "uuid",
138
+ "primaryKey": false,
139
+ "notNull": true
140
+ },
141
+ "requestedIp": {
142
+ "name": "requestedIp",
143
+ "type": "varchar(45)",
144
+ "primaryKey": false,
145
+ "notNull": true
146
+ },
147
+ "requestedAt": {
148
+ "name": "requestedAt",
149
+ "type": "timestamp with time zone",
150
+ "primaryKey": false,
151
+ "notNull": true,
152
+ "default": "now()"
153
+ },
154
+ "succeededIp": {
155
+ "name": "succeededIp",
156
+ "type": "varchar(45)",
157
+ "primaryKey": false,
158
+ "notNull": false
159
+ },
160
+ "succeededAt": {
161
+ "name": "succeededAt",
162
+ "type": "timestamp with time zone",
163
+ "primaryKey": false,
164
+ "notNull": false
165
+ },
166
+ "verificationMethod": {
167
+ "name": "verificationMethod",
168
+ "type": "twoFactorMethod",
169
+ "typeSchema": "public",
170
+ "primaryKey": false,
171
+ "notNull": true
172
+ }
173
+ },
174
+ "indexes": {},
175
+ "foreignKeys": {
176
+ "passwordResetAttempts_userId_users_id_fk": {
177
+ "name": "passwordResetAttempts_userId_users_id_fk",
178
+ "tableFrom": "passwordResetAttempts",
179
+ "tableTo": "users",
180
+ "columnsFrom": [
181
+ "userId"
182
+ ],
183
+ "columnsTo": [
184
+ "id"
185
+ ],
186
+ "onDelete": "cascade",
187
+ "onUpdate": "no action"
188
+ }
189
+ },
190
+ "compositePrimaryKeys": {},
191
+ "uniqueConstraints": {},
192
+ "policies": {},
193
+ "checkConstraints": {},
194
+ "isRLSEnabled": false
195
+ },
196
+ "public.players": {
197
+ "name": "players",
198
+ "schema": "",
199
+ "columns": {
200
+ "userId": {
201
+ "name": "userId",
202
+ "type": "uuid",
203
+ "primaryKey": false,
204
+ "notNull": true
205
+ },
206
+ "gameId": {
207
+ "name": "gameId",
208
+ "type": "uuid",
209
+ "primaryKey": false,
210
+ "notNull": true
211
+ },
212
+ "score": {
213
+ "name": "score",
214
+ "type": "integer",
215
+ "primaryKey": false,
216
+ "notNull": true
217
+ }
218
+ },
219
+ "indexes": {},
220
+ "foreignKeys": {
221
+ "players_userId_users_id_fk": {
222
+ "name": "players_userId_users_id_fk",
223
+ "tableFrom": "players",
224
+ "tableTo": "users",
225
+ "columnsFrom": [
226
+ "userId"
227
+ ],
228
+ "columnsTo": [
229
+ "id"
230
+ ],
231
+ "onDelete": "cascade",
232
+ "onUpdate": "no action"
233
+ },
234
+ "players_gameId_games_id_fk": {
235
+ "name": "players_gameId_games_id_fk",
236
+ "tableFrom": "players",
237
+ "tableTo": "games",
238
+ "columnsFrom": [
239
+ "gameId"
240
+ ],
241
+ "columnsTo": [
242
+ "id"
243
+ ],
244
+ "onDelete": "cascade",
245
+ "onUpdate": "no action"
246
+ }
247
+ },
248
+ "compositePrimaryKeys": {
249
+ "players_userId_gameId_pk": {
250
+ "name": "players_userId_gameId_pk",
251
+ "columns": [
252
+ "userId",
253
+ "gameId"
254
+ ]
255
+ }
256
+ },
257
+ "uniqueConstraints": {},
258
+ "policies": {},
259
+ "checkConstraints": {},
260
+ "isRLSEnabled": false
261
+ },
262
+ "public.signInHistory": {
263
+ "name": "signInHistory",
264
+ "schema": "",
265
+ "columns": {
266
+ "id": {
267
+ "name": "id",
268
+ "type": "uuid",
269
+ "primaryKey": true,
270
+ "notNull": true,
271
+ "default": "gen_random_uuid()"
272
+ },
273
+ "userId": {
274
+ "name": "userId",
275
+ "type": "uuid",
276
+ "primaryKey": false,
277
+ "notNull": false
278
+ },
279
+ "signInTime": {
280
+ "name": "signInTime",
281
+ "type": "timestamp with time zone",
282
+ "primaryKey": false,
283
+ "notNull": true,
284
+ "default": "now()"
285
+ },
286
+ "ipAddress": {
287
+ "name": "ipAddress",
288
+ "type": "varchar(45)",
289
+ "primaryKey": false,
290
+ "notNull": true
291
+ },
292
+ "userAgent": {
293
+ "name": "userAgent",
294
+ "type": "varchar(1024)",
295
+ "primaryKey": false,
296
+ "notNull": false
297
+ },
298
+ "successful": {
299
+ "name": "successful",
300
+ "type": "boolean",
301
+ "primaryKey": false,
302
+ "notNull": true,
303
+ "default": false
304
+ }
305
+ },
306
+ "indexes": {},
307
+ "foreignKeys": {
308
+ "signInHistory_userId_users_id_fk": {
309
+ "name": "signInHistory_userId_users_id_fk",
310
+ "tableFrom": "signInHistory",
311
+ "tableTo": "users",
312
+ "columnsFrom": [
313
+ "userId"
314
+ ],
315
+ "columnsTo": [
316
+ "id"
317
+ ],
318
+ "onDelete": "cascade",
319
+ "onUpdate": "no action"
320
+ }
321
+ },
322
+ "compositePrimaryKeys": {},
323
+ "uniqueConstraints": {},
324
+ "policies": {},
325
+ "checkConstraints": {},
326
+ "isRLSEnabled": false
327
+ },
328
+ "public.users": {
329
+ "name": "users",
330
+ "schema": "",
331
+ "columns": {
332
+ "id": {
333
+ "name": "id",
334
+ "type": "uuid",
335
+ "primaryKey": true,
336
+ "notNull": true,
337
+ "default": "gen_random_uuid()"
338
+ },
339
+ "username": {
340
+ "name": "username",
341
+ "type": "varchar(16)",
342
+ "primaryKey": false,
343
+ "notNull": true
344
+ },
345
+ "emailOffered": {
346
+ "name": "emailOffered",
347
+ "type": "varchar(254)",
348
+ "primaryKey": false,
349
+ "notNull": true
350
+ },
351
+ "emailVerified": {
352
+ "name": "emailVerified",
353
+ "type": "varchar(254)",
354
+ "primaryKey": false,
355
+ "notNull": false
356
+ },
357
+ "password": {
358
+ "name": "password",
359
+ "type": "varchar(254)",
360
+ "primaryKey": false,
361
+ "notNull": false
362
+ },
363
+ "createdAt": {
364
+ "name": "createdAt",
365
+ "type": "timestamp with time zone",
366
+ "primaryKey": false,
367
+ "notNull": true,
368
+ "default": "now()"
369
+ },
370
+ "createdIp": {
371
+ "name": "createdIp",
372
+ "type": "varchar(45)",
373
+ "primaryKey": false,
374
+ "notNull": true
375
+ },
376
+ "isActive": {
377
+ "name": "isActive",
378
+ "type": "boolean",
379
+ "primaryKey": false,
380
+ "notNull": true,
381
+ "default": false
382
+ },
383
+ "verifiedAt": {
384
+ "name": "verifiedAt",
385
+ "type": "timestamp with time zone",
386
+ "primaryKey": false,
387
+ "notNull": false
388
+ },
389
+ "userRole": {
390
+ "name": "userRole",
391
+ "type": "role",
392
+ "typeSchema": "public",
393
+ "primaryKey": false,
394
+ "notNull": false,
395
+ "default": "'user'"
396
+ }
397
+ },
398
+ "indexes": {
399
+ "usernameUniqueIndex": {
400
+ "name": "usernameUniqueIndex",
401
+ "columns": [
402
+ {
403
+ "expression": "lower(\"username\")",
404
+ "asc": true,
405
+ "isExpression": true,
406
+ "nulls": "last"
407
+ }
408
+ ],
409
+ "isUnique": true,
410
+ "concurrently": false,
411
+ "method": "btree",
412
+ "with": {}
413
+ },
414
+ "emailVerifiedUniqueIndex": {
415
+ "name": "emailVerifiedUniqueIndex",
416
+ "columns": [
417
+ {
418
+ "expression": "lower(\"emailVerified\")",
419
+ "asc": true,
420
+ "isExpression": true,
421
+ "nulls": "last"
422
+ }
423
+ ],
424
+ "isUnique": true,
425
+ "concurrently": false,
426
+ "method": "btree",
427
+ "with": {}
428
+ }
429
+ },
430
+ "foreignKeys": {},
431
+ "compositePrimaryKeys": {},
432
+ "uniqueConstraints": {},
433
+ "policies": {},
434
+ "checkConstraints": {},
435
+ "isRLSEnabled": false
436
+ }
437
+ },
438
+ "enums": {
439
+ "public.accountAction": {
440
+ "name": "accountAction",
441
+ "schema": "public",
442
+ "values": [
443
+ "cooldown",
444
+ "confirmEmail",
445
+ "signIn",
446
+ "resetPassword"
447
+ ]
448
+ },
449
+ "public.role": {
450
+ "name": "role",
451
+ "schema": "public",
452
+ "values": [
453
+ "admin",
454
+ "user"
455
+ ]
456
+ },
457
+ "public.trackedUserColumnName": {
458
+ "name": "trackedUserColumnName",
459
+ "schema": "public",
460
+ "values": [
461
+ "username",
462
+ "emailOffered",
463
+ "emailVerified",
464
+ "password",
465
+ "userRole"
466
+ ]
467
+ },
468
+ "public.twoFactorMethod": {
469
+ "name": "twoFactorMethod",
470
+ "schema": "public",
471
+ "values": [
472
+ "email",
473
+ "phone"
474
+ ]
475
+ }
476
+ },
477
+ "schemas": {},
478
+ "sequences": {},
479
+ "roles": {},
480
+ "policies": {},
481
+ "views": {},
482
+ "_meta": {
483
+ "columns": {},
484
+ "schemas": {},
485
+ "tables": {}
486
+ }
487
+ }
@@ -78,6 +78,55 @@
78
78
  "when": 1744608910962,
79
79
  "tag": "0010_lucky_brood",
80
80
  "breakpoints": true
81
+ },
82
+ {
83
+ "idx": 11,
84
+ "version": "7",
85
+ "when": 1744698631375,
86
+ "tag": "0011_slimy_onslaught",
87
+ "breakpoints": true
88
+ },
89
+ {
90
+ "idx": 12,
91
+ "version": "7",
92
+ "when": 1745137286026,
93
+ "tag": "0012_brown_silvermane",
94
+ "breakpoints": true
95
+ },
96
+ {
97
+ "idx": 13,
98
+ "version": "7",
99
+ "when": 1745183881022,
100
+ "tag": "0013_moaning_titanium_man",
101
+ "breakpoints": true
102
+ },
103
+ {
104
+ "idx": 14,
105
+ "version": "7",
106
+ "when": 1745192808267,
107
+ "tag": "0014_ambiguous_blacklash",
108
+ "breakpoints": true
109
+ },
110
+ {
111
+ "idx": 15,
112
+ "version": "7",
113
+ "when": 1745222823635,
114
+ "tag": "0015_careful_newton_destine",
115
+ "breakpoints": true
116
+ },
117
+ {
118
+ "idx": 16,
119
+ "version": "7",
120
+ "when": 1745279706544,
121
+ "tag": "0016_whole_iceman",
122
+ "breakpoints": true
123
+ },
124
+ {
125
+ "idx": 17,
126
+ "version": "7",
127
+ "when": 1745697499088,
128
+ "tag": "0017_sparkling_matthew_murdock",
129
+ "breakpoints": true
81
130
  }
82
131
  ]
83
132
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tempest.games",
3
- "version": "0.1.46",
3
+ "version": "0.2.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -25,51 +25,64 @@
25
25
  "index.html"
26
26
  ],
27
27
  "dependencies": {
28
- "@t3-oss/env-core": "0.13.0",
28
+ "@floating-ui/react": "0.27.8",
29
+ "@react-email/components": "0.0.37",
30
+ "@t3-oss/env-core": "0.13.4",
31
+ "@trpc/client": "11.1.2",
32
+ "@trpc/server": "11.1.2",
29
33
  "arktype": "2.1.20",
30
34
  "cron": "4.3.0",
31
- "drizzle-orm": "0.42.0",
32
- "openai": "4.96.0",
35
+ "drizzle-orm": "0.43.1",
36
+ "nanoid": "5.1.5",
37
+ "openai": "4.96.2",
33
38
  "postgres": "3.4.5",
34
39
  "react": "19.1.0",
35
40
  "react-dom": "19.1.0",
36
- "safegen": "0.2.16",
41
+ "react-email": "4.0.11",
42
+ "resend": "4.5.0",
43
+ "safegen": "0.3.0",
37
44
  "socket.io": "4.8.1",
38
45
  "socket.io-client": "4.8.1",
39
- "atom.io": "0.32.4",
46
+ "atom.io": "0.33.0",
40
47
  "safedeposit": "0.1.1",
41
48
  "treetrunks": "0.1.3"
42
49
  },
43
50
  "devDependencies": {
44
51
  "@eslint/js": "9.25.1",
45
- "@types/node": "22.14.1",
52
+ "@react-email/components": "0.0.37",
53
+ "@types/bun": "npm:bun-types@1.2.11",
54
+ "@types/cors": "2.8.17",
55
+ "@types/node": "22.15.3",
46
56
  "@types/react": "19.1.2",
47
- "@types/react-dom": "19.1.2",
57
+ "@types/react-dom": "19.1.3",
48
58
  "@vitejs/plugin-react-swc": "3.9.0",
49
- "bun-types": "1.2.10",
50
59
  "concurrently": "9.1.2",
60
+ "cors": "2.8.5",
51
61
  "cross-env": "7.0.3",
52
62
  "dotenv": "16.5.0",
53
63
  "dotenv-cli": "8.0.0",
54
64
  "drizzle-kit": "0.31.0",
65
+ "elysia": "1.2.25",
55
66
  "eslint": "9.25.1",
56
67
  "eslint-plugin-react-refresh": "0.4.20",
57
68
  "globals": "16.0.0",
58
69
  "rimraf": "6.0.1",
59
70
  "sass-embedded": "1.87.0",
60
- "tsx": "4.19.3",
71
+ "tsx": "4.19.4",
61
72
  "typescript": "5.8.3",
62
- "typescript-eslint": "8.31.0",
63
- "vite": "6.3.3",
73
+ "typescript-eslint": "8.31.1",
74
+ "vite": "6.3.4",
64
75
  "vite-tsconfig-paths": "5.1.4",
65
76
  "vitest": "3.1.2",
66
- "flightdeck": "0.2.28",
67
- "varmint": "0.4.10"
77
+ "varmint": "0.5.0",
78
+ "flightdeck": "0.2.29"
68
79
  },
69
80
  "scripts": {
70
81
  "dev": "bun run env:dev && concurrently \"bun:dev:*\"",
71
82
  "dev:vite": "vite --port 3333",
72
83
  "dev:backend": "bun --hot --env-file=.env.development ./src/backend.bun.ts",
84
+ "dev:email": "bun --env-file=.env.development email dev",
85
+ "dev:db": "pnpm run db:dev",
73
86
  "build": "rimraf ./bin && ([ $PREVIEW ] && bun run env:pre || bun run env:prod) && concurrently \"bun:build:*\"",
74
87
  "build:bun": "./build.bun.ts",
75
88
  "build:vite": "[ $PREVIEW ] && vite build --mode preview || vite build --mode production",