@arcote.tech/arc-host 0.1.3 → 0.1.5

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/auth/jwt.ts ADDED
@@ -0,0 +1,42 @@
1
+ import jwt from "jsonwebtoken";
2
+
3
+ // JWT secret key - in production, use environment variable
4
+ const JWT_SECRET =
5
+ process.env.JWT_SECRET ||
6
+ "your-super-secret-jwt-key-please-change-in-production";
7
+
8
+ // JWT expiration time
9
+ const JWT_EXPIRES_IN = process.env.JWT_EXPIRES_IN || "7d";
10
+
11
+ export interface TokenPayload {
12
+ userId: string;
13
+ email: string;
14
+ iat?: number;
15
+ exp?: number;
16
+ }
17
+
18
+ /**
19
+ * Generate a JWT token with user ID and email
20
+ */
21
+ export function generateToken(userId: string, email: string): string {
22
+ const payload: TokenPayload = {
23
+ userId,
24
+ email,
25
+ };
26
+
27
+ return jwt.sign(payload, JWT_SECRET, {
28
+ expiresIn: JWT_EXPIRES_IN,
29
+ } as jwt.SignOptions);
30
+ }
31
+
32
+ /**
33
+ * Verify and decode a JWT token
34
+ */
35
+ export function verifyToken(token: string): TokenPayload {
36
+ try {
37
+ const decoded = jwt.verify(token, JWT_SECRET) as TokenPayload;
38
+ return decoded;
39
+ } catch (error) {
40
+ throw new Error("Invalid or expired token");
41
+ }
42
+ }
@@ -0,0 +1,15 @@
1
+ export interface TokenPayload {
2
+ userId: string;
3
+ email: string;
4
+ iat?: number;
5
+ exp?: number;
6
+ }
7
+ /**
8
+ * Generate a JWT token with user ID and email
9
+ */
10
+ export declare function generateToken(userId: string, email: string): string;
11
+ /**
12
+ * Verify and decode a JWT token
13
+ */
14
+ export declare function verifyToken(token: string): TokenPayload;
15
+ //# sourceMappingURL=jwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../auth/jwt.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAOvD"}
package/dist/host.d.ts CHANGED
@@ -3,16 +3,38 @@ declare class RTCHost implements RealTimeCommunicationAdapter {
3
3
  private context;
4
4
  private server;
5
5
  private dataStore;
6
+ private model;
6
7
  constructor(context: ArcContextAny, dbAdapter: Promise<DatabaseAdapter>);
7
8
  commitChanges(changes: DataStorageChanges[]): void;
8
9
  sync(progressCallback: ({ store, size, }: {
9
10
  store: string;
10
11
  size: number;
11
12
  }) => void): Promise<void>;
12
- private verifyToken;
13
+ private verifyAuthToken;
14
+ /**
15
+ * Convert JWT payload to AuthContext
16
+ */
17
+ private tokenToAuthContext;
18
+ /**
19
+ * Extract client IP address from request headers
20
+ */
21
+ private getClientIpAddress;
22
+ /**
23
+ * Get default auth context for anonymous users
24
+ */
25
+ private getDefaultAuthContext;
26
+ /**
27
+ * Parse FormData back to an object structure
28
+ */
29
+ private parseFormDataToObject;
30
+ /**
31
+ * Helper method to set nested properties from FormData keys like "user[profile][avatar]"
32
+ */
33
+ private setNestedProperty;
13
34
  private handleCommand;
14
35
  private handleQuery;
15
36
  private setupServer;
37
+ private isPublicEndpoint;
16
38
  private handleSync;
17
39
  private onMessage;
18
40
  private publishMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../host.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EAGvB,KAAK,4BAA4B,EAClC,MAAM,kBAAkB,CAAC;AAI1B,cAAM,OAAQ,YAAW,4BAA4B;IAKjD,OAAO,CAAC,OAAO;IAJjB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,SAAS,CAAoB;gBAG3B,OAAO,EAAE,aAAa,EAC9B,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC;IAMrC,aAAa,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAI5C,IAAI,CACR,gBAAgB,EAAE,CAAC,EACjB,KAAK,EACL,IAAI,GACL,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,IAAI,GACT,OAAO,CAAC,IAAI,CAAC;YAIF,WAAW;YAcX,aAAa;YAgCb,WAAW;IAgDzB,OAAO,CAAC,WAAW;YA2DL,UAAU;YA+CV,SAAS;IAevB,OAAO,CAAC,cAAc;CAGvB;AAED,eAAO,MAAM,cAAc,YACf,aAAa,aAAa,OAAO,CAAC,eAAe,CAAC,kBAE3D,CAAC"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../host.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,aAAa,EAElB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EAGvB,KAAK,4BAA4B,EAClC,MAAM,kBAAkB,CAAC;AAI1B,cAAM,OAAQ,YAAW,4BAA4B;IAMjD,OAAO,CAAC,OAAO;IALjB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,KAAK,CAAuB;gBAG1B,OAAO,EAAE,aAAa,EAC9B,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC;IASrC,aAAa,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAI5C,IAAI,CACR,gBAAgB,EAAE,CAAC,EACjB,KAAK,EACL,IAAI,GACL,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,IAAI,GACT,OAAO,CAAC,IAAI,CAAC;YAIF,eAAe;IAS7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;OAEG;YACW,qBAAqB;IAWnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;YAwCX,aAAa;YAoDb,WAAW;IAiEzB,OAAO,CAAC,WAAW;IA6DnB,OAAO,CAAC,gBAAgB;YAsBV,UAAU;YA+CV,SAAS;IAevB,OAAO,CAAC,cAAc;CAGvB;AAED,eAAO,MAAM,cAAc,YACf,aAAa,aAAa,OAAO,CAAC,eAAe,CAAC,kBAE3D,CAAC"}