@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/commonjs/web/WebOxyContext.js +179 -0
- package/lib/commonjs/web/WebOxyContext.js.map +1 -0
- package/lib/commonjs/web/index.js +146 -0
- package/lib/commonjs/web/index.js.map +1 -0
- package/lib/commonjs/web.js +0 -23
- package/lib/commonjs/web.js.map +1 -1
- package/lib/module/web/WebOxyContext.js +173 -0
- package/lib/module/web/WebOxyContext.js.map +1 -0
- package/lib/module/web/index.js +51 -0
- package/lib/module/web/index.js.map +1 -0
- package/lib/module/web.js +4 -4
- package/lib/module/web.js.map +1 -1
- package/lib/typescript/commonjs/web/WebOxyContext.d.ts +43 -0
- package/lib/typescript/commonjs/web/WebOxyContext.d.ts.map +1 -0
- package/lib/typescript/commonjs/web/index.d.ts +42 -0
- package/lib/typescript/commonjs/web/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/web.d.ts +2 -3
- package/lib/typescript/commonjs/web.d.ts.map +1 -1
- package/lib/typescript/module/web/WebOxyContext.d.ts +43 -0
- package/lib/typescript/module/web/WebOxyContext.d.ts.map +1 -0
- package/lib/typescript/module/web/index.d.ts +42 -0
- package/lib/typescript/module/web/index.d.ts.map +1 -0
- package/lib/typescript/module/web.d.ts +2 -3
- package/lib/typescript/module/web.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/web/WebOxyContext.tsx +212 -0
- package/src/web/index.ts +87 -0
- package/src/web.ts +4 -4
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
|
-
//
|
|
65
|
-
|
|
66
|
-
|
|
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,
|
|
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
|
package/lib/module/web.js.map
CHANGED
|
@@ -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","
|
|
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,
|
|
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,
|
|
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":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,mBAAmB,CAAC;AAG3B,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,QAAQ,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGlD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,OAAO,EACP,aAAa,EACb,aAAa,EACb,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGjF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,YAAY,EACV,SAAS,EACT,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,MAAM,EACN,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,WAAW,EACX,cAAc,EACd,cAAc,EACd,SAAS,EACT,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,4BAA4B,EAC5B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,aAAa,EACb,SAAS,IAAI,cAAc,EAC3B,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAG1F,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/web.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,mBAAmB,CAAC;AAG3B,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,QAAQ,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGlD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,OAAO,EACP,aAAa,EACb,aAAa,EACb,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGjF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,YAAY,EACV,SAAS,EACT,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,MAAM,EACN,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,WAAW,EACX,cAAc,EACd,cAAc,EACd,SAAS,EACT,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,4BAA4B,EAC5B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,aAAa,EACb,SAAS,IAAI,cAAc,EAC3B,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAG1F,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAO/E,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,UAAU,EACV,OAAO,EACP,SAAS,EACT,UAAU,EACV,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/services",
|
|
3
|
-
"version": "5.
|
|
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
|
+
}
|
package/src/web/index.ts
ADDED
|
@@ -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
|
-
//
|
|
204
|
-
|
|
205
|
-
|
|
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';
|