@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,88 @@
1
+ import enUS from './locales/en-US.json';
2
+ import esES from './locales/es-ES.json';
3
+ import caES from './locales/ca-ES.json';
4
+ import frFR from './locales/fr-FR.json';
5
+ import deDE from './locales/de-DE.json';
6
+ import itIT from './locales/it-IT.json';
7
+ import ptPT from './locales/pt-PT.json';
8
+ import jaJP from './locales/ja-JP.json';
9
+ import koKR from './locales/ko-KR.json';
10
+ import zhCN from './locales/zh-CN.json';
11
+ import arSA from './locales/ar-SA.json';
12
+ import { getBaseLanguage } from '../utils/languageUtils';
13
+
14
+ export type LocaleDict = Record<string, any>;
15
+
16
+ const DICTS: Record<string, LocaleDict> = {
17
+ 'en': enUS,
18
+ 'en-US': enUS,
19
+ 'es': esES,
20
+ 'es-ES': esES,
21
+ 'ca': caES,
22
+ 'ca-ES': caES,
23
+ 'fr': frFR,
24
+ 'fr-FR': frFR,
25
+ 'de': deDE,
26
+ 'de-DE': deDE,
27
+ 'it': itIT,
28
+ 'it-IT': itIT,
29
+ 'pt': ptPT,
30
+ 'pt-PT': ptPT,
31
+ 'ja': jaJP,
32
+ 'ja-JP': jaJP,
33
+ 'ko': koKR,
34
+ 'ko-KR': koKR,
35
+ 'zh': zhCN,
36
+ 'zh-CN': zhCN,
37
+ 'ar': arSA,
38
+ 'ar-SA': arSA,
39
+ };
40
+
41
+ const FALLBACK = 'en-US';
42
+
43
+ /**
44
+ * Resolve a locale tag to the key of the dictionary that should serve it.
45
+ *
46
+ * Account locales are full BCP-47 tags (e.g. `es-MX`, `pt-BR`, `fr-CA`), but a
47
+ * translation dictionary is shipped per base language. Resolution order:
48
+ * 1. Exact dictionary for the tag (e.g. `es-ES`).
49
+ * 2. Dictionary for the base subtag (e.g. `es-MX` → `es`).
50
+ * 3. The English fallback.
51
+ */
52
+ function resolveLang(locale: string | undefined): string {
53
+ if (locale) {
54
+ if (DICTS[locale]) return locale;
55
+ const base = getBaseLanguage(locale);
56
+ if (DICTS[base]) return base;
57
+ }
58
+ return FALLBACK;
59
+ }
60
+
61
+ function getNested(obj: any, path: string): any {
62
+ return path.split('.').reduce((acc, key) => (acc && acc[key] != null ? acc[key] : undefined), obj);
63
+ }
64
+
65
+ export function translate(locale: string | undefined, key: string, vars?: Record<string, string | number>): string {
66
+ const lang = resolveLang(locale);
67
+ const dict = DICTS[lang] || DICTS[FALLBACK];
68
+ let val = getNested(dict, key);
69
+ // Per-key fallback to the English dictionary when a key is missing from the
70
+ // resolved (non-English) locale. Without this, a key present in en-US but not
71
+ // yet translated in e.g. es-ES would render the raw dotted key to users.
72
+ if (typeof val !== 'string' && lang !== FALLBACK) {
73
+ val = getNested(DICTS[FALLBACK], key);
74
+ }
75
+ if (typeof val !== 'string') return key; // last resort: echo the key when truly absent everywhere
76
+ if (vars) {
77
+ Object.keys(vars).forEach(k => {
78
+ const token = `{{${k}}}`;
79
+ val = val.replaceAll(token, String(vars[k]));
80
+ });
81
+ }
82
+ return val;
83
+ }
84
+
85
+ export function hasKey(locale: string | undefined, key: string): boolean {
86
+ const lang = resolveLang(locale);
87
+ return getNested(DICTS[lang], key) != null || getNested(DICTS[FALLBACK], key) != null;
88
+ }
@@ -0,0 +1,282 @@
1
+ {
2
+ "signin": {
3
+ "title": "تسجيل الدخول",
4
+ "subtitle": "سجل الدخول للمتابعة",
5
+ "addAccountTitle": "إضافة حساب آخر",
6
+ "addAccountSubtitle": "تسجيل الدخول بحساب آخر",
7
+ "username": {
8
+ "label": "اسم المستخدم",
9
+ "placeholder": "أدخل اسم المستخدم",
10
+ "helper": "3-30 حرفًا، أحرف وأرقام فقط",
11
+ "required": "يرجى إدخال اسم المستخدم.",
12
+ "minLength": "يجب أن يكون اسم المستخدم 3 أحرف على الأقل."
13
+ },
14
+ "password": {
15
+ "label": "كلمة المرور",
16
+ "placeholder": "أدخل كلمة المرور",
17
+ "required": "يرجى إدخال كلمة المرور.",
18
+ "hint": "أدخل كلمة المرور لتسجيل الدخول"
19
+ },
20
+ "actions": {
21
+ "continue": "متابعة",
22
+ "back": "رجوع",
23
+ "signIn": "تسجيل الدخول",
24
+ "verify": "التحقق",
25
+ "openAccountSwitcher": "التبديل إلى حساب آخر",
26
+ "openAccountSwitcherSubtitle": "{{count}} حسابات أخرى متاحة",
27
+ "openAccountSwitcherSubtitle_singular": "حساب آخر واحد متاح",
28
+ "openAccountSwitcherSubtitle_zero": "راجع حساباتك المحفوظة",
29
+ "manageAccounts": "إدارة الحسابات المحفوظة",
30
+ "manageAccountsSubtitle": "مراجعة الجلسات أو إزالتها أو تسجيل الخروج",
31
+ "loadingOtherAccounts": "جاري تحميل الحسابات الأخرى…",
32
+ "switchAccountFailed": "لم نتمكن من التبديل بين الحسابات. يرجى المحاولة مرة أخرى."
33
+ },
34
+ "forgotPrompt": "نسيت كلمة المرور؟",
35
+ "security": {
36
+ "dataSecure": "بياناتك مشفرة وآمنة"
37
+ },
38
+ "currentlySignedInAs": "مسجل الدخول حاليًا كـ",
39
+ "alreadySignedInWith": "مسجل الدخول بالفعل بـ",
40
+ "alreadySignedIn": "مسجل الدخول بالفعل",
41
+ "alreadySignedInMessage": "هذا الحساب مسجل الدخول بالفعل. المتابعة بهذا الحساب؟",
42
+ "continueWithAccount": "متابعة",
43
+ "currentAccount": "الحالي",
44
+ "or": "أو",
45
+ "viewAllAccounts": "عرض {{count}} المزيد",
46
+ "createAccountLink": "جديد على Oxy؟ أنشئ حسابًا",
47
+ "status": {
48
+ "accountSwitched": "استخدام {{name}} الآن",
49
+ "signingIn": "جارٍ تسجيل الدخول…"
50
+ }
51
+ },
52
+ "signup": {
53
+ "title": "أنشئ حسابك",
54
+ "subtitle": "هوية واحدة لكل النظام البيئي.",
55
+ "commonsHeadline": "أنشئ هويتك في Commons",
56
+ "commonsExplainer": "‏Commons هي هوية Oxy الخاصة بك بحفظ ذاتي كامل — تطبيق واحد يعمل في كل مكان.",
57
+ "createInCommons": "أنشئ هويتك في Commons",
58
+ "passkeyAlternative": "لا تملك Commons؟ أنشئ مفتاح مرور على هذا الجهاز بدلاً من ذلك",
59
+ "createAccount": "إنشاء حساب",
60
+ "creating": "جارٍ الإنشاء…",
61
+ "usernamePlaceholder": "اختر اسم مستخدم",
62
+ "usernameChecking": "جارٍ التحقق…",
63
+ "usernameAvailable": "متاح",
64
+ "usernameTaken": "اسم المستخدم هذا مستخدم بالفعل",
65
+ "backToSignInLink": "لديك حساب بالفعل؟ سجّل الدخول",
66
+ "hubExplainer": "أنشئ هوية Oxy الخاصة بك في نافذة آمنة، ثم عد إلى هنا مباشرة.",
67
+ "continueInWindow": "المتابعة في نافذة جديدة",
68
+ "welcome": {
69
+ "title": "مرحبًا بك في Oxy!",
70
+ "subtitle": "أنشئ حسابك في خطوات قليلة",
71
+ "haveAccount": "لديك حساب بالفعل؟",
72
+ "signInCta": "تسجيل الدخول"
73
+ },
74
+ "identity": {
75
+ "title": "من أنت؟",
76
+ "subtitle": "اختر اسم المستخدم وأدخل بريدك الإلكتروني"
77
+ },
78
+ "username": {
79
+ "helper": "3-30 حرفًا، أحرف وأرقام فقط",
80
+ "required": "يرجى إدخال اسم مستخدم",
81
+ "minLength": "يجب أن يكون اسم المستخدم 3 أحرف على الأقل"
82
+ },
83
+ "email": {
84
+ "required": "يرجى إدخال عنوان بريد إلكتروني",
85
+ "invalid": "يرجى إدخال عنوان بريد إلكتروني صالح",
86
+ "helper": "لن نشارك بريدك الإلكتروني أبدًا"
87
+ },
88
+ "security": {
89
+ "title": "أمّن حسابك",
90
+ "subtitle": "أنشئ كلمة مرور قوية لحماية حسابك"
91
+ },
92
+ "password": {
93
+ "helper": "8 أحرف على الأقل",
94
+ "required": "يرجى إدخال كلمة مرور",
95
+ "minLength": "يجب أن تكون كلمة المرور 8 أحرف على الأقل",
96
+ "confirmRequired": "يرجى تأكيد كلمة المرور",
97
+ "mismatch": "كلمات المرور غير متطابقة",
98
+ "confirmHint": "أعد إدخال كلمة المرور للتأكيد"
99
+ },
100
+ "summary": {
101
+ "title": "أوشكت على الانتهاء!",
102
+ "subtitle": "راجع معلوماتك وأنشئ حسابك",
103
+ "sectionTitle": "معلومات الحساب",
104
+ "fields": {
105
+ "username": "اسم المستخدم",
106
+ "email": "البريد الإلكتروني",
107
+ "password": "كلمة المرور"
108
+ },
109
+ "notSet": "غير محدد",
110
+ "securityTip": "لمزيد من الأمان، قم بتمكين المصادقة الحيوية من إعدادات الحساب بعد إنشاء حسابك.",
111
+ "legalReminder": "بإنشاء حساب، فإنك توافق على شروط الخدمة وسياسة الخصوصية الخاصة بنا."
112
+ }
113
+ },
114
+ "accountSwitcher": {
115
+ "sections": {
116
+ "yourAccounts": "حساباتك"
117
+ },
118
+ "loading": "جارٍ تحميل الحسابات...",
119
+ "qrHeadline": "سجّل الدخول بهوية Oxy الخاصة بك",
120
+ "signInWithOxy": "تسجيل الدخول باستخدام Oxy",
121
+ "useIdentityOnDevice": "لا تملك Commons؟ استخدم مفتاح مرور على هذا الجهاز بدلاً من ذلك",
122
+ "passkeySigningIn": "جارٍ تسجيل الدخول…",
123
+ "getCommons": "احصل على Commons",
124
+ "commonsNotInstalled": "لا تملك Commons؟ احصل على التطبيق لتسجيل الدخول بمعرّف Oxy الخاص بك.",
125
+ "showQrAnyway": "لدي Commons على جهاز آخر",
126
+ "switchWhileSignedInAs": "تبديل الحساب، مسجّل الدخول باسم {{name}}",
127
+ "manageOnDevice": "إدارة الحسابات على هذا الجهاز",
128
+ "continueWithOxy": "المتابعة باستخدام Oxy",
129
+ "havingTrouble": "هل تواجه مشكلة؟",
130
+ "progress": {
131
+ "preparing": "جارٍ تحضير الطلب",
132
+ "awaitingApproval": "في انتظار الموافقة",
133
+ "scanWithCommons": "امسح الرمز باستخدام Commons على هاتفك",
134
+ "continueInCommons": "تابع في Commons",
135
+ "checkCommons": "تحقّق من Commons على هاتفك",
136
+ "openedInCommons": "تم الفتح في Commons",
137
+ "confirming": "جارٍ تأكيد الهوية",
138
+ "confirmed": "تم تأكيد الهوية"
139
+ }
140
+ },
141
+ "common": {
142
+ "actions": {
143
+ "back": "رجوع",
144
+ "continue": "متابعة",
145
+ "next": "التالي",
146
+ "getStarted": "ابدأ",
147
+ "createAccount": "إنشاء حساب",
148
+ "signIn": "تسجيل الدخول",
149
+ "verify": "التحقق",
150
+ "resetPassword": "إعادة تعيين كلمة المرور",
151
+ "signedOut": "تم تسجيل الخروج",
152
+ "close": "إغلاق",
153
+ "tryAgain": "حاول مرة أخرى"
154
+ },
155
+ "links": {
156
+ "recoverAccount": "استعادة حسابك",
157
+ "signUp": "التسجيل"
158
+ },
159
+ "labels": {
160
+ "username": "اسم المستخدم",
161
+ "email": "البريد الإلكتروني",
162
+ "password": "كلمة المرور",
163
+ "confirmPassword": "تأكيد كلمة المرور"
164
+ },
165
+ "revoke": "Revoke",
166
+ "errors": {
167
+ "signOutAllFailed": "حدثت مشكلة أثناء تسجيل الخروج من جميع الحسابات. يرجى المحاولة مرة أخرى."
168
+ }
169
+ },
170
+ "notifications": {
171
+ "title": "Notifications",
172
+ "subtitle": "Manage push, email, and security alerts",
173
+ "updateError": "Failed to update notification preferences",
174
+ "sections": {
175
+ "channels": "Channels",
176
+ "alerts": "Alerts",
177
+ "marketing": "Marketing"
178
+ },
179
+ "items": {
180
+ "push": {
181
+ "title": "Push notifications",
182
+ "subtitle": "Real-time alerts on your devices"
183
+ },
184
+ "emailDigest": {
185
+ "title": "Email digest",
186
+ "subtitle": "Periodic summary of your account activity"
187
+ },
188
+ "securityAlerts": {
189
+ "title": "Security alerts",
190
+ "subtitle": "Sign-ins, recovery codes, and key changes"
191
+ },
192
+ "marketingEmails": {
193
+ "title": "Marketing emails",
194
+ "subtitle": "Product news and occasional offers"
195
+ }
196
+ }
197
+ },
198
+ "preferences": {
199
+ "title": "Preferences",
200
+ "subtitle": "Theme, motion, and regional settings",
201
+ "sections": {
202
+ "appearance": "Appearance",
203
+ "language": "Language",
204
+ "region": "Region"
205
+ },
206
+ "theme": {
207
+ "light": "Light",
208
+ "dark": "Dark",
209
+ "system": "System default"
210
+ },
211
+ "items": {
212
+ "theme": {
213
+ "title": "Theme"
214
+ },
215
+ "reduceMotion": {
216
+ "title": "Reduce motion",
217
+ "subtitle": "Minimise animations across Oxy apps",
218
+ "systemOn": "Following system: reduce motion is on"
219
+ },
220
+ "language": {
221
+ "title": "Language"
222
+ },
223
+ "timezone": {
224
+ "title": "Timezone",
225
+ "unknown": "Unable to detect timezone"
226
+ },
227
+ "about": {
228
+ "title": "About preferences",
229
+ "subtitle": "Preferences sync across every Oxy app you sign into"
230
+ }
231
+ }
232
+ },
233
+ "connectedApps": {
234
+ "title": "Connected apps",
235
+ "subtitle": "Manage third-party app access",
236
+ "empty": {
237
+ "title": "No connected apps",
238
+ "subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
239
+ },
240
+ "item": {
241
+ "granted": "ممنوح {{relative}}",
242
+ "lastUsed": "Last used {{relative}}"
243
+ },
244
+ "confirm": {
245
+ "title": "Revoke access",
246
+ "message": "Revoke {{name}}'s access to your Oxy account?"
247
+ },
248
+ "toasts": {
249
+ "revoked": "Revoked access for {{name}}",
250
+ "revokeFailed": "Failed to revoke access"
251
+ }
252
+ },
253
+ "accountMenu": {
254
+ "label": "قائمة الحساب",
255
+ "manage": "إدارة حساب Oxy الخاص بك",
256
+ "viewProfile": "عرض الملف الشخصي",
257
+ "addAnother": "إضافة حساب آخر",
258
+ "signOutAll": "تسجيل الخروج من جميع الحسابات",
259
+ "open": "قائمة الحساب",
260
+ "openHint": "يفتح قائمة الحساب",
261
+ "openWithUser": "قائمة حساب {{name}}",
262
+ "switching": "جارٍ تبديل الحساب…",
263
+ "signOutAccount": "تسجيل خروج {{name}}",
264
+ "greeting": "مرحبًا، {{name}}!",
265
+ "switchAccount": "تبديل الحساب",
266
+ "storage": {
267
+ "title": "تخزين Oxy",
268
+ "usage": "{{used}} من {{total}} مستخدم",
269
+ "used": "مستخدم",
270
+ "free": "متاح",
271
+ "unavailable": "تفاصيل الاستخدام غير متاحة",
272
+ "upgrade": "ترقية الخطة",
273
+ "manage": "إدارة التخزين"
274
+ },
275
+ "data": "بياناتك في Oxy",
276
+ "settings": "إعدادات Oxy",
277
+ "help": "المساعدة والملاحظات",
278
+ "signOut": "تسجيل الخروج",
279
+ "privacy": "سياسة الخصوصية",
280
+ "terms": "شروط الخدمة"
281
+ }
282
+ }
@@ -0,0 +1,282 @@
1
+ {
2
+ "signin": {
3
+ "title": "Iniciar sessió",
4
+ "subtitle": "Inicia sessió per continuar",
5
+ "addAccountTitle": "Afegir un altre compte",
6
+ "addAccountSubtitle": "Inicia sessió amb un altre compte",
7
+ "username": {
8
+ "label": "Nom d'usuari",
9
+ "placeholder": "Introdueix el teu nom d'usuari",
10
+ "helper": "3-30 caràcters, només lletres i números",
11
+ "required": "Si us plau, introdueix el teu nom d'usuari.",
12
+ "minLength": "El nom d'usuari ha de tenir almenys 3 caràcters."
13
+ },
14
+ "password": {
15
+ "label": "Contrasenya",
16
+ "placeholder": "Introdueix la teva contrasenya",
17
+ "required": "Si us plau, introdueix la teva contrasenya.",
18
+ "hint": "Introdueix la teva contrasenya per iniciar sessió"
19
+ },
20
+ "actions": {
21
+ "continue": "Continuar",
22
+ "back": "Enrere",
23
+ "signIn": "Iniciar sessió",
24
+ "verify": "Verificar",
25
+ "openAccountSwitcher": "Canviar a un altre compte",
26
+ "openAccountSwitcherSubtitle": "{{count}} altres comptes disponibles",
27
+ "openAccountSwitcherSubtitle_singular": "1 altre compte disponible",
28
+ "openAccountSwitcherSubtitle_zero": "Revisa els teus comptes guardats",
29
+ "manageAccounts": "Gestionar comptes guardats",
30
+ "manageAccountsSubtitle": "Revisar sessions, eliminar o tancar sessió",
31
+ "loadingOtherAccounts": "Carregant altres comptes…",
32
+ "switchAccountFailed": "No hem pogut canviar de compte. Torna-ho a intentar."
33
+ },
34
+ "forgotPrompt": "Has oblidat la teva contrasenya?",
35
+ "security": {
36
+ "dataSecure": "Les teves dades estan xifrades i segures"
37
+ },
38
+ "currentlySignedInAs": "Actualment has iniciat sessió com",
39
+ "alreadySignedInWith": "Ja has iniciat sessió amb",
40
+ "alreadySignedIn": "Ja has iniciat sessió",
41
+ "alreadySignedInMessage": "Aquest compte ja ha iniciat sessió. Continuar amb aquest compte?",
42
+ "continueWithAccount": "Continuar",
43
+ "currentAccount": "Actual",
44
+ "or": "o",
45
+ "viewAllAccounts": "Veure {{count}} més",
46
+ "createAccountLink": "Ets nou a Oxy? Crea'n una",
47
+ "status": {
48
+ "accountSwitched": "Ara utilitzant {{name}}",
49
+ "signingIn": "Iniciant sessió…"
50
+ }
51
+ },
52
+ "signup": {
53
+ "title": "Crea el teu compte",
54
+ "subtitle": "Una identitat per a tot l'ecosistema.",
55
+ "commonsHeadline": "Crea la teva identitat a Commons",
56
+ "commonsExplainer": "Commons és la teva identitat d'Oxy amb autocustòdia completa: una app que funciona a tot arreu.",
57
+ "createInCommons": "Crea la teva identitat a Commons",
58
+ "passkeyAlternative": "No tens Commons? Crea una clau d'accés en aquest dispositiu",
59
+ "createAccount": "Crear compte",
60
+ "creating": "Creant…",
61
+ "usernamePlaceholder": "Tria un nom d'usuari",
62
+ "usernameChecking": "Comprovant…",
63
+ "usernameAvailable": "Disponible",
64
+ "usernameTaken": "Aquest nom d'usuari ja està en ús",
65
+ "backToSignInLink": "Ja tens compte? Inicia sessió",
66
+ "hubExplainer": "Crea la teva Oxy ID en una finestra segura i torna de seguida.",
67
+ "continueInWindow": "Continua en una finestra nova",
68
+ "welcome": {
69
+ "title": "Benvingut a Oxy!",
70
+ "subtitle": "Crea el teu compte en pocs passos",
71
+ "haveAccount": "Ja tens un compte?",
72
+ "signInCta": "Inicia sessió"
73
+ },
74
+ "identity": {
75
+ "title": "Qui ets?",
76
+ "subtitle": "Tria el teu nom d'usuari i introdueix el teu correu"
77
+ },
78
+ "username": {
79
+ "helper": "3-30 caràcters, només lletres i números",
80
+ "required": "Si us plau, introdueix un nom d'usuari",
81
+ "minLength": "El nom d'usuari ha de tenir almenys 3 caràcters"
82
+ },
83
+ "email": {
84
+ "required": "Si us plau, introdueix una adreça de correu electrònic",
85
+ "invalid": "Si us plau, introdueix una adreça de correu electrònic vàlida",
86
+ "helper": "Mai compartirem el teu correu"
87
+ },
88
+ "security": {
89
+ "title": "Protegeix el teu compte",
90
+ "subtitle": "Crea una contrasenya forta per protegir el teu compte"
91
+ },
92
+ "password": {
93
+ "helper": "Almenys 8 caràcters",
94
+ "required": "Si us plau, introdueix una contrasenya",
95
+ "minLength": "La contrasenya ha de tenir almenys 8 caràcters",
96
+ "confirmRequired": "Si us plau, confirma la teva contrasenya",
97
+ "mismatch": "Les contrasenyes no coincideixen",
98
+ "confirmHint": "Torna a introduir la teva contrasenya per confirmar"
99
+ },
100
+ "summary": {
101
+ "title": "Gairebé allà!",
102
+ "subtitle": "Revisa la teva informació i crea el teu compte",
103
+ "sectionTitle": "Informació del compte",
104
+ "fields": {
105
+ "username": "Nom d'usuari",
106
+ "email": "Correu electrònic",
107
+ "password": "Contrasenya"
108
+ },
109
+ "notSet": "No definit",
110
+ "securityTip": "Per a una major seguretat, habilita l'autenticació biomètrica des de Configuració del compte després de crear el teu compte.",
111
+ "legalReminder": "En crear un compte, acceptes els nostres Termes de servei i Política de privacitat."
112
+ }
113
+ },
114
+ "accountSwitcher": {
115
+ "sections": {
116
+ "yourAccounts": "Els teus comptes"
117
+ },
118
+ "loading": "S'estan carregant els comptes...",
119
+ "qrHeadline": "Inicia sessió amb la teva identitat d'Oxy",
120
+ "signInWithOxy": "Inicia sessió amb Oxy",
121
+ "useIdentityOnDevice": "No tens Commons? Fes servir una clau d'accés en aquest dispositiu",
122
+ "passkeySigningIn": "Iniciant sessió…",
123
+ "getCommons": "Descarrega Commons",
124
+ "commonsNotInstalled": "No tens Commons? Descarrega l'app per iniciar sessió amb el teu Oxy ID.",
125
+ "showQrAnyway": "Tinc Commons en un altre dispositiu",
126
+ "switchWhileSignedInAs": "Canvia de compte, amb la sessió iniciada com a {{name}}",
127
+ "manageOnDevice": "Gestionar comptes en aquest dispositiu",
128
+ "continueWithOxy": "Continua amb Oxy",
129
+ "havingTrouble": "Algun problema?",
130
+ "progress": {
131
+ "preparing": "Preparant la sol·licitud",
132
+ "awaitingApproval": "Esperant l'aprovació",
133
+ "scanWithCommons": "Escaneja amb Commons al teu mòbil",
134
+ "continueInCommons": "Continua a Commons",
135
+ "checkCommons": "Revisa Commons al teu mòbil",
136
+ "openedInCommons": "Obert a Commons",
137
+ "confirming": "Confirmant la identitat",
138
+ "confirmed": "Identitat confirmada"
139
+ }
140
+ },
141
+ "common": {
142
+ "actions": {
143
+ "back": "Enrere",
144
+ "continue": "Continuar",
145
+ "next": "Següent",
146
+ "getStarted": "Començar",
147
+ "createAccount": "Crear compte",
148
+ "signIn": "Iniciar sessió",
149
+ "verify": "Verificar",
150
+ "resetPassword": "Restablir contrasenya",
151
+ "signedOut": "Sessió tancada",
152
+ "close": "Tanca",
153
+ "tryAgain": "Torna-ho a provar"
154
+ },
155
+ "links": {
156
+ "recoverAccount": "Recuperar el teu compte",
157
+ "signUp": "Registrar-se"
158
+ },
159
+ "labels": {
160
+ "username": "Nom d'usuari",
161
+ "email": "Correu electrònic",
162
+ "password": "Contrasenya",
163
+ "confirmPassword": "Confirmar contrasenya"
164
+ },
165
+ "revoke": "Revoke",
166
+ "errors": {
167
+ "signOutAllFailed": "Hi ha hagut un problema en tancar la sessió de tots els comptes. Torna-ho a provar."
168
+ }
169
+ },
170
+ "notifications": {
171
+ "title": "Notifications",
172
+ "subtitle": "Manage push, email, and security alerts",
173
+ "updateError": "Failed to update notification preferences",
174
+ "sections": {
175
+ "channels": "Channels",
176
+ "alerts": "Alerts",
177
+ "marketing": "Marketing"
178
+ },
179
+ "items": {
180
+ "push": {
181
+ "title": "Push notifications",
182
+ "subtitle": "Real-time alerts on your devices"
183
+ },
184
+ "emailDigest": {
185
+ "title": "Email digest",
186
+ "subtitle": "Periodic summary of your account activity"
187
+ },
188
+ "securityAlerts": {
189
+ "title": "Security alerts",
190
+ "subtitle": "Sign-ins, recovery codes, and key changes"
191
+ },
192
+ "marketingEmails": {
193
+ "title": "Marketing emails",
194
+ "subtitle": "Product news and occasional offers"
195
+ }
196
+ }
197
+ },
198
+ "preferences": {
199
+ "title": "Preferences",
200
+ "subtitle": "Theme, motion, and regional settings",
201
+ "sections": {
202
+ "appearance": "Appearance",
203
+ "language": "Language",
204
+ "region": "Region"
205
+ },
206
+ "theme": {
207
+ "light": "Light",
208
+ "dark": "Dark",
209
+ "system": "System default"
210
+ },
211
+ "items": {
212
+ "theme": {
213
+ "title": "Theme"
214
+ },
215
+ "reduceMotion": {
216
+ "title": "Reduce motion",
217
+ "subtitle": "Minimise animations across Oxy apps",
218
+ "systemOn": "Following system: reduce motion is on"
219
+ },
220
+ "language": {
221
+ "title": "Language"
222
+ },
223
+ "timezone": {
224
+ "title": "Timezone",
225
+ "unknown": "Unable to detect timezone"
226
+ },
227
+ "about": {
228
+ "title": "About preferences",
229
+ "subtitle": "Preferences sync across every Oxy app you sign into"
230
+ }
231
+ }
232
+ },
233
+ "connectedApps": {
234
+ "title": "Connected apps",
235
+ "subtitle": "Manage third-party app access",
236
+ "empty": {
237
+ "title": "No connected apps",
238
+ "subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
239
+ },
240
+ "item": {
241
+ "granted": "Concedit {{relative}}",
242
+ "lastUsed": "Last used {{relative}}"
243
+ },
244
+ "confirm": {
245
+ "title": "Revoke access",
246
+ "message": "Revoke {{name}}'s access to your Oxy account?"
247
+ },
248
+ "toasts": {
249
+ "revoked": "Revoked access for {{name}}",
250
+ "revokeFailed": "Failed to revoke access"
251
+ }
252
+ },
253
+ "accountMenu": {
254
+ "label": "Menú del compte",
255
+ "manage": "Gestiona el teu compte d'Oxy",
256
+ "viewProfile": "Mostra el perfil",
257
+ "addAnother": "Afegeix un altre compte",
258
+ "signOutAll": "Tanca la sessió de tots els comptes",
259
+ "open": "Menú del compte",
260
+ "openHint": "Obre el menú del compte",
261
+ "openWithUser": "Menú del compte de {{name}}",
262
+ "switching": "Canviant de compte…",
263
+ "signOutAccount": "Tanca la sessió de {{name}}",
264
+ "greeting": "Hola, {{name}}!",
265
+ "switchAccount": "Canviar de compte",
266
+ "storage": {
267
+ "title": "Emmagatzematge d'Oxy",
268
+ "usage": "{{used}} de {{total}} en ús",
269
+ "used": "En ús",
270
+ "free": "Lliure",
271
+ "unavailable": "Detalls d'ús no disponibles",
272
+ "upgrade": "Millorar el pla",
273
+ "manage": "Gestionar l'emmagatzematge"
274
+ },
275
+ "data": "Les teves dades a Oxy",
276
+ "settings": "Configuració d'Oxy",
277
+ "help": "Ajuda i comentaris",
278
+ "signOut": "Tancar sessió",
279
+ "privacy": "Política de privacitat",
280
+ "terms": "Condicions del servei"
281
+ }
282
+ }