@oxyhq/services 5.7.3 → 5.7.4

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 (37) hide show
  1. package/README.md +287 -80
  2. package/lib/commonjs/node/index.js +49 -2
  3. package/lib/commonjs/node/index.js.map +1 -1
  4. package/lib/commonjs/node/middleware.js +227 -0
  5. package/lib/commonjs/node/middleware.js.map +1 -0
  6. package/lib/commonjs/ui/index.js +16 -1
  7. package/lib/commonjs/ui/index.js.map +1 -1
  8. package/lib/commonjs/ui/zero-config/index.js +25 -0
  9. package/lib/commonjs/ui/zero-config/index.js.map +1 -0
  10. package/lib/commonjs/ui/zero-config/provider.js +278 -0
  11. package/lib/commonjs/ui/zero-config/provider.js.map +1 -0
  12. package/lib/module/node/index.js +11 -1
  13. package/lib/module/node/index.js.map +1 -1
  14. package/lib/module/node/middleware.js +199 -0
  15. package/lib/module/node/middleware.js.map +1 -0
  16. package/lib/module/ui/index.js +16 -1
  17. package/lib/module/ui/index.js.map +1 -1
  18. package/lib/module/ui/zero-config/index.js +8 -0
  19. package/lib/module/ui/zero-config/index.js.map +1 -0
  20. package/lib/module/ui/zero-config/provider.js +270 -0
  21. package/lib/module/ui/zero-config/provider.js.map +1 -0
  22. package/lib/typescript/node/index.d.ts +7 -1
  23. package/lib/typescript/node/index.d.ts.map +1 -1
  24. package/lib/typescript/node/middleware.d.ts +92 -0
  25. package/lib/typescript/node/middleware.d.ts.map +1 -0
  26. package/lib/typescript/ui/index.d.ts +2 -1
  27. package/lib/typescript/ui/index.d.ts.map +1 -1
  28. package/lib/typescript/ui/zero-config/index.d.ts +5 -0
  29. package/lib/typescript/ui/zero-config/index.d.ts.map +1 -0
  30. package/lib/typescript/ui/zero-config/provider.d.ts +84 -0
  31. package/lib/typescript/ui/zero-config/provider.d.ts.map +1 -0
  32. package/package.json +6 -1
  33. package/src/node/index.ts +17 -1
  34. package/src/node/middleware.ts +234 -0
  35. package/src/ui/index.ts +19 -1
  36. package/src/ui/zero-config/index.ts +11 -0
  37. package/src/ui/zero-config/provider.tsx +310 -0
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Zero-config Express middleware for OxyHQ Services authentication
5
+ *
6
+ * This provides a simple, one-line solution for adding authentication to Express apps.
7
+ * Simply import and use: app.use('/api', createOxyAuth())
8
+ */
9
+
10
+ import { OxyServices } from '../core';
11
+ /**
12
+ * Creates zero-config authentication middleware for Express.js
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import express from 'express';
17
+ * import { createOxyAuth } from '@oxyhq/services/node';
18
+ *
19
+ * const app = express();
20
+ *
21
+ * // Zero-config auth for all /api routes
22
+ * app.use('/api', createOxyAuth());
23
+ *
24
+ * // Now all routes under /api automatically have req.user available
25
+ * app.get('/api/profile', (req, res) => {
26
+ * res.json({ user: req.user }); // req.user is automatically available
27
+ * });
28
+ * ```
29
+ */
30
+ export function createOxyAuth(config = {}) {
31
+ const {
32
+ baseURL = process.env.OXY_API_URL || 'http://localhost:3001',
33
+ loadUser = true,
34
+ publicPaths = [],
35
+ onError
36
+ } = config;
37
+ const oxy = new OxyServices({
38
+ baseURL
39
+ });
40
+ return async (req, res, next) => {
41
+ // Check if this is a public path
42
+ const isPublicPath = publicPaths.some(path => req.path === path || req.path.startsWith(path + '/'));
43
+ if (isPublicPath) {
44
+ return next();
45
+ }
46
+ try {
47
+ const authHeader = req.headers['authorization'];
48
+ const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
49
+
50
+ if (!token) {
51
+ const error = {
52
+ message: 'Access token required',
53
+ code: 'MISSING_TOKEN',
54
+ status: 401
55
+ };
56
+ if (onError) {
57
+ return onError(error, req, res);
58
+ }
59
+ return res.status(401).json({
60
+ error: 'Access token required',
61
+ code: 'MISSING_TOKEN'
62
+ });
63
+ }
64
+
65
+ // Validate token using the OxyServices client
66
+ const authResult = await oxy.authenticateToken(token);
67
+ if (!authResult.valid) {
68
+ const error = {
69
+ message: authResult.error || 'Invalid token',
70
+ code: 'INVALID_TOKEN',
71
+ status: 403
72
+ };
73
+ if (onError) {
74
+ return onError(error, req, res);
75
+ }
76
+ return res.status(403).json({
77
+ error: authResult.error || 'Invalid token',
78
+ code: 'INVALID_TOKEN'
79
+ });
80
+ }
81
+
82
+ // Attach user data to request
83
+ req.userId = authResult.userId;
84
+ req.accessToken = token;
85
+ if (loadUser && authResult.user) {
86
+ req.user = authResult.user;
87
+ } else {
88
+ req.user = {
89
+ id: authResult.userId
90
+ };
91
+ }
92
+ next();
93
+ } catch (error) {
94
+ const apiError = {
95
+ message: error.message || 'Authentication failed',
96
+ code: error.code || 'AUTH_ERROR',
97
+ status: error.status || 500
98
+ };
99
+ if (onError) {
100
+ return onError(apiError, req, res);
101
+ }
102
+ res.status(apiError.status).json({
103
+ error: apiError.message,
104
+ code: apiError.code
105
+ });
106
+ }
107
+ };
108
+ }
109
+
110
+ /**
111
+ * Creates optional authentication middleware
112
+ * This middleware will attach user data if a valid token is present, but won't fail if missing
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * import { createOptionalOxyAuth } from '@oxyhq/services/node';
117
+ *
118
+ * app.use('/api', createOptionalOxyAuth());
119
+ *
120
+ * app.get('/api/content', (req, res) => {
121
+ * if (req.user) {
122
+ * // User is authenticated, show personalized content
123
+ * res.json({ content: 'personalized', user: req.user });
124
+ * } else {
125
+ * // Anonymous user, show public content
126
+ * res.json({ content: 'public' });
127
+ * }
128
+ * });
129
+ * ```
130
+ */
131
+ export function createOptionalOxyAuth(config = {}) {
132
+ const {
133
+ baseURL = process.env.OXY_API_URL || 'http://localhost:3001',
134
+ loadUser = true
135
+ } = config;
136
+ const oxy = new OxyServices({
137
+ baseURL
138
+ });
139
+ return async (req, res, next) => {
140
+ try {
141
+ const authHeader = req.headers['authorization'];
142
+ const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
143
+
144
+ if (!token) {
145
+ // No token provided, continue without authentication
146
+ return next();
147
+ }
148
+
149
+ // Validate token using the OxyServices client
150
+ const authResult = await oxy.authenticateToken(token);
151
+ if (authResult.valid) {
152
+ // Attach user data to request if token is valid
153
+ req.userId = authResult.userId;
154
+ req.accessToken = token;
155
+ if (loadUser && authResult.user) {
156
+ req.user = authResult.user;
157
+ } else {
158
+ req.user = {
159
+ id: authResult.userId
160
+ };
161
+ }
162
+ }
163
+ next();
164
+ } catch (error) {
165
+ // If there's an error, continue without authentication
166
+ // This makes the middleware truly optional
167
+ next();
168
+ }
169
+ };
170
+ }
171
+
172
+ /**
173
+ * Utility function to quickly set up a complete Express app with authentication
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * import { createOxyExpressApp } from '@oxyhq/services/node';
178
+ *
179
+ * const app = createOxyExpressApp();
180
+ *
181
+ * // All routes automatically have authentication and req.user available
182
+ * app.get('/api/profile', (req, res) => {
183
+ * res.json({ user: req.user });
184
+ * });
185
+ *
186
+ * app.listen(3000);
187
+ * ```
188
+ */
189
+ export function createOxyExpressApp(config = {}) {
190
+ // This is a lightweight helper - users should import express themselves
191
+ // We'll provide the middleware setup instructions instead
192
+
193
+ throw new Error('createOxyExpressApp is not implemented yet. Please use createOxyAuth() middleware with your existing Express app.');
194
+ }
195
+
196
+ // Re-export for convenience
197
+ export { OxyServices } from '../core';
198
+ export * from '../models/interfaces';
199
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OxyServices","createOxyAuth","config","baseURL","process","env","OXY_API_URL","loadUser","publicPaths","onError","oxy","req","res","next","isPublicPath","some","path","startsWith","authHeader","headers","token","split","error","message","code","status","json","authResult","authenticateToken","valid","userId","accessToken","user","id","apiError","createOptionalOxyAuth","createOxyExpressApp","Error"],"sourceRoot":"../../../src","sources":["node/middleware.ts"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,9 @@ import isFrontend from './isFrontend';
10
10
 
11
11
  // Real UI exports
12
12
  let OxyProvider, OxySignInButton, OxyLogo, Avatar, FollowButton, OxyPayButton, FontLoader, setupFonts, OxyIcon, useOxy, useOxyAuth, useOxyUser, useOxyKarma, useOxyPayments, useOxyDevices, useOxyNotifications, useOxySocket, useOxyQR, useOxyIAP, OxyContextProvider, OxyContextState, OxyContextProviderProps, useFollow, ProfileScreen, OxyRouter, useAuthStore, fontFamilies, fontStyles, toast;
13
+
14
+ // Zero-config exports
15
+ let OxyZeroConfigProvider, useOxyZeroConfig, useOxyApi;
13
16
  if (isFrontend) {
14
17
  OxyProvider = require('./components/OxyProvider').default;
15
18
  OxySignInButton = require('./components/OxySignInButton').default;
@@ -31,6 +34,11 @@ if (isFrontend) {
31
34
  fontFamilies = require('./styles/fonts').fontFamilies;
32
35
  fontStyles = require('./styles/fonts').fontStyles;
33
36
  toast = require('../lib/sonner').toast;
37
+
38
+ // Zero-config components
39
+ OxyZeroConfigProvider = require('./zero-config').OxyZeroConfigProvider;
40
+ useOxyZeroConfig = require('./zero-config').useOxyZeroConfig;
41
+ useOxyApi = require('./zero-config').useOxyApi;
34
42
  } else {
35
43
  // Backend: no-op fallbacks
36
44
  const noopComponent = () => null;
@@ -55,8 +63,15 @@ if (isFrontend) {
55
63
  fontFamilies = {};
56
64
  fontStyles = {};
57
65
  toast = () => {};
66
+
67
+ // Zero-config no-ops
68
+ OxyZeroConfigProvider = noopComponent;
69
+ useOxyZeroConfig = noopHook;
70
+ useOxyApi = () => ({});
58
71
  }
59
- export { OxyProvider, OxySignInButton, OxyLogo, Avatar, FollowButton, OxyPayButton, FontLoader, setupFonts, OxyIcon, useOxy, OxyContextProvider, OxyContextState, OxyContextProviderProps, useFollow, ProfileScreen, OxyRouter, useAuthStore, fontFamilies, fontStyles, toast };
72
+ export { OxyProvider, OxySignInButton, OxyLogo, Avatar, FollowButton, OxyPayButton, FontLoader, setupFonts, OxyIcon, useOxy, OxyContextProvider, OxyContextState, OxyContextProviderProps, useFollow, ProfileScreen, OxyRouter, useAuthStore, fontFamilies, fontStyles, toast,
73
+ // Zero-config exports
74
+ OxyZeroConfigProvider, useOxyZeroConfig, useOxyApi };
60
75
 
61
76
  // Re-export core services for convenience in UI context
62
77
  export { OxyServices } from '../core';
@@ -1 +1 @@
1
- {"version":3,"names":["isFrontend","OxyProvider","OxySignInButton","OxyLogo","Avatar","FollowButton","OxyPayButton","FontLoader","setupFonts","OxyIcon","useOxy","useOxyAuth","useOxyUser","useOxyKarma","useOxyPayments","useOxyDevices","useOxyNotifications","useOxySocket","useOxyQR","useOxyIAP","OxyContextProvider","OxyContextState","OxyContextProviderProps","useFollow","ProfileScreen","OxyRouter","useAuthStore","fontFamilies","fontStyles","toast","require","default","noopComponent","noopHook","OxyServices"],"sourceRoot":"../../../src","sources":["ui/index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isFrontend","OxyProvider","OxySignInButton","OxyLogo","Avatar","FollowButton","OxyPayButton","FontLoader","setupFonts","OxyIcon","useOxy","useOxyAuth","useOxyUser","useOxyKarma","useOxyPayments","useOxyDevices","useOxyNotifications","useOxySocket","useOxyQR","useOxyIAP","OxyContextProvider","OxyContextState","OxyContextProviderProps","useFollow","ProfileScreen","OxyRouter","useAuthStore","fontFamilies","fontStyles","toast","OxyZeroConfigProvider","useOxyZeroConfig","useOxyApi","require","default","noopComponent","noopHook","OxyServices"],"sourceRoot":"../../../src","sources":["ui/index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Zero-config exports for OxyHQ Services
5
+ */
6
+
7
+ export { OxyZeroConfigProvider, useOxyZeroConfig, useOxyApi } from './provider';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OxyZeroConfigProvider","useOxyZeroConfig","useOxyApi"],"sourceRoot":"../../../../src","sources":["ui/zero-config/index.ts"],"mappings":";;AAAA;AACA;AACA;;AAEA,SACEA,qBAAqB,EACrBC,gBAAgB,EAChBC,SAAS,QAGJ,YAAY","ignoreList":[]}
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Zero-config OxyHQ Provider and Hook for React/React Native
5
+ *
6
+ * This provides a simplified, one-line setup for frontend authentication
7
+ * with automatic token management and API integration.
8
+ */
9
+
10
+ import React, { createContext, useContext, useEffect, useState, useCallback } from 'react';
11
+ import { OxyServices } from '../../core';
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ const OxyZeroConfigContext = /*#__PURE__*/createContext(null);
14
+ /**
15
+ * Zero-config provider for OxyHQ Services
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * import { OxyZeroConfigProvider } from '@oxyhq/services/ui';
20
+ *
21
+ * function App() {
22
+ * return (
23
+ * <OxyZeroConfigProvider>
24
+ * <MyApp />
25
+ * </OxyZeroConfigProvider>
26
+ * );
27
+ * }
28
+ * ```
29
+ */
30
+ export const OxyZeroConfigProvider = ({
31
+ children,
32
+ apiUrl,
33
+ onAuthChange,
34
+ storagePrefix = 'oxy_zero'
35
+ }) => {
36
+ // Determine API URL with fallbacks
37
+ const finalApiUrl = apiUrl || typeof process !== 'undefined' && process.env?.REACT_APP_OXY_API_URL || 'http://localhost:3001';
38
+
39
+ // Initialize OxyServices
40
+ const [api] = useState(() => new OxyServices({
41
+ baseURL: finalApiUrl
42
+ }));
43
+
44
+ // State
45
+ const [user, setUser] = useState(null);
46
+ const [isLoading, setIsLoading] = useState(true);
47
+ const [error, setError] = useState(null);
48
+ const isAuthenticated = user !== null;
49
+
50
+ // Storage helpers
51
+ const getStorageKey = key => `${storagePrefix}_${key}`;
52
+ const saveToStorage = useCallback((key, value) => {
53
+ try {
54
+ if (typeof localStorage !== 'undefined') {
55
+ localStorage.setItem(getStorageKey(key), value);
56
+ }
57
+ } catch (error) {
58
+ console.warn('Failed to save to storage:', error);
59
+ }
60
+ }, [storagePrefix]);
61
+ const getFromStorage = useCallback(key => {
62
+ try {
63
+ if (typeof localStorage !== 'undefined') {
64
+ return localStorage.getItem(getStorageKey(key));
65
+ }
66
+ } catch (error) {
67
+ console.warn('Failed to read from storage:', error);
68
+ }
69
+ return null;
70
+ }, [storagePrefix]);
71
+ const removeFromStorage = useCallback(key => {
72
+ try {
73
+ if (typeof localStorage !== 'undefined') {
74
+ localStorage.removeItem(getStorageKey(key));
75
+ }
76
+ } catch (error) {
77
+ console.warn('Failed to remove from storage:', error);
78
+ }
79
+ }, [storagePrefix]);
80
+
81
+ // Initialize authentication state
82
+ useEffect(() => {
83
+ const initAuth = async () => {
84
+ try {
85
+ setIsLoading(true);
86
+ setError(null);
87
+
88
+ // Try to restore tokens from storage
89
+ const savedAccessToken = getFromStorage('accessToken');
90
+ const savedRefreshToken = getFromStorage('refreshToken');
91
+ if (savedAccessToken && savedRefreshToken) {
92
+ // Set tokens in the API client
93
+ api.setTokens(savedAccessToken, savedRefreshToken);
94
+
95
+ // Validate the token
96
+ const isValid = await api.validate();
97
+ if (isValid) {
98
+ // Load user data
99
+ const currentUser = await api.getCurrentUser();
100
+ setUser(currentUser);
101
+ if (onAuthChange) {
102
+ onAuthChange(currentUser);
103
+ }
104
+ } else {
105
+ // Invalid token, clear storage
106
+ removeFromStorage('accessToken');
107
+ removeFromStorage('refreshToken');
108
+ api.clearTokens();
109
+ }
110
+ }
111
+ } catch (error) {
112
+ console.warn('Failed to restore authentication:', error);
113
+ setError('Failed to restore authentication');
114
+
115
+ // Clear invalid tokens
116
+ removeFromStorage('accessToken');
117
+ removeFromStorage('refreshToken');
118
+ api.clearTokens();
119
+ } finally {
120
+ setIsLoading(false);
121
+ }
122
+ };
123
+ initAuth();
124
+ }, [api, getFromStorage, removeFromStorage, onAuthChange]);
125
+
126
+ // Login method
127
+ const login = useCallback(async (username, password) => {
128
+ try {
129
+ setIsLoading(true);
130
+ setError(null);
131
+ const response = await api.login(username, password);
132
+
133
+ // Save tokens to storage
134
+ if (response.accessToken) {
135
+ saveToStorage('accessToken', response.accessToken);
136
+ }
137
+ if (response.refreshToken) {
138
+ saveToStorage('refreshToken', response.refreshToken);
139
+ }
140
+
141
+ // Update state
142
+ setUser(response.user);
143
+ if (onAuthChange) {
144
+ onAuthChange(response.user);
145
+ }
146
+ return response.user;
147
+ } catch (error) {
148
+ const errorMessage = error.message || 'Login failed';
149
+ setError(errorMessage);
150
+ throw new Error(errorMessage);
151
+ } finally {
152
+ setIsLoading(false);
153
+ }
154
+ }, [api, saveToStorage, onAuthChange]);
155
+
156
+ // Logout method
157
+ const logout = useCallback(async () => {
158
+ try {
159
+ setIsLoading(true);
160
+ await api.logout();
161
+ } catch (error) {
162
+ console.warn('Logout API call failed:', error);
163
+ } finally {
164
+ // Always clean up local state and storage
165
+ removeFromStorage('accessToken');
166
+ removeFromStorage('refreshToken');
167
+ api.clearTokens();
168
+ setUser(null);
169
+ setError(null);
170
+ setIsLoading(false);
171
+ if (onAuthChange) {
172
+ onAuthChange(null);
173
+ }
174
+ }
175
+ }, [api, removeFromStorage, onAuthChange]);
176
+
177
+ // Register method
178
+ const register = useCallback(async (username, email, password) => {
179
+ try {
180
+ setIsLoading(true);
181
+ setError(null);
182
+ const response = await api.signUp(username, email, password);
183
+
184
+ // Save token from registration
185
+ if (response.token) {
186
+ saveToStorage('accessToken', response.token);
187
+ // Note: signUp doesn't return refreshToken in current API
188
+ }
189
+
190
+ // Update state
191
+ setUser(response.user);
192
+ if (onAuthChange) {
193
+ onAuthChange(response.user);
194
+ }
195
+ return response.user;
196
+ } catch (error) {
197
+ const errorMessage = error.message || 'Registration failed';
198
+ setError(errorMessage);
199
+ throw new Error(errorMessage);
200
+ } finally {
201
+ setIsLoading(false);
202
+ }
203
+ }, [api, saveToStorage, onAuthChange]);
204
+ const contextValue = {
205
+ user,
206
+ isAuthenticated,
207
+ isLoading,
208
+ error,
209
+ login,
210
+ logout,
211
+ register,
212
+ api
213
+ };
214
+ return /*#__PURE__*/_jsx(OxyZeroConfigContext.Provider, {
215
+ value: contextValue,
216
+ children: children
217
+ });
218
+ };
219
+
220
+ /**
221
+ * Zero-config hook for OxyHQ Services
222
+ *
223
+ * @example
224
+ * ```tsx
225
+ * function MyComponent() {
226
+ * const { user, login, logout, isAuthenticated } = useOxyZeroConfig();
227
+ *
228
+ * const handleLogin = () => {
229
+ * login('username', 'password');
230
+ * };
231
+ *
232
+ * if (isAuthenticated) {
233
+ * return <div>Welcome, {user?.username}!</div>;
234
+ * }
235
+ *
236
+ * return <button onClick={handleLogin}>Login</button>;
237
+ * }
238
+ * ```
239
+ */
240
+ export const useOxyZeroConfig = () => {
241
+ const context = useContext(OxyZeroConfigContext);
242
+ if (!context) {
243
+ throw new Error('useOxyZeroConfig must be used within an OxyZeroConfigProvider');
244
+ }
245
+ return context;
246
+ };
247
+
248
+ /**
249
+ * Hook for automatic API client with authentication
250
+ * This automatically includes the auth token in requests
251
+ *
252
+ * @example
253
+ * ```tsx
254
+ * function ProfileComponent() {
255
+ * const api = useOxyApi();
256
+ *
257
+ * const updateProfile = async (data) => {
258
+ * const user = await api.updateProfile(data);
259
+ * // Token is automatically included
260
+ * };
261
+ * }
262
+ * ```
263
+ */
264
+ export const useOxyApi = () => {
265
+ const {
266
+ api
267
+ } = useOxyZeroConfig();
268
+ return api;
269
+ };
270
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createContext","useContext","useEffect","useState","useCallback","OxyServices","jsx","_jsx","OxyZeroConfigContext","OxyZeroConfigProvider","children","apiUrl","onAuthChange","storagePrefix","finalApiUrl","process","env","REACT_APP_OXY_API_URL","api","baseURL","user","setUser","isLoading","setIsLoading","error","setError","isAuthenticated","getStorageKey","key","saveToStorage","value","localStorage","setItem","console","warn","getFromStorage","getItem","removeFromStorage","removeItem","initAuth","savedAccessToken","savedRefreshToken","setTokens","isValid","validate","currentUser","getCurrentUser","clearTokens","login","username","password","response","accessToken","refreshToken","errorMessage","message","Error","logout","register","email","signUp","token","contextValue","Provider","useOxyZeroConfig","context","useOxyApi"],"sourceRoot":"../../../../src","sources":["ui/zero-config/provider.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,10 @@
1
1
  /**
2
- * OxyHQServices Node.js Entry Point
2
+ * Node.js-specific exports for OxyHQ Services
3
+ *
4
+ * This module provides zero-config Express.js middleware and utilities
5
+ * for backend integration with OxyHQ Services.
3
6
  */
7
+ export { createOxyAuth, createOptionalOxyAuth, createOxyExpressApp, type OxyAuthConfig, type AuthenticatedRequest } from './middleware';
4
8
  import { OxyServices, OXY_CLOUD_URL } from '../core';
5
9
  import { createAuth } from './createAuth';
6
10
  import * as Models from '../models/interfaces';
@@ -8,5 +12,7 @@ export { OxyServices, OXY_CLOUD_URL };
8
12
  export { createAuth };
9
13
  export { Models };
10
14
  export * from '../models/interfaces';
15
+ export * from '../models/secureSession';
16
+ export { DeviceManager } from '../utils/deviceManager';
11
17
  export default OxyServices;
12
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,CAAC;AAGtB,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,sBAAsB,CAAC;AAGrC,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,CAAC;AAGtB,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AAGxC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,eAAe,WAAW,CAAC"}