@mentra/react 2.0.1 → 2.1.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mentra/react",
3
- "version": "2.0.1",
3
+ "version": "2.1.1",
4
4
  "description": "React hooks and providers for MentraOS webviews, allowing you to create frontends for smartglasses apps.",
5
5
  "author": "Mentra Labs",
6
6
  "license": "MIT",
@@ -25,6 +25,10 @@
25
25
  "lint": "eslint src --ext .ts,.tsx",
26
26
  "test": "echo \"Error: no test specified\" && exit 1"
27
27
  },
28
+ "peerDependencies": {
29
+ "react": ">=19.0.0",
30
+ "react-dom": ">=19.0.0"
31
+ },
28
32
  "devDependencies": {
29
33
  "@types/jsrsasign": "^10.5.15",
30
34
  "@types/react": "^19.1.6",
@@ -1,13 +0,0 @@
1
- import React, { ReactNode } from 'react';
2
- import { AuthState } from './lib/authCore';
3
- export interface MentraAuthContextType extends AuthState {
4
- isLoading: boolean;
5
- error: string | null;
6
- logout: () => void;
7
- isAuthenticated: boolean;
8
- }
9
- export declare const MentraAuthContext: React.Context<MentraAuthContextType | undefined>;
10
- export declare const MentraAuthProvider: ({ children }: {
11
- children: ReactNode;
12
- }) => import("react/jsx-runtime").JSX.Element;
13
- //# sourceMappingURL=AuthProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../src/AuthProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAsC,SAAS,EAAe,MAAM,OAAO,CAAC;AAC1F,OAAO,EAAmC,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5E,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,iBAAiB,kDAA8D,CAAC;AAE7F,eAAO,MAAM,kBAAkB,GAAI,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CAyCvE,CAAC"}
@@ -1,41 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- // react-sdk/src/AuthProvider.tsx
3
- import { createContext, useState, useEffect, useCallback } from 'react';
4
- import { initializeAuth, clearStoredAuth } from './lib/authCore';
5
- export const MentraAuthContext = createContext(undefined);
6
- export const MentraAuthProvider = ({ children }) => {
7
- const [userId, setUserId] = useState(null);
8
- const [frontendToken, setFrontendToken] = useState(null);
9
- const [isLoading, setIsLoading] = useState(true);
10
- const [error, setError] = useState(null);
11
- const loadAuth = useCallback(async () => {
12
- setIsLoading(true);
13
- setError(null);
14
- try {
15
- const auth = await initializeAuth();
16
- setUserId(auth.userId);
17
- setFrontendToken(auth.frontendToken);
18
- }
19
- catch (e) {
20
- console.error("MentraOS Auth Initialization Error:", e);
21
- setError(e.message || 'Unknown authentication error');
22
- clearStoredAuth(); // Clear any potentially bad stored state
23
- setUserId(null);
24
- setFrontendToken(null);
25
- }
26
- finally {
27
- setIsLoading(false);
28
- }
29
- }, []);
30
- useEffect(() => {
31
- loadAuth();
32
- }, [loadAuth]);
33
- const logout = useCallback(() => {
34
- clearStoredAuth();
35
- setUserId(null);
36
- setFrontendToken(null);
37
- }, []);
38
- const isAuthenticated = !!userId && !!frontendToken;
39
- return (_jsx(MentraAuthContext.Provider, { value: { userId, frontendToken, isLoading, error, logout, isAuthenticated }, children: children }));
40
- };
41
- //# sourceMappingURL=AuthProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../src/AuthProvider.tsx"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,OAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAa,WAAW,EAAE,MAAM,OAAO,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAa,MAAM,gBAAgB,CAAC;AAS5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAoC,SAAS,CAAC,CAAC;AAE7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE;IAC1E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACtC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;YACxD,QAAQ,CAAE,CAAW,CAAC,OAAO,IAAI,8BAA8B,CAAC,CAAC;YACjE,eAAe,EAAE,CAAC,CAAC,yCAAyC;YAC5D,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,EAAE,CAAC;IACb,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,eAAe,EAAE,CAAC;QAClB,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,aAAa,CAAC;IAEpD,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,YACpG,QAAQ,GACkB,CAC9B,CAAC;AACJ,CAAC,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export { MentraAuthProvider } from './AuthProvider';
2
- export { UseMentraAuth } from './useMentraAuth';
3
- export type { AuthState } from './lib/authCore';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js DELETED
@@ -1,4 +0,0 @@
1
- // react-sdk/src/index.ts
2
- export { MentraAuthProvider } from './AuthProvider';
3
- export { UseMentraAuth } from './useMentraAuth';
4
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,12 +0,0 @@
1
- export interface AuthState {
2
- userId: string | null;
3
- frontendToken: string | null;
4
- }
5
- /**
6
- * Initializes authentication by checking for tokens in URL parameters or localStorage
7
- * @returns Promise that resolves to the current authentication state
8
- */
9
- export declare function initializeAuth(): Promise<AuthState>;
10
- export declare function getStoredAuth(): AuthState;
11
- export declare function clearStoredAuth(): void;
12
- //# sourceMappingURL=authCore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authCore.d.ts","sourceRoot":"","sources":["../../src/lib/authCore.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AA0DD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,SAAS,CAAC,CAkCzD;AAED,wBAAgB,aAAa,IAAI,SAAS,CAIzC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
@@ -1,110 +0,0 @@
1
- // react-sdk/src/lib/authCore.ts
2
- import { KEYUTIL, KJUR } from 'jsrsasign'; // Assuming jsrsasign is available
3
- // This should be the MentraOS Cloud's public key for verifying aos_signed_user_token
4
- const userTokenPublicKeyPEM = `-----BEGIN PUBLIC KEY-----
5
- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Yt2RtNOdeKQxWMY0c84
6
- ADpY1Jy58YWZhaEgP2A5tBwFUKgy/TH9gQLWZjQ3dQ/6XXO8qq0kluoYFqM7ZDRF
7
- zJ0E4Yi0WQncioLRcCx4q8pDmqY9vPKgv6PruJdFWca0l0s3gZ3BqSeWum/C23xK
8
- FPHPwi8gvRdc6ALrkcHeciM+7NykU8c0EY8PSitNL+Tchti95kGu+j6APr5vNewi
9
- zRpQGOdqaLWe+ahHmtj6KtUZjm8o6lan4f/o08C6litizguZXuw2Nn/Kd9fFI1xF
10
- IVNJYMy9jgGaOi71+LpGw+vIpwAawp/7IvULDppvY3DdX5nt05P1+jvVJXPxMKzD
11
- TQIDAQAB
12
- -----END PUBLIC KEY-----`;
13
- const USER_ID_KEY = 'mentraos_userId';
14
- const FRONTEND_TOKEN_KEY = 'mentraos_frontendToken';
15
- /**
16
- * Verifies and parses a signed user token using the MentraOS Cloud public key
17
- * @param signedUserToken - The JWT token to verify and parse
18
- * @returns Promise that resolves to the parsed payload or null if invalid
19
- */
20
- async function verifyAndParseToken(signedUserToken) {
21
- try {
22
- const publicKeyObj = KEYUTIL.getKey(userTokenPublicKeyPEM);
23
- // verifyJWT will check signature, nbf, exp.
24
- // It will also check 'iss' if provided in the options.
25
- const isValid = KJUR.jws.JWS.verifyJWT(signedUserToken, publicKeyObj, {
26
- alg: ['RS256'], // Specify expected algorithms
27
- iss: ['https://prod.augmentos.cloud'], // Specify expected issuer
28
- // jsrsasign's verifyJWT checks 'nbf' and 'exp' by default.
29
- // Grace period for clock skew
30
- gracePeriod: 120, // 2 minutes in seconds
31
- });
32
- if (!isValid) {
33
- // Parse the token to get header and payload for debugging
34
- const parsedJWT = KJUR.jws.JWS.parse(signedUserToken);
35
- if (parsedJWT) {
36
- console.warn('Token validation failed. Header:', parsedJWT.headerObj, 'Payload:', parsedJWT.payloadObj);
37
- // Check expiration manually for more detailed logging if needed
38
- const payload = parsedJWT.payloadObj;
39
- if (payload && payload.exp) {
40
- const now = KJUR.jws.IntDate.get('now');
41
- if (payload.exp < now - 120) { // Check with grace period
42
- console.warn(`Token expired at ${new Date(payload.exp * 1000).toISOString()}`);
43
- }
44
- }
45
- }
46
- return null;
47
- }
48
- const parsedJWT = KJUR.jws.JWS.parse(signedUserToken);
49
- if (!parsedJWT || !parsedJWT.payloadObj) {
50
- console.error('Failed to parse JWT payload.');
51
- return null;
52
- }
53
- const payload = parsedJWT.payloadObj;
54
- if (!payload.sub || !payload.frontendToken) {
55
- console.error('Parsed payload missing sub (userId) or frontendToken.');
56
- return null;
57
- }
58
- return payload;
59
- }
60
- catch (e) {
61
- console.error('[verifyAndParseToken] Error verifying token:', e);
62
- return null;
63
- }
64
- }
65
- /**
66
- * Initializes authentication by checking for tokens in URL parameters or localStorage
67
- * @returns Promise that resolves to the current authentication state
68
- */
69
- export async function initializeAuth() {
70
- const params = new URLSearchParams(window.location.search);
71
- const tokenFromUrl = params.get('aos_signed_user_token');
72
- if (tokenFromUrl) {
73
- const payload = await verifyAndParseToken(tokenFromUrl);
74
- if (payload) {
75
- localStorage.setItem(USER_ID_KEY, payload.sub);
76
- localStorage.setItem(FRONTEND_TOKEN_KEY, payload.frontendToken);
77
- // Remove the token from URL to prevent it from being bookmarked or shared.
78
- params.delete('aos_signed_user_token');
79
- window.history.replaceState({}, document.title, `${window.location.pathname}?${params.toString()}`);
80
- return { userId: payload.sub, frontendToken: payload.frontendToken };
81
- }
82
- else {
83
- // Token from URL was invalid, clear any stored ones
84
- clearStoredAuth();
85
- return { userId: null, frontendToken: null };
86
- }
87
- }
88
- // If no token in URL, try to load from localStorage
89
- const storedUserId = localStorage.getItem(USER_ID_KEY);
90
- const storedFrontendToken = localStorage.getItem(FRONTEND_TOKEN_KEY);
91
- if (storedUserId && storedFrontendToken) {
92
- // For SPAs, if the token was already verified and its parts stored,
93
- // we might trust these for the current session.
94
- // A full re-verification of a stored *signedUserToken* would be more secure
95
- // but adds complexity if the signed token isn't always re-provided.
96
- // The current approach: verify once from URL, then use stored parts.
97
- return { userId: storedUserId, frontendToken: storedFrontendToken };
98
- }
99
- return { userId: null, frontendToken: null };
100
- }
101
- export function getStoredAuth() {
102
- const userId = localStorage.getItem(USER_ID_KEY);
103
- const frontendToken = localStorage.getItem(FRONTEND_TOKEN_KEY);
104
- return { userId, frontendToken };
105
- }
106
- export function clearStoredAuth() {
107
- localStorage.removeItem(USER_ID_KEY);
108
- localStorage.removeItem(FRONTEND_TOKEN_KEY);
109
- }
110
- //# sourceMappingURL=authCore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authCore.js","sourceRoot":"","sources":["../../src/lib/authCore.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import { MentraAuthContextType } from './AuthProvider';
2
- /**
3
- * Custom hook to access the MentraOS authentication context.
4
- *
5
- * @returns {MentraAuthContextType} The authentication context containing user state,
6
- * loading status, error information, and authentication methods.
7
- *
8
- * @throws {Error} When used outside of an MentraAuthProvider component.
9
- *
10
- * @example
11
- * ```tsx
12
- * const { userId, isAuthenticated, logout, isLoading } = UseMentraAuth();
13
- * ```
14
- */
15
- export declare const UseMentraAuth: () => MentraAuthContextType;
16
- //# sourceMappingURL=useMentraAuth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMentraAuth.d.ts","sourceRoot":"","sources":["../src/useMentraAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,QAAO,qBAMhC,CAAC"}
@@ -1,24 +0,0 @@
1
- // react-sdk/src/UseMentraAuth.ts
2
- import { useContext } from 'react';
3
- import { MentraAuthContext } from './AuthProvider';
4
- /**
5
- * Custom hook to access the MentraOS authentication context.
6
- *
7
- * @returns {MentraAuthContextType} The authentication context containing user state,
8
- * loading status, error information, and authentication methods.
9
- *
10
- * @throws {Error} When used outside of an MentraAuthProvider component.
11
- *
12
- * @example
13
- * ```tsx
14
- * const { userId, isAuthenticated, logout, isLoading } = UseMentraAuth();
15
- * ```
16
- */
17
- export const UseMentraAuth = () => {
18
- const context = useContext(MentraAuthContext);
19
- if (context === undefined) {
20
- throw new Error('UseMentraAuth must be used within an MentraAuthProvider');
21
- }
22
- return context;
23
- };
24
- //# sourceMappingURL=useMentraAuth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMentraAuth.js","sourceRoot":"","sources":["../src/useMentraAuth.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAyB,MAAM,gBAAgB,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAA0B,EAAE;IACvD,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}