@oxyhq/services 5.13.1 → 5.13.3

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 (204) hide show
  1. package/README.md +71 -0
  2. package/lib/commonjs/core/HttpClient.js +238 -0
  3. package/lib/commonjs/core/HttpClient.js.map +1 -0
  4. package/lib/commonjs/core/OxyServices.js +538 -332
  5. package/lib/commonjs/core/OxyServices.js.map +1 -1
  6. package/lib/commonjs/core/RequestManager.js +199 -0
  7. package/lib/commonjs/core/RequestManager.js.map +1 -0
  8. package/lib/commonjs/core/index.js +38 -1
  9. package/lib/commonjs/core/index.js.map +1 -1
  10. package/lib/commonjs/index.js +36 -0
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/ui/components/Avatar.js +94 -27
  13. package/lib/commonjs/ui/components/Avatar.js.map +1 -1
  14. package/lib/commonjs/ui/components/FollowButton.js +1 -0
  15. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  16. package/lib/commonjs/ui/components/internal/TextField.js +13 -8
  17. package/lib/commonjs/ui/components/internal/TextField.js.map +1 -1
  18. package/lib/commonjs/ui/context/OxyContext.js +183 -224
  19. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  20. package/lib/commonjs/ui/hooks/useSessionSocket.js +80 -22
  21. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  22. package/lib/commonjs/ui/index.js +4 -1
  23. package/lib/commonjs/ui/index.js.map +1 -1
  24. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +32 -2
  25. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  26. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +101 -59
  27. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  28. package/lib/commonjs/ui/screens/FileManagementScreen.js +3 -2
  29. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  30. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +75 -117
  31. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  32. package/lib/commonjs/ui/screens/SignInScreen.js +0 -11
  33. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  34. package/lib/commonjs/ui/screens/SignUpScreen.js +14 -16
  35. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  36. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +50 -18
  37. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  38. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +10 -10
  39. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  40. package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js +16 -26
  41. package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js.map +1 -1
  42. package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js +104 -212
  43. package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js.map +1 -1
  44. package/lib/commonjs/ui/stores/accountStore.js +237 -0
  45. package/lib/commonjs/ui/stores/accountStore.js.map +1 -0
  46. package/lib/commonjs/ui/stores/authStore.js +2 -1
  47. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  48. package/lib/commonjs/ui/styles/authStyles.js +14 -7
  49. package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
  50. package/lib/commonjs/utils/asyncUtils.js +9 -22
  51. package/lib/commonjs/utils/asyncUtils.js.map +1 -1
  52. package/lib/commonjs/utils/cache.js +259 -0
  53. package/lib/commonjs/utils/cache.js.map +1 -0
  54. package/lib/commonjs/utils/index.js +99 -0
  55. package/lib/commonjs/utils/index.js.map +1 -1
  56. package/lib/commonjs/utils/languageUtils.js +159 -0
  57. package/lib/commonjs/utils/languageUtils.js.map +1 -0
  58. package/lib/commonjs/utils/requestUtils.js +217 -0
  59. package/lib/commonjs/utils/requestUtils.js.map +1 -0
  60. package/lib/commonjs/utils/sessionUtils.js +191 -0
  61. package/lib/commonjs/utils/sessionUtils.js.map +1 -0
  62. package/lib/module/core/HttpClient.js +232 -0
  63. package/lib/module/core/HttpClient.js.map +1 -0
  64. package/lib/module/core/OxyServices.js +536 -326
  65. package/lib/module/core/OxyServices.js.map +1 -1
  66. package/lib/module/core/RequestManager.js +194 -0
  67. package/lib/module/core/RequestManager.js.map +1 -0
  68. package/lib/module/core/index.js +2 -0
  69. package/lib/module/core/index.js.map +1 -1
  70. package/lib/module/index.js +2 -0
  71. package/lib/module/index.js.map +1 -1
  72. package/lib/module/ui/components/Avatar.js +94 -27
  73. package/lib/module/ui/components/Avatar.js.map +1 -1
  74. package/lib/module/ui/components/FollowButton.js +1 -0
  75. package/lib/module/ui/components/FollowButton.js.map +1 -1
  76. package/lib/module/ui/components/internal/TextField.js +13 -8
  77. package/lib/module/ui/components/internal/TextField.js.map +1 -1
  78. package/lib/module/ui/context/OxyContext.js +182 -223
  79. package/lib/module/ui/context/OxyContext.js.map +1 -1
  80. package/lib/module/ui/hooks/useSessionSocket.js +80 -22
  81. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  82. package/lib/module/ui/index.js +4 -2
  83. package/lib/module/ui/index.js.map +1 -1
  84. package/lib/module/ui/screens/AccountSettingsScreen.js +33 -2
  85. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  86. package/lib/module/ui/screens/AccountSwitcherScreen.js +102 -60
  87. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  88. package/lib/module/ui/screens/FileManagementScreen.js +3 -2
  89. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  90. package/lib/module/ui/screens/LanguageSelectorScreen.js +73 -117
  91. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  92. package/lib/module/ui/screens/SignInScreen.js +0 -11
  93. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  94. package/lib/module/ui/screens/SignUpScreen.js +14 -16
  95. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  96. package/lib/module/ui/screens/WelcomeNewUserScreen.js +50 -18
  97. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  98. package/lib/module/ui/screens/internal/SignInPasswordStep.js +10 -10
  99. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  100. package/lib/module/ui/screens/steps/SignInPasswordStep.js +16 -26
  101. package/lib/module/ui/screens/steps/SignInPasswordStep.js.map +1 -1
  102. package/lib/module/ui/screens/steps/SignInUsernameStep.js +105 -214
  103. package/lib/module/ui/screens/steps/SignInUsernameStep.js.map +1 -1
  104. package/lib/module/ui/stores/accountStore.js +229 -0
  105. package/lib/module/ui/stores/accountStore.js.map +1 -0
  106. package/lib/module/ui/stores/authStore.js +2 -1
  107. package/lib/module/ui/stores/authStore.js.map +1 -1
  108. package/lib/module/ui/styles/authStyles.js +14 -7
  109. package/lib/module/ui/styles/authStyles.js.map +1 -1
  110. package/lib/module/utils/asyncUtils.js +10 -22
  111. package/lib/module/utils/asyncUtils.js.map +1 -1
  112. package/lib/module/utils/cache.js +250 -0
  113. package/lib/module/utils/cache.js.map +1 -0
  114. package/lib/module/utils/index.js +7 -0
  115. package/lib/module/utils/index.js.map +1 -1
  116. package/lib/module/utils/languageUtils.js +151 -0
  117. package/lib/module/utils/languageUtils.js.map +1 -0
  118. package/lib/module/utils/requestUtils.js +210 -0
  119. package/lib/module/utils/requestUtils.js.map +1 -0
  120. package/lib/module/utils/sessionUtils.js +180 -0
  121. package/lib/module/utils/sessionUtils.js.map +1 -0
  122. package/lib/typescript/core/HttpClient.d.ts +64 -0
  123. package/lib/typescript/core/HttpClient.d.ts.map +1 -0
  124. package/lib/typescript/core/OxyServices.d.ts +88 -71
  125. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  126. package/lib/typescript/core/RequestManager.d.ts +67 -0
  127. package/lib/typescript/core/RequestManager.d.ts.map +1 -0
  128. package/lib/typescript/core/index.d.ts +2 -0
  129. package/lib/typescript/core/index.d.ts.map +1 -1
  130. package/lib/typescript/index.d.ts +2 -0
  131. package/lib/typescript/index.d.ts.map +1 -1
  132. package/lib/typescript/models/interfaces.d.ts +15 -0
  133. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  134. package/lib/typescript/models/session.d.ts +1 -0
  135. package/lib/typescript/models/session.d.ts.map +1 -1
  136. package/lib/typescript/ui/components/Avatar.d.ts +6 -7
  137. package/lib/typescript/ui/components/Avatar.d.ts.map +1 -1
  138. package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -1
  139. package/lib/typescript/ui/components/internal/TextField.d.ts.map +1 -1
  140. package/lib/typescript/ui/context/OxyContext.d.ts +4 -0
  141. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  142. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
  143. package/lib/typescript/ui/index.d.ts +2 -2
  144. package/lib/typescript/ui/index.d.ts.map +1 -1
  145. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  146. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  147. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts +3 -3
  148. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  149. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  150. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
  151. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  152. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -1
  153. package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts.map +1 -1
  154. package/lib/typescript/ui/screens/steps/SignInUsernameStep.d.ts.map +1 -1
  155. package/lib/typescript/ui/stores/accountStore.d.ts +34 -0
  156. package/lib/typescript/ui/stores/accountStore.d.ts.map +1 -0
  157. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  158. package/lib/typescript/ui/styles/authStyles.d.ts +18 -2
  159. package/lib/typescript/ui/styles/authStyles.d.ts.map +1 -1
  160. package/lib/typescript/utils/asyncUtils.d.ts +2 -0
  161. package/lib/typescript/utils/asyncUtils.d.ts.map +1 -1
  162. package/lib/typescript/utils/cache.d.ts +128 -0
  163. package/lib/typescript/utils/cache.d.ts.map +1 -0
  164. package/lib/typescript/utils/index.d.ts +4 -0
  165. package/lib/typescript/utils/index.d.ts.map +1 -1
  166. package/lib/typescript/utils/languageUtils.d.ts +38 -0
  167. package/lib/typescript/utils/languageUtils.d.ts.map +1 -0
  168. package/lib/typescript/utils/requestUtils.d.ts +122 -0
  169. package/lib/typescript/utils/requestUtils.d.ts.map +1 -0
  170. package/lib/typescript/utils/sessionUtils.d.ts +55 -0
  171. package/lib/typescript/utils/sessionUtils.d.ts.map +1 -0
  172. package/package.json +1 -1
  173. package/src/core/HttpClient.ts +277 -0
  174. package/src/core/OxyServices.ts +466 -351
  175. package/src/core/RequestManager.ts +240 -0
  176. package/src/core/index.ts +10 -0
  177. package/src/index.ts +10 -0
  178. package/src/models/interfaces.ts +19 -0
  179. package/src/models/session.ts +1 -1
  180. package/src/ui/components/Avatar.tsx +151 -35
  181. package/src/ui/components/FollowButton.tsx +1 -0
  182. package/src/ui/components/internal/TextField.tsx +7 -6
  183. package/src/ui/context/OxyContext.tsx +213 -217
  184. package/src/ui/hooks/useSessionSocket.ts +72 -18
  185. package/src/ui/index.ts +4 -1
  186. package/src/ui/screens/AccountSettingsScreen.tsx +34 -2
  187. package/src/ui/screens/AccountSwitcherScreen.tsx +102 -68
  188. package/src/ui/screens/FileManagementScreen.tsx +1 -1
  189. package/src/ui/screens/LanguageSelectorScreen.tsx +86 -143
  190. package/src/ui/screens/SignInScreen.tsx +0 -7
  191. package/src/ui/screens/SignUpScreen.tsx +14 -15
  192. package/src/ui/screens/WelcomeNewUserScreen.tsx +52 -15
  193. package/src/ui/screens/internal/SignInPasswordStep.tsx +4 -6
  194. package/src/ui/screens/steps/SignInPasswordStep.tsx +4 -8
  195. package/src/ui/screens/steps/SignInUsernameStep.tsx +110 -256
  196. package/src/ui/stores/accountStore.ts +285 -0
  197. package/src/ui/stores/authStore.ts +2 -1
  198. package/src/ui/styles/authStyles.ts +14 -7
  199. package/src/utils/asyncUtils.ts +10 -24
  200. package/src/utils/cache.ts +264 -0
  201. package/src/utils/index.ts +19 -0
  202. package/src/utils/languageUtils.ts +174 -0
  203. package/src/utils/requestUtils.ts +234 -0
  204. package/src/utils/sessionUtils.ts +206 -0
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TTLCache = void 0;
7
+ exports.createCache = createCache;
8
+ exports.registerCacheForCleanup = registerCacheForCleanup;
9
+ exports.stopAllCacheCleanup = stopAllCacheCleanup;
10
+ exports.unregisterCacheFromCleanup = unregisterCacheFromCleanup;
11
+ /**
12
+ * Centralized cache utility with TTL support
13
+ *
14
+ * This is a production-ready cache implementation used across the codebase
15
+ * for consistent caching behavior and performance optimization.
16
+ */
17
+
18
+ /**
19
+ * Cache entry with expiration tracking
20
+ */
21
+
22
+ /**
23
+ * Cache statistics
24
+ */
25
+
26
+ /**
27
+ * TTL-based cache implementation
28
+ *
29
+ * Features:
30
+ * - Automatic expiration based on TTL
31
+ * - Manual cleanup of expired entries
32
+ * - Statistics tracking (hits, misses, hit rate)
33
+ * - Type-safe generic interface
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const cache = new TTLCache<string>(5 * 60 * 1000); // 5 minutes
38
+ *
39
+ * // Set with default TTL
40
+ * cache.set('key', 'value');
41
+ *
42
+ * // Set with custom TTL
43
+ * cache.set('key', 'value', 10 * 60 * 1000); // 10 minutes
44
+ *
45
+ * // Get value
46
+ * const value = cache.get('key');
47
+ *
48
+ * // Get statistics
49
+ * const stats = cache.getStats();
50
+ * ```
51
+ */
52
+ class TTLCache {
53
+ cache = new Map();
54
+ hits = 0;
55
+ misses = 0;
56
+
57
+ /**
58
+ * Create a new TTL cache
59
+ * @param defaultTTL Default TTL in milliseconds (default: 5 minutes)
60
+ */
61
+ constructor(defaultTTL = 5 * 60 * 1000) {
62
+ this.defaultTTL = defaultTTL;
63
+ }
64
+
65
+ /**
66
+ * Get a value from cache
67
+ * @param key Cache key
68
+ * @returns Cached value or null if not found or expired
69
+ */
70
+ get(key) {
71
+ const entry = this.cache.get(key);
72
+ if (!entry) {
73
+ this.misses++;
74
+ return null;
75
+ }
76
+ const now = Date.now();
77
+ if (now > entry.expiresAt) {
78
+ this.cache.delete(key);
79
+ this.misses++;
80
+ return null;
81
+ }
82
+ this.hits++;
83
+ return entry.data;
84
+ }
85
+
86
+ /**
87
+ * Set a value in cache
88
+ * @param key Cache key
89
+ * @param data Data to cache
90
+ * @param ttl Optional TTL override (uses default if not provided)
91
+ */
92
+ set(key, data, ttl) {
93
+ const now = Date.now();
94
+ const expiresAt = now + (ttl || this.defaultTTL);
95
+ this.cache.set(key, {
96
+ data,
97
+ timestamp: now,
98
+ expiresAt
99
+ });
100
+ }
101
+
102
+ /**
103
+ * Delete a specific cache entry
104
+ * @param key Cache key
105
+ * @returns true if entry was deleted, false if not found
106
+ */
107
+ delete(key) {
108
+ return this.cache.delete(key);
109
+ }
110
+
111
+ /**
112
+ * Clear all cache entries
113
+ */
114
+ clear() {
115
+ this.cache.clear();
116
+ this.hits = 0;
117
+ this.misses = 0;
118
+ }
119
+
120
+ /**
121
+ * Check if a key exists and is not expired
122
+ * @param key Cache key
123
+ * @returns true if key exists and is valid
124
+ */
125
+ has(key) {
126
+ const entry = this.cache.get(key);
127
+ if (!entry) return false;
128
+ if (Date.now() > entry.expiresAt) {
129
+ this.cache.delete(key);
130
+ return false;
131
+ }
132
+ return true;
133
+ }
134
+
135
+ /**
136
+ * Get all valid cache keys
137
+ * @returns Array of valid cache keys
138
+ */
139
+ keys() {
140
+ const now = Date.now();
141
+ const validKeys = [];
142
+ for (const [key, entry] of this.cache.entries()) {
143
+ if (now <= entry.expiresAt) {
144
+ validKeys.push(key);
145
+ } else {
146
+ this.cache.delete(key);
147
+ }
148
+ }
149
+ return validKeys;
150
+ }
151
+
152
+ /**
153
+ * Clean up expired entries
154
+ * @returns Number of entries removed
155
+ */
156
+ cleanup() {
157
+ const now = Date.now();
158
+ let removed = 0;
159
+ for (const [key, entry] of this.cache.entries()) {
160
+ if (now > entry.expiresAt) {
161
+ this.cache.delete(key);
162
+ removed++;
163
+ }
164
+ }
165
+ return removed;
166
+ }
167
+
168
+ /**
169
+ * Get cache size (number of entries)
170
+ */
171
+ size() {
172
+ return this.cache.size;
173
+ }
174
+
175
+ /**
176
+ * Get cache statistics
177
+ */
178
+ getStats() {
179
+ const total = this.hits + this.misses;
180
+ return {
181
+ size: this.cache.size,
182
+ hits: this.hits,
183
+ misses: this.misses,
184
+ hitRate: total > 0 ? this.hits / total : 0
185
+ };
186
+ }
187
+
188
+ /**
189
+ * Reset statistics (keeps cache entries)
190
+ */
191
+ resetStats() {
192
+ this.hits = 0;
193
+ this.misses = 0;
194
+ }
195
+ }
196
+
197
+ /**
198
+ * Create a TTL cache instance (convenience function)
199
+ *
200
+ * @example
201
+ * ```typescript
202
+ * const cache = createCache<string>(5 * 60 * 1000);
203
+ * ```
204
+ */
205
+ exports.TTLCache = TTLCache;
206
+ function createCache(ttl = 5 * 60 * 1000) {
207
+ return new TTLCache(ttl);
208
+ }
209
+
210
+ /**
211
+ * Global cache cleanup interval (runs every minute)
212
+ * This helps prevent memory leaks from expired cache entries
213
+ */
214
+ let cleanupInterval = null;
215
+ const activeCaches = new Set();
216
+
217
+ /**
218
+ * Register a cache for automatic cleanup
219
+ * @param cache Cache instance to register
220
+ */
221
+ function registerCacheForCleanup(cache) {
222
+ activeCaches.add(cache);
223
+
224
+ // Start cleanup interval if not already running
225
+ if (!cleanupInterval) {
226
+ cleanupInterval = setInterval(() => {
227
+ for (const cache of activeCaches) {
228
+ cache.cleanup();
229
+ }
230
+ }, 60000); // Every minute
231
+ }
232
+ }
233
+
234
+ /**
235
+ * Unregister a cache from automatic cleanup
236
+ * @param cache Cache instance to unregister
237
+ */
238
+ function unregisterCacheFromCleanup(cache) {
239
+ activeCaches.delete(cache);
240
+
241
+ // Stop cleanup interval if no caches are registered
242
+ if (activeCaches.size === 0 && cleanupInterval) {
243
+ clearInterval(cleanupInterval);
244
+ cleanupInterval = null;
245
+ }
246
+ }
247
+
248
+ /**
249
+ * Stop all cache cleanup intervals
250
+ * Useful for tests to prevent Jest from hanging
251
+ */
252
+ function stopAllCacheCleanup() {
253
+ if (cleanupInterval) {
254
+ clearInterval(cleanupInterval);
255
+ cleanupInterval = null;
256
+ }
257
+ activeCaches.clear();
258
+ }
259
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TTLCache","cache","Map","hits","misses","constructor","defaultTTL","get","key","entry","now","Date","expiresAt","delete","data","set","ttl","timestamp","clear","has","keys","validKeys","entries","push","cleanup","removed","size","getStats","total","hitRate","resetStats","exports","createCache","cleanupInterval","activeCaches","Set","registerCacheForCleanup","add","setInterval","unregisterCacheFromCleanup","clearInterval","stopAllCacheCleanup"],"sourceRoot":"../../../src","sources":["utils/cache.ts"],"mappings":"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","ignoreList":[]}
@@ -9,5 +9,104 @@ Object.defineProperty(exports, "DeviceManager", {
9
9
  return _deviceManager.DeviceManager;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "RequestDeduplicator", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _requestUtils.RequestDeduplicator;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "RequestQueue", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _requestUtils.RequestQueue;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "SimpleLogger", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _requestUtils.SimpleLogger;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "TTLCache", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _cache.TTLCache;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "createCache", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _cache.createCache;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "deduplicateSessions", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _sessionUtils.deduplicateSessions;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "deduplicateSessionsByUserId", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _sessionUtils.deduplicateSessionsByUserId;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "mergeSessions", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _sessionUtils.mergeSessions;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "normalizeAndSortSessions", {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _sessionUtils.normalizeAndSortSessions;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "normalizeSession", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _sessionUtils.normalizeSession;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "registerCacheForCleanup", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _cache.registerCacheForCleanup;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "sessionsArraysEqual", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _sessionUtils.sessionsArraysEqual;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "sessionsEqual", {
85
+ enumerable: true,
86
+ get: function () {
87
+ return _sessionUtils.sessionsEqual;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "sortSessions", {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _sessionUtils.sortSessions;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "stopAllCacheCleanup", {
97
+ enumerable: true,
98
+ get: function () {
99
+ return _cache.stopAllCacheCleanup;
100
+ }
101
+ });
102
+ Object.defineProperty(exports, "unregisterCacheFromCleanup", {
103
+ enumerable: true,
104
+ get: function () {
105
+ return _cache.unregisterCacheFromCleanup;
106
+ }
107
+ });
12
108
  var _deviceManager = require("./deviceManager");
109
+ var _requestUtils = require("./requestUtils");
110
+ var _cache = require("./cache");
111
+ var _sessionUtils = require("./sessionUtils");
13
112
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_deviceManager","require"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_deviceManager","require","_requestUtils","_cache","_sessionUtils"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAIA,IAAAC,aAAA,GAAAD,OAAA;AAGA,IAAAE,MAAA,GAAAF,OAAA;AAIA,IAAAG,aAAA,GAAAH,OAAA","ignoreList":[]}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SUPPORTED_LANGUAGES = void 0;
7
+ exports.getLanguageMetadata = getLanguageMetadata;
8
+ exports.getLanguageName = getLanguageName;
9
+ exports.getNativeLanguageName = getNativeLanguageName;
10
+ exports.normalizeLanguageCode = normalizeLanguageCode;
11
+ /**
12
+ * Language utilities for OxyServices
13
+ * Provides access to supported languages and language metadata
14
+ */
15
+
16
+ // Supported languages with their metadata
17
+ const SUPPORTED_LANGUAGES = exports.SUPPORTED_LANGUAGES = [{
18
+ id: 'en-US',
19
+ name: 'English',
20
+ nativeName: 'English',
21
+ flag: '🇺🇸',
22
+ icon: 'language-outline',
23
+ color: '#007AFF'
24
+ }, {
25
+ id: 'es-ES',
26
+ name: 'Spanish',
27
+ nativeName: 'Español',
28
+ flag: '🇪🇸',
29
+ icon: 'language-outline',
30
+ color: '#FF3B30'
31
+ }, {
32
+ id: 'ca-ES',
33
+ name: 'Catalan',
34
+ nativeName: 'Català',
35
+ flag: '🇪🇸',
36
+ icon: 'language-outline',
37
+ color: '#0CA678'
38
+ }, {
39
+ id: 'fr-FR',
40
+ name: 'French',
41
+ nativeName: 'Français',
42
+ flag: '🇫🇷',
43
+ icon: 'language-outline',
44
+ color: '#5856D6'
45
+ }, {
46
+ id: 'de-DE',
47
+ name: 'German',
48
+ nativeName: 'Deutsch',
49
+ flag: '🇩🇪',
50
+ icon: 'language-outline',
51
+ color: '#FF9500'
52
+ }, {
53
+ id: 'it-IT',
54
+ name: 'Italian',
55
+ nativeName: 'Italiano',
56
+ flag: '🇮🇹',
57
+ icon: 'language-outline',
58
+ color: '#34C759'
59
+ }, {
60
+ id: 'pt-PT',
61
+ name: 'Portuguese',
62
+ nativeName: 'Português',
63
+ flag: '🇵🇹',
64
+ icon: 'language-outline',
65
+ color: '#AF52DE'
66
+ }, {
67
+ id: 'ja-JP',
68
+ name: 'Japanese',
69
+ nativeName: '日本語',
70
+ flag: '🇯🇵',
71
+ icon: 'language-outline',
72
+ color: '#FF2D92'
73
+ }, {
74
+ id: 'ko-KR',
75
+ name: 'Korean',
76
+ nativeName: '한국어',
77
+ flag: '🇰🇷',
78
+ icon: 'language-outline',
79
+ color: '#32D74B'
80
+ }, {
81
+ id: 'zh-CN',
82
+ name: 'Chinese',
83
+ nativeName: '中文',
84
+ flag: '🇨🇳',
85
+ icon: 'language-outline',
86
+ color: '#FF9F0A'
87
+ }, {
88
+ id: 'ar-SA',
89
+ name: 'Arabic',
90
+ nativeName: 'العربية',
91
+ flag: '🇸🇦',
92
+ icon: 'language-outline',
93
+ color: '#30B0C7'
94
+ }];
95
+ const FALLBACK_LANGUAGE = 'en-US';
96
+
97
+ /**
98
+ * Get language metadata by language code
99
+ * @param languageCode - BCP-47 language code (e.g., 'en-US', 'es-ES')
100
+ * @returns Language metadata or null if not found
101
+ */
102
+ function getLanguageMetadata(languageCode) {
103
+ if (!languageCode) return null;
104
+
105
+ // Direct match
106
+ const exactMatch = SUPPORTED_LANGUAGES.find(lang => lang.id === languageCode);
107
+ if (exactMatch) return exactMatch;
108
+
109
+ // Try to match base language code (e.g., 'en' matches 'en-US')
110
+ const baseCode = languageCode.split('-')[0];
111
+ const baseMatch = SUPPORTED_LANGUAGES.find(lang => lang.id.startsWith(baseCode + '-'));
112
+ if (baseMatch) return baseMatch;
113
+ return null;
114
+ }
115
+
116
+ /**
117
+ * Get language name by language code
118
+ * @param languageCode - BCP-47 language code (e.g., 'en-US', 'es-ES')
119
+ * @returns Language name (e.g., 'English') or the code if not found
120
+ */
121
+ function getLanguageName(languageCode) {
122
+ const metadata = getLanguageMetadata(languageCode);
123
+ return metadata?.name || languageCode || FALLBACK_LANGUAGE;
124
+ }
125
+
126
+ /**
127
+ * Get native language name by language code
128
+ * @param languageCode - BCP-47 language code (e.g., 'en-US', 'es-ES')
129
+ * @returns Native language name (e.g., 'Español') or the code if not found
130
+ */
131
+ function getNativeLanguageName(languageCode) {
132
+ const metadata = getLanguageMetadata(languageCode);
133
+ return metadata?.nativeName || languageCode || FALLBACK_LANGUAGE;
134
+ }
135
+
136
+ /**
137
+ * Normalize language code to BCP-47 format
138
+ * @param lang - Language code (may be short like 'en' or full like 'en-US')
139
+ * @returns Normalized BCP-47 language code
140
+ */
141
+ function normalizeLanguageCode(lang) {
142
+ if (!lang) return FALLBACK_LANGUAGE;
143
+ if (lang.includes('-')) return lang;
144
+ const map = {
145
+ en: 'en-US',
146
+ es: 'es-ES',
147
+ ca: 'ca-ES',
148
+ fr: 'fr-FR',
149
+ de: 'de-DE',
150
+ it: 'it-IT',
151
+ pt: 'pt-PT',
152
+ ja: 'ja-JP',
153
+ ko: 'ko-KR',
154
+ zh: 'zh-CN',
155
+ ar: 'ar-SA'
156
+ };
157
+ return map[lang] || lang;
158
+ }
159
+ //# sourceMappingURL=languageUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SUPPORTED_LANGUAGES","exports","id","name","nativeName","flag","icon","color","FALLBACK_LANGUAGE","getLanguageMetadata","languageCode","exactMatch","find","lang","baseCode","split","baseMatch","startsWith","getLanguageName","metadata","getNativeLanguageName","normalizeLanguageCode","includes","map","en","es","ca","fr","de","it","pt","ja","ko","zh","ar"],"sourceRoot":"../../../src","sources":["utils/languageUtils.ts"],"mappings":"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","ignoreList":[]}