@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,115 @@
1
+ /**
2
+ * Theme Utility Functions
3
+ *
4
+ * Consolidated theme utilities for normalizing and handling color schemes
5
+ * across the OxyServices ecosystem.
6
+ *
7
+ * @module shared/utils/themeUtils
8
+ */
9
+
10
+ /**
11
+ * Valid theme values in the Oxy ecosystem.
12
+ */
13
+ export type ThemeValue = 'light' | 'dark';
14
+
15
+ /**
16
+ * Normalizes a theme value to ensure it's always 'light' or 'dark'.
17
+ *
18
+ * @param theme - Theme value (may be 'light' | 'dark' | string | undefined)
19
+ * @returns Normalized 'light' | 'dark' theme (defaults to 'light')
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * normalizeTheme('dark'); // 'dark'
24
+ * normalizeTheme('light'); // 'light'
25
+ * normalizeTheme('unknown'); // 'light'
26
+ * normalizeTheme(undefined); // 'light'
27
+ * normalizeTheme(null); // 'light'
28
+ * ```
29
+ */
30
+ export const normalizeTheme = (theme?: string | null): ThemeValue =>
31
+ theme === 'light' || theme === 'dark' ? theme : 'light';
32
+
33
+ /**
34
+ * Normalizes a color scheme value with optional fallback chain.
35
+ *
36
+ * Handles null/undefined cases from React Native's useColorScheme() hook
37
+ * with a proper fallback chain.
38
+ *
39
+ * @param colorScheme - The color scheme from useColorScheme() hook (may be null/undefined)
40
+ * @param theme - Optional theme prop as fallback
41
+ * @returns Normalized 'light' | 'dark' color scheme
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * // In a React Native component:
46
+ * const systemScheme = useColorScheme(); // might be null
47
+ * const colorScheme = normalizeColorScheme(systemScheme, props.theme);
48
+ *
49
+ * normalizeColorScheme('dark', 'light'); // 'dark'
50
+ * normalizeColorScheme(null, 'dark'); // 'dark'
51
+ * normalizeColorScheme(undefined, undefined); // 'light'
52
+ * ```
53
+ */
54
+ export const normalizeColorScheme = (
55
+ colorScheme?: string | null,
56
+ theme?: string
57
+ ): ThemeValue => {
58
+ if (colorScheme === 'light' || colorScheme === 'dark') {
59
+ return colorScheme;
60
+ }
61
+
62
+ if (theme === 'light' || theme === 'dark') {
63
+ return theme;
64
+ }
65
+
66
+ return 'light';
67
+ };
68
+
69
+ /**
70
+ * Gets the opposite theme value.
71
+ *
72
+ * @param theme - Current theme value
73
+ * @returns The opposite theme ('light' → 'dark', 'dark' → 'light')
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * getOppositeTheme('light'); // 'dark'
78
+ * getOppositeTheme('dark'); // 'light'
79
+ * ```
80
+ */
81
+ export const getOppositeTheme = (theme: ThemeValue): ThemeValue =>
82
+ theme === 'light' ? 'dark' : 'light';
83
+
84
+ /**
85
+ * Checks if the system prefers dark mode.
86
+ *
87
+ * This function only works in browser environments.
88
+ * Returns false in non-browser environments (Node.js, React Native).
89
+ *
90
+ * @returns true if system prefers dark mode, false otherwise
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * if (systemPrefersDarkMode()) {
95
+ * setTheme('dark');
96
+ * }
97
+ * ```
98
+ */
99
+ export const systemPrefersDarkMode = (): boolean => {
100
+ if (typeof window === 'undefined') return false;
101
+ return window.matchMedia?.('(prefers-color-scheme: dark)').matches ?? false;
102
+ };
103
+
104
+ /**
105
+ * Gets the system's preferred color scheme.
106
+ *
107
+ * @returns 'dark' if system prefers dark mode, 'light' otherwise
108
+ *
109
+ * @example
110
+ * ```ts
111
+ * const theme = getSystemColorScheme();
112
+ * ```
113
+ */
114
+ export const getSystemColorScheme = (): ThemeValue =>
115
+ systemPrefersDarkMode() ? 'dark' : 'light';
@@ -0,0 +1,32 @@
1
+ declare module 'bip39' {
2
+ export interface Wordlist {
3
+ [index: number]: string;
4
+ length: number;
5
+ getWord(index: number): string;
6
+ getWordIndex(word: string): number;
7
+ }
8
+
9
+ export const wordlists: {
10
+ english: string[];
11
+ chinese_simplified: string[];
12
+ chinese_traditional: string[];
13
+ french: string[];
14
+ italian: string[];
15
+ japanese: string[];
16
+ korean: string[];
17
+ spanish: string[];
18
+ };
19
+
20
+ // Use Uint8Array instead of Buffer for React Native compatibility
21
+ // In Node.js, Buffer extends Uint8Array so this is compatible
22
+ export function generateMnemonic(strength?: number, rng?: (size: number) => Uint8Array, wordlist?: string[]): string;
23
+ export function mnemonicToSeed(mnemonic: string, passphrase?: string): Promise<Uint8Array>;
24
+ export function mnemonicToSeedSync(mnemonic: string, passphrase?: string): Uint8Array;
25
+ export function mnemonicToEntropy(mnemonic: string, wordlist?: string[]): string;
26
+ export function entropyToMnemonic(entropy: string, wordlist?: string[]): string;
27
+ export function validateMnemonic(mnemonic: string, wordlist?: string[]): boolean;
28
+ export function mnemonicToSeedHex(mnemonic: string, passphrase?: string): Promise<string>;
29
+ export function mnemonicToSeedHexSync(mnemonic: string, passphrase?: string): string;
30
+ }
31
+
32
+
@@ -0,0 +1,97 @@
1
+ declare module 'buffer' {
2
+ export class Buffer extends Uint8Array {
3
+ constructor(str: string, encoding?: string);
4
+ constructor(size: number);
5
+ constructor(array: Uint8Array);
6
+ constructor(arrayBuffer: ArrayBuffer);
7
+ constructor(array: ReadonlyArray<number>);
8
+ constructor(buffer: Buffer);
9
+
10
+ static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer;
11
+ static from(data: Uint8Array | ReadonlyArray<number>): Buffer;
12
+ static from(str: string, encoding?: BufferEncoding): Buffer;
13
+ static from(object: { valueOf(): string | object } | { [Symbol.toPrimitive](hint: 'string'): string }, offsetOrEncoding?: number | string, length?: number): Buffer;
14
+
15
+ static alloc(size: number, fill?: string | Buffer | number, encoding?: BufferEncoding): Buffer;
16
+ static allocUnsafe(size: number): Buffer;
17
+ static allocUnsafeSlow(size: number): Buffer;
18
+
19
+ static isBuffer(obj: unknown): obj is Buffer;
20
+ static isEncoding(encoding: string): encoding is BufferEncoding;
21
+ static byteLength(string: string | Buffer | ArrayBuffer | SharedArrayBuffer, encoding?: BufferEncoding): number;
22
+ static concat(list: ReadonlyArray<Uint8Array>, totalLength?: number): Buffer;
23
+ static compare(buf1: Uint8Array, buf2: Uint8Array): number;
24
+
25
+ write(string: string, encoding?: BufferEncoding): number;
26
+ write(string: string, offset: number, encoding?: BufferEncoding): number;
27
+ write(string: string, offset: number, length: number, encoding?: BufferEncoding): number;
28
+
29
+ toString(encoding?: BufferEncoding, start?: number, end?: number): string;
30
+ toJSON(): { type: 'Buffer'; data: number[] };
31
+
32
+ equals(otherBuffer: Uint8Array): boolean;
33
+ compare(target: Uint8Array, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
34
+ copy(target: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
35
+
36
+ slice(start?: number, end?: number): Buffer;
37
+ subarray(start?: number, end?: number): Buffer;
38
+
39
+ readBigInt64BE(offset?: number): bigint;
40
+ readBigInt64LE(offset?: number): bigint;
41
+ readBigUInt64BE(offset?: number): bigint;
42
+ readBigUInt64LE(offset?: number): bigint;
43
+ readDoubleBE(offset?: number): number;
44
+ readDoubleLE(offset?: number): number;
45
+ readFloatBE(offset?: number): number;
46
+ readFloatLE(offset?: number): number;
47
+ readInt8(offset?: number): number;
48
+ readInt16BE(offset?: number): number;
49
+ readInt16LE(offset?: number): number;
50
+ readInt32BE(offset?: number): number;
51
+ readInt32LE(offset?: number): number;
52
+ readIntBE(offset: number, byteLength: number): number;
53
+ readIntLE(offset: number, byteLength: number): number;
54
+ readUInt8(offset?: number): number;
55
+ readUInt16BE(offset?: number): number;
56
+ readUInt16LE(offset?: number): number;
57
+ readUInt32BE(offset?: number): number;
58
+ readUInt32LE(offset?: number): number;
59
+ readUIntBE(offset: number, byteLength: number): number;
60
+ readUIntLE(offset: number, byteLength: number): number;
61
+
62
+ swap16(): Buffer;
63
+ swap32(): Buffer;
64
+ swap64(): Buffer;
65
+
66
+ writeBigInt64BE(value: bigint, offset?: number): number;
67
+ writeBigInt64LE(value: bigint, offset?: number): number;
68
+ writeBigUInt64BE(value: bigint, offset?: number): number;
69
+ writeBigUInt64LE(value: bigint, offset?: number): number;
70
+ writeDoubleBE(value: number, offset?: number): number;
71
+ writeDoubleLE(value: number, offset?: number): number;
72
+ writeFloatBE(value: number, offset?: number): number;
73
+ writeFloatLE(value: number, offset?: number): number;
74
+ writeInt8(value: number, offset?: number): number;
75
+ writeInt16BE(value: number, offset?: number): number;
76
+ writeInt16LE(value: number, offset?: number): number;
77
+ writeInt32BE(value: number, offset?: number): number;
78
+ writeInt32LE(value: number, offset?: number): number;
79
+ writeIntBE(value: number, offset: number, byteLength: number): number;
80
+ writeIntLE(value: number, offset: number, byteLength: number): number;
81
+ writeUInt8(value: number, offset?: number): number;
82
+ writeUInt16BE(value: number, offset?: number): number;
83
+ writeUInt16LE(value: number, offset?: number): number;
84
+ writeUInt32BE(value: number, offset?: number): number;
85
+ writeUInt32LE(value: number, offset?: number): number;
86
+ writeUIntBE(value: number, offset: number, byteLength: number): number;
87
+ writeUIntLE(value: number, offset: number, byteLength: number): number;
88
+
89
+ fill(value: string | Uint8Array | number, offset?: number, end?: number, encoding?: BufferEncoding): this;
90
+ indexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number;
91
+ lastIndexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number;
92
+ includes(value: string | number | Buffer, byteOffset?: number, encoding?: BufferEncoding): boolean;
93
+ }
94
+
95
+ type BufferEncoding = 'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex';
96
+ }
97
+
@@ -0,0 +1,20 @@
1
+ declare module 'color' {
2
+ interface Color {
3
+ (color: string | Color | undefined, model?: string): Color;
4
+ rgb(): Color;
5
+ rgba(): Color;
6
+ alpha(): number;
7
+ alpha(val: number): Color;
8
+ fade(val: number): Color;
9
+ lighten(val: number): Color;
10
+ darken(val: number): Color;
11
+ string(): string;
12
+ hex(): string;
13
+ toString(): string;
14
+ }
15
+
16
+ function color(color: string | Color | undefined, model?: string): Color;
17
+ export default color;
18
+ }
19
+
20
+
@@ -0,0 +1,62 @@
1
+ declare module 'elliptic' {
2
+ export interface KeyPair {
3
+ getPrivate(enc?: 'hex' | 'array' | 'bn'): string | number[] | any;
4
+ getPublic(enc?: 'hex'): string;
5
+ getPublic(enc?: 'array'): number[];
6
+ getPublic(compressed: boolean, enc?: 'hex'): string;
7
+ getPublic(compressed: boolean, enc?: 'array'): number[];
8
+ sign(msg: string | number[]): Signature;
9
+ verify(msg: string | number[], signature: Signature | string | { r: string | number[]; s: string | number[] }): boolean;
10
+ }
11
+
12
+ export interface Signature {
13
+ r: any;
14
+ s: any;
15
+ recoveryParam: number | null;
16
+ toDER(enc?: 'hex'): string;
17
+ toCompact(enc?: 'hex', param?: number): string;
18
+ }
19
+
20
+ export interface Curve {
21
+ n: any;
22
+ red: any;
23
+ g: Point;
24
+ decodePoint(bytes: string | number[], enc?: string): Point;
25
+ }
26
+
27
+ export interface Point {
28
+ x: any;
29
+ y: any;
30
+ inf: boolean;
31
+ getX(): any;
32
+ getY(): any;
33
+ encode(enc?: string, compressed?: boolean): string | number[];
34
+ add(p: Point): Point;
35
+ mul(k: any): Point;
36
+ eq(p: Point): boolean;
37
+ }
38
+
39
+ export class EC {
40
+ constructor(curve: string | Curve);
41
+ keyFromPrivate(priv: string | number[], enc?: string): KeyPair;
42
+ keyFromPublic(pub: string | number[] | Point, enc?: string): KeyPair;
43
+ genKeyPair(opts?: { entropy?: string | number[]; pers?: string | number[] }): KeyPair;
44
+ keyPair(opts?: { priv?: string | number[]; pub?: string | number[] | Point; privEnc?: string; pubEnc?: string }): KeyPair;
45
+ curve: Curve;
46
+ n: any;
47
+ nh: any;
48
+ g: Point;
49
+ }
50
+
51
+ export type ECKeyPair = KeyPair;
52
+
53
+ // ec can be called as a function or used as a constructor
54
+ export interface ECConstructor {
55
+ new (curve: string | Curve): EC;
56
+ (curve: string | Curve): EC;
57
+ }
58
+
59
+ export const ec: ECConstructor;
60
+ }
61
+
62
+
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Utility functions for common API patterns
3
+ */
4
+
5
+ /**
6
+ * Build URL search parameters from an object
7
+ * @param params Object with parameter key-value pairs
8
+ * @returns URLSearchParams instance
9
+ */
10
+ export function buildSearchParams(params: Record<string, any>): URLSearchParams {
11
+ const searchParams = new URLSearchParams();
12
+
13
+ for (const [key, value] of Object.entries(params)) {
14
+ if (value !== undefined && value !== null) {
15
+ searchParams.append(key, value.toString());
16
+ }
17
+ }
18
+
19
+ return searchParams;
20
+ }
21
+
22
+ /**
23
+ * Build URL with search parameters
24
+ * @param baseUrl Base URL
25
+ * @param params Object with parameter key-value pairs
26
+ * @returns Complete URL with search parameters
27
+ */
28
+ export function buildUrl(baseUrl: string, params?: Record<string, any>): string {
29
+ if (!params) return baseUrl;
30
+
31
+ const searchParams = buildSearchParams(params);
32
+ const queryString = searchParams.toString();
33
+
34
+ return queryString ? `${baseUrl}?${queryString}` : baseUrl;
35
+ }
36
+
37
+ /**
38
+ * Common pagination parameters
39
+ */
40
+ export interface PaginationParams {
41
+ limit?: number;
42
+ offset?: number;
43
+ }
44
+
45
+ /**
46
+ * Build pagination search parameters
47
+ * @param params Pagination parameters
48
+ * @returns URLSearchParams with pagination
49
+ */
50
+ export function buildPaginationParams(params: PaginationParams): URLSearchParams {
51
+ return buildSearchParams(params);
52
+ }
53
+
54
+ /**
55
+ * Common API response wrapper
56
+ */
57
+ export interface ApiResponse<T = any> {
58
+ data: T;
59
+ message?: string;
60
+ success?: boolean;
61
+ }
62
+
63
+ /**
64
+ * Common error response wrapper
65
+ */
66
+ export interface ErrorResponse {
67
+ message: string;
68
+ code: string;
69
+ status: number;
70
+ details?: any;
71
+ }
72
+
73
+ /**
74
+ * Safe JSON parsing with error handling
75
+ * @param data Data to parse
76
+ * @param fallback Fallback value if parsing fails
77
+ * @returns Parsed data or fallback
78
+ */
79
+ export function safeJsonParse<T>(data: any, fallback: T): T {
80
+ if (typeof data === 'string') {
81
+ try {
82
+ return JSON.parse(data);
83
+ } catch {
84
+ return fallback;
85
+ }
86
+ }
87
+ return data as T;
88
+ }
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Async utilities for common asynchronous patterns and error handling
3
+ */
4
+
5
+ import { TTLCache, registerCacheForCleanup } from './cache';
6
+ import { logger } from './loggerUtils';
7
+
8
+ /**
9
+ * Wrapper for async operations with automatic error handling
10
+ * Returns null on error instead of throwing
11
+ */
12
+ export async function withErrorHandling<T>(
13
+ operation: () => Promise<T>,
14
+ errorHandler?: (error: any) => void,
15
+ context?: string
16
+ ): Promise<T | null> {
17
+ try {
18
+ return await operation();
19
+ } catch (error) {
20
+ if (errorHandler) {
21
+ errorHandler(error);
22
+ } else {
23
+ logger.error(`Error in ${context || 'operation'}`, error instanceof Error ? error : new Error(String(error)), {
24
+ component: 'asyncUtils',
25
+ method: 'withErrorHandling',
26
+ });
27
+ }
28
+ return null;
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Execute multiple async operations in parallel with error handling
34
+ */
35
+ export async function parallelWithErrorHandling<T>(
36
+ operations: (() => Promise<T>)[],
37
+ errorHandler?: (error: any, index: number) => void
38
+ ): Promise<(T | null)[]> {
39
+ const results = await Promise.allSettled(
40
+ operations.map((op, index) =>
41
+ withErrorHandling(op, error => errorHandler?.(error, index))
42
+ )
43
+ );
44
+
45
+ return results.map(result =>
46
+ result.status === 'fulfilled' ? result.value : null
47
+ );
48
+ }
49
+
50
+ /**
51
+ * Retry an async operation with exponential backoff
52
+ *
53
+ * By default, does not retry on 4xx errors (client errors).
54
+ * Use shouldRetry callback to customize retry behavior.
55
+ */
56
+ export async function retryAsync<T>(
57
+ operation: () => Promise<T>,
58
+ maxRetries = 3,
59
+ baseDelay = 1000,
60
+ shouldRetry?: (error: any) => boolean
61
+ ): Promise<T> {
62
+ let lastError: any;
63
+
64
+ // Default shouldRetry: don't retry on 4xx errors
65
+ const defaultShouldRetry = (error: any): boolean => {
66
+ // Don't retry on 4xx errors (client errors)
67
+ if (error?.response?.status >= 400 && error?.response?.status < 500) {
68
+ return false;
69
+ }
70
+ return true;
71
+ };
72
+
73
+ const retryCheck = shouldRetry || defaultShouldRetry;
74
+
75
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
76
+ try {
77
+ return await operation();
78
+ } catch (error) {
79
+ lastError = error;
80
+
81
+ if (attempt === maxRetries) {
82
+ break;
83
+ }
84
+
85
+ if (!retryCheck(error)) {
86
+ break;
87
+ }
88
+
89
+ // Calculate delay with exponential backoff and jitter
90
+ const delay = baseDelay * Math.pow(2, attempt) + Math.random() * 1000;
91
+ await new Promise(resolve => setTimeout(resolve, delay));
92
+ }
93
+ }
94
+
95
+ throw lastError;
96
+ }
97
+
98
+ /**
99
+ * Debounce async function calls
100
+ */
101
+ export function debounceAsync<T extends (...args: any[]) => Promise<any>>(
102
+ func: T,
103
+ delay: number
104
+ ): (...args: Parameters<T>) => Promise<ReturnType<T>> {
105
+ let timeoutId: ReturnType<typeof setTimeout>;
106
+ const lastPromise: Promise<ReturnType<T>> | null = null;
107
+
108
+ return (...args: Parameters<T>): Promise<ReturnType<T>> => {
109
+ return new Promise((resolve, reject) => {
110
+ clearTimeout(timeoutId);
111
+
112
+ timeoutId = setTimeout(async () => {
113
+ try {
114
+ const result = await func(...args);
115
+ resolve(result);
116
+ } catch (error) {
117
+ reject(error);
118
+ }
119
+ }, delay);
120
+ });
121
+ };
122
+ }
123
+
124
+ /**
125
+ * Throttle async function calls
126
+ */
127
+ export function throttleAsync<T extends (...args: any[]) => Promise<any>>(
128
+ func: T,
129
+ limit: number,
130
+ interval: number
131
+ ): (...args: Parameters<T>) => Promise<ReturnType<T>> {
132
+ let inThrottle = false;
133
+ let lastPromise: Promise<ReturnType<T>> | null = null;
134
+
135
+ return (...args: Parameters<T>): Promise<ReturnType<T>> => {
136
+ if (inThrottle) {
137
+ return lastPromise!;
138
+ }
139
+
140
+ inThrottle = true;
141
+ lastPromise = func(...args);
142
+
143
+ setTimeout(() => {
144
+ inThrottle = false;
145
+ }, interval);
146
+
147
+ return lastPromise;
148
+ };
149
+ }
150
+
151
+ /**
152
+ * Execute async operations sequentially with progress tracking
153
+ */
154
+ export async function sequentialWithProgress<T>(
155
+ operations: (() => Promise<T>)[],
156
+ onProgress?: (completed: number, total: number) => void
157
+ ): Promise<T[]> {
158
+ const results: T[] = [];
159
+
160
+ for (let i = 0; i < operations.length; i++) {
161
+ const result = await operations[i]();
162
+ results.push(result);
163
+ onProgress?.(i + 1, operations.length);
164
+ }
165
+
166
+ return results;
167
+ }
168
+
169
+ /**
170
+ * Batch async operations
171
+ */
172
+ export async function batchAsync<T>(
173
+ items: T[],
174
+ batchSize: number,
175
+ processor: (batch: T[]) => Promise<void>
176
+ ): Promise<void> {
177
+ for (let i = 0; i < items.length; i += batchSize) {
178
+ const batch = items.slice(i, i + batchSize);
179
+ await processor(batch);
180
+ }
181
+ }
182
+
183
+ /**
184
+ * Create a cancellable async operation
185
+ */
186
+ export function createCancellableAsync<T>(
187
+ operation: (signal: AbortSignal) => Promise<T>
188
+ ): { execute: () => Promise<T>; cancel: () => void } {
189
+ let abortController: AbortController | null = null;
190
+
191
+ return {
192
+ execute: async () => {
193
+ abortController = new AbortController();
194
+ return await operation(abortController.signal);
195
+ },
196
+ cancel: () => {
197
+ abortController?.abort();
198
+ }
199
+ };
200
+ }
201
+
202
+ /**
203
+ * Timeout wrapper for async operations
204
+ */
205
+ export async function withTimeout<T>(
206
+ operation: Promise<T>,
207
+ timeoutMs: number,
208
+ timeoutMessage?: string
209
+ ): Promise<T> {
210
+ const timeoutPromise = new Promise<never>((_, reject) => {
211
+ setTimeout(() => {
212
+ reject(new Error(timeoutMessage || `Operation timed out after ${timeoutMs}ms`));
213
+ }, timeoutMs);
214
+ });
215
+
216
+ return Promise.race([operation, timeoutPromise]);
217
+ }
218
+
219
+ /**
220
+ * Execute async operation with loading state
221
+ */
222
+ export async function withLoadingState<T>(
223
+ operation: () => Promise<T>,
224
+ setLoading: (loading: boolean) => void
225
+ ): Promise<T> {
226
+ setLoading(true);
227
+ try {
228
+ return await operation();
229
+ } finally {
230
+ setLoading(false);
231
+ }
232
+ }
233
+
234
+ /**
235
+ * Create a promise that resolves after a delay
236
+ */
237
+ export const delay = (ms: number): Promise<void> =>
238
+ new Promise(resolve => setTimeout(resolve, ms));
239
+
240
+ /**
241
+ * Execute async operation with retry on specific errors
242
+ */
243
+ export async function retryOnError<T>(
244
+ operation: () => Promise<T>,
245
+ retryableErrors: (string | number)[],
246
+ maxRetries = 3
247
+ ): Promise<T> {
248
+ return retryAsync(operation, maxRetries, 1000, (error) => {
249
+ const errorCode = error?.code || error?.status || error?.message;
250
+ return retryableErrors.includes(errorCode);
251
+ });
252
+ }