@oxy.so/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 (673) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +16 -0
  3. package/README.md +221 -0
  4. package/dist/cjs/.tsbuildinfo +1 -0
  5. package/dist/cjs/HttpService.js +1270 -0
  6. package/dist/cjs/OxyServices.base.js +390 -0
  7. package/dist/cjs/OxyServices.errors.js +95 -0
  8. package/dist/cjs/OxyServices.js +72 -0
  9. package/dist/cjs/boot/sessionColdBoot.js +395 -0
  10. package/dist/cjs/constants/version.js +16 -0
  11. package/dist/cjs/crypto/aead.js +79 -0
  12. package/dist/cjs/crypto/ecdh.js +35 -0
  13. package/dist/cjs/crypto/identityMarker.js +255 -0
  14. package/dist/cjs/crypto/kdf.js +39 -0
  15. package/dist/cjs/crypto/keyManager.js +2234 -0
  16. package/dist/cjs/crypto/polyfill.js +131 -0
  17. package/dist/cjs/crypto/recoveryPhrase.js +242 -0
  18. package/dist/cjs/crypto/signatureService.js +273 -0
  19. package/dist/cjs/i18n/accountCategoryLabels.js +44 -0
  20. package/dist/cjs/i18n/accountRoleLabels.js +27 -0
  21. package/dist/cjs/i18n/index.js +90 -0
  22. package/dist/cjs/i18n/locales/ar-SA.json +282 -0
  23. package/dist/cjs/i18n/locales/ca-ES.json +282 -0
  24. package/dist/cjs/i18n/locales/de-DE.json +282 -0
  25. package/dist/cjs/i18n/locales/en-US.json +2161 -0
  26. package/dist/cjs/i18n/locales/es-ES.json +2161 -0
  27. package/dist/cjs/i18n/locales/fr-FR.json +282 -0
  28. package/dist/cjs/i18n/locales/it-IT.json +282 -0
  29. package/dist/cjs/i18n/locales/ja-JP.json +282 -0
  30. package/dist/cjs/i18n/locales/ko-KR.json +282 -0
  31. package/dist/cjs/i18n/locales/locales/ar-SA.json +282 -0
  32. package/dist/cjs/i18n/locales/locales/ca-ES.json +282 -0
  33. package/dist/cjs/i18n/locales/locales/de-DE.json +282 -0
  34. package/dist/cjs/i18n/locales/locales/en-US.json +2161 -0
  35. package/dist/cjs/i18n/locales/locales/es-ES.json +2161 -0
  36. package/dist/cjs/i18n/locales/locales/fr-FR.json +282 -0
  37. package/dist/cjs/i18n/locales/locales/it-IT.json +282 -0
  38. package/dist/cjs/i18n/locales/locales/ja-JP.json +282 -0
  39. package/dist/cjs/i18n/locales/locales/ko-KR.json +282 -0
  40. package/dist/cjs/i18n/locales/locales/pt-PT.json +282 -0
  41. package/dist/cjs/i18n/locales/locales/zh-CN.json +282 -0
  42. package/dist/cjs/i18n/locales/pt-PT.json +282 -0
  43. package/dist/cjs/i18n/locales/zh-CN.json +282 -0
  44. package/dist/cjs/i18n/reputationCategoryLabels.js +20 -0
  45. package/dist/cjs/i18n/trustTierLabels.js +19 -0
  46. package/dist/cjs/index.js +498 -0
  47. package/dist/cjs/inference/OxyInferenceClient.js +544 -0
  48. package/dist/cjs/logger/index.js +149 -0
  49. package/dist/cjs/mixins/OxyServices.accounts.js +555 -0
  50. package/dist/cjs/mixins/OxyServices.analytics.js +49 -0
  51. package/dist/cjs/mixins/OxyServices.appData.js +108 -0
  52. package/dist/cjs/mixins/OxyServices.assets.js +764 -0
  53. package/dist/cjs/mixins/OxyServices.auth.js +1254 -0
  54. package/dist/cjs/mixins/OxyServices.chains.js +73 -0
  55. package/dist/cjs/mixins/OxyServices.civic.js +611 -0
  56. package/dist/cjs/mixins/OxyServices.connectedApps.js +78 -0
  57. package/dist/cjs/mixins/OxyServices.contacts.js +50 -0
  58. package/dist/cjs/mixins/OxyServices.deviceBoot.js +191 -0
  59. package/dist/cjs/mixins/OxyServices.deviceTransfer.js +314 -0
  60. package/dist/cjs/mixins/OxyServices.devices.js +116 -0
  61. package/dist/cjs/mixins/OxyServices.features.js +335 -0
  62. package/dist/cjs/mixins/OxyServices.followGraph.js +221 -0
  63. package/dist/cjs/mixins/OxyServices.identity.js +461 -0
  64. package/dist/cjs/mixins/OxyServices.identityBackup.js +172 -0
  65. package/dist/cjs/mixins/OxyServices.inference.js +59 -0
  66. package/dist/cjs/mixins/OxyServices.language.js +125 -0
  67. package/dist/cjs/mixins/OxyServices.links.js +72 -0
  68. package/dist/cjs/mixins/OxyServices.location.js +43 -0
  69. package/dist/cjs/mixins/OxyServices.nodes.js +175 -0
  70. package/dist/cjs/mixins/OxyServices.notifications.js +63 -0
  71. package/dist/cjs/mixins/OxyServices.payment.js +158 -0
  72. package/dist/cjs/mixins/OxyServices.privacy.js +199 -0
  73. package/dist/cjs/mixins/OxyServices.reputation.js +289 -0
  74. package/dist/cjs/mixins/OxyServices.security.js +89 -0
  75. package/dist/cjs/mixins/OxyServices.store.js +266 -0
  76. package/dist/cjs/mixins/OxyServices.topics.js +137 -0
  77. package/dist/cjs/mixins/OxyServices.user.js +902 -0
  78. package/dist/cjs/mixins/OxyServices.utility.js +1098 -0
  79. package/dist/cjs/mixins/index.js +135 -0
  80. package/dist/cjs/mixins/mixinHelpers.js +53 -0
  81. package/dist/cjs/models/Topic.js +16 -0
  82. package/dist/cjs/models/interfaces.js +20 -0
  83. package/dist/cjs/models/session.js +2 -0
  84. package/dist/cjs/server/auth.js +167 -0
  85. package/dist/cjs/server/capabilityTicket.js +192 -0
  86. package/dist/cjs/server/cors.js +225 -0
  87. package/dist/cjs/server/index.js +97 -0
  88. package/dist/cjs/server/rateLimit.js +207 -0
  89. package/dist/cjs/server/safeFetch.js +458 -0
  90. package/dist/cjs/server/securityHeaders.js +377 -0
  91. package/dist/cjs/server/userInvalidation.js +156 -0
  92. package/dist/cjs/server/verifySecret.js +50 -0
  93. package/dist/cjs/session/SessionClient.js +865 -0
  94. package/dist/cjs/session/accountDelegationAccess.js +48 -0
  95. package/dist/cjs/session/accountDialogController.js +1131 -0
  96. package/dist/cjs/session/accountSwitchTargets.js +81 -0
  97. package/dist/cjs/session/authStateStore.js +404 -0
  98. package/dist/cjs/session/createSessionClient.js +32 -0
  99. package/dist/cjs/session/deviceDirectory.js +143 -0
  100. package/dist/cjs/session/deviceSwitcherRows.js +76 -0
  101. package/dist/cjs/session/identityPin.js +256 -0
  102. package/dist/cjs/session/identitySession.js +135 -0
  103. package/dist/cjs/session/projectSessionState.js +121 -0
  104. package/dist/cjs/session/refresh.js +398 -0
  105. package/dist/cjs/session/sessionClientHost.js +34 -0
  106. package/dist/cjs/session/sharedDeviceCredential.js +247 -0
  107. package/dist/cjs/session/socketLoader.js +55 -0
  108. package/dist/cjs/shared/utils/colorUtils.js +153 -0
  109. package/dist/cjs/shared/utils/errorUtils.js +183 -0
  110. package/dist/cjs/shared/utils/index.js +49 -0
  111. package/dist/cjs/shared/utils/networkUtils.js +183 -0
  112. package/dist/cjs/shared/utils/themeUtils.js +106 -0
  113. package/dist/cjs/utils/accountCacheSweep.js +80 -0
  114. package/dist/cjs/utils/accountUtils.js +140 -0
  115. package/dist/cjs/utils/activityId.js +6 -0
  116. package/dist/cjs/utils/apiUtils.js +91 -0
  117. package/dist/cjs/utils/asyncUtils.js +222 -0
  118. package/dist/cjs/utils/authHelpers.js +120 -0
  119. package/dist/cjs/utils/authWebUrl.js +19 -0
  120. package/dist/cjs/utils/avatarUtils.js +29 -0
  121. package/dist/cjs/utils/cache.js +235 -0
  122. package/dist/cjs/utils/cacheKey.js +85 -0
  123. package/dist/cjs/utils/coldBoot.js +122 -0
  124. package/dist/cjs/utils/commonsApproval.js +31 -0
  125. package/dist/cjs/utils/commonsDelivery.js +59 -0
  126. package/dist/cjs/utils/deviceManager.js +174 -0
  127. package/dist/cjs/utils/displayNamePolicyRanges.generated.js +60 -0
  128. package/dist/cjs/utils/edgeRegion.js +6 -0
  129. package/dist/cjs/utils/errorUtils.js +243 -0
  130. package/dist/cjs/utils/identityCacheSweep.js +97 -0
  131. package/dist/cjs/utils/languageUtils.js +224 -0
  132. package/dist/cjs/utils/oauthPkce.js +311 -0
  133. package/dist/cjs/utils/officialOrigins.js +64 -0
  134. package/dist/cjs/utils/oxyServiceEnvironment.js +19 -0
  135. package/dist/cjs/utils/platform.js +119 -0
  136. package/dist/cjs/utils/profileLinks.js +63 -0
  137. package/dist/cjs/utils/redactUrl.js +29 -0
  138. package/dist/cjs/utils/registrableApex.js +45 -0
  139. package/dist/cjs/utils/requestUtils.js +209 -0
  140. package/dist/cjs/utils/sessionUtils.js +181 -0
  141. package/dist/cjs/utils/textNormalization.js +158 -0
  142. package/dist/cjs/utils/userHandle.js +37 -0
  143. package/dist/cjs/utils/userIdentity.js +50 -0
  144. package/dist/cjs/utils/validationUtils.js +370 -0
  145. package/dist/cjs/utils/webauthnOrigin.js +51 -0
  146. package/dist/esm/.tsbuildinfo +1 -0
  147. package/dist/esm/HttpService.js +1266 -0
  148. package/dist/esm/OxyServices.base.js +386 -0
  149. package/dist/esm/OxyServices.errors.js +88 -0
  150. package/dist/esm/OxyServices.js +66 -0
  151. package/dist/esm/boot/sessionColdBoot.js +392 -0
  152. package/dist/esm/constants/version.js +13 -0
  153. package/dist/esm/crypto/aead.js +74 -0
  154. package/dist/esm/crypto/ecdh.js +32 -0
  155. package/dist/esm/crypto/identityMarker.js +248 -0
  156. package/dist/esm/crypto/kdf.js +36 -0
  157. package/dist/esm/crypto/keyManager.js +2227 -0
  158. package/dist/esm/crypto/polyfill.js +129 -0
  159. package/dist/esm/crypto/recoveryPhrase.js +238 -0
  160. package/dist/esm/crypto/signatureService.js +269 -0
  161. package/dist/esm/i18n/accountCategoryLabels.js +37 -0
  162. package/dist/esm/i18n/accountRoleLabels.js +20 -0
  163. package/dist/esm/i18n/index.js +83 -0
  164. package/dist/esm/i18n/locales/ar-SA.json +282 -0
  165. package/dist/esm/i18n/locales/ca-ES.json +282 -0
  166. package/dist/esm/i18n/locales/de-DE.json +282 -0
  167. package/dist/esm/i18n/locales/en-US.json +2161 -0
  168. package/dist/esm/i18n/locales/es-ES.json +2161 -0
  169. package/dist/esm/i18n/locales/fr-FR.json +282 -0
  170. package/dist/esm/i18n/locales/it-IT.json +282 -0
  171. package/dist/esm/i18n/locales/ja-JP.json +282 -0
  172. package/dist/esm/i18n/locales/ko-KR.json +282 -0
  173. package/dist/esm/i18n/locales/locales/ar-SA.json +282 -0
  174. package/dist/esm/i18n/locales/locales/ca-ES.json +282 -0
  175. package/dist/esm/i18n/locales/locales/de-DE.json +282 -0
  176. package/dist/esm/i18n/locales/locales/en-US.json +2161 -0
  177. package/dist/esm/i18n/locales/locales/es-ES.json +2161 -0
  178. package/dist/esm/i18n/locales/locales/fr-FR.json +282 -0
  179. package/dist/esm/i18n/locales/locales/it-IT.json +282 -0
  180. package/dist/esm/i18n/locales/locales/ja-JP.json +282 -0
  181. package/dist/esm/i18n/locales/locales/ko-KR.json +282 -0
  182. package/dist/esm/i18n/locales/locales/pt-PT.json +282 -0
  183. package/dist/esm/i18n/locales/locales/zh-CN.json +282 -0
  184. package/dist/esm/i18n/locales/pt-PT.json +282 -0
  185. package/dist/esm/i18n/locales/zh-CN.json +282 -0
  186. package/dist/esm/i18n/reputationCategoryLabels.js +13 -0
  187. package/dist/esm/i18n/trustTierLabels.js +12 -0
  188. package/dist/esm/index.js +254 -0
  189. package/dist/esm/inference/OxyInferenceClient.js +538 -0
  190. package/dist/esm/logger/index.js +140 -0
  191. package/dist/esm/mixins/OxyServices.accounts.js +543 -0
  192. package/dist/esm/mixins/OxyServices.analytics.js +46 -0
  193. package/dist/esm/mixins/OxyServices.appData.js +103 -0
  194. package/dist/esm/mixins/OxyServices.assets.js +761 -0
  195. package/dist/esm/mixins/OxyServices.auth.js +1247 -0
  196. package/dist/esm/mixins/OxyServices.chains.js +70 -0
  197. package/dist/esm/mixins/OxyServices.civic.js +605 -0
  198. package/dist/esm/mixins/OxyServices.connectedApps.js +75 -0
  199. package/dist/esm/mixins/OxyServices.contacts.js +47 -0
  200. package/dist/esm/mixins/OxyServices.deviceBoot.js +186 -0
  201. package/dist/esm/mixins/OxyServices.deviceTransfer.js +311 -0
  202. package/dist/esm/mixins/OxyServices.devices.js +113 -0
  203. package/dist/esm/mixins/OxyServices.features.js +332 -0
  204. package/dist/esm/mixins/OxyServices.followGraph.js +218 -0
  205. package/dist/esm/mixins/OxyServices.identity.js +457 -0
  206. package/dist/esm/mixins/OxyServices.identityBackup.js +169 -0
  207. package/dist/esm/mixins/OxyServices.inference.js +56 -0
  208. package/dist/esm/mixins/OxyServices.language.js +122 -0
  209. package/dist/esm/mixins/OxyServices.links.js +69 -0
  210. package/dist/esm/mixins/OxyServices.location.js +40 -0
  211. package/dist/esm/mixins/OxyServices.nodes.js +172 -0
  212. package/dist/esm/mixins/OxyServices.notifications.js +60 -0
  213. package/dist/esm/mixins/OxyServices.payment.js +155 -0
  214. package/dist/esm/mixins/OxyServices.privacy.js +196 -0
  215. package/dist/esm/mixins/OxyServices.reputation.js +286 -0
  216. package/dist/esm/mixins/OxyServices.security.js +86 -0
  217. package/dist/esm/mixins/OxyServices.store.js +263 -0
  218. package/dist/esm/mixins/OxyServices.topics.js +134 -0
  219. package/dist/esm/mixins/OxyServices.user.js +899 -0
  220. package/dist/esm/mixins/OxyServices.utility.js +1095 -0
  221. package/dist/esm/mixins/index.js +132 -0
  222. package/dist/esm/mixins/mixinHelpers.js +48 -0
  223. package/dist/esm/models/Topic.js +13 -0
  224. package/dist/esm/models/interfaces.js +17 -0
  225. package/dist/esm/models/session.js +1 -0
  226. package/dist/esm/server/auth.js +154 -0
  227. package/dist/esm/server/capabilityTicket.js +183 -0
  228. package/dist/esm/server/cors.js +220 -0
  229. package/dist/esm/server/index.js +47 -0
  230. package/dist/esm/server/rateLimit.js +201 -0
  231. package/dist/esm/server/safeFetch.js +447 -0
  232. package/dist/esm/server/securityHeaders.js +364 -0
  233. package/dist/esm/server/userInvalidation.js +152 -0
  234. package/dist/esm/server/verifySecret.js +47 -0
  235. package/dist/esm/session/SessionClient.js +861 -0
  236. package/dist/esm/session/accountDelegationAccess.js +45 -0
  237. package/dist/esm/session/accountDialogController.js +1126 -0
  238. package/dist/esm/session/accountSwitchTargets.js +77 -0
  239. package/dist/esm/session/authStateStore.js +398 -0
  240. package/dist/esm/session/createSessionClient.js +29 -0
  241. package/dist/esm/session/deviceDirectory.js +135 -0
  242. package/dist/esm/session/deviceSwitcherRows.js +72 -0
  243. package/dist/esm/session/identityPin.js +249 -0
  244. package/dist/esm/session/identitySession.js +131 -0
  245. package/dist/esm/session/projectSessionState.js +114 -0
  246. package/dist/esm/session/refresh.js +390 -0
  247. package/dist/esm/session/sessionClientHost.js +31 -0
  248. package/dist/esm/session/sharedDeviceCredential.js +239 -0
  249. package/dist/esm/session/socketLoader.js +19 -0
  250. package/dist/esm/shared/utils/colorUtils.js +143 -0
  251. package/dist/esm/shared/utils/errorUtils.js +170 -0
  252. package/dist/esm/shared/utils/index.js +15 -0
  253. package/dist/esm/shared/utils/networkUtils.js +173 -0
  254. package/dist/esm/shared/utils/themeUtils.js +98 -0
  255. package/dist/esm/utils/accountCacheSweep.js +75 -0
  256. package/dist/esm/utils/accountUtils.js +131 -0
  257. package/dist/esm/utils/activityId.js +2 -0
  258. package/dist/esm/utils/apiUtils.js +84 -0
  259. package/dist/esm/utils/asyncUtils.js +207 -0
  260. package/dist/esm/utils/authHelpers.js +111 -0
  261. package/dist/esm/utils/authWebUrl.js +16 -0
  262. package/dist/esm/utils/avatarUtils.js +26 -0
  263. package/dist/esm/utils/cache.js +227 -0
  264. package/dist/esm/utils/cacheKey.js +80 -0
  265. package/dist/esm/utils/coldBoot.js +119 -0
  266. package/dist/esm/utils/commonsApproval.js +27 -0
  267. package/dist/esm/utils/commonsDelivery.js +54 -0
  268. package/dist/esm/utils/deviceManager.js +170 -0
  269. package/dist/esm/utils/displayNamePolicyRanges.generated.js +57 -0
  270. package/dist/esm/utils/edgeRegion.js +2 -0
  271. package/dist/esm/utils/errorUtils.js +232 -0
  272. package/dist/esm/utils/identityCacheSweep.js +92 -0
  273. package/dist/esm/utils/languageUtils.js +212 -0
  274. package/dist/esm/utils/oauthPkce.js +297 -0
  275. package/dist/esm/utils/officialOrigins.js +59 -0
  276. package/dist/esm/utils/oxyServiceEnvironment.js +16 -0
  277. package/dist/esm/utils/platform.js +110 -0
  278. package/dist/esm/utils/profileLinks.js +60 -0
  279. package/dist/esm/utils/redactUrl.js +26 -0
  280. package/dist/esm/utils/registrableApex.js +42 -0
  281. package/dist/esm/utils/requestUtils.js +203 -0
  282. package/dist/esm/utils/sessionUtils.js +171 -0
  283. package/dist/esm/utils/textNormalization.js +154 -0
  284. package/dist/esm/utils/userHandle.js +33 -0
  285. package/dist/esm/utils/userIdentity.js +45 -0
  286. package/dist/esm/utils/validationUtils.js +350 -0
  287. package/dist/esm/utils/webauthnOrigin.js +48 -0
  288. package/dist/types/.tsbuildinfo +1 -0
  289. package/dist/types/HttpService.d.ts +413 -0
  290. package/dist/types/OxyServices.base.d.ts +187 -0
  291. package/dist/types/OxyServices.d.ts +139 -0
  292. package/dist/types/OxyServices.errors.d.ts +84 -0
  293. package/dist/types/boot/sessionColdBoot.d.ts +140 -0
  294. package/dist/types/constants/version.d.ts +13 -0
  295. package/dist/types/crypto/aead.d.ts +56 -0
  296. package/dist/types/crypto/ecdh.d.ts +29 -0
  297. package/dist/types/crypto/identityMarker.d.ts +94 -0
  298. package/dist/types/crypto/kdf.d.ts +25 -0
  299. package/dist/types/crypto/keyManager.d.ts +582 -0
  300. package/dist/types/crypto/polyfill.d.ts +25 -0
  301. package/dist/types/crypto/recoveryPhrase.d.ts +173 -0
  302. package/dist/types/crypto/signatureService.d.ts +136 -0
  303. package/dist/types/i18n/accountCategoryLabels.d.ts +34 -0
  304. package/dist/types/i18n/accountRoleLabels.d.ts +10 -0
  305. package/dist/types/i18n/index.d.ts +3 -0
  306. package/dist/types/i18n/reputationCategoryLabels.d.ts +10 -0
  307. package/dist/types/i18n/trustTierLabels.d.ts +9 -0
  308. package/dist/types/index.d.ts +145 -0
  309. package/dist/types/inference/OxyInferenceClient.d.ts +342 -0
  310. package/dist/types/logger/index.d.ts +104 -0
  311. package/dist/types/mixins/OxyServices.accounts.d.ts +868 -0
  312. package/dist/types/mixins/OxyServices.analytics.d.ts +72 -0
  313. package/dist/types/mixins/OxyServices.appData.d.ts +108 -0
  314. package/dist/types/mixins/OxyServices.assets.d.ts +329 -0
  315. package/dist/types/mixins/OxyServices.auth.d.ts +908 -0
  316. package/dist/types/mixins/OxyServices.chains.d.ts +156 -0
  317. package/dist/types/mixins/OxyServices.civic.d.ts +510 -0
  318. package/dist/types/mixins/OxyServices.connectedApps.d.ts +169 -0
  319. package/dist/types/mixins/OxyServices.contacts.d.ts +100 -0
  320. package/dist/types/mixins/OxyServices.deviceBoot.d.ts +185 -0
  321. package/dist/types/mixins/OxyServices.deviceTransfer.d.ts +149 -0
  322. package/dist/types/mixins/OxyServices.devices.d.ts +103 -0
  323. package/dist/types/mixins/OxyServices.features.d.ts +250 -0
  324. package/dist/types/mixins/OxyServices.followGraph.d.ts +223 -0
  325. package/dist/types/mixins/OxyServices.identity.d.ts +351 -0
  326. package/dist/types/mixins/OxyServices.identityBackup.d.ts +129 -0
  327. package/dist/types/mixins/OxyServices.inference.d.ts +95 -0
  328. package/dist/types/mixins/OxyServices.language.d.ts +87 -0
  329. package/dist/types/mixins/OxyServices.links.d.ts +104 -0
  330. package/dist/types/mixins/OxyServices.location.d.ts +70 -0
  331. package/dist/types/mixins/OxyServices.nodes.d.ts +198 -0
  332. package/dist/types/mixins/OxyServices.notifications.d.ts +143 -0
  333. package/dist/types/mixins/OxyServices.payment.d.ts +117 -0
  334. package/dist/types/mixins/OxyServices.privacy.d.ts +146 -0
  335. package/dist/types/mixins/OxyServices.reputation.d.ts +202 -0
  336. package/dist/types/mixins/OxyServices.security.d.ts +84 -0
  337. package/dist/types/mixins/OxyServices.store.d.ts +334 -0
  338. package/dist/types/mixins/OxyServices.topics.d.ts +110 -0
  339. package/dist/types/mixins/OxyServices.user.d.ts +558 -0
  340. package/dist/types/mixins/OxyServices.utility.d.ts +393 -0
  341. package/dist/types/mixins/index.d.ts +87 -0
  342. package/dist/types/mixins/mixinHelpers.d.ts +31 -0
  343. package/dist/types/models/Topic.d.ts +42 -0
  344. package/dist/types/models/interfaces.d.ts +675 -0
  345. package/dist/types/models/session.d.ts +51 -0
  346. package/dist/types/server/auth.d.ts +130 -0
  347. package/dist/types/server/capabilityTicket.d.ts +41 -0
  348. package/dist/types/server/cors.d.ts +98 -0
  349. package/dist/types/server/index.d.ts +35 -0
  350. package/dist/types/server/rateLimit.d.ts +40 -0
  351. package/dist/types/server/safeFetch.d.ts +137 -0
  352. package/dist/types/server/securityHeaders.d.ts +221 -0
  353. package/dist/types/server/userInvalidation.d.ts +114 -0
  354. package/dist/types/server/verifySecret.d.ts +29 -0
  355. package/dist/types/session/SessionClient.d.ts +418 -0
  356. package/dist/types/session/accountDelegationAccess.d.ts +40 -0
  357. package/dist/types/session/accountDialogController.d.ts +648 -0
  358. package/dist/types/session/accountSwitchTargets.d.ts +70 -0
  359. package/dist/types/session/authStateStore.d.ts +153 -0
  360. package/dist/types/session/createSessionClient.d.ts +30 -0
  361. package/dist/types/session/deviceDirectory.d.ts +182 -0
  362. package/dist/types/session/deviceSwitcherRows.d.ts +92 -0
  363. package/dist/types/session/identityPin.d.ts +87 -0
  364. package/dist/types/session/identitySession.d.ts +105 -0
  365. package/dist/types/session/projectSessionState.d.ts +74 -0
  366. package/dist/types/session/refresh.d.ts +179 -0
  367. package/dist/types/session/sessionClientHost.d.ts +18 -0
  368. package/dist/types/session/sharedDeviceCredential.d.ts +202 -0
  369. package/dist/types/session/socketLoader.d.ts +11 -0
  370. package/dist/types/shared/utils/colorUtils.d.ts +104 -0
  371. package/dist/types/shared/utils/errorUtils.d.ts +97 -0
  372. package/dist/types/shared/utils/index.d.ts +13 -0
  373. package/dist/types/shared/utils/networkUtils.d.ts +139 -0
  374. package/dist/types/shared/utils/themeUtils.d.ts +90 -0
  375. package/dist/types/utils/accountCacheSweep.d.ts +75 -0
  376. package/dist/types/utils/accountUtils.d.ts +100 -0
  377. package/dist/types/utils/activityId.d.ts +2 -0
  378. package/dist/types/utils/apiUtils.d.ts +95 -0
  379. package/dist/types/utils/asyncUtils.d.ts +62 -0
  380. package/dist/types/utils/authHelpers.d.ts +58 -0
  381. package/dist/types/utils/authWebUrl.d.ts +16 -0
  382. package/dist/types/utils/avatarUtils.d.ts +16 -0
  383. package/dist/types/utils/cache.d.ts +130 -0
  384. package/dist/types/utils/cacheKey.d.ts +66 -0
  385. package/dist/types/utils/coldBoot.d.ts +131 -0
  386. package/dist/types/utils/commonsApproval.d.ts +13 -0
  387. package/dist/types/utils/commonsDelivery.d.ts +105 -0
  388. package/dist/types/utils/deviceManager.d.ts +65 -0
  389. package/dist/types/utils/displayNamePolicyRanges.generated.d.ts +57 -0
  390. package/dist/types/utils/edgeRegion.d.ts +2 -0
  391. package/dist/types/utils/errorUtils.d.ts +125 -0
  392. package/dist/types/utils/identityCacheSweep.d.ts +80 -0
  393. package/dist/types/utils/languageUtils.d.ts +100 -0
  394. package/dist/types/utils/oauthPkce.d.ts +157 -0
  395. package/dist/types/utils/officialOrigins.d.ts +13 -0
  396. package/dist/types/utils/oxyServiceEnvironment.d.ts +17 -0
  397. package/dist/types/utils/platform.d.ts +49 -0
  398. package/dist/types/utils/profileLinks.d.ts +44 -0
  399. package/dist/types/utils/redactUrl.d.ts +17 -0
  400. package/dist/types/utils/registrableApex.d.ts +27 -0
  401. package/dist/types/utils/requestUtils.d.ts +123 -0
  402. package/dist/types/utils/sessionUtils.d.ts +54 -0
  403. package/dist/types/utils/textNormalization.d.ts +103 -0
  404. package/dist/types/utils/userHandle.d.ts +26 -0
  405. package/dist/types/utils/userIdentity.d.ts +21 -0
  406. package/dist/types/utils/validationUtils.d.ts +268 -0
  407. package/dist/types/utils/webauthnOrigin.d.ts +32 -0
  408. package/package.json +168 -0
  409. package/src/HttpService.ts +1553 -0
  410. package/src/OxyServices.base.ts +478 -0
  411. package/src/OxyServices.errors.ts +122 -0
  412. package/src/OxyServices.ts +172 -0
  413. package/src/__tests__/authSocket.test.ts +96 -0
  414. package/src/__tests__/httpServiceActivityId.test.ts +49 -0
  415. package/src/__tests__/httpServiceAuthSelfAwait.test.ts +108 -0
  416. package/src/__tests__/httpServiceCache.test.ts +318 -0
  417. package/src/__tests__/httpServiceCsrf.test.ts +235 -0
  418. package/src/__tests__/httpServiceFormEncoded.test.ts +142 -0
  419. package/src/__tests__/httpServiceQueueDeadlock.test.ts +128 -0
  420. package/src/__tests__/httpServiceUnwrapEnvelope.test.ts +115 -0
  421. package/src/__tests__/inSessionRefresh.test.ts +260 -0
  422. package/src/__tests__/linkedClient.test.ts +370 -0
  423. package/src/__tests__/parseHttpErrorBody.test.ts +116 -0
  424. package/src/__tests__/serverValueImportsDeclared.test.ts +120 -0
  425. package/src/__tests__/userIdentity.test.ts +143 -0
  426. package/src/boot/__tests__/sessionColdBoot.identity.test.ts +393 -0
  427. package/src/boot/__tests__/sessionColdBoot.sharedDevice.test.ts +325 -0
  428. package/src/boot/__tests__/sessionColdBoot.test.ts +570 -0
  429. package/src/boot/sessionColdBoot.ts +529 -0
  430. package/src/constants/version.ts +15 -0
  431. package/src/crypto/__tests__/backupMaterial.test.ts +86 -0
  432. package/src/crypto/__tests__/cryptoPrimitives.test.ts +226 -0
  433. package/src/crypto/__tests__/identityMocks.ts +125 -0
  434. package/src/crypto/__tests__/keyManager.atomicity.test.ts +272 -0
  435. package/src/crypto/__tests__/keyManager.cacheSafety.test.ts +175 -0
  436. package/src/crypto/__tests__/keyManager.identityStatus.test.ts +217 -0
  437. package/src/crypto/__tests__/keyManager.recoveryLadder.test.ts +179 -0
  438. package/src/crypto/__tests__/keyManager.recoveryMnemonic.test.ts +138 -0
  439. package/src/crypto/__tests__/keyManager.storageMigration.test.ts +227 -0
  440. package/src/crypto/__tests__/keyManager.test.ts +329 -0
  441. package/src/crypto/__tests__/polyfill.test.ts +109 -0
  442. package/src/crypto/__tests__/recoveryPhrase.test.ts +61 -0
  443. package/src/crypto/__tests__/scopedSeed.test.ts +126 -0
  444. package/src/crypto/__tests__/signChallengeShared.test.ts +63 -0
  445. package/src/crypto/__tests__/signedRecord.test.ts +230 -0
  446. package/src/crypto/aead.ts +97 -0
  447. package/src/crypto/ecdh.ts +37 -0
  448. package/src/crypto/identityMarker.ts +291 -0
  449. package/src/crypto/kdf.ts +43 -0
  450. package/src/crypto/keyManager.ts +2607 -0
  451. package/src/crypto/polyfill.ts +143 -0
  452. package/src/crypto/recoveryPhrase.ts +337 -0
  453. package/src/crypto/signatureService.ts +350 -0
  454. package/src/i18n/__tests__/accountCategoryLabels.test.ts +62 -0
  455. package/src/i18n/__tests__/accountRoleLabels.test.ts +54 -0
  456. package/src/i18n/__tests__/reputationCategoryLabels.test.ts +56 -0
  457. package/src/i18n/__tests__/trustTierLabels.test.ts +47 -0
  458. package/src/i18n/accountCategoryLabels.ts +44 -0
  459. package/src/i18n/accountRoleLabels.ts +26 -0
  460. package/src/i18n/index.ts +88 -0
  461. package/src/i18n/locales/ar-SA.json +282 -0
  462. package/src/i18n/locales/ca-ES.json +282 -0
  463. package/src/i18n/locales/de-DE.json +282 -0
  464. package/src/i18n/locales/en-US.json +2161 -0
  465. package/src/i18n/locales/es-ES.json +2161 -0
  466. package/src/i18n/locales/fr-FR.json +282 -0
  467. package/src/i18n/locales/it-IT.json +282 -0
  468. package/src/i18n/locales/ja-JP.json +282 -0
  469. package/src/i18n/locales/ko-KR.json +282 -0
  470. package/src/i18n/locales/pt-PT.json +282 -0
  471. package/src/i18n/locales/zh-CN.json +282 -0
  472. package/src/i18n/reputationCategoryLabels.ts +20 -0
  473. package/src/i18n/trustTierLabels.ts +18 -0
  474. package/src/index.ts +881 -0
  475. package/src/inference/OxyInferenceClient.ts +888 -0
  476. package/src/inference/__tests__/OxyInferenceClient.test.ts +834 -0
  477. package/src/logger/__tests__/logger.test.ts +207 -0
  478. package/src/logger/index.ts +217 -0
  479. package/src/mixins/OxyServices.accounts.ts +1330 -0
  480. package/src/mixins/OxyServices.analytics.ts +53 -0
  481. package/src/mixins/OxyServices.appData.ts +158 -0
  482. package/src/mixins/OxyServices.assets.ts +861 -0
  483. package/src/mixins/OxyServices.auth.ts +1858 -0
  484. package/src/mixins/OxyServices.chains.ts +134 -0
  485. package/src/mixins/OxyServices.civic.ts +945 -0
  486. package/src/mixins/OxyServices.connectedApps.ts +174 -0
  487. package/src/mixins/OxyServices.contacts.ts +73 -0
  488. package/src/mixins/OxyServices.deviceBoot.ts +210 -0
  489. package/src/mixins/OxyServices.deviceTransfer.ts +393 -0
  490. package/src/mixins/OxyServices.devices.ts +120 -0
  491. package/src/mixins/OxyServices.features.ts +454 -0
  492. package/src/mixins/OxyServices.followGraph.ts +293 -0
  493. package/src/mixins/OxyServices.identity.ts +705 -0
  494. package/src/mixins/OxyServices.identityBackup.ts +250 -0
  495. package/src/mixins/OxyServices.inference.ts +57 -0
  496. package/src/mixins/OxyServices.language.ts +144 -0
  497. package/src/mixins/OxyServices.links.ts +107 -0
  498. package/src/mixins/OxyServices.location.ts +46 -0
  499. package/src/mixins/OxyServices.nodes.ts +337 -0
  500. package/src/mixins/OxyServices.notifications.ts +142 -0
  501. package/src/mixins/OxyServices.payment.ts +163 -0
  502. package/src/mixins/OxyServices.privacy.ts +219 -0
  503. package/src/mixins/OxyServices.reputation.ts +436 -0
  504. package/src/mixins/OxyServices.security.ts +110 -0
  505. package/src/mixins/OxyServices.store.ts +585 -0
  506. package/src/mixins/OxyServices.topics.ts +169 -0
  507. package/src/mixins/OxyServices.user.ts +1137 -0
  508. package/src/mixins/OxyServices.utility.ts +1370 -0
  509. package/src/mixins/__tests__/OxyServices.civic.test.ts +1095 -0
  510. package/src/mixins/__tests__/OxyServices.deviceBoot.test.ts +124 -0
  511. package/src/mixins/__tests__/OxyServices.deviceTransfer.test.ts +271 -0
  512. package/src/mixins/__tests__/OxyServices.identity.test.ts +376 -0
  513. package/src/mixins/__tests__/OxyServices.links.test.ts +154 -0
  514. package/src/mixins/__tests__/OxyServices.nodes.test.ts +341 -0
  515. package/src/mixins/__tests__/OxyServices.rotateKey.test.ts +276 -0
  516. package/src/mixins/__tests__/OxyServices.serviceAssetMetadata.test.ts +192 -0
  517. package/src/mixins/__tests__/OxyServices.serviceAssetMetadataBySha.test.ts +135 -0
  518. package/src/mixins/__tests__/accounts.test.ts +727 -0
  519. package/src/mixins/__tests__/appData.test.ts +203 -0
  520. package/src/mixins/__tests__/assetCredentials.test.ts +47 -0
  521. package/src/mixins/__tests__/assetUpload.test.ts +191 -0
  522. package/src/mixins/__tests__/backgroundCredential.httpIntegration.test.ts +135 -0
  523. package/src/mixins/__tests__/chains.test.ts +113 -0
  524. package/src/mixins/__tests__/commonsSignIn.test.ts +1144 -0
  525. package/src/mixins/__tests__/connectedApps.test.ts +123 -0
  526. package/src/mixins/__tests__/deviceTokenMintPinned.test.ts +113 -0
  527. package/src/mixins/__tests__/discoveryErrorHandling.test.ts +266 -0
  528. package/src/mixins/__tests__/followCacheInvalidation.test.ts +173 -0
  529. package/src/mixins/__tests__/followGraph.test.ts +147 -0
  530. package/src/mixins/__tests__/followGraphPagination.test.ts +271 -0
  531. package/src/mixins/__tests__/getFileDownloadUrl.test.ts +346 -0
  532. package/src/mixins/__tests__/getFollowStatuses.test.ts +95 -0
  533. package/src/mixins/__tests__/getUsersByIds.test.ts +149 -0
  534. package/src/mixins/__tests__/identityBackup.test.ts +315 -0
  535. package/src/mixins/__tests__/identityWriteCacheInvalidation.test.ts +407 -0
  536. package/src/mixins/__tests__/inferenceFactory.test.ts +58 -0
  537. package/src/mixins/__tests__/onTokensChanged.test.ts +129 -0
  538. package/src/mixins/__tests__/preSessionSkipAuth.test.ts +284 -0
  539. package/src/mixins/__tests__/privacyCacheInvalidation.test.ts +155 -0
  540. package/src/mixins/__tests__/reputation.test.ts +522 -0
  541. package/src/mixins/__tests__/serviceAuth.test.ts +832 -0
  542. package/src/mixins/__tests__/serviceTokenJwks.test.ts +208 -0
  543. package/src/mixins/__tests__/store.test.ts +304 -0
  544. package/src/mixins/__tests__/topics.test.ts +156 -0
  545. package/src/mixins/__tests__/userReadCacheBypass.test.ts +129 -0
  546. package/src/mixins/__tests__/userTokenAuth.test.ts +746 -0
  547. package/src/mixins/__tests__/verifyChallenge.test.ts +130 -0
  548. package/src/mixins/__tests__/verifyServiceActingAs.test.ts +167 -0
  549. package/src/mixins/__tests__/webauthnAuth.test.ts +205 -0
  550. package/src/mixins/index.ts +201 -0
  551. package/src/mixins/mixinHelpers.ts +69 -0
  552. package/src/models/Topic.ts +46 -0
  553. package/src/models/interfaces.ts +786 -0
  554. package/src/models/session.ts +55 -0
  555. package/src/server/__tests__/auth.test.ts +78 -0
  556. package/src/server/__tests__/capabilityTicket.test.ts +111 -0
  557. package/src/server/__tests__/cors.socket.test.ts +225 -0
  558. package/src/server/__tests__/cors.test.ts +158 -0
  559. package/src/server/__tests__/rateLimit.test.ts +257 -0
  560. package/src/server/__tests__/safeFetch.test.ts +232 -0
  561. package/src/server/__tests__/securityHeaders.test.ts +348 -0
  562. package/src/server/__tests__/serviceTokenAttribution.test.ts +396 -0
  563. package/src/server/__tests__/userInvalidation.test.ts +203 -0
  564. package/src/server/__tests__/verifySecret.test.ts +40 -0
  565. package/src/server/auth.ts +271 -0
  566. package/src/server/capabilityTicket.ts +258 -0
  567. package/src/server/cors.ts +277 -0
  568. package/src/server/index.ts +136 -0
  569. package/src/server/rateLimit.ts +313 -0
  570. package/src/server/safeFetch.ts +586 -0
  571. package/src/server/securityHeaders.ts +467 -0
  572. package/src/server/userInvalidation.ts +199 -0
  573. package/src/server/verifySecret.ts +52 -0
  574. package/src/session/SessionClient.ts +1001 -0
  575. package/src/session/__tests__/SessionClient.additive.test.ts +153 -0
  576. package/src/session/__tests__/SessionClient.broadcastChannel.test.ts +114 -0
  577. package/src/session/__tests__/SessionClient.diagnostics.test.ts +91 -0
  578. package/src/session/__tests__/SessionClient.directory.test.ts +688 -0
  579. package/src/session/__tests__/SessionClient.httpIntegration.test.ts +65 -0
  580. package/src/session/__tests__/SessionClient.identityPin.test.ts +175 -0
  581. package/src/session/__tests__/SessionClient.rest.test.ts +119 -0
  582. package/src/session/__tests__/SessionClient.serverEvents.test.ts +72 -0
  583. package/src/session/__tests__/SessionClient.socket.test.ts +202 -0
  584. package/src/session/__tests__/SessionClient.socketFactory.test.ts +81 -0
  585. package/src/session/__tests__/SessionClient.state.test.ts +78 -0
  586. package/src/session/__tests__/SessionClient.switchTokenOrder.test.ts +170 -0
  587. package/src/session/__tests__/accountDelegationAccess.test.ts +104 -0
  588. package/src/session/__tests__/accountDialogController.test.ts +1969 -0
  589. package/src/session/__tests__/accountDialogShape.test.ts +118 -0
  590. package/src/session/__tests__/accountSwitchTargets.test.ts +137 -0
  591. package/src/session/__tests__/authStateStore.test.ts +451 -0
  592. package/src/session/__tests__/deviceDirectory.test.ts +422 -0
  593. package/src/session/__tests__/deviceSwitcherRows.test.ts +223 -0
  594. package/src/session/__tests__/identityPin.test.ts +131 -0
  595. package/src/session/__tests__/identitySession.test.ts +194 -0
  596. package/src/session/__tests__/projectSessionState.test.ts +105 -0
  597. package/src/session/__tests__/refresh.identityPin.test.ts +307 -0
  598. package/src/session/__tests__/refresh.test.ts +443 -0
  599. package/src/session/__tests__/sessionIntegration.test.ts +209 -0
  600. package/src/session/__tests__/sharedDeviceCredential.test.ts +300 -0
  601. package/src/session/accountDelegationAccess.ts +72 -0
  602. package/src/session/accountDialogController.ts +1494 -0
  603. package/src/session/accountSwitchTargets.ts +93 -0
  604. package/src/session/authStateStore.ts +502 -0
  605. package/src/session/createSessionClient.ts +39 -0
  606. package/src/session/deviceDirectory.ts +269 -0
  607. package/src/session/deviceSwitcherRows.ts +145 -0
  608. package/src/session/identityPin.ts +310 -0
  609. package/src/session/identitySession.ts +206 -0
  610. package/src/session/projectSessionState.ts +137 -0
  611. package/src/session/refresh.ts +517 -0
  612. package/src/session/sessionClientHost.ts +39 -0
  613. package/src/session/sharedDeviceCredential.ts +349 -0
  614. package/src/session/socketLoader.ts +30 -0
  615. package/src/shared/utils/colorUtils.ts +155 -0
  616. package/src/shared/utils/errorUtils.ts +181 -0
  617. package/src/shared/utils/index.ts +59 -0
  618. package/src/shared/utils/networkUtils.ts +248 -0
  619. package/src/shared/utils/themeUtils.ts +115 -0
  620. package/src/types/buffer.d.ts +97 -0
  621. package/src/types/expo-crypto.d.ts +16 -0
  622. package/src/types/expo-secure-store.d.ts +17 -0
  623. package/src/utils/__tests__/accountUtils.test.ts +151 -0
  624. package/src/utils/__tests__/activityId.test.ts +45 -0
  625. package/src/utils/__tests__/asyncUtils.test.ts +187 -0
  626. package/src/utils/__tests__/authWebUrl.test.ts +15 -0
  627. package/src/utils/__tests__/cacheKey.test.ts +0 -0
  628. package/src/utils/__tests__/coldBoot.test.ts +496 -0
  629. package/src/utils/__tests__/commonsApproval.test.ts +60 -0
  630. package/src/utils/__tests__/identityCacheSweep.test.ts +151 -0
  631. package/src/utils/__tests__/languageUtils.test.ts +219 -0
  632. package/src/utils/__tests__/oauthPkce.test.ts +272 -0
  633. package/src/utils/__tests__/officialOrigins.test.ts +31 -0
  634. package/src/utils/__tests__/oxyServiceEnvironment.test.ts +7 -0
  635. package/src/utils/__tests__/profileLinks.test.ts +180 -0
  636. package/src/utils/__tests__/redactUrl.test.ts +33 -0
  637. package/src/utils/__tests__/registrableApex.test.ts +62 -0
  638. package/src/utils/__tests__/textNormalization.test.ts +205 -0
  639. package/src/utils/__tests__/validationUtils.test.ts +703 -0
  640. package/src/utils/__tests__/webauthnOrigin.test.ts +83 -0
  641. package/src/utils/accountCacheSweep.ts +93 -0
  642. package/src/utils/accountUtils.ts +194 -0
  643. package/src/utils/activityId.ts +2 -0
  644. package/src/utils/apiUtils.ts +137 -0
  645. package/src/utils/asyncUtils.ts +280 -0
  646. package/src/utils/authHelpers.ts +148 -0
  647. package/src/utils/authWebUrl.ts +17 -0
  648. package/src/utils/avatarUtils.ts +39 -0
  649. package/src/utils/cache.ts +273 -0
  650. package/src/utils/cacheKey.ts +93 -0
  651. package/src/utils/coldBoot.ts +218 -0
  652. package/src/utils/commonsApproval.ts +39 -0
  653. package/src/utils/commonsDelivery.ts +132 -0
  654. package/src/utils/deviceManager.ts +203 -0
  655. package/src/utils/displayNamePolicyRanges.generated.ts +69 -0
  656. package/src/utils/edgeRegion.ts +2 -0
  657. package/src/utils/errorUtils.ts +352 -0
  658. package/src/utils/identityCacheSweep.ts +104 -0
  659. package/src/utils/languageUtils.ts +256 -0
  660. package/src/utils/oauthPkce.ts +392 -0
  661. package/src/utils/officialOrigins.ts +62 -0
  662. package/src/utils/oxyServiceEnvironment.ts +17 -0
  663. package/src/utils/platform.ts +139 -0
  664. package/src/utils/profileLinks.ts +91 -0
  665. package/src/utils/redactUrl.ts +28 -0
  666. package/src/utils/registrableApex.ts +41 -0
  667. package/src/utils/requestUtils.ts +237 -0
  668. package/src/utils/sessionUtils.ts +206 -0
  669. package/src/utils/textNormalization.ts +162 -0
  670. package/src/utils/userHandle.ts +49 -0
  671. package/src/utils/userIdentity.ts +60 -0
  672. package/src/utils/validationUtils.ts +390 -0
  673. package/src/utils/webauthnOrigin.ts +52 -0
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Color Utility Functions
3
+ *
4
+ * Consolidated color manipulation utilities used across the OxyServices ecosystem.
5
+ * These functions work in any JavaScript environment (browser, Node.js, React Native).
6
+ *
7
+ * @module shared/utils/colorUtils
8
+ */
9
+ /**
10
+ * Darkens a hex color by a specified factor.
11
+ *
12
+ * @param color - Hex color string (with or without #)
13
+ * @param factor - Amount to darken (0-1). Default: 0.6
14
+ * @returns Darkened hex color string with # prefix
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * darkenColor('#FF0000', 0.5); // Returns a darker red
19
+ * darkenColor('FF0000', 0.3); // Also works without #
20
+ * ```
21
+ */
22
+ export declare const darkenColor: (color: string, factor?: number) => string;
23
+ /**
24
+ * Lightens a hex color by a specified factor.
25
+ *
26
+ * @param color - Hex color string (with or without #)
27
+ * @param factor - Amount to lighten (0-1). Default: 0.3
28
+ * @returns Lightened hex color string with # prefix
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * lightenColor('#0000FF', 0.5); // Returns a lighter blue
33
+ * ```
34
+ */
35
+ export declare const lightenColor: (color: string, factor?: number) => string;
36
+ /**
37
+ * Converts a hex color to RGB values.
38
+ *
39
+ * @param hex - Hex color string (with or without #)
40
+ * @returns Object with r, g, b values (0-255)
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * hexToRgb('#FF5733'); // { r: 255, g: 87, b: 51 }
45
+ * ```
46
+ */
47
+ export declare const hexToRgb: (hex: string) => {
48
+ r: number;
49
+ g: number;
50
+ b: number;
51
+ } | null;
52
+ /**
53
+ * Converts RGB values to a hex color string.
54
+ *
55
+ * @param r - Red value (0-255)
56
+ * @param g - Green value (0-255)
57
+ * @param b - Blue value (0-255)
58
+ * @returns Hex color string with # prefix
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * rgbToHex(255, 87, 51); // '#ff5733'
63
+ * ```
64
+ */
65
+ export declare const rgbToHex: (r: number, g: number, b: number) => string;
66
+ /**
67
+ * Adjusts the opacity of a hex color, returning an rgba string.
68
+ *
69
+ * @param hex - Hex color string
70
+ * @param opacity - Opacity value (0-1)
71
+ * @returns RGBA color string
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * withOpacity('#FF0000', 0.5); // 'rgba(255, 0, 0, 0.5)'
76
+ * ```
77
+ */
78
+ export declare const withOpacity: (hex: string, opacity: number) => string;
79
+ /**
80
+ * Checks if a color is considered "light" (for determining text contrast).
81
+ *
82
+ * @param hex - Hex color string
83
+ * @returns true if the color is light, false if dark
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * isLightColor('#FFFFFF'); // true
88
+ * isLightColor('#000000'); // false
89
+ * ```
90
+ */
91
+ export declare const isLightColor: (hex: string) => boolean;
92
+ /**
93
+ * Gets a contrasting text color (black or white) for a given background color.
94
+ *
95
+ * @param backgroundColor - Hex color string of the background
96
+ * @returns '#000000' for light backgrounds, '#ffffff' for dark backgrounds
97
+ *
98
+ * @example
99
+ * ```ts
100
+ * getContrastTextColor('#FFFF00'); // '#000000' (black text on yellow)
101
+ * getContrastTextColor('#000080'); // '#ffffff' (white text on navy)
102
+ * ```
103
+ */
104
+ export declare const getContrastTextColor: (backgroundColor: string) => string;
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Error Utility Functions
3
+ *
4
+ * Consolidated error handling utilities for the OxyServices ecosystem.
5
+ * These functions help with common error patterns like checking HTTP status codes.
6
+ *
7
+ * @module shared/utils/errorUtils
8
+ */
9
+ /**
10
+ * Common HTTP status codes used in error checking.
11
+ */
12
+ export declare const HttpStatus: {
13
+ readonly BAD_REQUEST: 400;
14
+ readonly UNAUTHORIZED: 401;
15
+ readonly FORBIDDEN: 403;
16
+ readonly NOT_FOUND: 404;
17
+ readonly CONFLICT: 409;
18
+ readonly UNPROCESSABLE_ENTITY: 422;
19
+ readonly TOO_MANY_REQUESTS: 429;
20
+ readonly INTERNAL_SERVER_ERROR: 500;
21
+ readonly BAD_GATEWAY: 502;
22
+ readonly SERVICE_UNAVAILABLE: 503;
23
+ readonly GATEWAY_TIMEOUT: 504;
24
+ };
25
+ /**
26
+ * Extracts the HTTP status code from an error object.
27
+ *
28
+ * @param error - Any error object
29
+ * @returns The status code if found, undefined otherwise
30
+ */
31
+ export declare const getErrorStatus: (error: unknown) => number | undefined;
32
+ /**
33
+ * Extracts the error message from an error object.
34
+ *
35
+ * @param error - Any error object
36
+ * @param fallback - Fallback message if none found
37
+ * @returns The error message
38
+ */
39
+ export declare const getErrorMessage: (error: unknown, fallback?: string) => string;
40
+ /**
41
+ * Check if an error indicates the user is already registered (HTTP 409 Conflict).
42
+ *
43
+ * The backend should always return HTTP 409 for duplicate registrations.
44
+ *
45
+ * @param error - Any error object
46
+ * @returns true if the error is a 409 Conflict
47
+ */
48
+ export declare const isAlreadyRegisteredError: (error: unknown) => boolean;
49
+ /**
50
+ * Check if an error is an authentication error (HTTP 401).
51
+ *
52
+ * @param error - Any error object
53
+ * @returns true if the error is a 401 Unauthorized
54
+ */
55
+ export declare const isUnauthorizedError: (error: unknown) => boolean;
56
+ /**
57
+ * Check if an error is a forbidden error (HTTP 403).
58
+ *
59
+ * @param error - Any error object
60
+ * @returns true if the error is a 403 Forbidden
61
+ */
62
+ export declare const isForbiddenError: (error: unknown) => boolean;
63
+ /**
64
+ * Check if an error is a not found error (HTTP 404).
65
+ *
66
+ * @param error - Any error object
67
+ * @returns true if the error is a 404 Not Found
68
+ */
69
+ export declare const isNotFoundError: (error: unknown) => boolean;
70
+ /**
71
+ * Check if an error is a rate limit error (HTTP 429).
72
+ *
73
+ * @param error - Any error object
74
+ * @returns true if the error is a 429 Too Many Requests
75
+ */
76
+ export declare const isRateLimitError: (error: unknown) => boolean;
77
+ /**
78
+ * Check if an error is a server error (HTTP 5xx).
79
+ *
80
+ * @param error - Any error object
81
+ * @returns true if the error is a 5xx server error
82
+ */
83
+ export declare const isServerError: (error: unknown) => boolean;
84
+ /**
85
+ * Check if an error is a network error (no response received).
86
+ *
87
+ * @param error - Any error object
88
+ * @returns true if the error appears to be a network error
89
+ */
90
+ export declare const isNetworkError: (error: unknown) => boolean;
91
+ /**
92
+ * Check if an error is retryable (network errors or 5xx server errors).
93
+ *
94
+ * @param error - Any error object
95
+ * @returns true if the request should be retried
96
+ */
97
+ export declare const isRetryableError: (error: unknown) => boolean;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Shared Utility Functions
3
+ *
4
+ * Re-exports all shared utilities for convenient importing.
5
+ *
6
+ * @module shared/utils
7
+ */
8
+ export { darkenColor, lightenColor, hexToRgb, rgbToHex, withOpacity, isLightColor, getContrastTextColor, } from './colorUtils';
9
+ export { normalizeTheme, normalizeColorScheme, getOppositeTheme, systemPrefersDarkMode, getSystemColorScheme, } from './themeUtils';
10
+ export type { ThemeValue } from './themeUtils';
11
+ export { HttpStatus, getErrorStatus, getErrorMessage, isAlreadyRegisteredError, isUnauthorizedError, isForbiddenError, isNotFoundError, isRateLimitError, isServerError, isNetworkError, isRetryableError, } from './errorUtils';
12
+ export { DEFAULT_CIRCUIT_BREAKER_CONFIG, createCircuitBreakerState, calculateBackoffInterval, recordFailure, recordSuccess, shouldAllowRequest, delay, withRetry, } from './networkUtils';
13
+ export type { CircuitBreakerState, CircuitBreakerConfig, } from './networkUtils';
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Network Utility Functions
3
+ *
4
+ * Consolidated network utilities including circuit breaker pattern
5
+ * and exponential backoff for resilient API calls.
6
+ *
7
+ * @module shared/utils/networkUtils
8
+ */
9
+ /**
10
+ * State for circuit breaker pattern.
11
+ */
12
+ export interface CircuitBreakerState {
13
+ /** Number of consecutive failures */
14
+ consecutiveFailures: number;
15
+ /** Current interval between retries (ms) */
16
+ currentInterval: number;
17
+ /** Base interval for retries (ms) */
18
+ baseInterval: number;
19
+ /** Maximum interval cap (ms) */
20
+ maxInterval: number;
21
+ /** Number of failures before circuit opens */
22
+ maxFailures: number;
23
+ /** Whether the circuit is currently open (blocking requests) */
24
+ isOpen?: boolean;
25
+ /** Timestamp when circuit was opened */
26
+ openedAt?: number;
27
+ }
28
+ /**
29
+ * Configuration for circuit breaker.
30
+ */
31
+ export interface CircuitBreakerConfig {
32
+ /** Base interval between retries in milliseconds. Default: 10000 (10s) */
33
+ baseInterval?: number;
34
+ /** Maximum interval cap in milliseconds. Default: 60000 (60s) */
35
+ maxInterval?: number;
36
+ /** Number of consecutive failures before opening circuit. Default: 5 */
37
+ maxFailures?: number;
38
+ /** Time to wait before attempting recovery in milliseconds. Default: 30000 (30s) */
39
+ recoveryTimeout?: number;
40
+ }
41
+ /**
42
+ * Default circuit breaker configuration.
43
+ */
44
+ export declare const DEFAULT_CIRCUIT_BREAKER_CONFIG: Required<CircuitBreakerConfig>;
45
+ /**
46
+ * Creates initial circuit breaker state.
47
+ *
48
+ * @param config - Optional custom configuration
49
+ * @returns Initial circuit breaker state
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * const state = createCircuitBreakerState({ maxFailures: 3 });
54
+ * ```
55
+ */
56
+ export declare const createCircuitBreakerState: (config?: CircuitBreakerConfig) => CircuitBreakerState;
57
+ /**
58
+ * Calculates next interval using exponential backoff.
59
+ *
60
+ * @param state - Current circuit breaker state
61
+ * @returns Next interval in milliseconds
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * const nextInterval = calculateBackoffInterval(state);
66
+ * await delay(nextInterval);
67
+ * ```
68
+ */
69
+ export declare const calculateBackoffInterval: (state: CircuitBreakerState) => number;
70
+ /**
71
+ * Records a failure and updates circuit breaker state.
72
+ *
73
+ * @param state - Current circuit breaker state
74
+ * @returns Updated state after recording failure
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * try {
79
+ * await apiCall();
80
+ * state = recordSuccess(state);
81
+ * } catch (error) {
82
+ * state = recordFailure(state);
83
+ * }
84
+ * ```
85
+ */
86
+ export declare const recordFailure: (state: CircuitBreakerState) => CircuitBreakerState;
87
+ /**
88
+ * Records a success and resets circuit breaker state.
89
+ *
90
+ * @param state - Current circuit breaker state
91
+ * @returns Reset state after successful request
92
+ */
93
+ export declare const recordSuccess: (state: CircuitBreakerState) => CircuitBreakerState;
94
+ /**
95
+ * Checks if the circuit breaker should allow a request.
96
+ *
97
+ * When the circuit is open, it will only allow requests after
98
+ * the recovery timeout has passed (half-open state).
99
+ *
100
+ * @param state - Current circuit breaker state
101
+ * @param recoveryTimeout - Time to wait before allowing recovery attempts
102
+ * @returns true if request should be allowed
103
+ */
104
+ export declare const shouldAllowRequest: (state: CircuitBreakerState, recoveryTimeout?: number) => boolean;
105
+ /**
106
+ * Delays execution for a specified duration.
107
+ *
108
+ * @param ms - Milliseconds to delay
109
+ * @returns Promise that resolves after the delay
110
+ *
111
+ * @example
112
+ * ```ts
113
+ * await delay(1000); // Wait 1 second
114
+ * ```
115
+ */
116
+ export declare const delay: (ms: number) => Promise<void>;
117
+ /**
118
+ * Executes a function with exponential backoff retry.
119
+ *
120
+ * @param fn - Async function to execute
121
+ * @param options - Retry options
122
+ * @returns Result of the function
123
+ * @throws Last error if all retries fail
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * const result = await withRetry(
128
+ * () => fetchData(),
129
+ * { maxRetries: 3, baseDelay: 1000 }
130
+ * );
131
+ * ```
132
+ */
133
+ export declare const withRetry: <T>(fn: () => Promise<T>, options?: {
134
+ maxRetries?: number;
135
+ baseDelay?: number;
136
+ maxDelay?: number;
137
+ shouldRetry?: (error: unknown) => boolean;
138
+ onRetry?: (error: unknown, attempt: number) => void;
139
+ }) => Promise<T>;
@@ -0,0 +1,90 @@
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
+ * Valid theme values in the Oxy ecosystem.
11
+ */
12
+ export type ThemeValue = 'light' | 'dark';
13
+ /**
14
+ * Normalizes a theme value to ensure it's always 'light' or 'dark'.
15
+ *
16
+ * @param theme - Theme value (may be 'light' | 'dark' | string | undefined)
17
+ * @returns Normalized 'light' | 'dark' theme (defaults to 'light')
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * normalizeTheme('dark'); // 'dark'
22
+ * normalizeTheme('light'); // 'light'
23
+ * normalizeTheme('unknown'); // 'light'
24
+ * normalizeTheme(undefined); // 'light'
25
+ * normalizeTheme(null); // 'light'
26
+ * ```
27
+ */
28
+ export declare const normalizeTheme: (theme?: string | null) => ThemeValue;
29
+ /**
30
+ * Normalizes a color scheme value with optional fallback chain.
31
+ *
32
+ * Handles null/undefined cases from React Native's useColorScheme() hook
33
+ * with a proper fallback chain.
34
+ *
35
+ * @param colorScheme - The color scheme from useColorScheme() hook (may be null/undefined)
36
+ * @param theme - Optional theme prop as fallback
37
+ * @returns Normalized 'light' | 'dark' color scheme
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * // In a React Native component:
42
+ * const systemScheme = useColorScheme(); // might be null
43
+ * const colorScheme = normalizeColorScheme(systemScheme, props.theme);
44
+ *
45
+ * normalizeColorScheme('dark', 'light'); // 'dark'
46
+ * normalizeColorScheme(null, 'dark'); // 'dark'
47
+ * normalizeColorScheme(undefined, undefined); // 'light'
48
+ * ```
49
+ */
50
+ export declare const normalizeColorScheme: (colorScheme?: string | null, theme?: string) => ThemeValue;
51
+ /**
52
+ * Gets the opposite theme value.
53
+ *
54
+ * @param theme - Current theme value
55
+ * @returns The opposite theme ('light' → 'dark', 'dark' → 'light')
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * getOppositeTheme('light'); // 'dark'
60
+ * getOppositeTheme('dark'); // 'light'
61
+ * ```
62
+ */
63
+ export declare const getOppositeTheme: (theme: ThemeValue) => ThemeValue;
64
+ /**
65
+ * Checks if the system prefers dark mode.
66
+ *
67
+ * This function only works in browser environments.
68
+ * Returns false in non-browser environments (Node.js, React Native).
69
+ *
70
+ * @returns true if system prefers dark mode, false otherwise
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * if (systemPrefersDarkMode()) {
75
+ * setTheme('dark');
76
+ * }
77
+ * ```
78
+ */
79
+ export declare const systemPrefersDarkMode: () => boolean;
80
+ /**
81
+ * Gets the system's preferred color scheme.
82
+ *
83
+ * @returns 'dark' if system prefers dark mode, 'light' otherwise
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const theme = getSystemColorScheme();
88
+ * ```
89
+ */
90
+ export declare const getSystemColorScheme: () => ThemeValue;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * THE enumeration of `OxyServices` GET-cache keys that serve the ACCOUNT FOREST
3
+ * — the caller's accessible accounts, as lists and as individual detail rows —
4
+ * and the one sweep that clears them.
5
+ *
6
+ * WHY THIS IS NOT A METHOD ON THE ACCOUNTS MIXIN
7
+ * ---------------------------------------------
8
+ * `AccountNode.account` is a whole `User`, so a forest read embeds the very
9
+ * profile the identity reads serve. That makes an IDENTITY write a writer of
10
+ * these keys too: `updateProfile` edits the caller's own personal account,
11
+ * which is a row in `GET /accounts` and is its own `GET /accounts/<id>`. Leave
12
+ * those cached and the account switcher keeps drawing the pre-edit name and
13
+ * picture for the full TTL, against a perfectly healthy server.
14
+ *
15
+ * The mixins compose into one class at runtime but are typed one at a time, so
16
+ * the user mixin cannot call a method the accounts mixin owns. The key list
17
+ * therefore lives here, once, and every writer calls {@link
18
+ * evictOxyAccountForestCache} — exactly like the identity key list in
19
+ * `identityCacheSweep`, which the accounts mixin already calls for the
20
+ * mirror-image case (an account write staling the identity reads). The
21
+ * alternative — a second hand-written copy of these keys in the other mixin —
22
+ * is the drift that shipped the two stale-profile bugs `identityCacheSweep`
23
+ * documents.
24
+ *
25
+ * WHY THE LIST NEEDS A PREFIX AND THE DETAIL DOES NOT
26
+ * --------------------------------------------------
27
+ * `listAccounts({tree?})` keys the flat list as `GET:/accounts` and every
28
+ * option variant as `GET:/accounts?<query>` (the query string is part of the
29
+ * URL, hence of the key), and a writer cannot enumerate which variants a caller
30
+ * has read. The detail key, by contrast, is derivable from the account id the
31
+ * writer already holds.
32
+ *
33
+ * The `GET:/accounts?` prefix matches ONLY the query-string list variants —
34
+ * never `GET:/accounts/<id>` or its `…/members`, `…/credentials`, `…/children`
35
+ * sub-resources, which are the accounts mixin's own business and stay there.
36
+ */
37
+ import type { OxyIdentityCacheEvictor } from './identityCacheSweep';
38
+ /**
39
+ * The cache-eviction surface of an `OxyServices` instance. Reused from
40
+ * `identityCacheSweep` rather than re-declared: it is the SDK's one published
41
+ * name for these two methods, and a second identical interface would be one
42
+ * more shape to keep in step.
43
+ */
44
+ export type OxyAccountCacheEvictor = OxyIdentityCacheEvictor;
45
+ /** The cache key `listAccounts()` reads under with no options. */
46
+ export declare const OXY_ACCOUNT_LIST_CACHE_KEY = "GET:/accounts";
47
+ /**
48
+ * The prefix covering every option-carrying `listAccounts(opts)` variant
49
+ * (`?tree=true`, …), none of which a writer can enumerate.
50
+ */
51
+ export declare const OXY_ACCOUNT_LIST_CACHE_QUERY_PREFIX = "GET:/accounts?";
52
+ /**
53
+ * Prefix covering every per-account sub-resource cache key
54
+ * (`GET:/accounts/<id>`, `…/members`, `…/credentials`, `…/children`). A
55
+ * membership mutation on an ancestor must sweep ALL of these, not only the
56
+ * account named in the path: descendant member rosters embed inherited rows
57
+ * resolved from that ancestor, and the writer cannot enumerate which descendant
58
+ * ids a caller has already read. The trailing slash deliberately excludes the
59
+ * forest list keys (`GET:/accounts`, `GET:/accounts?…`) documented above.
60
+ */
61
+ export declare const OXY_ACCOUNT_PER_ACCOUNT_CACHE_PREFIX = "GET:/accounts/";
62
+ /**
63
+ * Build the exact cache key `getAccount(accountId)` reads under.
64
+ */
65
+ export declare function oxyAccountDetailCacheKey(accountId: string): string;
66
+ /**
67
+ * Sweep an `OxyServices` GET response cache of the account forest.
68
+ *
69
+ * @param oxy - Anything exposing the SDK's two eviction methods.
70
+ * @param accountId - The account whose detail row to drop as well. Optional: a
71
+ * writer that changed the SHAPE of the forest rather than one
72
+ * account in it (create, archive, ownership transfer) has no
73
+ * detail row to name, and clears only the lists.
74
+ */
75
+ export declare function evictOxyAccountForestCache(oxy: OxyAccountCacheEvictor, accountId?: string): void;
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Shared account types and pure helper functions.
3
+ * Used by the @oxy.so/services account stores (Expo/RN and RN-Web).
4
+ */
5
+ export interface QuickAccount {
6
+ sessionId: string;
7
+ userId?: string;
8
+ username: string;
9
+ displayName: string;
10
+ avatar?: string;
11
+ avatarUrl?: string;
12
+ /**
13
+ * Device-local account slot index, 0..N-1 (Google-style multi-account).
14
+ * Optional so that pre-multi-account QuickAccounts (sessionId-only) remain
15
+ * valid; the device session set populates it where available.
16
+ */
17
+ authuser?: number;
18
+ /**
19
+ * Account's preferred Bloom color preset (e.g. `"blue"`, `"oxy"`). Drives
20
+ * per-account theming in the account chooser. `null` / `undefined` means
21
+ * the account has no preference and the base theme should be used.
22
+ */
23
+ color?: string | null;
24
+ }
25
+ /** Minimal user shape accepted by display-name helpers. Avoids importing the full User type. */
26
+ export interface DisplayNameUserShape {
27
+ name?: string | {
28
+ displayName?: string;
29
+ first?: string;
30
+ last?: string;
31
+ full?: string;
32
+ [key: string]: unknown;
33
+ };
34
+ /** Pre-normalized account-row display name, not the API User DTO field. */
35
+ displayName?: string;
36
+ username?: string;
37
+ publicKey?: string;
38
+ }
39
+ /**
40
+ * Truncate a long public key for display, e.g. `0x12345678…`.
41
+ * Falls back to the raw key if it's too short to truncate.
42
+ */
43
+ export declare const formatPublicKeyHandle: (publicKey: string) => string;
44
+ /**
45
+ * Resolve a friendly display name for a user.
46
+ *
47
+ * Order of preference:
48
+ * 1. `name.displayName` from the API user contract.
49
+ * 2. `name.full`, or composed `name.first name.last` for local unsaved shapes.
50
+ * 3. `name` when passed as a plain string by local non-DTO call sites.
51
+ * 4. pre-normalized account-row `displayName`.
52
+ * 5. `username`
53
+ * 6. `Account 0x12345678…` (derived from publicKey, when present)
54
+ * 7. Translated fallback (e.g. "Unnamed")
55
+ *
56
+ * The translation key `common.unnamed` is used for the final fallback. If the
57
+ * caller does not pass a locale, the default English translation is used.
58
+ */
59
+ export declare const getAccountDisplayName: (user: DisplayNameUserShape | null | undefined, locale?: string) => string;
60
+ /**
61
+ * Resolve a `@handle` style identifier for a user.
62
+ *
63
+ * Returns the bare username when present (without the `@`), otherwise a
64
+ * truncated public-key handle (`0x12345678…`), or `undefined` when neither is
65
+ * available — callers can decide whether to hide the line entirely.
66
+ */
67
+ export declare const getAccountFallbackHandle: (user: DisplayNameUserShape | null | undefined) => string | undefined;
68
+ /**
69
+ * Build an ordered array of QuickAccounts from a map and order list.
70
+ */
71
+ export declare const buildAccountsArray: (accounts: Record<string, QuickAccount>, order: string[]) => QuickAccount[];
72
+ /**
73
+ * Create a QuickAccount from user data returned by the API.
74
+ *
75
+ * @param sessionId - Session identifier
76
+ * @param userData - Raw user object from the API
77
+ * @param existingAccount - Previously cached account (to preserve avatarUrl if unchanged)
78
+ * @param getFileDownloadUrl - Function to generate avatar download URL from file ID
79
+ */
80
+ export declare const createQuickAccount: (sessionId: string, userData: {
81
+ name?: string | {
82
+ displayName?: string;
83
+ full?: string;
84
+ first?: string;
85
+ last?: string;
86
+ };
87
+ username?: string;
88
+ publicKey?: string;
89
+ id?: string;
90
+ _id?: {
91
+ toString(): string;
92
+ } | string;
93
+ avatar?: string | null;
94
+ }, existingAccount?: QuickAccount, getFileDownloadUrl?: (fileId: string, variant: string) => string) => QuickAccount;
95
+ /**
96
+ * Return the account's preferred Bloom color preset, or `null` if it has no
97
+ * preference. Centralises the `color ?? null` normalisation so consumers can
98
+ * drive per-account theming without duplicating the nullish-handling.
99
+ */
100
+ export declare const getAccountColor: (account: QuickAccount) => string | null;
@@ -0,0 +1,2 @@
1
+ /** @deprecated Import from `@oxy.so/telemetry/browser` in new code. */
2
+ export { getBrowserActivityIdHeader } from '@oxy.so/telemetry/browser';