@pocketcoder/shared 0.0.2

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 (67) hide show
  1. package/LICENSE +53 -0
  2. package/dist/constants/__tests__/limits.test.d.ts +2 -0
  3. package/dist/constants/__tests__/limits.test.d.ts.map +1 -0
  4. package/dist/constants/__tests__/limits.test.js +68 -0
  5. package/dist/constants/__tests__/limits.test.js.map +1 -0
  6. package/dist/constants/errors.d.ts +48 -0
  7. package/dist/constants/errors.d.ts.map +1 -0
  8. package/dist/constants/errors.js +61 -0
  9. package/dist/constants/errors.js.map +1 -0
  10. package/dist/constants/index.d.ts +3 -0
  11. package/dist/constants/index.d.ts.map +1 -0
  12. package/dist/constants/index.js +4 -0
  13. package/dist/constants/index.js.map +1 -0
  14. package/dist/constants/limits.d.ts +41 -0
  15. package/dist/constants/limits.d.ts.map +1 -0
  16. package/dist/constants/limits.js +46 -0
  17. package/dist/constants/limits.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +4 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/types/__tests__/auth-messages.test.d.ts +2 -0
  23. package/dist/types/__tests__/auth-messages.test.d.ts.map +1 -0
  24. package/dist/types/__tests__/auth-messages.test.js +94 -0
  25. package/dist/types/__tests__/auth-messages.test.js.map +1 -0
  26. package/dist/types/__tests__/messages.test.d.ts +2 -0
  27. package/dist/types/__tests__/messages.test.d.ts.map +1 -0
  28. package/dist/types/__tests__/messages.test.js +329 -0
  29. package/dist/types/__tests__/messages.test.js.map +1 -0
  30. package/dist/types/__tests__/relay-types.test.d.ts +2 -0
  31. package/dist/types/__tests__/relay-types.test.d.ts.map +1 -0
  32. package/dist/types/__tests__/relay-types.test.js +69 -0
  33. package/dist/types/__tests__/relay-types.test.js.map +1 -0
  34. package/dist/types/auth-messages.d.ts +49 -0
  35. package/dist/types/auth-messages.d.ts.map +1 -0
  36. package/dist/types/auth-messages.js +9 -0
  37. package/dist/types/auth-messages.js.map +1 -0
  38. package/dist/types/database.d.ts +259 -0
  39. package/dist/types/database.d.ts.map +1 -0
  40. package/dist/types/database.js +6 -0
  41. package/dist/types/database.js.map +1 -0
  42. package/dist/types/index.d.ts +5 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/index.js +6 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/dist/types/messages.d.ts +821 -0
  47. package/dist/types/messages.d.ts.map +1 -0
  48. package/dist/types/messages.js +122 -0
  49. package/dist/types/messages.js.map +1 -0
  50. package/dist/types/relay.d.ts +62 -0
  51. package/dist/types/relay.d.ts.map +1 -0
  52. package/dist/types/relay.js +8 -0
  53. package/dist/types/relay.js.map +1 -0
  54. package/package.json +49 -0
  55. package/src/constants/__tests__/limits.test.ts +93 -0
  56. package/src/constants/errors.ts +71 -0
  57. package/src/constants/index.ts +3 -0
  58. package/src/constants/limits.ts +53 -0
  59. package/src/index.ts +3 -0
  60. package/src/types/__tests__/auth-messages.test.ts +108 -0
  61. package/src/types/__tests__/messages.test.ts +382 -0
  62. package/src/types/__tests__/relay-types.test.ts +82 -0
  63. package/src/types/auth-messages.ts +66 -0
  64. package/src/types/database.ts +320 -0
  65. package/src/types/index.ts +5 -0
  66. package/src/types/messages.ts +1310 -0
  67. package/src/types/relay.ts +79 -0
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Relay-specific types shared between relay, daemon, and client.
3
+ * Covers connection state, authentication handshake, and daemon status messages.
4
+ *
5
+ * See PRD.md: "Client Handshake Flow", "Daemon Registration", and "Connection Status" sections.
6
+ */
7
+
8
+ import type { MessageError } from "./messages.js";
9
+
10
+ // ---------------------------------------------------------------------------
11
+ // Connection types
12
+ // ---------------------------------------------------------------------------
13
+
14
+ /**
15
+ * Represents a connected daemon's state in the relay.
16
+ * Registry key: `${userId}:${machineKey}`
17
+ *
18
+ * The `ws` field is typed as `unknown` since the shared package doesn't
19
+ * depend on the `ws` library. The relay casts it to `WebSocket` at runtime.
20
+ */
21
+ export interface DaemonConnection {
22
+ ws: unknown;
23
+ userId: string;
24
+ machineKey: string;
25
+ projects: Set<string>;
26
+ connectedAt: Date;
27
+ lastPongAt: Date;
28
+ }
29
+
30
+ // ---------------------------------------------------------------------------
31
+ // client_auth (Client → Relay → Client)
32
+ // ---------------------------------------------------------------------------
33
+
34
+ /** Client sends to authenticate on connect */
35
+ export interface ClientAuthMessage {
36
+ type: "client_auth";
37
+ payload: {
38
+ token: string;
39
+ };
40
+ }
41
+
42
+ /** Relay responds with auth result */
43
+ export interface ClientAuthResponse {
44
+ type: "client_auth_response";
45
+ payload: {
46
+ userId?: string;
47
+ authenticated: boolean;
48
+ };
49
+ error?: MessageError;
50
+ }
51
+
52
+ // ---------------------------------------------------------------------------
53
+ // daemon_status (Relay → Client, push message)
54
+ // ---------------------------------------------------------------------------
55
+
56
+ /** Relay pushes to clients when a daemon connects or disconnects */
57
+ export interface DaemonStatusMessage {
58
+ type: "daemon_status";
59
+ payload: {
60
+ machineKey: string;
61
+ connected: boolean;
62
+ lastSeen?: string; // ISO 8601
63
+ };
64
+ }
65
+
66
+ /**
67
+ * Initial daemon status pushed after client_auth, containing all user's machines.
68
+ * Uses `machines` array format instead of single machine.
69
+ */
70
+ export interface DaemonStatusBatchMessage {
71
+ type: "daemon_status";
72
+ payload: {
73
+ machines: Array<{
74
+ machineKey: string;
75
+ connected: boolean;
76
+ lastSeen?: string;
77
+ }>;
78
+ };
79
+ }