@oxyhq/core 1.0.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.
Files changed (277) hide show
  1. package/README.md +50 -0
  2. package/dist/cjs/AuthManager.js +361 -0
  3. package/dist/cjs/CrossDomainAuth.js +258 -0
  4. package/dist/cjs/HttpService.js +618 -0
  5. package/dist/cjs/OxyServices.base.js +263 -0
  6. package/dist/cjs/OxyServices.errors.js +22 -0
  7. package/dist/cjs/OxyServices.js +63 -0
  8. package/dist/cjs/constants/version.js +16 -0
  9. package/dist/cjs/crypto/index.js +20 -0
  10. package/dist/cjs/crypto/keyManager.js +887 -0
  11. package/dist/cjs/crypto/polyfill.js +64 -0
  12. package/dist/cjs/crypto/recoveryPhrase.js +169 -0
  13. package/dist/cjs/crypto/signatureService.js +296 -0
  14. package/dist/cjs/i18n/index.js +73 -0
  15. package/dist/cjs/i18n/locales/ar-SA.json +120 -0
  16. package/dist/cjs/i18n/locales/ca-ES.json +120 -0
  17. package/dist/cjs/i18n/locales/de-DE.json +120 -0
  18. package/dist/cjs/i18n/locales/en-US.json +956 -0
  19. package/dist/cjs/i18n/locales/es-ES.json +944 -0
  20. package/dist/cjs/i18n/locales/fr-FR.json +120 -0
  21. package/dist/cjs/i18n/locales/it-IT.json +120 -0
  22. package/dist/cjs/i18n/locales/ja-JP.json +119 -0
  23. package/dist/cjs/i18n/locales/ko-KR.json +120 -0
  24. package/dist/cjs/i18n/locales/locales/ar-SA.json +120 -0
  25. package/dist/cjs/i18n/locales/locales/ca-ES.json +120 -0
  26. package/dist/cjs/i18n/locales/locales/de-DE.json +120 -0
  27. package/dist/cjs/i18n/locales/locales/en-US.json +956 -0
  28. package/dist/cjs/i18n/locales/locales/es-ES.json +944 -0
  29. package/dist/cjs/i18n/locales/locales/fr-FR.json +120 -0
  30. package/dist/cjs/i18n/locales/locales/it-IT.json +120 -0
  31. package/dist/cjs/i18n/locales/locales/ja-JP.json +119 -0
  32. package/dist/cjs/i18n/locales/locales/ko-KR.json +120 -0
  33. package/dist/cjs/i18n/locales/locales/pt-PT.json +120 -0
  34. package/dist/cjs/i18n/locales/locales/zh-CN.json +120 -0
  35. package/dist/cjs/i18n/locales/pt-PT.json +120 -0
  36. package/dist/cjs/i18n/locales/zh-CN.json +120 -0
  37. package/dist/cjs/index.js +153 -0
  38. package/dist/cjs/mixins/OxyServices.analytics.js +49 -0
  39. package/dist/cjs/mixins/OxyServices.assets.js +380 -0
  40. package/dist/cjs/mixins/OxyServices.auth.js +259 -0
  41. package/dist/cjs/mixins/OxyServices.developer.js +97 -0
  42. package/dist/cjs/mixins/OxyServices.devices.js +116 -0
  43. package/dist/cjs/mixins/OxyServices.features.js +309 -0
  44. package/dist/cjs/mixins/OxyServices.fedcm.js +435 -0
  45. package/dist/cjs/mixins/OxyServices.karma.js +108 -0
  46. package/dist/cjs/mixins/OxyServices.language.js +154 -0
  47. package/dist/cjs/mixins/OxyServices.location.js +43 -0
  48. package/dist/cjs/mixins/OxyServices.payment.js +158 -0
  49. package/dist/cjs/mixins/OxyServices.popup.js +371 -0
  50. package/dist/cjs/mixins/OxyServices.privacy.js +162 -0
  51. package/dist/cjs/mixins/OxyServices.redirect.js +345 -0
  52. package/dist/cjs/mixins/OxyServices.security.js +81 -0
  53. package/dist/cjs/mixins/OxyServices.user.js +355 -0
  54. package/dist/cjs/mixins/OxyServices.utility.js +156 -0
  55. package/dist/cjs/mixins/index.js +79 -0
  56. package/dist/cjs/mixins/mixinHelpers.js +53 -0
  57. package/dist/cjs/models/interfaces.js +20 -0
  58. package/dist/cjs/models/session.js +2 -0
  59. package/dist/cjs/shared/index.js +70 -0
  60. package/dist/cjs/shared/utils/colorUtils.js +153 -0
  61. package/dist/cjs/shared/utils/debugUtils.js +73 -0
  62. package/dist/cjs/shared/utils/errorUtils.js +183 -0
  63. package/dist/cjs/shared/utils/index.js +49 -0
  64. package/dist/cjs/shared/utils/networkUtils.js +183 -0
  65. package/dist/cjs/shared/utils/themeUtils.js +106 -0
  66. package/dist/cjs/utils/apiUtils.js +61 -0
  67. package/dist/cjs/utils/asyncUtils.js +194 -0
  68. package/dist/cjs/utils/cache.js +226 -0
  69. package/dist/cjs/utils/deviceManager.js +205 -0
  70. package/dist/cjs/utils/errorUtils.js +154 -0
  71. package/dist/cjs/utils/index.js +26 -0
  72. package/dist/cjs/utils/languageUtils.js +165 -0
  73. package/dist/cjs/utils/loggerUtils.js +126 -0
  74. package/dist/cjs/utils/platform.js +144 -0
  75. package/dist/cjs/utils/requestUtils.js +209 -0
  76. package/dist/cjs/utils/sessionUtils.js +181 -0
  77. package/dist/cjs/utils/validationUtils.js +173 -0
  78. package/dist/esm/AuthManager.js +356 -0
  79. package/dist/esm/CrossDomainAuth.js +253 -0
  80. package/dist/esm/HttpService.js +614 -0
  81. package/dist/esm/OxyServices.base.js +259 -0
  82. package/dist/esm/OxyServices.errors.js +17 -0
  83. package/dist/esm/OxyServices.js +59 -0
  84. package/dist/esm/constants/version.js +13 -0
  85. package/dist/esm/crypto/index.js +13 -0
  86. package/dist/esm/crypto/keyManager.js +850 -0
  87. package/dist/esm/crypto/polyfill.js +61 -0
  88. package/dist/esm/crypto/recoveryPhrase.js +132 -0
  89. package/dist/esm/crypto/signatureService.js +259 -0
  90. package/dist/esm/i18n/index.js +69 -0
  91. package/dist/esm/i18n/locales/ar-SA.json +120 -0
  92. package/dist/esm/i18n/locales/ca-ES.json +120 -0
  93. package/dist/esm/i18n/locales/de-DE.json +120 -0
  94. package/dist/esm/i18n/locales/en-US.json +956 -0
  95. package/dist/esm/i18n/locales/es-ES.json +944 -0
  96. package/dist/esm/i18n/locales/fr-FR.json +120 -0
  97. package/dist/esm/i18n/locales/it-IT.json +120 -0
  98. package/dist/esm/i18n/locales/ja-JP.json +119 -0
  99. package/dist/esm/i18n/locales/ko-KR.json +120 -0
  100. package/dist/esm/i18n/locales/locales/ar-SA.json +120 -0
  101. package/dist/esm/i18n/locales/locales/ca-ES.json +120 -0
  102. package/dist/esm/i18n/locales/locales/de-DE.json +120 -0
  103. package/dist/esm/i18n/locales/locales/en-US.json +956 -0
  104. package/dist/esm/i18n/locales/locales/es-ES.json +944 -0
  105. package/dist/esm/i18n/locales/locales/fr-FR.json +120 -0
  106. package/dist/esm/i18n/locales/locales/it-IT.json +120 -0
  107. package/dist/esm/i18n/locales/locales/ja-JP.json +119 -0
  108. package/dist/esm/i18n/locales/locales/ko-KR.json +120 -0
  109. package/dist/esm/i18n/locales/locales/pt-PT.json +120 -0
  110. package/dist/esm/i18n/locales/locales/zh-CN.json +120 -0
  111. package/dist/esm/i18n/locales/pt-PT.json +120 -0
  112. package/dist/esm/i18n/locales/zh-CN.json +120 -0
  113. package/dist/esm/index.js +55 -0
  114. package/dist/esm/mixins/OxyServices.analytics.js +46 -0
  115. package/dist/esm/mixins/OxyServices.assets.js +377 -0
  116. package/dist/esm/mixins/OxyServices.auth.js +256 -0
  117. package/dist/esm/mixins/OxyServices.developer.js +94 -0
  118. package/dist/esm/mixins/OxyServices.devices.js +113 -0
  119. package/dist/esm/mixins/OxyServices.features.js +306 -0
  120. package/dist/esm/mixins/OxyServices.fedcm.js +433 -0
  121. package/dist/esm/mixins/OxyServices.karma.js +105 -0
  122. package/dist/esm/mixins/OxyServices.language.js +118 -0
  123. package/dist/esm/mixins/OxyServices.location.js +40 -0
  124. package/dist/esm/mixins/OxyServices.payment.js +155 -0
  125. package/dist/esm/mixins/OxyServices.popup.js +369 -0
  126. package/dist/esm/mixins/OxyServices.privacy.js +159 -0
  127. package/dist/esm/mixins/OxyServices.redirect.js +343 -0
  128. package/dist/esm/mixins/OxyServices.security.js +78 -0
  129. package/dist/esm/mixins/OxyServices.user.js +352 -0
  130. package/dist/esm/mixins/OxyServices.utility.js +153 -0
  131. package/dist/esm/mixins/index.js +76 -0
  132. package/dist/esm/mixins/mixinHelpers.js +48 -0
  133. package/dist/esm/models/interfaces.js +17 -0
  134. package/dist/esm/models/session.js +1 -0
  135. package/dist/esm/shared/index.js +31 -0
  136. package/dist/esm/shared/utils/colorUtils.js +143 -0
  137. package/dist/esm/shared/utils/debugUtils.js +65 -0
  138. package/dist/esm/shared/utils/errorUtils.js +170 -0
  139. package/dist/esm/shared/utils/index.js +15 -0
  140. package/dist/esm/shared/utils/networkUtils.js +173 -0
  141. package/dist/esm/shared/utils/themeUtils.js +98 -0
  142. package/dist/esm/utils/apiUtils.js +55 -0
  143. package/dist/esm/utils/asyncUtils.js +179 -0
  144. package/dist/esm/utils/cache.js +218 -0
  145. package/dist/esm/utils/deviceManager.js +168 -0
  146. package/dist/esm/utils/errorUtils.js +146 -0
  147. package/dist/esm/utils/index.js +7 -0
  148. package/dist/esm/utils/languageUtils.js +158 -0
  149. package/dist/esm/utils/loggerUtils.js +115 -0
  150. package/dist/esm/utils/platform.js +102 -0
  151. package/dist/esm/utils/requestUtils.js +203 -0
  152. package/dist/esm/utils/sessionUtils.js +171 -0
  153. package/dist/esm/utils/validationUtils.js +153 -0
  154. package/dist/types/AuthManager.d.ts +143 -0
  155. package/dist/types/CrossDomainAuth.d.ts +160 -0
  156. package/dist/types/HttpService.d.ts +163 -0
  157. package/dist/types/OxyServices.base.d.ts +126 -0
  158. package/dist/types/OxyServices.d.ts +81 -0
  159. package/dist/types/OxyServices.errors.d.ts +11 -0
  160. package/dist/types/constants/version.d.ts +13 -0
  161. package/dist/types/crypto/index.d.ts +11 -0
  162. package/dist/types/crypto/keyManager.d.ts +189 -0
  163. package/dist/types/crypto/polyfill.d.ts +11 -0
  164. package/dist/types/crypto/recoveryPhrase.d.ts +58 -0
  165. package/dist/types/crypto/signatureService.d.ts +86 -0
  166. package/dist/types/i18n/index.d.ts +3 -0
  167. package/dist/types/index.d.ts +50 -0
  168. package/dist/types/mixins/OxyServices.analytics.d.ts +66 -0
  169. package/dist/types/mixins/OxyServices.assets.d.ts +135 -0
  170. package/dist/types/mixins/OxyServices.auth.d.ts +186 -0
  171. package/dist/types/mixins/OxyServices.developer.d.ts +99 -0
  172. package/dist/types/mixins/OxyServices.devices.d.ts +96 -0
  173. package/dist/types/mixins/OxyServices.features.d.ts +228 -0
  174. package/dist/types/mixins/OxyServices.fedcm.d.ts +200 -0
  175. package/dist/types/mixins/OxyServices.karma.d.ts +85 -0
  176. package/dist/types/mixins/OxyServices.language.d.ts +81 -0
  177. package/dist/types/mixins/OxyServices.location.d.ts +64 -0
  178. package/dist/types/mixins/OxyServices.payment.d.ts +111 -0
  179. package/dist/types/mixins/OxyServices.popup.d.ts +205 -0
  180. package/dist/types/mixins/OxyServices.privacy.d.ts +122 -0
  181. package/dist/types/mixins/OxyServices.redirect.d.ts +245 -0
  182. package/dist/types/mixins/OxyServices.security.d.ts +78 -0
  183. package/dist/types/mixins/OxyServices.user.d.ts +182 -0
  184. package/dist/types/mixins/OxyServices.utility.d.ts +93 -0
  185. package/dist/types/mixins/index.d.ts +30 -0
  186. package/dist/types/mixins/mixinHelpers.d.ts +31 -0
  187. package/dist/types/models/interfaces.d.ts +415 -0
  188. package/dist/types/models/session.d.ts +27 -0
  189. package/dist/types/shared/index.d.ts +28 -0
  190. package/dist/types/shared/utils/colorUtils.d.ts +104 -0
  191. package/dist/types/shared/utils/debugUtils.d.ts +48 -0
  192. package/dist/types/shared/utils/errorUtils.d.ts +97 -0
  193. package/dist/types/shared/utils/index.d.ts +13 -0
  194. package/dist/types/shared/utils/networkUtils.d.ts +139 -0
  195. package/dist/types/shared/utils/themeUtils.d.ts +90 -0
  196. package/dist/types/utils/apiUtils.d.ts +53 -0
  197. package/dist/types/utils/asyncUtils.d.ts +58 -0
  198. package/dist/types/utils/cache.d.ts +127 -0
  199. package/dist/types/utils/deviceManager.d.ts +65 -0
  200. package/dist/types/utils/errorUtils.d.ts +46 -0
  201. package/dist/types/utils/index.d.ts +6 -0
  202. package/dist/types/utils/languageUtils.d.ts +37 -0
  203. package/dist/types/utils/loggerUtils.d.ts +48 -0
  204. package/dist/types/utils/platform.d.ts +40 -0
  205. package/dist/types/utils/requestUtils.d.ts +123 -0
  206. package/dist/types/utils/sessionUtils.d.ts +54 -0
  207. package/dist/types/utils/validationUtils.d.ts +85 -0
  208. package/package.json +84 -0
  209. package/src/AuthManager.ts +436 -0
  210. package/src/CrossDomainAuth.ts +307 -0
  211. package/src/HttpService.ts +752 -0
  212. package/src/OxyServices.base.ts +334 -0
  213. package/src/OxyServices.errors.ts +26 -0
  214. package/src/OxyServices.ts +129 -0
  215. package/src/constants/version.ts +15 -0
  216. package/src/crypto/index.ts +25 -0
  217. package/src/crypto/keyManager.ts +962 -0
  218. package/src/crypto/polyfill.ts +70 -0
  219. package/src/crypto/recoveryPhrase.ts +166 -0
  220. package/src/crypto/signatureService.ts +323 -0
  221. package/src/i18n/index.ts +75 -0
  222. package/src/i18n/locales/ar-SA.json +120 -0
  223. package/src/i18n/locales/ca-ES.json +120 -0
  224. package/src/i18n/locales/de-DE.json +120 -0
  225. package/src/i18n/locales/en-US.json +956 -0
  226. package/src/i18n/locales/es-ES.json +944 -0
  227. package/src/i18n/locales/fr-FR.json +120 -0
  228. package/src/i18n/locales/it-IT.json +120 -0
  229. package/src/i18n/locales/ja-JP.json +119 -0
  230. package/src/i18n/locales/ko-KR.json +120 -0
  231. package/src/i18n/locales/pt-PT.json +120 -0
  232. package/src/i18n/locales/zh-CN.json +120 -0
  233. package/src/index.ts +153 -0
  234. package/src/mixins/OxyServices.analytics.ts +53 -0
  235. package/src/mixins/OxyServices.assets.ts +412 -0
  236. package/src/mixins/OxyServices.auth.ts +358 -0
  237. package/src/mixins/OxyServices.developer.ts +114 -0
  238. package/src/mixins/OxyServices.devices.ts +119 -0
  239. package/src/mixins/OxyServices.features.ts +428 -0
  240. package/src/mixins/OxyServices.fedcm.ts +494 -0
  241. package/src/mixins/OxyServices.karma.ts +111 -0
  242. package/src/mixins/OxyServices.language.ts +127 -0
  243. package/src/mixins/OxyServices.location.ts +46 -0
  244. package/src/mixins/OxyServices.payment.ts +163 -0
  245. package/src/mixins/OxyServices.popup.ts +443 -0
  246. package/src/mixins/OxyServices.privacy.ts +182 -0
  247. package/src/mixins/OxyServices.redirect.ts +397 -0
  248. package/src/mixins/OxyServices.security.ts +103 -0
  249. package/src/mixins/OxyServices.user.ts +392 -0
  250. package/src/mixins/OxyServices.utility.ts +191 -0
  251. package/src/mixins/index.ts +91 -0
  252. package/src/mixins/mixinHelpers.ts +69 -0
  253. package/src/models/interfaces.ts +511 -0
  254. package/src/models/session.ts +30 -0
  255. package/src/shared/index.ts +82 -0
  256. package/src/shared/utils/colorUtils.ts +155 -0
  257. package/src/shared/utils/debugUtils.ts +73 -0
  258. package/src/shared/utils/errorUtils.ts +181 -0
  259. package/src/shared/utils/index.ts +59 -0
  260. package/src/shared/utils/networkUtils.ts +248 -0
  261. package/src/shared/utils/themeUtils.ts +115 -0
  262. package/src/types/bip39.d.ts +32 -0
  263. package/src/types/buffer.d.ts +97 -0
  264. package/src/types/color.d.ts +20 -0
  265. package/src/types/elliptic.d.ts +62 -0
  266. package/src/utils/apiUtils.ts +88 -0
  267. package/src/utils/asyncUtils.ts +252 -0
  268. package/src/utils/cache.ts +264 -0
  269. package/src/utils/deviceManager.ts +198 -0
  270. package/src/utils/errorUtils.ts +216 -0
  271. package/src/utils/index.ts +21 -0
  272. package/src/utils/languageUtils.ts +174 -0
  273. package/src/utils/loggerUtils.ts +153 -0
  274. package/src/utils/platform.ts +117 -0
  275. package/src/utils/requestUtils.ts +237 -0
  276. package/src/utils/sessionUtils.ts +206 -0
  277. package/src/utils/validationUtils.ts +174 -0
@@ -0,0 +1,182 @@
1
+ /**
2
+ * User Management Methods Mixin
3
+ */
4
+ import type { User, Notification, SearchProfilesResponse } from '../models/interfaces';
5
+ import type { OxyServicesBase } from '../OxyServices.base';
6
+ import { type PaginationParams } from '../utils/apiUtils';
7
+ export declare function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T): {
8
+ new (...args: any[]): {
9
+ /**
10
+ * Get profile by username
11
+ */
12
+ getProfileByUsername(username: string): Promise<User>;
13
+ /**
14
+ * Search user profiles
15
+ */
16
+ searchProfiles(query: string, pagination?: PaginationParams): Promise<SearchProfilesResponse>;
17
+ /**
18
+ * Get profile recommendations
19
+ */
20
+ getProfileRecommendations(): Promise<Array<{
21
+ id: string;
22
+ username: string;
23
+ name?: {
24
+ first?: string;
25
+ last?: string;
26
+ full?: string;
27
+ };
28
+ description?: string;
29
+ _count?: {
30
+ followers: number;
31
+ following: number;
32
+ };
33
+ [key: string]: any;
34
+ }>>;
35
+ /**
36
+ * Get user by ID
37
+ */
38
+ getUserById(userId: string): Promise<User>;
39
+ /**
40
+ * Get current user
41
+ */
42
+ getCurrentUser(): Promise<User>;
43
+ /**
44
+ * Update user profile
45
+ * TanStack Query handles offline queuing automatically
46
+ */
47
+ updateProfile(updates: Record<string, any>): Promise<User>;
48
+ /**
49
+ * Get privacy settings for a user
50
+ * @param userId - The user ID (defaults to current user)
51
+ */
52
+ getPrivacySettings(userId?: string): Promise<any>;
53
+ /**
54
+ * Update privacy settings
55
+ * @param settings - Partial privacy settings object
56
+ * @param userId - The user ID (defaults to current user)
57
+ */
58
+ updatePrivacySettings(settings: Record<string, any>, userId?: string): Promise<any>;
59
+ /**
60
+ * Request account verification
61
+ */
62
+ requestAccountVerification(reason: string, evidence?: string): Promise<{
63
+ message: string;
64
+ requestId: string;
65
+ }>;
66
+ /**
67
+ * Download account data export
68
+ */
69
+ downloadAccountData(format?: "json" | "csv"): Promise<Blob>;
70
+ /**
71
+ * Delete account permanently
72
+ * @param password - User password for confirmation
73
+ * @param confirmText - Confirmation text (usually username)
74
+ */
75
+ deleteAccount(password: string, confirmText: string): Promise<{
76
+ message: string;
77
+ }>;
78
+ /**
79
+ * Follow a user
80
+ */
81
+ followUser(userId: string): Promise<{
82
+ success: boolean;
83
+ message: string;
84
+ }>;
85
+ /**
86
+ * Unfollow a user
87
+ */
88
+ unfollowUser(userId: string): Promise<{
89
+ success: boolean;
90
+ message: string;
91
+ }>;
92
+ /**
93
+ * Get follow status
94
+ */
95
+ getFollowStatus(userId: string): Promise<{
96
+ isFollowing: boolean;
97
+ }>;
98
+ /**
99
+ * Get user followers
100
+ */
101
+ getUserFollowers(userId: string, pagination?: PaginationParams): Promise<{
102
+ followers: User[];
103
+ total: number;
104
+ hasMore: boolean;
105
+ }>;
106
+ /**
107
+ * Get user following
108
+ */
109
+ getUserFollowing(userId: string, pagination?: PaginationParams): Promise<{
110
+ following: User[];
111
+ total: number;
112
+ hasMore: boolean;
113
+ }>;
114
+ /**
115
+ * Get notifications
116
+ */
117
+ getNotifications(): Promise<Notification[]>;
118
+ /**
119
+ * Get unread notification count
120
+ */
121
+ getUnreadCount(): Promise<number>;
122
+ /**
123
+ * Create notification
124
+ */
125
+ createNotification(data: Partial<Notification>): Promise<Notification>;
126
+ /**
127
+ * Mark notification as read
128
+ */
129
+ markNotificationAsRead(notificationId: string): Promise<void>;
130
+ /**
131
+ * Mark all notifications as read
132
+ */
133
+ markAllNotificationsAsRead(): Promise<void>;
134
+ /**
135
+ * Delete notification
136
+ */
137
+ deleteNotification(notificationId: string): Promise<void>;
138
+ httpService: import("../HttpService").HttpService;
139
+ cloudURL: string;
140
+ config: import("../OxyServices.base").OxyConfig;
141
+ makeRequest<T_1>(method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE", url: string, data?: any, options?: import("../HttpService").RequestOptions): Promise<T_1>;
142
+ getBaseURL(): string;
143
+ getClient(): import("../HttpService").HttpService;
144
+ getMetrics(): {
145
+ totalRequests: number;
146
+ successfulRequests: number;
147
+ failedRequests: number;
148
+ cacheHits: number;
149
+ cacheMisses: number;
150
+ averageResponseTime: number;
151
+ };
152
+ clearCache(): void;
153
+ clearCacheEntry(key: string): void;
154
+ getCacheStats(): {
155
+ size: number;
156
+ hits: number;
157
+ misses: number;
158
+ hitRate: number;
159
+ };
160
+ getCloudURL(): string;
161
+ setTokens(accessToken: string, refreshToken?: string): void;
162
+ clearTokens(): void;
163
+ getCurrentUserId(): string | null;
164
+ hasValidToken(): boolean;
165
+ getAccessToken(): string | null;
166
+ waitForAuth(timeoutMs?: number): Promise<boolean>;
167
+ withAuthRetry<T_1>(operation: () => Promise<T_1>, operationName: string, options?: {
168
+ maxRetries?: number;
169
+ retryDelay?: number;
170
+ authTimeoutMs?: number;
171
+ }): Promise<T_1>;
172
+ validate(): Promise<boolean>;
173
+ handleError(error: unknown): Error;
174
+ healthCheck(): Promise<{
175
+ status: string;
176
+ users?: number;
177
+ timestamp?: string;
178
+ [key: string]: any;
179
+ }>;
180
+ };
181
+ __resetTokensForTests(): void;
182
+ } & T;
@@ -0,0 +1,93 @@
1
+ import type { ApiError } from '../models/interfaces';
2
+ import type { OxyServicesBase } from '../OxyServices.base';
3
+ export declare function OxyServicesUtilityMixin<T extends typeof OxyServicesBase>(Base: T): {
4
+ new (...args: any[]): {
5
+ /**
6
+ * Fetch link metadata
7
+ */
8
+ fetchLinkMetadata(url: string): Promise<{
9
+ url: string;
10
+ title: string;
11
+ description: string;
12
+ image?: string;
13
+ }>;
14
+ /**
15
+ * Simple Express.js authentication middleware
16
+ *
17
+ * Built-in authentication middleware that validates JWT tokens and adds user data to requests.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * // Basic usage - just add it to your routes
22
+ * app.use('/api/protected', oxyServices.auth());
23
+ *
24
+ * // With debug logging
25
+ * app.use('/api/protected', oxyServices.auth({ debug: true }));
26
+ *
27
+ * // With custom error handling
28
+ * app.use('/api/protected', oxyServices.auth({
29
+ * onError: (error) => console.error('Auth failed:', error)
30
+ * }));
31
+ *
32
+ * // Load full user data
33
+ * app.use('/api/protected', oxyServices.auth({ loadUser: true }));
34
+ * ```
35
+ *
36
+ * @param options Optional configuration
37
+ * @param options.debug Enable debug logging (default: false)
38
+ * @param options.onError Custom error handler
39
+ * @param options.loadUser Load full user data (default: false for performance)
40
+ * @param options.session Use session-based validation (default: false)
41
+ * @returns Express middleware function
42
+ */
43
+ auth(options?: {
44
+ debug?: boolean;
45
+ onError?: (error: ApiError) => any;
46
+ loadUser?: boolean;
47
+ session?: boolean;
48
+ }): (req: any, res: any, next: any) => any;
49
+ httpService: import("../HttpService").HttpService;
50
+ cloudURL: string;
51
+ config: import("../OxyServices.base").OxyConfig;
52
+ makeRequest<T_1>(method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE", url: string, data?: any, options?: import("../HttpService").RequestOptions): Promise<T_1>;
53
+ getBaseURL(): string;
54
+ getClient(): import("../HttpService").HttpService;
55
+ getMetrics(): {
56
+ totalRequests: number;
57
+ successfulRequests: number;
58
+ failedRequests: number;
59
+ cacheHits: number;
60
+ cacheMisses: number;
61
+ averageResponseTime: number;
62
+ };
63
+ clearCache(): void;
64
+ clearCacheEntry(key: string): void;
65
+ getCacheStats(): {
66
+ size: number;
67
+ hits: number;
68
+ misses: number;
69
+ hitRate: number;
70
+ };
71
+ getCloudURL(): string;
72
+ setTokens(accessToken: string, refreshToken?: string): void;
73
+ clearTokens(): void;
74
+ getCurrentUserId(): string | null;
75
+ hasValidToken(): boolean;
76
+ getAccessToken(): string | null;
77
+ waitForAuth(timeoutMs?: number): Promise<boolean>;
78
+ withAuthRetry<T_1>(operation: () => Promise<T_1>, operationName: string, options?: {
79
+ maxRetries?: number;
80
+ retryDelay?: number;
81
+ authTimeoutMs?: number;
82
+ }): Promise<T_1>;
83
+ validate(): Promise<boolean>;
84
+ handleError(error: unknown): Error;
85
+ healthCheck(): Promise<{
86
+ status: string;
87
+ users?: number;
88
+ timestamp?: string;
89
+ [key: string]: any;
90
+ }>;
91
+ };
92
+ __resetTokensForTests(): void;
93
+ } & T;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Centralized mixin exports and composition helper
3
+ *
4
+ * This module provides a clean way to compose all mixins
5
+ * and ensures consistent ordering for better maintainability
6
+ */
7
+ type MixinFunction = (Base: any) => any;
8
+ /**
9
+ * Mixin pipeline - applied in order from first to last.
10
+ *
11
+ * Order matters for dependencies:
12
+ * 1. Base auth mixin first (required by all others)
13
+ * 2. Cross-domain auth mixins (FedCM, Popup, Redirect)
14
+ * 3. User mixin (requires auth)
15
+ * 4. Feature mixins (can depend on user)
16
+ * 5. Utility mixin last (augments all)
17
+ *
18
+ * To add a new mixin: insert it at the appropriate position in this array.
19
+ */
20
+ declare const MIXIN_PIPELINE: MixinFunction[];
21
+ /**
22
+ * Composes all OxyServices mixins using a pipeline pattern.
23
+ *
24
+ * This is equivalent to the nested calls but more readable and maintainable.
25
+ * Adding a new mixin: just add it to MIXIN_PIPELINE at the appropriate position.
26
+ *
27
+ * @returns The fully composed OxyServices class with all mixins applied
28
+ */
29
+ export declare function composeOxyServices(): any;
30
+ export { MIXIN_PIPELINE };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Helper utilities for mixin classes
3
+ * Provides common patterns to reduce code duplication
4
+ */
5
+ import type { OxyServicesBase } from '../OxyServices.base';
6
+ /**
7
+ * Wraps an async method with standard error handling
8
+ * Reduces boilerplate in mixin methods
9
+ */
10
+ export declare function withErrorHandling<T>(operation: () => Promise<T>, handleError: (error: any) => Error): Promise<T>;
11
+ /**
12
+ * Creates a standard API request method with error handling
13
+ * Reduces duplication across mixin methods
14
+ */
15
+ export declare function createApiMethod<T>(makeRequest: OxyServicesBase['makeRequest'], handleError: OxyServicesBase['handleError'], method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', url: string | ((...args: any[]) => string), options?: {
16
+ cache?: boolean;
17
+ cacheTTL?: number;
18
+ retry?: boolean;
19
+ transformData?: (data: any) => any;
20
+ transformResponse?: (response: any) => T;
21
+ }): (...args: any[]) => Promise<T>;
22
+ /**
23
+ * Cache time constants (in milliseconds)
24
+ */
25
+ export declare const CACHE_TIMES: {
26
+ readonly SHORT: number;
27
+ readonly MEDIUM: number;
28
+ readonly LONG: number;
29
+ readonly VERY_LONG: number;
30
+ readonly EXTRA_LONG: number;
31
+ };