@oxyhq/services 5.22.0 → 5.24.0

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/lib/module/web.js CHANGED
@@ -61,15 +61,15 @@ export { createProfileMutation, createGenericMutation } from "./ui/hooks/mutatio
61
61
  export { ensureValidToken, withAuthErrorHandling, authenticatedApiCall, isAuthenticationError, SessionSyncRequiredError, AuthenticationFailedError } from "./ui/utils/authHelpers.js";
62
62
  // File filtering hook
63
63
  export { useFileFiltering } from "./ui/hooks/useFileFiltering.js";
64
- // Web-compatible UI components (no React Native dependencies)
65
- export { OxySignInButton } from "./ui/components/OxySignInButton.js";
66
- export { OxyLogo } from "./ui/components/OxyLogo.js";
64
+ // Note: UI components like OxySignInButton and OxyLogo use React Native
65
+ // and are not included in the /web entry point. For pure web apps, use the
66
+ // useAuth hook and create your own sign-in button.
67
67
 
68
68
  // Utilities
69
69
  export * from "./utils/apiUtils.js";
70
70
  export { ErrorCodes, createApiError, handleHttpError, validateRequiredFields, retryWithBackoff } from "./utils/errorUtils.js";
71
71
  export * from "./utils/validationUtils.js";
72
- export { logger, LogLevel, LogContext, logAuth, logApi, logSession, logUser, logDevice, logPayment, logPerformance } from "./utils/loggerUtils.js";
72
+ export { logger, LogLevel, logAuth, logApi, logSession, logUser, logDevice, logPayment, logPerformance } from "./utils/loggerUtils.js";
73
73
  export * from "./utils/asyncUtils.js";
74
74
  export * from "./utils/hookUtils.js";
75
75
  //# sourceMappingURL=web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["OxyServices","OxyAuthenticationError","OxyAuthenticationTimeoutError","OXY_CLOUD_URL","oxyClient","CrossDomainAuth","createCrossDomainAuth","KeyManager","SignatureService","RecoveryPhraseService","useOxy","useAuth","default","WebOxyProvider","DeviceManager","SUPPORTED_LANGUAGES","getLanguageMetadata","getLanguageName","getNativeLanguageName","normalizeLanguageCode","SECURITY_EVENT_SEVERITY_MAP","useAuthStore","useAssetStore","useAssets","useAssetsStore","useAsset","useUploadProgress","useAssetLoading","useAssetErrors","useAssetsByApp","useAssetsByEntity","useAssetUsageCount","useIsAssetLinked","useSessionSocket","setOxyAssetInstance","useFileDownloadUrl","setOxyFileUrlInstance","useUserProfile","useUserProfiles","useCurrentUser","useUserById","useUserByUsername","useUsersBySessions","usePrivacySettings","useSessions","useSession","useDeviceSessions","useUserDevices","useSecurityInfo","useSecurityActivity","useRecentSecurityActivity","useUpdateProfile","useUploadAvatar","useUpdateAccountSettings","useUpdatePrivacySettings","useUploadFile","useSwitchSession","useLogoutSession","useLogoutAll","useUpdateDeviceName","useRemoveDevice","createProfileMutation","createGenericMutation","ensureValidToken","withAuthErrorHandling","authenticatedApiCall","isAuthenticationError","SessionSyncRequiredError","AuthenticationFailedError","useFileFiltering","OxySignInButton","OxyLogo","ErrorCodes","createApiError","handleHttpError","validateRequiredFields","retryWithBackoff","logger","LogLevel","LogContext","logAuth","logApi","logSession","logUser","logDevice","logPayment","logPerformance"],"sourceRoot":"../../src","sources":["web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,sBAAmB;;AAE1B;AACA,SAASA,WAAW,EAAEC,sBAAsB,EAAEC,6BAA6B,QAAQ,iBAAQ;AAC3F,SAASC,aAAa,EAAEC,SAAS,QAAQ,iBAAQ;;AAEjD;AACA,SAASC,eAAe,EAAEC,qBAAqB,QAAQ,iBAAQ;AAG/D;AACA,SACEC,UAAU,EACVC,gBAAgB,EAChBC,qBAAqB,QAChB,mBAAU;AAQjB;AACA,SAASC,MAAM,QAAQ,4BAAyB;AAChD,SAASC,OAAO,QAAQ,uBAAoB;AAG5C;AACA,SAASC,OAAO,IAAIC,cAAc,QAAQ,mCAAgC;;AAE1E;AACA,SAASC,aAAa,QAAQ,0BAAuB;AAGrD;AACA,SACEC,mBAAmB,EACnBC,mBAAmB,EACnBC,eAAe,EACfC,qBAAqB,EACrBC,qBAAqB,QAChB,0BAAuB;;AAG9B;;AAwDA,SAASC,2BAA2B,QAAQ,wBAAqB;AAQjE;AACA,SAASC,YAAY,QAAQ,0BAAuB;AACpD,SACEC,aAAa,EACbC,SAAS,IAAIC,cAAc,EAC3BC,QAAQ,EACRC,iBAAiB,EACjBC,eAAe,EACfC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EACjBC,kBAAkB,EAClBC,gBAAgB,QACX,2BAAwB;;AAE/B;AACA,SAASC,gBAAgB,QAAQ,gCAA6B;AAC9D,SAASV,SAAS,EAAEW,mBAAmB,QAAQ,yBAAsB;AACrE,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,kCAA+B;;AAEzF;AACA,SACEC,cAAc,EACdC,eAAe,EACfC,cAAc,EACdC,WAAW,EACXC,iBAAiB,EACjBC,kBAAkB,EAClBC,kBAAkB,EAClBC,WAAW,EACXC,UAAU,EACVC,iBAAiB,EACjBC,cAAc,EACdC,eAAe,EACfC,mBAAmB,EACnBC,yBAAyB,QACpB,6BAAoB;;AAE3B;AACA,SACEC,gBAAgB,EAChBC,eAAe,EACfC,wBAAwB,EACxBC,wBAAwB,EACxBC,aAAa,EACbC,gBAAgB,EAChBC,gBAAgB,EAChBC,YAAY,EACZC,mBAAmB,EACnBC,eAAe,QACV,+BAAsB;;AAE7B;AACA,SACEC,qBAAqB,EACrBC,qBAAqB,QAChB,yCAAsC;AAM7C;AACA,SACEC,gBAAgB,EAChBC,qBAAqB,EACrBC,oBAAoB,EACpBC,qBAAqB,EACrBC,wBAAwB,EACxBC,yBAAyB,QACpB,2BAAwB;AAG/B;AACA,SAASC,gBAAgB,QAAQ,gCAA6B;AAG9D;AACA,SAASC,eAAe,QAAQ,oCAAiC;AACjE,SAASC,OAAO,QAAQ,4BAAyB;;AAEjD;AACA,cAAc,qBAAkB;AAChC,SACEC,UAAU,EACVC,cAAc,EACdC,eAAe,EACfC,sBAAsB,EACtBC,gBAAgB,QACX,uBAAoB;AAC3B,cAAc,4BAAyB;AACvC,SACEC,MAAM,EACNC,QAAQ,EACRC,UAAU,EACVC,OAAO,EACPC,MAAM,EACNC,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,UAAU,EACVC,cAAc,QACT,wBAAqB;AAC5B,cAAc,uBAAoB;AAClC,cAAc,sBAAmB","ignoreList":[]}
1
+ {"version":3,"names":["OxyServices","OxyAuthenticationError","OxyAuthenticationTimeoutError","OXY_CLOUD_URL","oxyClient","CrossDomainAuth","createCrossDomainAuth","KeyManager","SignatureService","RecoveryPhraseService","useOxy","useAuth","default","WebOxyProvider","DeviceManager","SUPPORTED_LANGUAGES","getLanguageMetadata","getLanguageName","getNativeLanguageName","normalizeLanguageCode","SECURITY_EVENT_SEVERITY_MAP","useAuthStore","useAssetStore","useAssets","useAssetsStore","useAsset","useUploadProgress","useAssetLoading","useAssetErrors","useAssetsByApp","useAssetsByEntity","useAssetUsageCount","useIsAssetLinked","useSessionSocket","setOxyAssetInstance","useFileDownloadUrl","setOxyFileUrlInstance","useUserProfile","useUserProfiles","useCurrentUser","useUserById","useUserByUsername","useUsersBySessions","usePrivacySettings","useSessions","useSession","useDeviceSessions","useUserDevices","useSecurityInfo","useSecurityActivity","useRecentSecurityActivity","useUpdateProfile","useUploadAvatar","useUpdateAccountSettings","useUpdatePrivacySettings","useUploadFile","useSwitchSession","useLogoutSession","useLogoutAll","useUpdateDeviceName","useRemoveDevice","createProfileMutation","createGenericMutation","ensureValidToken","withAuthErrorHandling","authenticatedApiCall","isAuthenticationError","SessionSyncRequiredError","AuthenticationFailedError","useFileFiltering","ErrorCodes","createApiError","handleHttpError","validateRequiredFields","retryWithBackoff","logger","LogLevel","logAuth","logApi","logSession","logUser","logDevice","logPayment","logPerformance"],"sourceRoot":"../../src","sources":["web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,sBAAmB;;AAE1B;AACA,SAASA,WAAW,EAAEC,sBAAsB,EAAEC,6BAA6B,QAAQ,iBAAQ;AAC3F,SAASC,aAAa,EAAEC,SAAS,QAAQ,iBAAQ;;AAEjD;AACA,SAASC,eAAe,EAAEC,qBAAqB,QAAQ,iBAAQ;AAG/D;AACA,SACEC,UAAU,EACVC,gBAAgB,EAChBC,qBAAqB,QAChB,mBAAU;AAQjB;AACA,SAASC,MAAM,QAAQ,4BAAyB;AAChD,SAASC,OAAO,QAAQ,uBAAoB;AAG5C;AACA,SAASC,OAAO,IAAIC,cAAc,QAAQ,mCAAgC;;AAE1E;AACA,SAASC,aAAa,QAAQ,0BAAuB;AAGrD;AACA,SACEC,mBAAmB,EACnBC,mBAAmB,EACnBC,eAAe,EACfC,qBAAqB,EACrBC,qBAAqB,QAChB,0BAAuB;;AAG9B;;AAwDA,SAASC,2BAA2B,QAAQ,wBAAqB;AAQjE;AACA,SAASC,YAAY,QAAQ,0BAAuB;AACpD,SACEC,aAAa,EACbC,SAAS,IAAIC,cAAc,EAC3BC,QAAQ,EACRC,iBAAiB,EACjBC,eAAe,EACfC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EACjBC,kBAAkB,EAClBC,gBAAgB,QACX,2BAAwB;;AAE/B;AACA,SAASC,gBAAgB,QAAQ,gCAA6B;AAC9D,SAASV,SAAS,EAAEW,mBAAmB,QAAQ,yBAAsB;AACrE,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,kCAA+B;;AAEzF;AACA,SACEC,cAAc,EACdC,eAAe,EACfC,cAAc,EACdC,WAAW,EACXC,iBAAiB,EACjBC,kBAAkB,EAClBC,kBAAkB,EAClBC,WAAW,EACXC,UAAU,EACVC,iBAAiB,EACjBC,cAAc,EACdC,eAAe,EACfC,mBAAmB,EACnBC,yBAAyB,QACpB,6BAAoB;;AAE3B;AACA,SACEC,gBAAgB,EAChBC,eAAe,EACfC,wBAAwB,EACxBC,wBAAwB,EACxBC,aAAa,EACbC,gBAAgB,EAChBC,gBAAgB,EAChBC,YAAY,EACZC,mBAAmB,EACnBC,eAAe,QACV,+BAAsB;;AAE7B;AACA,SACEC,qBAAqB,EACrBC,qBAAqB,QAChB,yCAAsC;AAM7C;AACA,SACEC,gBAAgB,EAChBC,qBAAqB,EACrBC,oBAAoB,EACpBC,qBAAqB,EACrBC,wBAAwB,EACxBC,yBAAyB,QACpB,2BAAwB;AAG/B;AACA,SAASC,gBAAgB,QAAQ,gCAA6B;AAG9D;AACA;AACA;;AAEA;AACA,cAAc,qBAAkB;AAChC,SACEC,UAAU,EACVC,cAAc,EACdC,eAAe,EACfC,sBAAsB,EACtBC,gBAAgB,QACX,uBAAoB;AAC3B,cAAc,4BAAyB;AACvC,SACEC,MAAM,EACNC,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNC,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,UAAU,EACVC,cAAc,QACT,wBAAqB;AAE5B,cAAc,uBAAoB;AAClC,cAAc,sBAAmB","ignoreList":[]}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Web-Only Oxy Context
3
+ * Clean implementation with ZERO React Native dependencies
4
+ */
5
+ import { type ReactNode } from 'react';
6
+ import { OxyServices } from '../core';
7
+ import type { User } from '../models/interfaces';
8
+ export interface WebAuthState {
9
+ user: User | null;
10
+ isAuthenticated: boolean;
11
+ isLoading: boolean;
12
+ error: string | null;
13
+ }
14
+ export interface WebAuthActions {
15
+ signIn: () => Promise<void>;
16
+ signOut: () => Promise<void>;
17
+ }
18
+ export interface WebOxyContextValue extends WebAuthState, WebAuthActions {
19
+ oxyServices: OxyServices;
20
+ }
21
+ export interface WebOxyProviderProps {
22
+ children: ReactNode;
23
+ baseURL: string;
24
+ authWebUrl?: string;
25
+ onAuthStateChange?: (user: User | null) => void;
26
+ }
27
+ /**
28
+ * Web-only Oxy Provider
29
+ * Minimal, clean implementation for web apps
30
+ */
31
+ export declare function WebOxyProvider({ children, baseURL, authWebUrl, onAuthStateChange, }: WebOxyProviderProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare function useWebOxy(): WebOxyContextValue;
33
+ export declare function useAuth(): {
34
+ user: User | null;
35
+ isAuthenticated: boolean;
36
+ isLoading: boolean;
37
+ isReady: boolean;
38
+ error: string | null;
39
+ signIn: () => Promise<void>;
40
+ signOut: () => Promise<void>;
41
+ oxyServices: OxyServices;
42
+ };
43
+ //# sourceMappingURL=WebOxyContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebOxyContext.d.ts","sourceRoot":"","sources":["../../../../src/web/WebOxyContext.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY,EAAE,cAAc;IACtE,WAAW,EAAE,WAAW,CAAC;CAC1B;AAID,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,OAAO,EACP,UAAU,EACV,iBAAiB,GAClB,EAAE,mBAAmB,2CAwIrB;AAED,wBAAgB,SAAS,uBAMxB;AAED,wBAAgB,OAAO;;;;;;kBA5KP,OAAO,CAAC,IAAI,CAAC;mBACZ,OAAO,CAAC,IAAI,CAAC;;EAwL7B"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @oxyhq/services/web - Web-Only Module
3
+ *
4
+ * Clean, professional web module with ZERO React Native dependencies.
5
+ * Perfect for Next.js, Vite, Create React App, and other pure React web apps.
6
+ *
7
+ * Features:
8
+ * - WebOxyProvider for React context
9
+ * - useAuth hook for authentication
10
+ * - Cross-domain SSO via FedCM
11
+ * - Full TypeScript support
12
+ * - Zero bundler configuration needed
13
+ *
14
+ * Usage:
15
+ * ```tsx
16
+ * import { WebOxyProvider, useAuth } from '@oxyhq/services/web';
17
+ *
18
+ * function App() {
19
+ * return (
20
+ * <WebOxyProvider baseURL="https://api.oxy.so">
21
+ * <YourApp />
22
+ * </WebOxyProvider>
23
+ * );
24
+ * }
25
+ *
26
+ * function YourApp() {
27
+ * const { user, isAuthenticated, signIn, signOut } = useAuth();
28
+ * // ... your app logic
29
+ * }
30
+ * ```
31
+ */
32
+ export { OxyServices, OxyAuthenticationError, OxyAuthenticationTimeoutError, OXY_CLOUD_URL, oxyClient, CrossDomainAuth, createCrossDomainAuth, DeviceManager, } from '../core';
33
+ export type { CrossDomainAuthOptions, DeviceFingerprint, StoredDeviceInfo, } from '../core';
34
+ export { WebOxyProvider, useWebOxy, useAuth } from './WebOxyContext';
35
+ export type { WebOxyProviderProps, WebAuthState, WebAuthActions, WebOxyContextValue } from './WebOxyContext';
36
+ export type { User, ApiError, Notification, FileMetadata, AssetUploadProgress, PaymentMethod, KarmaLeaderboardEntry, KarmaRule, Transaction, DeviceSession, } from '../models/interfaces';
37
+ export type { ClientSession } from '../models/session';
38
+ export { SUPPORTED_LANGUAGES, getLanguageMetadata, getLanguageName, getNativeLanguageName, normalizeLanguageCode, } from '../utils/languageUtils';
39
+ export type { LanguageMetadata } from '../utils/languageUtils';
40
+ import { WebOxyProvider } from './WebOxyContext';
41
+ export default WebOxyProvider;
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,EACb,SAAS,EACT,eAAe,EACf,qBAAqB,EACrB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI7G,YAAY,EACV,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,eAAe,cAAc,CAAC"}
@@ -43,12 +43,11 @@ export { ensureValidToken, withAuthErrorHandling, authenticatedApiCall, isAuthen
43
43
  export type { HandleApiErrorOptions } from './ui/utils/authHelpers';
44
44
  export { useFileFiltering } from './ui/hooks/useFileFiltering';
45
45
  export type { ViewMode, SortBy, SortOrder } from './ui/hooks/useFileFiltering';
46
- export { OxySignInButton } from './ui/components/OxySignInButton';
47
- export { OxyLogo } from './ui/components/OxyLogo';
48
46
  export * from './utils/apiUtils';
49
47
  export { ErrorCodes, createApiError, handleHttpError, validateRequiredFields, retryWithBackoff } from './utils/errorUtils';
50
48
  export * from './utils/validationUtils';
51
- export { logger, LogLevel, LogContext, logAuth, logApi, logSession, logUser, logDevice, logPayment, logPerformance } from './utils/loggerUtils';
49
+ export { logger, LogLevel, logAuth, logApi, logSession, logUser, logDevice, logPayment, logPerformance } from './utils/loggerUtils';
50
+ export type { LogContext } from './utils/loggerUtils';
52
51
  export * from './utils/asyncUtils';
53
52
  export * from './utils/hookUtils';
54
53
  //# sourceMappingURL=web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/web.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Web-Only Oxy Context
3
+ * Clean implementation with ZERO React Native dependencies
4
+ */
5
+ import { type ReactNode } from 'react';
6
+ import { OxyServices } from '../core';
7
+ import type { User } from '../models/interfaces';
8
+ export interface WebAuthState {
9
+ user: User | null;
10
+ isAuthenticated: boolean;
11
+ isLoading: boolean;
12
+ error: string | null;
13
+ }
14
+ export interface WebAuthActions {
15
+ signIn: () => Promise<void>;
16
+ signOut: () => Promise<void>;
17
+ }
18
+ export interface WebOxyContextValue extends WebAuthState, WebAuthActions {
19
+ oxyServices: OxyServices;
20
+ }
21
+ export interface WebOxyProviderProps {
22
+ children: ReactNode;
23
+ baseURL: string;
24
+ authWebUrl?: string;
25
+ onAuthStateChange?: (user: User | null) => void;
26
+ }
27
+ /**
28
+ * Web-only Oxy Provider
29
+ * Minimal, clean implementation for web apps
30
+ */
31
+ export declare function WebOxyProvider({ children, baseURL, authWebUrl, onAuthStateChange, }: WebOxyProviderProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare function useWebOxy(): WebOxyContextValue;
33
+ export declare function useAuth(): {
34
+ user: User | null;
35
+ isAuthenticated: boolean;
36
+ isLoading: boolean;
37
+ isReady: boolean;
38
+ error: string | null;
39
+ signIn: () => Promise<void>;
40
+ signOut: () => Promise<void>;
41
+ oxyServices: OxyServices;
42
+ };
43
+ //# sourceMappingURL=WebOxyContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebOxyContext.d.ts","sourceRoot":"","sources":["../../../../src/web/WebOxyContext.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY,EAAE,cAAc;IACtE,WAAW,EAAE,WAAW,CAAC;CAC1B;AAID,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,OAAO,EACP,UAAU,EACV,iBAAiB,GAClB,EAAE,mBAAmB,2CAwIrB;AAED,wBAAgB,SAAS,uBAMxB;AAED,wBAAgB,OAAO;;;;;;kBA5KP,OAAO,CAAC,IAAI,CAAC;mBACZ,OAAO,CAAC,IAAI,CAAC;;EAwL7B"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @oxyhq/services/web - Web-Only Module
3
+ *
4
+ * Clean, professional web module with ZERO React Native dependencies.
5
+ * Perfect for Next.js, Vite, Create React App, and other pure React web apps.
6
+ *
7
+ * Features:
8
+ * - WebOxyProvider for React context
9
+ * - useAuth hook for authentication
10
+ * - Cross-domain SSO via FedCM
11
+ * - Full TypeScript support
12
+ * - Zero bundler configuration needed
13
+ *
14
+ * Usage:
15
+ * ```tsx
16
+ * import { WebOxyProvider, useAuth } from '@oxyhq/services/web';
17
+ *
18
+ * function App() {
19
+ * return (
20
+ * <WebOxyProvider baseURL="https://api.oxy.so">
21
+ * <YourApp />
22
+ * </WebOxyProvider>
23
+ * );
24
+ * }
25
+ *
26
+ * function YourApp() {
27
+ * const { user, isAuthenticated, signIn, signOut } = useAuth();
28
+ * // ... your app logic
29
+ * }
30
+ * ```
31
+ */
32
+ export { OxyServices, OxyAuthenticationError, OxyAuthenticationTimeoutError, OXY_CLOUD_URL, oxyClient, CrossDomainAuth, createCrossDomainAuth, DeviceManager, } from '../core';
33
+ export type { CrossDomainAuthOptions, DeviceFingerprint, StoredDeviceInfo, } from '../core';
34
+ export { WebOxyProvider, useWebOxy, useAuth } from './WebOxyContext';
35
+ export type { WebOxyProviderProps, WebAuthState, WebAuthActions, WebOxyContextValue } from './WebOxyContext';
36
+ export type { User, ApiError, Notification, FileMetadata, AssetUploadProgress, PaymentMethod, KarmaLeaderboardEntry, KarmaRule, Transaction, DeviceSession, } from '../models/interfaces';
37
+ export type { ClientSession } from '../models/session';
38
+ export { SUPPORTED_LANGUAGES, getLanguageMetadata, getLanguageName, getNativeLanguageName, normalizeLanguageCode, } from '../utils/languageUtils';
39
+ export type { LanguageMetadata } from '../utils/languageUtils';
40
+ import { WebOxyProvider } from './WebOxyContext';
41
+ export default WebOxyProvider;
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,6BAA6B,EAC7B,aAAa,EACb,SAAS,EACT,eAAe,EACf,qBAAqB,EACrB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI7G,YAAY,EACV,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,eAAe,cAAc,CAAC"}
@@ -43,12 +43,11 @@ export { ensureValidToken, withAuthErrorHandling, authenticatedApiCall, isAuthen
43
43
  export type { HandleApiErrorOptions } from './ui/utils/authHelpers';
44
44
  export { useFileFiltering } from './ui/hooks/useFileFiltering';
45
45
  export type { ViewMode, SortBy, SortOrder } from './ui/hooks/useFileFiltering';
46
- export { OxySignInButton } from './ui/components/OxySignInButton';
47
- export { OxyLogo } from './ui/components/OxyLogo';
48
46
  export * from './utils/apiUtils';
49
47
  export { ErrorCodes, createApiError, handleHttpError, validateRequiredFields, retryWithBackoff } from './utils/errorUtils';
50
48
  export * from './utils/validationUtils';
51
- export { logger, LogLevel, LogContext, logAuth, logApi, logSession, logUser, logDevice, logPayment, logPerformance } from './utils/loggerUtils';
49
+ export { logger, LogLevel, logAuth, logApi, logSession, logUser, logDevice, logPayment, logPerformance } from './utils/loggerUtils';
50
+ export type { LogContext } from './utils/loggerUtils';
52
51
  export * from './utils/asyncUtils';
53
52
  export * from './utils/hookUtils';
54
53
  //# sourceMappingURL=web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/web.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/services",
3
- "version": "5.22.0",
3
+ "version": "5.24.0",
4
4
  "description": "Reusable OxyHQ module to handle authentication, user management, karma system, device-based session management and more 🚀",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -30,10 +30,10 @@
30
30
  "default": "./lib/module/index.js"
31
31
  },
32
32
  "./web": {
33
- "types": "./lib/typescript/module/web.d.ts",
34
- "import": "./lib/module/web.js",
35
- "require": "./lib/commonjs/web.js",
36
- "default": "./lib/module/web.js"
33
+ "types": "./lib/typescript/module/web/index.d.ts",
34
+ "import": "./lib/module/web/index.js",
35
+ "require": "./lib/commonjs/web/index.js",
36
+ "default": "./lib/module/web/index.js"
37
37
  },
38
38
  "./core": {
39
39
  "types": "./lib/typescript/module/core/index.d.ts",
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Web-Only Oxy Context
3
+ * Clean implementation with ZERO React Native dependencies
4
+ */
5
+
6
+ import {
7
+ createContext,
8
+ useCallback,
9
+ useContext,
10
+ useEffect,
11
+ useState,
12
+ type ReactNode,
13
+ } from 'react';
14
+ import { OxyServices } from '../core';
15
+ import type { User } from '../models/interfaces';
16
+ import { QueryClientProvider } from '@tanstack/react-query';
17
+ import { createQueryClient } from '../ui/hooks/queryClient';
18
+
19
+ export interface WebAuthState {
20
+ user: User | null;
21
+ isAuthenticated: boolean;
22
+ isLoading: boolean;
23
+ error: string | null;
24
+ }
25
+
26
+ export interface WebAuthActions {
27
+ signIn: () => Promise<void>;
28
+ signOut: () => Promise<void>;
29
+ }
30
+
31
+ export interface WebOxyContextValue extends WebAuthState, WebAuthActions {
32
+ oxyServices: OxyServices;
33
+ }
34
+
35
+ const WebOxyContext = createContext<WebOxyContextValue | null>(null);
36
+
37
+ export interface WebOxyProviderProps {
38
+ children: ReactNode;
39
+ baseURL: string;
40
+ authWebUrl?: string;
41
+ onAuthStateChange?: (user: User | null) => void;
42
+ }
43
+
44
+ /**
45
+ * Web-only Oxy Provider
46
+ * Minimal, clean implementation for web apps
47
+ */
48
+ export function WebOxyProvider({
49
+ children,
50
+ baseURL,
51
+ authWebUrl,
52
+ onAuthStateChange,
53
+ }: WebOxyProviderProps) {
54
+ const [oxyServices] = useState(() => new OxyServices({ baseURL, authWebUrl }));
55
+ const [user, setUser] = useState<User | null>(null);
56
+ const [isLoading, setIsLoading] = useState(true);
57
+ const [error, setError] = useState<string | null>(null);
58
+ const [queryClient] = useState(() => createQueryClient());
59
+
60
+ const isAuthenticated = !!user;
61
+
62
+ // Initialize - check for existing session
63
+ useEffect(() => {
64
+ let mounted = true;
65
+
66
+ const initAuth = async () => {
67
+ try {
68
+ // Try to get current user (will use existing auth token if available)
69
+ const currentUser = await oxyServices.getCurrentUser();
70
+
71
+ if (mounted && currentUser) {
72
+ setUser(currentUser);
73
+ }
74
+ } catch (err) {
75
+ // No active session - this is fine
76
+ console.log('[WebOxy] No active session');
77
+ } finally {
78
+ if (mounted) {
79
+ setIsLoading(false);
80
+ }
81
+ }
82
+ };
83
+
84
+ initAuth();
85
+
86
+ return () => {
87
+ mounted = false;
88
+ };
89
+ }, [oxyServices]);
90
+
91
+ // Notify parent of auth state changes
92
+ useEffect(() => {
93
+ onAuthStateChange?.(user);
94
+ }, [user, onAuthStateChange]);
95
+
96
+ const signIn = useCallback(async () => {
97
+ setError(null);
98
+ setIsLoading(true);
99
+
100
+ try {
101
+ // Open popup to auth.oxy.so
102
+ const popup = window.open(
103
+ `${authWebUrl || 'https://auth.oxy.so'}/login?origin=${encodeURIComponent(window.location.origin)}`,
104
+ 'oxy-auth',
105
+ 'width=500,height=700,popup=yes'
106
+ );
107
+
108
+ if (!popup) {
109
+ throw new Error('Popup blocked. Please allow popups for this site.');
110
+ }
111
+
112
+ // Listen for message from popup
113
+ const handleMessage = async (event: MessageEvent) => {
114
+ if (event.origin !== (authWebUrl || 'https://auth.oxy.so')) {
115
+ return;
116
+ }
117
+
118
+ if (event.data.type === 'oxy-auth-success') {
119
+ const { accessToken, user: authUser } = event.data;
120
+
121
+ // Store the access token for API requests
122
+ if (typeof window !== 'undefined' && accessToken) {
123
+ localStorage.setItem('oxy-access-token', accessToken);
124
+ }
125
+
126
+ setUser(authUser);
127
+ setIsLoading(false);
128
+
129
+ window.removeEventListener('message', handleMessage);
130
+ popup.close();
131
+ } else if (event.data.type === 'oxy-auth-error') {
132
+ setError(event.data.error || 'Authentication failed');
133
+ setIsLoading(false);
134
+ window.removeEventListener('message', handleMessage);
135
+ popup.close();
136
+ }
137
+ };
138
+
139
+ window.addEventListener('message', handleMessage);
140
+
141
+ // Check if popup was closed
142
+ const checkClosed = setInterval(() => {
143
+ if (popup.closed) {
144
+ clearInterval(checkClosed);
145
+ window.removeEventListener('message', handleMessage);
146
+ setIsLoading(false);
147
+ }
148
+ }, 500);
149
+ } catch (err) {
150
+ console.error('[WebOxy] Sign in error:', err);
151
+ setError(err instanceof Error ? err.message : 'Sign in failed');
152
+ setIsLoading(false);
153
+ }
154
+ }, [authWebUrl]);
155
+
156
+ const signOut = useCallback(async () => {
157
+ setError(null);
158
+
159
+ try {
160
+ // Clear stored token
161
+ if (typeof window !== 'undefined') {
162
+ localStorage.removeItem('oxy-access-token');
163
+ }
164
+
165
+ setUser(null);
166
+ } catch (err) {
167
+ console.error('[WebOxy] Sign out error:', err);
168
+ setError(err instanceof Error ? err.message : 'Sign out failed');
169
+ }
170
+ }, []);
171
+
172
+ const contextValue: WebOxyContextValue = {
173
+ user,
174
+ isAuthenticated,
175
+ isLoading,
176
+ error,
177
+ signIn,
178
+ signOut,
179
+ oxyServices,
180
+ };
181
+
182
+ return (
183
+ <QueryClientProvider client={queryClient}>
184
+ <WebOxyContext.Provider value={contextValue}>
185
+ {children}
186
+ </WebOxyContext.Provider>
187
+ </QueryClientProvider>
188
+ );
189
+ }
190
+
191
+ export function useWebOxy() {
192
+ const context = useContext(WebOxyContext);
193
+ if (!context) {
194
+ throw new Error('useWebOxy must be used within WebOxyProvider');
195
+ }
196
+ return context;
197
+ }
198
+
199
+ export function useAuth() {
200
+ const { user, isAuthenticated, isLoading, error, signIn, signOut, oxyServices } = useWebOxy();
201
+
202
+ return {
203
+ user,
204
+ isAuthenticated,
205
+ isLoading,
206
+ isReady: !isLoading,
207
+ error,
208
+ signIn,
209
+ signOut,
210
+ oxyServices,
211
+ };
212
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @oxyhq/services/web - Web-Only Module
3
+ *
4
+ * Clean, professional web module with ZERO React Native dependencies.
5
+ * Perfect for Next.js, Vite, Create React App, and other pure React web apps.
6
+ *
7
+ * Features:
8
+ * - WebOxyProvider for React context
9
+ * - useAuth hook for authentication
10
+ * - Cross-domain SSO via FedCM
11
+ * - Full TypeScript support
12
+ * - Zero bundler configuration needed
13
+ *
14
+ * Usage:
15
+ * ```tsx
16
+ * import { WebOxyProvider, useAuth } from '@oxyhq/services/web';
17
+ *
18
+ * function App() {
19
+ * return (
20
+ * <WebOxyProvider baseURL="https://api.oxy.so">
21
+ * <YourApp />
22
+ * </WebOxyProvider>
23
+ * );
24
+ * }
25
+ *
26
+ * function YourApp() {
27
+ * const { user, isAuthenticated, signIn, signOut } = useAuth();
28
+ * // ... your app logic
29
+ * }
30
+ * ```
31
+ */
32
+
33
+ // ==================== Core API ====================
34
+ // Re-export core services (zero React Native deps)
35
+ export {
36
+ OxyServices,
37
+ OxyAuthenticationError,
38
+ OxyAuthenticationTimeoutError,
39
+ OXY_CLOUD_URL,
40
+ oxyClient,
41
+ CrossDomainAuth,
42
+ createCrossDomainAuth,
43
+ DeviceManager,
44
+ } from '../core';
45
+
46
+ export type {
47
+ CrossDomainAuthOptions,
48
+ DeviceFingerprint,
49
+ StoredDeviceInfo,
50
+ } from '../core';
51
+
52
+ // ==================== Web Components ====================
53
+ export { WebOxyProvider, useWebOxy, useAuth } from './WebOxyContext';
54
+ export type { WebOxyProviderProps, WebAuthState, WebAuthActions, WebOxyContextValue } from './WebOxyContext';
55
+
56
+ // ==================== Models & Types ====================
57
+ // Re-export commonly used types
58
+ export type {
59
+ User,
60
+ ApiError,
61
+ Notification,
62
+ FileMetadata,
63
+ AssetUploadProgress,
64
+ PaymentMethod,
65
+ KarmaLeaderboardEntry,
66
+ KarmaRule,
67
+ Transaction,
68
+ DeviceSession,
69
+ } from '../models/interfaces';
70
+
71
+ // Re-export session types
72
+ export type { ClientSession } from '../models/session';
73
+
74
+ // ==================== Utilities ====================
75
+ export {
76
+ SUPPORTED_LANGUAGES,
77
+ getLanguageMetadata,
78
+ getLanguageName,
79
+ getNativeLanguageName,
80
+ normalizeLanguageCode,
81
+ } from '../utils/languageUtils';
82
+
83
+ export type { LanguageMetadata } from '../utils/languageUtils';
84
+
85
+ // Default export for convenience
86
+ import { WebOxyProvider } from './WebOxyContext';
87
+ export default WebOxyProvider;
package/src/web.ts CHANGED
@@ -200,9 +200,9 @@ export type { HandleApiErrorOptions } from './ui/utils/authHelpers';
200
200
  export { useFileFiltering } from './ui/hooks/useFileFiltering';
201
201
  export type { ViewMode, SortBy, SortOrder } from './ui/hooks/useFileFiltering';
202
202
 
203
- // Web-compatible UI components (no React Native dependencies)
204
- export { OxySignInButton } from './ui/components/OxySignInButton';
205
- export { OxyLogo } from './ui/components/OxyLogo';
203
+ // Note: UI components like OxySignInButton and OxyLogo use React Native
204
+ // and are not included in the /web entry point. For pure web apps, use the
205
+ // useAuth hook and create your own sign-in button.
206
206
 
207
207
  // Utilities
208
208
  export * from './utils/apiUtils';
@@ -217,7 +217,6 @@ export * from './utils/validationUtils';
217
217
  export {
218
218
  logger,
219
219
  LogLevel,
220
- LogContext,
221
220
  logAuth,
222
221
  logApi,
223
222
  logSession,
@@ -226,5 +225,6 @@ export {
226
225
  logPayment,
227
226
  logPerformance
228
227
  } from './utils/loggerUtils';
228
+ export type { LogContext } from './utils/loggerUtils';
229
229
  export * from './utils/asyncUtils';
230
230
  export * from './utils/hookUtils';