@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,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OxyServicesDevicesMixin = OxyServicesDevicesMixin;
4
+ function OxyServicesDevicesMixin(Base) {
5
+ return class extends Base {
6
+ constructor(...args) {
7
+ super(...args);
8
+ }
9
+ /**
10
+ * Register a new device
11
+ * @param deviceData - Device information
12
+ * @returns Registered device object
13
+ */
14
+ async registerDevice(deviceData) {
15
+ try {
16
+ return await this.makeRequest('POST', '/devices', deviceData, { cache: false });
17
+ }
18
+ catch (error) {
19
+ throw this.handleError(error);
20
+ }
21
+ }
22
+ /**
23
+ * Get all devices for the current user
24
+ * @returns Array of user devices
25
+ */
26
+ async getUserDevices() {
27
+ try {
28
+ return await this.makeRequest('GET', '/devices', undefined, {
29
+ cache: false, // Don't cache device list - always get fresh data
30
+ });
31
+ }
32
+ catch (error) {
33
+ throw this.handleError(error);
34
+ }
35
+ }
36
+ /**
37
+ * Remove a device
38
+ * @param deviceId - The device ID to remove
39
+ */
40
+ async removeDevice(deviceId) {
41
+ try {
42
+ await this.makeRequest('DELETE', `/devices/${deviceId}`, undefined, { cache: false });
43
+ }
44
+ catch (error) {
45
+ throw this.handleError(error);
46
+ }
47
+ }
48
+ /**
49
+ * Get device sessions for a given session ID
50
+ * Note: Not cached by default to ensure fresh data
51
+ * @param sessionId - The session ID
52
+ * @returns Array of device sessions
53
+ */
54
+ async getDeviceSessions(sessionId) {
55
+ try {
56
+ // Use makeRequest for consistent error handling and optional caching
57
+ // Cache disabled by default to ensure fresh session data
58
+ return await this.makeRequest('GET', `/session/device/sessions/${sessionId}`, undefined, {
59
+ cache: false, // Don't cache sessions - always get fresh data
60
+ deduplicate: true, // Deduplicate concurrent requests for same sessionId
61
+ });
62
+ }
63
+ catch (error) {
64
+ throw this.handleError(error);
65
+ }
66
+ }
67
+ /**
68
+ * Logout all device sessions
69
+ * @param sessionId - The session ID
70
+ * @param deviceId - Optional device ID to target
71
+ * @param excludeCurrent - Whether to exclude the current session
72
+ * @returns Logout result
73
+ */
74
+ async logoutAllDeviceSessions(sessionId, deviceId, excludeCurrent) {
75
+ try {
76
+ const urlParams = {};
77
+ if (deviceId)
78
+ urlParams.deviceId = deviceId;
79
+ if (excludeCurrent)
80
+ urlParams.excludeCurrent = 'true';
81
+ return await this.makeRequest('POST', `/session/device/logout-all/${sessionId}`, urlParams, { cache: false });
82
+ }
83
+ catch (error) {
84
+ throw this.handleError(error);
85
+ }
86
+ }
87
+ /**
88
+ * Update device name
89
+ * @param sessionId - The session ID
90
+ * @param deviceName - New device name
91
+ * @returns Updated device object
92
+ */
93
+ async updateDeviceName(sessionId, deviceName) {
94
+ try {
95
+ return await this.makeRequest('PUT', `/session/device/name/${sessionId}`, { deviceName }, { cache: false });
96
+ }
97
+ catch (error) {
98
+ throw this.handleError(error);
99
+ }
100
+ }
101
+ /**
102
+ * Get security information
103
+ * @returns Security information object
104
+ */
105
+ async getSecurityInfo() {
106
+ try {
107
+ return await this.makeRequest('GET', '/devices/security', undefined, {
108
+ cache: false,
109
+ });
110
+ }
111
+ catch (error) {
112
+ throw this.handleError(error);
113
+ }
114
+ }
115
+ };
116
+ }
@@ -0,0 +1,335 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OxyServicesFeaturesMixin = OxyServicesFeaturesMixin;
4
+ const mixinHelpers_1 = require("./mixinHelpers");
5
+ function OxyServicesFeaturesMixin(Base) {
6
+ return class extends Base {
7
+ constructor(...args) {
8
+ super(...args);
9
+ }
10
+ // ==================
11
+ // FEEDBACK METHODS
12
+ // ==================
13
+ /**
14
+ * Submit user feedback
15
+ */
16
+ async submitFeedback(payload) {
17
+ try {
18
+ return await this.makeRequest('POST', '/feedback', payload, {
19
+ cache: false,
20
+ });
21
+ }
22
+ catch (error) {
23
+ throw this.handleError(error);
24
+ }
25
+ }
26
+ // ==================
27
+ // SUBSCRIPTION METHODS
28
+ // ==================
29
+ /**
30
+ * Get available subscription plans
31
+ */
32
+ async getSubscriptionPlans() {
33
+ try {
34
+ return await this.makeRequest('GET', '/subscriptions/plans', undefined, {
35
+ cache: true,
36
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.LONG,
37
+ });
38
+ }
39
+ catch (error) {
40
+ throw this.handleError(error);
41
+ }
42
+ }
43
+ /**
44
+ * Get individual purchasable features
45
+ */
46
+ async getIndividualFeatures() {
47
+ try {
48
+ return await this.makeRequest('GET', '/subscriptions/features', undefined, {
49
+ cache: true,
50
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.LONG,
51
+ });
52
+ }
53
+ catch (error) {
54
+ throw this.handleError(error);
55
+ }
56
+ }
57
+ /**
58
+ * Subscribe to a plan
59
+ */
60
+ async subscribe(planId, paymentMethodId) {
61
+ return this.withAuthRetry(async () => {
62
+ const result = await this.makeRequest('POST', '/subscriptions/subscribe', {
63
+ planId,
64
+ paymentMethodId,
65
+ }, { cache: false });
66
+ // The current subscription changed — bust its cached read so
67
+ // `getCurrentSubscription()` reflects the new plan immediately.
68
+ this.clearCacheEntry('GET:/subscriptions/current');
69
+ return result;
70
+ }, 'subscribe');
71
+ }
72
+ /**
73
+ * Subscribe to an individual feature
74
+ */
75
+ async subscribeToFeature(featureId, paymentMethodId) {
76
+ return this.withAuthRetry(async () => {
77
+ const result = await this.makeRequest('POST', '/subscriptions/features/subscribe', {
78
+ featureId,
79
+ paymentMethodId,
80
+ }, { cache: false });
81
+ this.clearCacheEntry('GET:/subscriptions/current');
82
+ return result;
83
+ }, 'subscribeToFeature');
84
+ }
85
+ /**
86
+ * Cancel subscription
87
+ */
88
+ async cancelSubscription(subscriptionId) {
89
+ return this.withAuthRetry(async () => {
90
+ await this.makeRequest('POST', `/subscriptions/${subscriptionId}/cancel`, undefined, {
91
+ cache: false,
92
+ });
93
+ this.clearCacheEntry('GET:/subscriptions/current');
94
+ }, 'cancelSubscription');
95
+ }
96
+ /**
97
+ * Reactivate subscription
98
+ */
99
+ async reactivateSubscription(subscriptionId) {
100
+ return this.withAuthRetry(async () => {
101
+ await this.makeRequest('POST', `/subscriptions/${subscriptionId}/reactivate`, undefined, {
102
+ cache: false,
103
+ });
104
+ this.clearCacheEntry('GET:/subscriptions/current');
105
+ }, 'reactivateSubscription');
106
+ }
107
+ /**
108
+ * Get current user's subscription
109
+ */
110
+ async getCurrentSubscription() {
111
+ return this.withAuthRetry(async () => {
112
+ try {
113
+ return await this.makeRequest('GET', '/subscriptions/current', undefined, {
114
+ cache: true,
115
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.SHORT,
116
+ });
117
+ }
118
+ catch (error) {
119
+ if (error.status === 404)
120
+ return null;
121
+ throw error;
122
+ }
123
+ }, 'getCurrentSubscription');
124
+ }
125
+ // ==================
126
+ // SAVES/COLLECTIONS
127
+ // ==================
128
+ /**
129
+ * Get user's saved items
130
+ */
131
+ async getSavedItems(userId) {
132
+ return this.withAuthRetry(async () => {
133
+ const endpoint = userId ? `/users/${userId}/saves` : '/saves';
134
+ return await this.makeRequest('GET', endpoint, undefined, {
135
+ cache: true,
136
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.SHORT,
137
+ });
138
+ }, 'getSavedItems');
139
+ }
140
+ /**
141
+ * Get user's collections
142
+ */
143
+ async getCollections(userId) {
144
+ return this.withAuthRetry(async () => {
145
+ const endpoint = userId ? `/users/${userId}/collections` : '/collections';
146
+ return await this.makeRequest('GET', endpoint, undefined, {
147
+ cache: true,
148
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.SHORT,
149
+ });
150
+ }, 'getCollections');
151
+ }
152
+ /**
153
+ * Save an item.
154
+ *
155
+ * Busts the cached own saved-items list (`GET /saves`, ~short TTL) so a
156
+ * follow-up `getSavedItems()` observes the new item. The `userId`-scoped
157
+ * variant (`/users/<id>/saves`) is another user's list and is not
158
+ * affected by the caller's own save.
159
+ */
160
+ async saveItem(itemId, itemType, collectionId) {
161
+ return this.withAuthRetry(async () => {
162
+ const result = await this.makeRequest('POST', '/saves', {
163
+ itemId,
164
+ itemType,
165
+ collectionId,
166
+ }, { cache: false });
167
+ this.clearCacheEntry('GET:/saves');
168
+ return result;
169
+ }, 'saveItem');
170
+ }
171
+ /**
172
+ * Remove an item from saves.
173
+ *
174
+ * Busts the cached own saved-items list so the removed item is gone on
175
+ * the next read (see `saveItem`).
176
+ */
177
+ async removeSavedItem(saveId) {
178
+ return this.withAuthRetry(async () => {
179
+ await this.makeRequest('DELETE', `/saves/${saveId}`, undefined, { cache: false });
180
+ this.clearCacheEntry('GET:/saves');
181
+ }, 'removeSavedItem');
182
+ }
183
+ /**
184
+ * Create a collection.
185
+ *
186
+ * Busts the cached own collections list (`GET /collections`) so the new
187
+ * collection appears on the next read.
188
+ */
189
+ async createCollection(name, description) {
190
+ return this.withAuthRetry(async () => {
191
+ const result = await this.makeRequest('POST', '/collections', {
192
+ name,
193
+ description,
194
+ }, { cache: false });
195
+ this.clearCacheEntry('GET:/collections');
196
+ return result;
197
+ }, 'createCollection');
198
+ }
199
+ /**
200
+ * Delete a collection.
201
+ *
202
+ * Busts the cached own collections list so the deleted collection is
203
+ * gone on the next read (see `createCollection`).
204
+ */
205
+ async deleteCollection(collectionId) {
206
+ return this.withAuthRetry(async () => {
207
+ await this.makeRequest('DELETE', `/collections/${collectionId}`, undefined, { cache: false });
208
+ this.clearCacheEntry('GET:/collections');
209
+ }, 'deleteCollection');
210
+ }
211
+ // ==================
212
+ // USER STATS
213
+ // ==================
214
+ /**
215
+ * Get user statistics
216
+ */
217
+ async getUserStats(userId) {
218
+ try {
219
+ return await this.makeRequest('GET', `/users/${userId}/stats`, undefined, {
220
+ cache: true,
221
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.MEDIUM,
222
+ });
223
+ }
224
+ catch (error) {
225
+ throw this.handleError(error);
226
+ }
227
+ }
228
+ // ==================
229
+ // HISTORY
230
+ // ==================
231
+ /**
232
+ * Get user history
233
+ */
234
+ async getUserHistory(userId, limit, offset) {
235
+ return this.withAuthRetry(async () => {
236
+ const params = {};
237
+ if (limit)
238
+ params.limit = limit;
239
+ if (offset)
240
+ params.offset = offset;
241
+ const endpoint = userId ? `/users/${userId}/history` : '/history';
242
+ return await this.makeRequest('GET', endpoint, params, {
243
+ cache: true,
244
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.SHORT,
245
+ });
246
+ }, 'getUserHistory');
247
+ }
248
+ /**
249
+ * Clear user history.
250
+ *
251
+ * `getUserHistory` caches per (limit, offset) page, so its cache key
252
+ * carries serialized params (`GET:/history` and `GET:/history:<params>`).
253
+ * A prefix sweep busts every cached page of the own history at once.
254
+ */
255
+ async clearUserHistory() {
256
+ return this.withAuthRetry(async () => {
257
+ await this.makeRequest('DELETE', '/history', undefined, { cache: false });
258
+ this.clearCacheByPrefix('GET:/history');
259
+ }, 'clearUserHistory');
260
+ }
261
+ /**
262
+ * Delete a history item.
263
+ *
264
+ * Busts every cached page of the own history (see `clearUserHistory`)
265
+ * so the removed item no longer appears on the next read.
266
+ */
267
+ async deleteHistoryItem(itemId) {
268
+ return this.withAuthRetry(async () => {
269
+ await this.makeRequest('DELETE', `/history/${itemId}`, undefined, { cache: false });
270
+ this.clearCacheByPrefix('GET:/history');
271
+ }, 'deleteHistoryItem');
272
+ }
273
+ // ==================
274
+ // FAQ
275
+ // ==================
276
+ /**
277
+ * Get FAQs
278
+ */
279
+ async getFAQs(category) {
280
+ try {
281
+ const params = category ? { category } : undefined;
282
+ return await this.makeRequest('GET', '/faqs', params, {
283
+ cache: true,
284
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.LONG,
285
+ });
286
+ }
287
+ catch (error) {
288
+ throw this.handleError(error);
289
+ }
290
+ }
291
+ /**
292
+ * Search FAQs
293
+ */
294
+ async searchFAQs(query) {
295
+ try {
296
+ return await this.makeRequest('GET', '/faqs/search', { query }, {
297
+ cache: true,
298
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.MEDIUM,
299
+ });
300
+ }
301
+ catch (error) {
302
+ throw this.handleError(error);
303
+ }
304
+ }
305
+ // ==================
306
+ // ACHIEVEMENTS
307
+ // ==================
308
+ /**
309
+ * Get user achievements
310
+ */
311
+ async getUserAchievements(userId) {
312
+ return this.withAuthRetry(async () => {
313
+ const endpoint = userId ? `/users/${userId}/achievements` : '/achievements';
314
+ return await this.makeRequest('GET', endpoint, undefined, {
315
+ cache: true,
316
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.MEDIUM,
317
+ });
318
+ }, 'getUserAchievements');
319
+ }
320
+ /**
321
+ * Get all available achievements
322
+ */
323
+ async getAllAchievements() {
324
+ try {
325
+ return await this.makeRequest('GET', '/achievements/all', undefined, {
326
+ cache: true,
327
+ cacheTTL: mixinHelpers_1.CACHE_TIMES.LONG,
328
+ });
329
+ }
330
+ catch (error) {
331
+ throw this.handleError(error);
332
+ }
333
+ }
334
+ };
335
+ }
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ /**
3
+ * Follow Graph Mixin (`/v2/follows`)
4
+ *
5
+ * The user-owned follow graph: one relationship per user and target, shared by
6
+ * every application, with per-application context on top. This is the SDK half
7
+ * of #809 and the replacement for the per-app follow endpoints each application
8
+ * grew for itself.
9
+ *
10
+ * ## Why this is not `followUser` with more parameters
11
+ *
12
+ * `followUser` answers "does A follow B" and nothing else. This answers "what
13
+ * does this user follow, anywhere, and which applications act on it" — a
14
+ * different question with a different owner. The legacy methods stay for the
15
+ * Mongo-backed social graph they were written for; new kinds (topics, stores,
16
+ * artists, channels) come here, and users will migrate behind an adapter rather
17
+ * than through a flag day.
18
+ *
19
+ * ## Caching
20
+ *
21
+ * Every method is `cache: false`. A follow status is exactly the shape that
22
+ * must never be served stale: the SDK's GET cache is identity-scoped but
23
+ * time-based, and a status cached across a write is the "follow reverts after
24
+ * navigating away and back" bug — which the legacy `followUser` had to fix with
25
+ * explicit invalidation. Not caching at this layer means an app's own store
26
+ * (React Query, Zustand) is the single cache authority, which is the rule the
27
+ * ecosystem already follows for anything written and read in the same session.
28
+ */
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.OxyServicesFollowGraphMixin = OxyServicesFollowGraphMixin;
31
+ const apiUtils_1 = require("../utils/apiUtils");
32
+ function OxyServicesFollowGraphMixin(Base) {
33
+ return class extends Base {
34
+ constructor(...args) {
35
+ super(...args);
36
+ }
37
+ /**
38
+ * Follow a target. Idempotent — following something already followed
39
+ * returns the same relationship with `created: false`.
40
+ *
41
+ * The follower and the acting application are BOTH derived server-side from
42
+ * the session. There is deliberately no parameter for either: a client that
43
+ * could name them could forge a follow on another user's behalf, or record
44
+ * one as coming from an application it is not.
45
+ *
46
+ * @param targetId - The registered target's id, not its URI. Registration is
47
+ * a separate operation precisely so following cannot silently create
48
+ * targets — a typo would otherwise become a permanent row nobody follows.
49
+ * @param options.expiresIn - Seconds until the follow lapses on its own. For
50
+ * an event, a trial, a topic followed for a week. The server bounds it.
51
+ */
52
+ async followTarget(targetId, options) {
53
+ try {
54
+ return await this.makeRequest('PUT', `/v2/follows/${encodeURIComponent(targetId)}`, options?.expiresIn !== undefined ? { expiresIn: options.expiresIn } : {}, { cache: false });
55
+ }
56
+ catch (error) {
57
+ throw this.handleError(error);
58
+ }
59
+ }
60
+ /**
61
+ * Unfollow everywhere.
62
+ *
63
+ * There is no "unfollow here" — that is `setFollowApplicationMode(...,
64
+ * 'disabled')`, and keeping the two distinct is the point of the design. An
65
+ * application that quietly turned a global unfollow into a local one would
66
+ * leave the user believing they had stopped following something they still
67
+ * follow everywhere else.
68
+ *
69
+ * Idempotent: `removed: false` when it was already gone, because the state
70
+ * the caller asked for is the state that holds.
71
+ */
72
+ async unfollowTarget(relationshipId) {
73
+ try {
74
+ return await this.makeRequest('DELETE', `/v2/follows/${encodeURIComponent(relationshipId)}`, undefined, { cache: false });
75
+ }
76
+ catch (error) {
77
+ throw this.handleError(error);
78
+ }
79
+ }
80
+ /**
81
+ * The three-part status: globally, in this application, and in effect.
82
+ *
83
+ * Render `effectiveState` on the button and keep the other two for the
84
+ * explanation. A UI that collapses them cannot tell the user why a follow
85
+ * they can see in their list is not showing up in this app's feed.
86
+ */
87
+ async getFollowTargetStatus(targetId) {
88
+ try {
89
+ return await this.makeRequest('GET', `/v2/follows/${encodeURIComponent(targetId)}/status`, undefined, { cache: false });
90
+ }
91
+ catch (error) {
92
+ throw this.handleError(error);
93
+ }
94
+ }
95
+ /**
96
+ * Turn a relationship off, or back on, in ONE application.
97
+ *
98
+ * Omit `applicationId` and it applies to the calling application, which is
99
+ * the only form an ordinary app should ever need. Naming a DIFFERENT
100
+ * application requires `follows:manage` server-side — acting on another
101
+ * app's behalf is exactly the cross-application authority this design
102
+ * otherwise refuses, so it is a distinct permission and not a parameter an
103
+ * app happens to fill in.
104
+ */
105
+ async setFollowApplicationMode(relationshipId, mode, applicationId) {
106
+ try {
107
+ return await this.makeRequest('PUT', `/v2/follows/${encodeURIComponent(relationshipId)}/context`, { mode, ...(applicationId ? { applicationId } : {}) }, { cache: false });
108
+ }
109
+ catch (error) {
110
+ throw this.handleError(error);
111
+ }
112
+ }
113
+ /**
114
+ * Drop the override so this application follows the global relationship
115
+ * again. Distinct from setting `enabled`: inheriting means a later global
116
+ * change takes effect here, and an explicit `enabled` means it does not.
117
+ */
118
+ async restoreFollowInheritance(relationshipId, applicationId) {
119
+ try {
120
+ const path = (0, apiUtils_1.buildUrl)(`/v2/follows/${encodeURIComponent(relationshipId)}/context`, applicationId ? { applicationId } : {});
121
+ return await this.makeRequest('DELETE', path, undefined, { cache: false });
122
+ }
123
+ catch (error) {
124
+ throw this.handleError(error);
125
+ }
126
+ }
127
+ /**
128
+ * Resolve a target by canonical URI, registering it the first time anyone
129
+ * asks. The call an application makes on the way into a screen, before it
130
+ * can render a button.
131
+ *
132
+ * Idempotent on the URI, which is what makes two applications describing
133
+ * the same thing — the same fediverse actor, the same topic — arrive at ONE
134
+ * row, and therefore at one relationship per user rather than one per app.
135
+ *
136
+ * `metadata` is a display snapshot (name, handle, icon) and is refreshed
137
+ * only for the application that provides the target: a second application
138
+ * passing its own idea of the name would make the display flip depending on
139
+ * which app last looked.
140
+ */
141
+ async ensureFollowTarget(input) {
142
+ try {
143
+ return await this.makeRequest('POST', '/v2/follow-targets', input, { cache: false });
144
+ }
145
+ catch (error) {
146
+ throw this.handleError(error);
147
+ }
148
+ }
149
+ /**
150
+ * Claim a namespace for the calling application. First come, and idempotent
151
+ * for the holder — an application that registers on every boot must not
152
+ * fail the second time.
153
+ */
154
+ async claimFollowNamespace(namespace) {
155
+ try {
156
+ return await this.makeRequest('POST', '/v2/follow-targets/namespaces', { namespace }, { cache: false });
157
+ }
158
+ catch (error) {
159
+ throw this.handleError(error);
160
+ }
161
+ }
162
+ /**
163
+ * Release a namespace the calling application holds, when nothing is
164
+ registered inside it yet.
165
+ *
166
+ * Idempotent when the namespace is already unowned (`released: false`).
167
+ * Exists because claims are first-come and registration runs on boot — a
168
+ * development build with the wrong client id can bind a name permanently
169
+ * unless the holder can give it back.
170
+ */
171
+ async releaseFollowNamespace(namespace) {
172
+ try {
173
+ return await this.makeRequest('DELETE', `/v2/follow-targets/namespaces/${encodeURIComponent(namespace)}`, undefined, { cache: false });
174
+ }
175
+ catch (error) {
176
+ throw this.handleError(error);
177
+ }
178
+ }
179
+ /**
180
+ * Declare what following a kind of thing MEANS: the verb clients render,
181
+ * whether reverse lookups are public, whether it federates.
182
+ *
183
+ * Declared once by the application that owns the concept, rather than
184
+ * passed per call site — otherwise two screens of one app can disagree
185
+ * about whether a store is followed or subscribed to.
186
+ */
187
+ async registerFollowKind(input) {
188
+ try {
189
+ return await this.makeRequest('POST', '/v2/follow-targets/kinds', input, {
190
+ cache: false,
191
+ });
192
+ }
193
+ catch (error) {
194
+ throw this.handleError(error);
195
+ }
196
+ }
197
+ /**
198
+ * Everything the signed-in user follows, newest first.
199
+ *
200
+ * Owner-only by construction server-side — there is no parameter naming a
201
+ * user, so this cannot be pointed at somebody else's graph.
202
+ *
203
+ * Paginate by passing back `nextCursor`, never an offset: the list changes
204
+ * while it is being read, and an offset silently skips or repeats rows
205
+ * exactly when it does.
206
+ */
207
+ async listFollows(params) {
208
+ try {
209
+ const path = (0, apiUtils_1.buildUrl)('/v2/me/follows', {
210
+ ...(params?.kind ? { kind: params.kind } : {}),
211
+ ...(params?.cursor ? { cursor: params.cursor } : {}),
212
+ ...(params?.limit ? { limit: params.limit } : {}),
213
+ });
214
+ return await this.makeRequest('GET', path, undefined, { cache: false });
215
+ }
216
+ catch (error) {
217
+ throw this.handleError(error);
218
+ }
219
+ }
220
+ };
221
+ }