@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.
- package/LICENSE +202 -0
- package/NOTICE +16 -0
- package/README.md +221 -0
- package/dist/cjs/.tsbuildinfo +1 -0
- package/dist/cjs/HttpService.js +1270 -0
- package/dist/cjs/OxyServices.base.js +390 -0
- package/dist/cjs/OxyServices.errors.js +95 -0
- package/dist/cjs/OxyServices.js +72 -0
- package/dist/cjs/boot/sessionColdBoot.js +395 -0
- package/dist/cjs/constants/version.js +16 -0
- package/dist/cjs/crypto/aead.js +79 -0
- package/dist/cjs/crypto/ecdh.js +35 -0
- package/dist/cjs/crypto/identityMarker.js +255 -0
- package/dist/cjs/crypto/kdf.js +39 -0
- package/dist/cjs/crypto/keyManager.js +2234 -0
- package/dist/cjs/crypto/polyfill.js +131 -0
- package/dist/cjs/crypto/recoveryPhrase.js +242 -0
- package/dist/cjs/crypto/signatureService.js +273 -0
- package/dist/cjs/i18n/accountCategoryLabels.js +44 -0
- package/dist/cjs/i18n/accountRoleLabels.js +27 -0
- package/dist/cjs/i18n/index.js +90 -0
- package/dist/cjs/i18n/locales/ar-SA.json +282 -0
- package/dist/cjs/i18n/locales/ca-ES.json +282 -0
- package/dist/cjs/i18n/locales/de-DE.json +282 -0
- package/dist/cjs/i18n/locales/en-US.json +2161 -0
- package/dist/cjs/i18n/locales/es-ES.json +2161 -0
- package/dist/cjs/i18n/locales/fr-FR.json +282 -0
- package/dist/cjs/i18n/locales/it-IT.json +282 -0
- package/dist/cjs/i18n/locales/ja-JP.json +282 -0
- package/dist/cjs/i18n/locales/ko-KR.json +282 -0
- package/dist/cjs/i18n/locales/locales/ar-SA.json +282 -0
- package/dist/cjs/i18n/locales/locales/ca-ES.json +282 -0
- package/dist/cjs/i18n/locales/locales/de-DE.json +282 -0
- package/dist/cjs/i18n/locales/locales/en-US.json +2161 -0
- package/dist/cjs/i18n/locales/locales/es-ES.json +2161 -0
- package/dist/cjs/i18n/locales/locales/fr-FR.json +282 -0
- package/dist/cjs/i18n/locales/locales/it-IT.json +282 -0
- package/dist/cjs/i18n/locales/locales/ja-JP.json +282 -0
- package/dist/cjs/i18n/locales/locales/ko-KR.json +282 -0
- package/dist/cjs/i18n/locales/locales/pt-PT.json +282 -0
- package/dist/cjs/i18n/locales/locales/zh-CN.json +282 -0
- package/dist/cjs/i18n/locales/pt-PT.json +282 -0
- package/dist/cjs/i18n/locales/zh-CN.json +282 -0
- package/dist/cjs/i18n/reputationCategoryLabels.js +20 -0
- package/dist/cjs/i18n/trustTierLabels.js +19 -0
- package/dist/cjs/index.js +498 -0
- package/dist/cjs/inference/OxyInferenceClient.js +544 -0
- package/dist/cjs/logger/index.js +149 -0
- package/dist/cjs/mixins/OxyServices.accounts.js +555 -0
- package/dist/cjs/mixins/OxyServices.analytics.js +49 -0
- package/dist/cjs/mixins/OxyServices.appData.js +108 -0
- package/dist/cjs/mixins/OxyServices.assets.js +764 -0
- package/dist/cjs/mixins/OxyServices.auth.js +1254 -0
- package/dist/cjs/mixins/OxyServices.chains.js +73 -0
- package/dist/cjs/mixins/OxyServices.civic.js +611 -0
- package/dist/cjs/mixins/OxyServices.connectedApps.js +78 -0
- package/dist/cjs/mixins/OxyServices.contacts.js +50 -0
- package/dist/cjs/mixins/OxyServices.deviceBoot.js +191 -0
- package/dist/cjs/mixins/OxyServices.deviceTransfer.js +314 -0
- package/dist/cjs/mixins/OxyServices.devices.js +116 -0
- package/dist/cjs/mixins/OxyServices.features.js +335 -0
- package/dist/cjs/mixins/OxyServices.followGraph.js +221 -0
- package/dist/cjs/mixins/OxyServices.identity.js +461 -0
- package/dist/cjs/mixins/OxyServices.identityBackup.js +172 -0
- package/dist/cjs/mixins/OxyServices.inference.js +59 -0
- package/dist/cjs/mixins/OxyServices.language.js +125 -0
- package/dist/cjs/mixins/OxyServices.links.js +72 -0
- package/dist/cjs/mixins/OxyServices.location.js +43 -0
- package/dist/cjs/mixins/OxyServices.nodes.js +175 -0
- package/dist/cjs/mixins/OxyServices.notifications.js +63 -0
- package/dist/cjs/mixins/OxyServices.payment.js +158 -0
- package/dist/cjs/mixins/OxyServices.privacy.js +199 -0
- package/dist/cjs/mixins/OxyServices.reputation.js +289 -0
- package/dist/cjs/mixins/OxyServices.security.js +89 -0
- package/dist/cjs/mixins/OxyServices.store.js +266 -0
- package/dist/cjs/mixins/OxyServices.topics.js +137 -0
- package/dist/cjs/mixins/OxyServices.user.js +902 -0
- package/dist/cjs/mixins/OxyServices.utility.js +1098 -0
- package/dist/cjs/mixins/index.js +135 -0
- package/dist/cjs/mixins/mixinHelpers.js +53 -0
- package/dist/cjs/models/Topic.js +16 -0
- package/dist/cjs/models/interfaces.js +20 -0
- package/dist/cjs/models/session.js +2 -0
- package/dist/cjs/server/auth.js +167 -0
- package/dist/cjs/server/capabilityTicket.js +192 -0
- package/dist/cjs/server/cors.js +225 -0
- package/dist/cjs/server/index.js +97 -0
- package/dist/cjs/server/rateLimit.js +207 -0
- package/dist/cjs/server/safeFetch.js +458 -0
- package/dist/cjs/server/securityHeaders.js +377 -0
- package/dist/cjs/server/userInvalidation.js +156 -0
- package/dist/cjs/server/verifySecret.js +50 -0
- package/dist/cjs/session/SessionClient.js +865 -0
- package/dist/cjs/session/accountDelegationAccess.js +48 -0
- package/dist/cjs/session/accountDialogController.js +1131 -0
- package/dist/cjs/session/accountSwitchTargets.js +81 -0
- package/dist/cjs/session/authStateStore.js +404 -0
- package/dist/cjs/session/createSessionClient.js +32 -0
- package/dist/cjs/session/deviceDirectory.js +143 -0
- package/dist/cjs/session/deviceSwitcherRows.js +76 -0
- package/dist/cjs/session/identityPin.js +256 -0
- package/dist/cjs/session/identitySession.js +135 -0
- package/dist/cjs/session/projectSessionState.js +121 -0
- package/dist/cjs/session/refresh.js +398 -0
- package/dist/cjs/session/sessionClientHost.js +34 -0
- package/dist/cjs/session/sharedDeviceCredential.js +247 -0
- package/dist/cjs/session/socketLoader.js +55 -0
- package/dist/cjs/shared/utils/colorUtils.js +153 -0
- package/dist/cjs/shared/utils/errorUtils.js +183 -0
- package/dist/cjs/shared/utils/index.js +49 -0
- package/dist/cjs/shared/utils/networkUtils.js +183 -0
- package/dist/cjs/shared/utils/themeUtils.js +106 -0
- package/dist/cjs/utils/accountCacheSweep.js +80 -0
- package/dist/cjs/utils/accountUtils.js +140 -0
- package/dist/cjs/utils/activityId.js +6 -0
- package/dist/cjs/utils/apiUtils.js +91 -0
- package/dist/cjs/utils/asyncUtils.js +222 -0
- package/dist/cjs/utils/authHelpers.js +120 -0
- package/dist/cjs/utils/authWebUrl.js +19 -0
- package/dist/cjs/utils/avatarUtils.js +29 -0
- package/dist/cjs/utils/cache.js +235 -0
- package/dist/cjs/utils/cacheKey.js +85 -0
- package/dist/cjs/utils/coldBoot.js +122 -0
- package/dist/cjs/utils/commonsApproval.js +31 -0
- package/dist/cjs/utils/commonsDelivery.js +59 -0
- package/dist/cjs/utils/deviceManager.js +174 -0
- package/dist/cjs/utils/displayNamePolicyRanges.generated.js +60 -0
- package/dist/cjs/utils/edgeRegion.js +6 -0
- package/dist/cjs/utils/errorUtils.js +243 -0
- package/dist/cjs/utils/identityCacheSweep.js +97 -0
- package/dist/cjs/utils/languageUtils.js +224 -0
- package/dist/cjs/utils/oauthPkce.js +311 -0
- package/dist/cjs/utils/officialOrigins.js +64 -0
- package/dist/cjs/utils/oxyServiceEnvironment.js +19 -0
- package/dist/cjs/utils/platform.js +119 -0
- package/dist/cjs/utils/profileLinks.js +63 -0
- package/dist/cjs/utils/redactUrl.js +29 -0
- package/dist/cjs/utils/registrableApex.js +45 -0
- package/dist/cjs/utils/requestUtils.js +209 -0
- package/dist/cjs/utils/sessionUtils.js +181 -0
- package/dist/cjs/utils/textNormalization.js +158 -0
- package/dist/cjs/utils/userHandle.js +37 -0
- package/dist/cjs/utils/userIdentity.js +50 -0
- package/dist/cjs/utils/validationUtils.js +370 -0
- package/dist/cjs/utils/webauthnOrigin.js +51 -0
- package/dist/esm/.tsbuildinfo +1 -0
- package/dist/esm/HttpService.js +1266 -0
- package/dist/esm/OxyServices.base.js +386 -0
- package/dist/esm/OxyServices.errors.js +88 -0
- package/dist/esm/OxyServices.js +66 -0
- package/dist/esm/boot/sessionColdBoot.js +392 -0
- package/dist/esm/constants/version.js +13 -0
- package/dist/esm/crypto/aead.js +74 -0
- package/dist/esm/crypto/ecdh.js +32 -0
- package/dist/esm/crypto/identityMarker.js +248 -0
- package/dist/esm/crypto/kdf.js +36 -0
- package/dist/esm/crypto/keyManager.js +2227 -0
- package/dist/esm/crypto/polyfill.js +129 -0
- package/dist/esm/crypto/recoveryPhrase.js +238 -0
- package/dist/esm/crypto/signatureService.js +269 -0
- package/dist/esm/i18n/accountCategoryLabels.js +37 -0
- package/dist/esm/i18n/accountRoleLabels.js +20 -0
- package/dist/esm/i18n/index.js +83 -0
- package/dist/esm/i18n/locales/ar-SA.json +282 -0
- package/dist/esm/i18n/locales/ca-ES.json +282 -0
- package/dist/esm/i18n/locales/de-DE.json +282 -0
- package/dist/esm/i18n/locales/en-US.json +2161 -0
- package/dist/esm/i18n/locales/es-ES.json +2161 -0
- package/dist/esm/i18n/locales/fr-FR.json +282 -0
- package/dist/esm/i18n/locales/it-IT.json +282 -0
- package/dist/esm/i18n/locales/ja-JP.json +282 -0
- package/dist/esm/i18n/locales/ko-KR.json +282 -0
- package/dist/esm/i18n/locales/locales/ar-SA.json +282 -0
- package/dist/esm/i18n/locales/locales/ca-ES.json +282 -0
- package/dist/esm/i18n/locales/locales/de-DE.json +282 -0
- package/dist/esm/i18n/locales/locales/en-US.json +2161 -0
- package/dist/esm/i18n/locales/locales/es-ES.json +2161 -0
- package/dist/esm/i18n/locales/locales/fr-FR.json +282 -0
- package/dist/esm/i18n/locales/locales/it-IT.json +282 -0
- package/dist/esm/i18n/locales/locales/ja-JP.json +282 -0
- package/dist/esm/i18n/locales/locales/ko-KR.json +282 -0
- package/dist/esm/i18n/locales/locales/pt-PT.json +282 -0
- package/dist/esm/i18n/locales/locales/zh-CN.json +282 -0
- package/dist/esm/i18n/locales/pt-PT.json +282 -0
- package/dist/esm/i18n/locales/zh-CN.json +282 -0
- package/dist/esm/i18n/reputationCategoryLabels.js +13 -0
- package/dist/esm/i18n/trustTierLabels.js +12 -0
- package/dist/esm/index.js +254 -0
- package/dist/esm/inference/OxyInferenceClient.js +538 -0
- package/dist/esm/logger/index.js +140 -0
- package/dist/esm/mixins/OxyServices.accounts.js +543 -0
- package/dist/esm/mixins/OxyServices.analytics.js +46 -0
- package/dist/esm/mixins/OxyServices.appData.js +103 -0
- package/dist/esm/mixins/OxyServices.assets.js +761 -0
- package/dist/esm/mixins/OxyServices.auth.js +1247 -0
- package/dist/esm/mixins/OxyServices.chains.js +70 -0
- package/dist/esm/mixins/OxyServices.civic.js +605 -0
- package/dist/esm/mixins/OxyServices.connectedApps.js +75 -0
- package/dist/esm/mixins/OxyServices.contacts.js +47 -0
- package/dist/esm/mixins/OxyServices.deviceBoot.js +186 -0
- package/dist/esm/mixins/OxyServices.deviceTransfer.js +311 -0
- package/dist/esm/mixins/OxyServices.devices.js +113 -0
- package/dist/esm/mixins/OxyServices.features.js +332 -0
- package/dist/esm/mixins/OxyServices.followGraph.js +218 -0
- package/dist/esm/mixins/OxyServices.identity.js +457 -0
- package/dist/esm/mixins/OxyServices.identityBackup.js +169 -0
- package/dist/esm/mixins/OxyServices.inference.js +56 -0
- package/dist/esm/mixins/OxyServices.language.js +122 -0
- package/dist/esm/mixins/OxyServices.links.js +69 -0
- package/dist/esm/mixins/OxyServices.location.js +40 -0
- package/dist/esm/mixins/OxyServices.nodes.js +172 -0
- package/dist/esm/mixins/OxyServices.notifications.js +60 -0
- package/dist/esm/mixins/OxyServices.payment.js +155 -0
- package/dist/esm/mixins/OxyServices.privacy.js +196 -0
- package/dist/esm/mixins/OxyServices.reputation.js +286 -0
- package/dist/esm/mixins/OxyServices.security.js +86 -0
- package/dist/esm/mixins/OxyServices.store.js +263 -0
- package/dist/esm/mixins/OxyServices.topics.js +134 -0
- package/dist/esm/mixins/OxyServices.user.js +899 -0
- package/dist/esm/mixins/OxyServices.utility.js +1095 -0
- package/dist/esm/mixins/index.js +132 -0
- package/dist/esm/mixins/mixinHelpers.js +48 -0
- package/dist/esm/models/Topic.js +13 -0
- package/dist/esm/models/interfaces.js +17 -0
- package/dist/esm/models/session.js +1 -0
- package/dist/esm/server/auth.js +154 -0
- package/dist/esm/server/capabilityTicket.js +183 -0
- package/dist/esm/server/cors.js +220 -0
- package/dist/esm/server/index.js +47 -0
- package/dist/esm/server/rateLimit.js +201 -0
- package/dist/esm/server/safeFetch.js +447 -0
- package/dist/esm/server/securityHeaders.js +364 -0
- package/dist/esm/server/userInvalidation.js +152 -0
- package/dist/esm/server/verifySecret.js +47 -0
- package/dist/esm/session/SessionClient.js +861 -0
- package/dist/esm/session/accountDelegationAccess.js +45 -0
- package/dist/esm/session/accountDialogController.js +1126 -0
- package/dist/esm/session/accountSwitchTargets.js +77 -0
- package/dist/esm/session/authStateStore.js +398 -0
- package/dist/esm/session/createSessionClient.js +29 -0
- package/dist/esm/session/deviceDirectory.js +135 -0
- package/dist/esm/session/deviceSwitcherRows.js +72 -0
- package/dist/esm/session/identityPin.js +249 -0
- package/dist/esm/session/identitySession.js +131 -0
- package/dist/esm/session/projectSessionState.js +114 -0
- package/dist/esm/session/refresh.js +390 -0
- package/dist/esm/session/sessionClientHost.js +31 -0
- package/dist/esm/session/sharedDeviceCredential.js +239 -0
- package/dist/esm/session/socketLoader.js +19 -0
- package/dist/esm/shared/utils/colorUtils.js +143 -0
- package/dist/esm/shared/utils/errorUtils.js +170 -0
- package/dist/esm/shared/utils/index.js +15 -0
- package/dist/esm/shared/utils/networkUtils.js +173 -0
- package/dist/esm/shared/utils/themeUtils.js +98 -0
- package/dist/esm/utils/accountCacheSweep.js +75 -0
- package/dist/esm/utils/accountUtils.js +131 -0
- package/dist/esm/utils/activityId.js +2 -0
- package/dist/esm/utils/apiUtils.js +84 -0
- package/dist/esm/utils/asyncUtils.js +207 -0
- package/dist/esm/utils/authHelpers.js +111 -0
- package/dist/esm/utils/authWebUrl.js +16 -0
- package/dist/esm/utils/avatarUtils.js +26 -0
- package/dist/esm/utils/cache.js +227 -0
- package/dist/esm/utils/cacheKey.js +80 -0
- package/dist/esm/utils/coldBoot.js +119 -0
- package/dist/esm/utils/commonsApproval.js +27 -0
- package/dist/esm/utils/commonsDelivery.js +54 -0
- package/dist/esm/utils/deviceManager.js +170 -0
- package/dist/esm/utils/displayNamePolicyRanges.generated.js +57 -0
- package/dist/esm/utils/edgeRegion.js +2 -0
- package/dist/esm/utils/errorUtils.js +232 -0
- package/dist/esm/utils/identityCacheSweep.js +92 -0
- package/dist/esm/utils/languageUtils.js +212 -0
- package/dist/esm/utils/oauthPkce.js +297 -0
- package/dist/esm/utils/officialOrigins.js +59 -0
- package/dist/esm/utils/oxyServiceEnvironment.js +16 -0
- package/dist/esm/utils/platform.js +110 -0
- package/dist/esm/utils/profileLinks.js +60 -0
- package/dist/esm/utils/redactUrl.js +26 -0
- package/dist/esm/utils/registrableApex.js +42 -0
- package/dist/esm/utils/requestUtils.js +203 -0
- package/dist/esm/utils/sessionUtils.js +171 -0
- package/dist/esm/utils/textNormalization.js +154 -0
- package/dist/esm/utils/userHandle.js +33 -0
- package/dist/esm/utils/userIdentity.js +45 -0
- package/dist/esm/utils/validationUtils.js +350 -0
- package/dist/esm/utils/webauthnOrigin.js +48 -0
- package/dist/types/.tsbuildinfo +1 -0
- package/dist/types/HttpService.d.ts +413 -0
- package/dist/types/OxyServices.base.d.ts +187 -0
- package/dist/types/OxyServices.d.ts +139 -0
- package/dist/types/OxyServices.errors.d.ts +84 -0
- package/dist/types/boot/sessionColdBoot.d.ts +140 -0
- package/dist/types/constants/version.d.ts +13 -0
- package/dist/types/crypto/aead.d.ts +56 -0
- package/dist/types/crypto/ecdh.d.ts +29 -0
- package/dist/types/crypto/identityMarker.d.ts +94 -0
- package/dist/types/crypto/kdf.d.ts +25 -0
- package/dist/types/crypto/keyManager.d.ts +582 -0
- package/dist/types/crypto/polyfill.d.ts +25 -0
- package/dist/types/crypto/recoveryPhrase.d.ts +173 -0
- package/dist/types/crypto/signatureService.d.ts +136 -0
- package/dist/types/i18n/accountCategoryLabels.d.ts +34 -0
- package/dist/types/i18n/accountRoleLabels.d.ts +10 -0
- package/dist/types/i18n/index.d.ts +3 -0
- package/dist/types/i18n/reputationCategoryLabels.d.ts +10 -0
- package/dist/types/i18n/trustTierLabels.d.ts +9 -0
- package/dist/types/index.d.ts +145 -0
- package/dist/types/inference/OxyInferenceClient.d.ts +342 -0
- package/dist/types/logger/index.d.ts +104 -0
- package/dist/types/mixins/OxyServices.accounts.d.ts +868 -0
- package/dist/types/mixins/OxyServices.analytics.d.ts +72 -0
- package/dist/types/mixins/OxyServices.appData.d.ts +108 -0
- package/dist/types/mixins/OxyServices.assets.d.ts +329 -0
- package/dist/types/mixins/OxyServices.auth.d.ts +908 -0
- package/dist/types/mixins/OxyServices.chains.d.ts +156 -0
- package/dist/types/mixins/OxyServices.civic.d.ts +510 -0
- package/dist/types/mixins/OxyServices.connectedApps.d.ts +169 -0
- package/dist/types/mixins/OxyServices.contacts.d.ts +100 -0
- package/dist/types/mixins/OxyServices.deviceBoot.d.ts +185 -0
- package/dist/types/mixins/OxyServices.deviceTransfer.d.ts +149 -0
- package/dist/types/mixins/OxyServices.devices.d.ts +103 -0
- package/dist/types/mixins/OxyServices.features.d.ts +250 -0
- package/dist/types/mixins/OxyServices.followGraph.d.ts +223 -0
- package/dist/types/mixins/OxyServices.identity.d.ts +351 -0
- package/dist/types/mixins/OxyServices.identityBackup.d.ts +129 -0
- package/dist/types/mixins/OxyServices.inference.d.ts +95 -0
- package/dist/types/mixins/OxyServices.language.d.ts +87 -0
- package/dist/types/mixins/OxyServices.links.d.ts +104 -0
- package/dist/types/mixins/OxyServices.location.d.ts +70 -0
- package/dist/types/mixins/OxyServices.nodes.d.ts +198 -0
- package/dist/types/mixins/OxyServices.notifications.d.ts +143 -0
- package/dist/types/mixins/OxyServices.payment.d.ts +117 -0
- package/dist/types/mixins/OxyServices.privacy.d.ts +146 -0
- package/dist/types/mixins/OxyServices.reputation.d.ts +202 -0
- package/dist/types/mixins/OxyServices.security.d.ts +84 -0
- package/dist/types/mixins/OxyServices.store.d.ts +334 -0
- package/dist/types/mixins/OxyServices.topics.d.ts +110 -0
- package/dist/types/mixins/OxyServices.user.d.ts +558 -0
- package/dist/types/mixins/OxyServices.utility.d.ts +393 -0
- package/dist/types/mixins/index.d.ts +87 -0
- package/dist/types/mixins/mixinHelpers.d.ts +31 -0
- package/dist/types/models/Topic.d.ts +42 -0
- package/dist/types/models/interfaces.d.ts +675 -0
- package/dist/types/models/session.d.ts +51 -0
- package/dist/types/server/auth.d.ts +130 -0
- package/dist/types/server/capabilityTicket.d.ts +41 -0
- package/dist/types/server/cors.d.ts +98 -0
- package/dist/types/server/index.d.ts +35 -0
- package/dist/types/server/rateLimit.d.ts +40 -0
- package/dist/types/server/safeFetch.d.ts +137 -0
- package/dist/types/server/securityHeaders.d.ts +221 -0
- package/dist/types/server/userInvalidation.d.ts +114 -0
- package/dist/types/server/verifySecret.d.ts +29 -0
- package/dist/types/session/SessionClient.d.ts +418 -0
- package/dist/types/session/accountDelegationAccess.d.ts +40 -0
- package/dist/types/session/accountDialogController.d.ts +648 -0
- package/dist/types/session/accountSwitchTargets.d.ts +70 -0
- package/dist/types/session/authStateStore.d.ts +153 -0
- package/dist/types/session/createSessionClient.d.ts +30 -0
- package/dist/types/session/deviceDirectory.d.ts +182 -0
- package/dist/types/session/deviceSwitcherRows.d.ts +92 -0
- package/dist/types/session/identityPin.d.ts +87 -0
- package/dist/types/session/identitySession.d.ts +105 -0
- package/dist/types/session/projectSessionState.d.ts +74 -0
- package/dist/types/session/refresh.d.ts +179 -0
- package/dist/types/session/sessionClientHost.d.ts +18 -0
- package/dist/types/session/sharedDeviceCredential.d.ts +202 -0
- package/dist/types/session/socketLoader.d.ts +11 -0
- package/dist/types/shared/utils/colorUtils.d.ts +104 -0
- package/dist/types/shared/utils/errorUtils.d.ts +97 -0
- package/dist/types/shared/utils/index.d.ts +13 -0
- package/dist/types/shared/utils/networkUtils.d.ts +139 -0
- package/dist/types/shared/utils/themeUtils.d.ts +90 -0
- package/dist/types/utils/accountCacheSweep.d.ts +75 -0
- package/dist/types/utils/accountUtils.d.ts +100 -0
- package/dist/types/utils/activityId.d.ts +2 -0
- package/dist/types/utils/apiUtils.d.ts +95 -0
- package/dist/types/utils/asyncUtils.d.ts +62 -0
- package/dist/types/utils/authHelpers.d.ts +58 -0
- package/dist/types/utils/authWebUrl.d.ts +16 -0
- package/dist/types/utils/avatarUtils.d.ts +16 -0
- package/dist/types/utils/cache.d.ts +130 -0
- package/dist/types/utils/cacheKey.d.ts +66 -0
- package/dist/types/utils/coldBoot.d.ts +131 -0
- package/dist/types/utils/commonsApproval.d.ts +13 -0
- package/dist/types/utils/commonsDelivery.d.ts +105 -0
- package/dist/types/utils/deviceManager.d.ts +65 -0
- package/dist/types/utils/displayNamePolicyRanges.generated.d.ts +57 -0
- package/dist/types/utils/edgeRegion.d.ts +2 -0
- package/dist/types/utils/errorUtils.d.ts +125 -0
- package/dist/types/utils/identityCacheSweep.d.ts +80 -0
- package/dist/types/utils/languageUtils.d.ts +100 -0
- package/dist/types/utils/oauthPkce.d.ts +157 -0
- package/dist/types/utils/officialOrigins.d.ts +13 -0
- package/dist/types/utils/oxyServiceEnvironment.d.ts +17 -0
- package/dist/types/utils/platform.d.ts +49 -0
- package/dist/types/utils/profileLinks.d.ts +44 -0
- package/dist/types/utils/redactUrl.d.ts +17 -0
- package/dist/types/utils/registrableApex.d.ts +27 -0
- package/dist/types/utils/requestUtils.d.ts +123 -0
- package/dist/types/utils/sessionUtils.d.ts +54 -0
- package/dist/types/utils/textNormalization.d.ts +103 -0
- package/dist/types/utils/userHandle.d.ts +26 -0
- package/dist/types/utils/userIdentity.d.ts +21 -0
- package/dist/types/utils/validationUtils.d.ts +268 -0
- package/dist/types/utils/webauthnOrigin.d.ts +32 -0
- package/package.json +168 -0
- package/src/HttpService.ts +1553 -0
- package/src/OxyServices.base.ts +478 -0
- package/src/OxyServices.errors.ts +122 -0
- package/src/OxyServices.ts +172 -0
- package/src/__tests__/authSocket.test.ts +96 -0
- package/src/__tests__/httpServiceActivityId.test.ts +49 -0
- package/src/__tests__/httpServiceAuthSelfAwait.test.ts +108 -0
- package/src/__tests__/httpServiceCache.test.ts +318 -0
- package/src/__tests__/httpServiceCsrf.test.ts +235 -0
- package/src/__tests__/httpServiceFormEncoded.test.ts +142 -0
- package/src/__tests__/httpServiceQueueDeadlock.test.ts +128 -0
- package/src/__tests__/httpServiceUnwrapEnvelope.test.ts +115 -0
- package/src/__tests__/inSessionRefresh.test.ts +260 -0
- package/src/__tests__/linkedClient.test.ts +370 -0
- package/src/__tests__/parseHttpErrorBody.test.ts +116 -0
- package/src/__tests__/serverValueImportsDeclared.test.ts +120 -0
- package/src/__tests__/userIdentity.test.ts +143 -0
- package/src/boot/__tests__/sessionColdBoot.identity.test.ts +393 -0
- package/src/boot/__tests__/sessionColdBoot.sharedDevice.test.ts +325 -0
- package/src/boot/__tests__/sessionColdBoot.test.ts +570 -0
- package/src/boot/sessionColdBoot.ts +529 -0
- package/src/constants/version.ts +15 -0
- package/src/crypto/__tests__/backupMaterial.test.ts +86 -0
- package/src/crypto/__tests__/cryptoPrimitives.test.ts +226 -0
- package/src/crypto/__tests__/identityMocks.ts +125 -0
- package/src/crypto/__tests__/keyManager.atomicity.test.ts +272 -0
- package/src/crypto/__tests__/keyManager.cacheSafety.test.ts +175 -0
- package/src/crypto/__tests__/keyManager.identityStatus.test.ts +217 -0
- package/src/crypto/__tests__/keyManager.recoveryLadder.test.ts +179 -0
- package/src/crypto/__tests__/keyManager.recoveryMnemonic.test.ts +138 -0
- package/src/crypto/__tests__/keyManager.storageMigration.test.ts +227 -0
- package/src/crypto/__tests__/keyManager.test.ts +329 -0
- package/src/crypto/__tests__/polyfill.test.ts +109 -0
- package/src/crypto/__tests__/recoveryPhrase.test.ts +61 -0
- package/src/crypto/__tests__/scopedSeed.test.ts +126 -0
- package/src/crypto/__tests__/signChallengeShared.test.ts +63 -0
- package/src/crypto/__tests__/signedRecord.test.ts +230 -0
- package/src/crypto/aead.ts +97 -0
- package/src/crypto/ecdh.ts +37 -0
- package/src/crypto/identityMarker.ts +291 -0
- package/src/crypto/kdf.ts +43 -0
- package/src/crypto/keyManager.ts +2607 -0
- package/src/crypto/polyfill.ts +143 -0
- package/src/crypto/recoveryPhrase.ts +337 -0
- package/src/crypto/signatureService.ts +350 -0
- package/src/i18n/__tests__/accountCategoryLabels.test.ts +62 -0
- package/src/i18n/__tests__/accountRoleLabels.test.ts +54 -0
- package/src/i18n/__tests__/reputationCategoryLabels.test.ts +56 -0
- package/src/i18n/__tests__/trustTierLabels.test.ts +47 -0
- package/src/i18n/accountCategoryLabels.ts +44 -0
- package/src/i18n/accountRoleLabels.ts +26 -0
- package/src/i18n/index.ts +88 -0
- package/src/i18n/locales/ar-SA.json +282 -0
- package/src/i18n/locales/ca-ES.json +282 -0
- package/src/i18n/locales/de-DE.json +282 -0
- package/src/i18n/locales/en-US.json +2161 -0
- package/src/i18n/locales/es-ES.json +2161 -0
- package/src/i18n/locales/fr-FR.json +282 -0
- package/src/i18n/locales/it-IT.json +282 -0
- package/src/i18n/locales/ja-JP.json +282 -0
- package/src/i18n/locales/ko-KR.json +282 -0
- package/src/i18n/locales/pt-PT.json +282 -0
- package/src/i18n/locales/zh-CN.json +282 -0
- package/src/i18n/reputationCategoryLabels.ts +20 -0
- package/src/i18n/trustTierLabels.ts +18 -0
- package/src/index.ts +881 -0
- package/src/inference/OxyInferenceClient.ts +888 -0
- package/src/inference/__tests__/OxyInferenceClient.test.ts +834 -0
- package/src/logger/__tests__/logger.test.ts +207 -0
- package/src/logger/index.ts +217 -0
- package/src/mixins/OxyServices.accounts.ts +1330 -0
- package/src/mixins/OxyServices.analytics.ts +53 -0
- package/src/mixins/OxyServices.appData.ts +158 -0
- package/src/mixins/OxyServices.assets.ts +861 -0
- package/src/mixins/OxyServices.auth.ts +1858 -0
- package/src/mixins/OxyServices.chains.ts +134 -0
- package/src/mixins/OxyServices.civic.ts +945 -0
- package/src/mixins/OxyServices.connectedApps.ts +174 -0
- package/src/mixins/OxyServices.contacts.ts +73 -0
- package/src/mixins/OxyServices.deviceBoot.ts +210 -0
- package/src/mixins/OxyServices.deviceTransfer.ts +393 -0
- package/src/mixins/OxyServices.devices.ts +120 -0
- package/src/mixins/OxyServices.features.ts +454 -0
- package/src/mixins/OxyServices.followGraph.ts +293 -0
- package/src/mixins/OxyServices.identity.ts +705 -0
- package/src/mixins/OxyServices.identityBackup.ts +250 -0
- package/src/mixins/OxyServices.inference.ts +57 -0
- package/src/mixins/OxyServices.language.ts +144 -0
- package/src/mixins/OxyServices.links.ts +107 -0
- package/src/mixins/OxyServices.location.ts +46 -0
- package/src/mixins/OxyServices.nodes.ts +337 -0
- package/src/mixins/OxyServices.notifications.ts +142 -0
- package/src/mixins/OxyServices.payment.ts +163 -0
- package/src/mixins/OxyServices.privacy.ts +219 -0
- package/src/mixins/OxyServices.reputation.ts +436 -0
- package/src/mixins/OxyServices.security.ts +110 -0
- package/src/mixins/OxyServices.store.ts +585 -0
- package/src/mixins/OxyServices.topics.ts +169 -0
- package/src/mixins/OxyServices.user.ts +1137 -0
- package/src/mixins/OxyServices.utility.ts +1370 -0
- package/src/mixins/__tests__/OxyServices.civic.test.ts +1095 -0
- package/src/mixins/__tests__/OxyServices.deviceBoot.test.ts +124 -0
- package/src/mixins/__tests__/OxyServices.deviceTransfer.test.ts +271 -0
- package/src/mixins/__tests__/OxyServices.identity.test.ts +376 -0
- package/src/mixins/__tests__/OxyServices.links.test.ts +154 -0
- package/src/mixins/__tests__/OxyServices.nodes.test.ts +341 -0
- package/src/mixins/__tests__/OxyServices.rotateKey.test.ts +276 -0
- package/src/mixins/__tests__/OxyServices.serviceAssetMetadata.test.ts +192 -0
- package/src/mixins/__tests__/OxyServices.serviceAssetMetadataBySha.test.ts +135 -0
- package/src/mixins/__tests__/accounts.test.ts +727 -0
- package/src/mixins/__tests__/appData.test.ts +203 -0
- package/src/mixins/__tests__/assetCredentials.test.ts +47 -0
- package/src/mixins/__tests__/assetUpload.test.ts +191 -0
- package/src/mixins/__tests__/backgroundCredential.httpIntegration.test.ts +135 -0
- package/src/mixins/__tests__/chains.test.ts +113 -0
- package/src/mixins/__tests__/commonsSignIn.test.ts +1144 -0
- package/src/mixins/__tests__/connectedApps.test.ts +123 -0
- package/src/mixins/__tests__/deviceTokenMintPinned.test.ts +113 -0
- package/src/mixins/__tests__/discoveryErrorHandling.test.ts +266 -0
- package/src/mixins/__tests__/followCacheInvalidation.test.ts +173 -0
- package/src/mixins/__tests__/followGraph.test.ts +147 -0
- package/src/mixins/__tests__/followGraphPagination.test.ts +271 -0
- package/src/mixins/__tests__/getFileDownloadUrl.test.ts +346 -0
- package/src/mixins/__tests__/getFollowStatuses.test.ts +95 -0
- package/src/mixins/__tests__/getUsersByIds.test.ts +149 -0
- package/src/mixins/__tests__/identityBackup.test.ts +315 -0
- package/src/mixins/__tests__/identityWriteCacheInvalidation.test.ts +407 -0
- package/src/mixins/__tests__/inferenceFactory.test.ts +58 -0
- package/src/mixins/__tests__/onTokensChanged.test.ts +129 -0
- package/src/mixins/__tests__/preSessionSkipAuth.test.ts +284 -0
- package/src/mixins/__tests__/privacyCacheInvalidation.test.ts +155 -0
- package/src/mixins/__tests__/reputation.test.ts +522 -0
- package/src/mixins/__tests__/serviceAuth.test.ts +832 -0
- package/src/mixins/__tests__/serviceTokenJwks.test.ts +208 -0
- package/src/mixins/__tests__/store.test.ts +304 -0
- package/src/mixins/__tests__/topics.test.ts +156 -0
- package/src/mixins/__tests__/userReadCacheBypass.test.ts +129 -0
- package/src/mixins/__tests__/userTokenAuth.test.ts +746 -0
- package/src/mixins/__tests__/verifyChallenge.test.ts +130 -0
- package/src/mixins/__tests__/verifyServiceActingAs.test.ts +167 -0
- package/src/mixins/__tests__/webauthnAuth.test.ts +205 -0
- package/src/mixins/index.ts +201 -0
- package/src/mixins/mixinHelpers.ts +69 -0
- package/src/models/Topic.ts +46 -0
- package/src/models/interfaces.ts +786 -0
- package/src/models/session.ts +55 -0
- package/src/server/__tests__/auth.test.ts +78 -0
- package/src/server/__tests__/capabilityTicket.test.ts +111 -0
- package/src/server/__tests__/cors.socket.test.ts +225 -0
- package/src/server/__tests__/cors.test.ts +158 -0
- package/src/server/__tests__/rateLimit.test.ts +257 -0
- package/src/server/__tests__/safeFetch.test.ts +232 -0
- package/src/server/__tests__/securityHeaders.test.ts +348 -0
- package/src/server/__tests__/serviceTokenAttribution.test.ts +396 -0
- package/src/server/__tests__/userInvalidation.test.ts +203 -0
- package/src/server/__tests__/verifySecret.test.ts +40 -0
- package/src/server/auth.ts +271 -0
- package/src/server/capabilityTicket.ts +258 -0
- package/src/server/cors.ts +277 -0
- package/src/server/index.ts +136 -0
- package/src/server/rateLimit.ts +313 -0
- package/src/server/safeFetch.ts +586 -0
- package/src/server/securityHeaders.ts +467 -0
- package/src/server/userInvalidation.ts +199 -0
- package/src/server/verifySecret.ts +52 -0
- package/src/session/SessionClient.ts +1001 -0
- package/src/session/__tests__/SessionClient.additive.test.ts +153 -0
- package/src/session/__tests__/SessionClient.broadcastChannel.test.ts +114 -0
- package/src/session/__tests__/SessionClient.diagnostics.test.ts +91 -0
- package/src/session/__tests__/SessionClient.directory.test.ts +688 -0
- package/src/session/__tests__/SessionClient.httpIntegration.test.ts +65 -0
- package/src/session/__tests__/SessionClient.identityPin.test.ts +175 -0
- package/src/session/__tests__/SessionClient.rest.test.ts +119 -0
- package/src/session/__tests__/SessionClient.serverEvents.test.ts +72 -0
- package/src/session/__tests__/SessionClient.socket.test.ts +202 -0
- package/src/session/__tests__/SessionClient.socketFactory.test.ts +81 -0
- package/src/session/__tests__/SessionClient.state.test.ts +78 -0
- package/src/session/__tests__/SessionClient.switchTokenOrder.test.ts +170 -0
- package/src/session/__tests__/accountDelegationAccess.test.ts +104 -0
- package/src/session/__tests__/accountDialogController.test.ts +1969 -0
- package/src/session/__tests__/accountDialogShape.test.ts +118 -0
- package/src/session/__tests__/accountSwitchTargets.test.ts +137 -0
- package/src/session/__tests__/authStateStore.test.ts +451 -0
- package/src/session/__tests__/deviceDirectory.test.ts +422 -0
- package/src/session/__tests__/deviceSwitcherRows.test.ts +223 -0
- package/src/session/__tests__/identityPin.test.ts +131 -0
- package/src/session/__tests__/identitySession.test.ts +194 -0
- package/src/session/__tests__/projectSessionState.test.ts +105 -0
- package/src/session/__tests__/refresh.identityPin.test.ts +307 -0
- package/src/session/__tests__/refresh.test.ts +443 -0
- package/src/session/__tests__/sessionIntegration.test.ts +209 -0
- package/src/session/__tests__/sharedDeviceCredential.test.ts +300 -0
- package/src/session/accountDelegationAccess.ts +72 -0
- package/src/session/accountDialogController.ts +1494 -0
- package/src/session/accountSwitchTargets.ts +93 -0
- package/src/session/authStateStore.ts +502 -0
- package/src/session/createSessionClient.ts +39 -0
- package/src/session/deviceDirectory.ts +269 -0
- package/src/session/deviceSwitcherRows.ts +145 -0
- package/src/session/identityPin.ts +310 -0
- package/src/session/identitySession.ts +206 -0
- package/src/session/projectSessionState.ts +137 -0
- package/src/session/refresh.ts +517 -0
- package/src/session/sessionClientHost.ts +39 -0
- package/src/session/sharedDeviceCredential.ts +349 -0
- package/src/session/socketLoader.ts +30 -0
- package/src/shared/utils/colorUtils.ts +155 -0
- package/src/shared/utils/errorUtils.ts +181 -0
- package/src/shared/utils/index.ts +59 -0
- package/src/shared/utils/networkUtils.ts +248 -0
- package/src/shared/utils/themeUtils.ts +115 -0
- package/src/types/buffer.d.ts +97 -0
- package/src/types/expo-crypto.d.ts +16 -0
- package/src/types/expo-secure-store.d.ts +17 -0
- package/src/utils/__tests__/accountUtils.test.ts +151 -0
- package/src/utils/__tests__/activityId.test.ts +45 -0
- package/src/utils/__tests__/asyncUtils.test.ts +187 -0
- package/src/utils/__tests__/authWebUrl.test.ts +15 -0
- package/src/utils/__tests__/cacheKey.test.ts +0 -0
- package/src/utils/__tests__/coldBoot.test.ts +496 -0
- package/src/utils/__tests__/commonsApproval.test.ts +60 -0
- package/src/utils/__tests__/identityCacheSweep.test.ts +151 -0
- package/src/utils/__tests__/languageUtils.test.ts +219 -0
- package/src/utils/__tests__/oauthPkce.test.ts +272 -0
- package/src/utils/__tests__/officialOrigins.test.ts +31 -0
- package/src/utils/__tests__/oxyServiceEnvironment.test.ts +7 -0
- package/src/utils/__tests__/profileLinks.test.ts +180 -0
- package/src/utils/__tests__/redactUrl.test.ts +33 -0
- package/src/utils/__tests__/registrableApex.test.ts +62 -0
- package/src/utils/__tests__/textNormalization.test.ts +205 -0
- package/src/utils/__tests__/validationUtils.test.ts +703 -0
- package/src/utils/__tests__/webauthnOrigin.test.ts +83 -0
- package/src/utils/accountCacheSweep.ts +93 -0
- package/src/utils/accountUtils.ts +194 -0
- package/src/utils/activityId.ts +2 -0
- package/src/utils/apiUtils.ts +137 -0
- package/src/utils/asyncUtils.ts +280 -0
- package/src/utils/authHelpers.ts +148 -0
- package/src/utils/authWebUrl.ts +17 -0
- package/src/utils/avatarUtils.ts +39 -0
- package/src/utils/cache.ts +273 -0
- package/src/utils/cacheKey.ts +93 -0
- package/src/utils/coldBoot.ts +218 -0
- package/src/utils/commonsApproval.ts +39 -0
- package/src/utils/commonsDelivery.ts +132 -0
- package/src/utils/deviceManager.ts +203 -0
- package/src/utils/displayNamePolicyRanges.generated.ts +69 -0
- package/src/utils/edgeRegion.ts +2 -0
- package/src/utils/errorUtils.ts +352 -0
- package/src/utils/identityCacheSweep.ts +104 -0
- package/src/utils/languageUtils.ts +256 -0
- package/src/utils/oauthPkce.ts +392 -0
- package/src/utils/officialOrigins.ts +62 -0
- package/src/utils/oxyServiceEnvironment.ts +17 -0
- package/src/utils/platform.ts +139 -0
- package/src/utils/profileLinks.ts +91 -0
- package/src/utils/redactUrl.ts +28 -0
- package/src/utils/registrableApex.ts +41 -0
- package/src/utils/requestUtils.ts +237 -0
- package/src/utils/sessionUtils.ts +206 -0
- package/src/utils/textNormalization.ts +162 -0
- package/src/utils/userHandle.ts +49 -0
- package/src/utils/userIdentity.ts +60 -0
- package/src/utils/validationUtils.ts +390 -0
- package/src/utils/webauthnOrigin.ts +52 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Consolidated color manipulation utilities used across the OxyServices ecosystem.
|
|
5
|
+
* These functions work in any JavaScript environment (browser, Node.js, React Native).
|
|
6
|
+
*
|
|
7
|
+
* @module shared/utils/colorUtils
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Darkens a hex color by a specified factor.
|
|
11
|
+
*
|
|
12
|
+
* @param color - Hex color string (with or without #)
|
|
13
|
+
* @param factor - Amount to darken (0-1). Default: 0.6
|
|
14
|
+
* @returns Darkened hex color string with # prefix
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* darkenColor('#FF0000', 0.5); // Returns a darker red
|
|
19
|
+
* darkenColor('FF0000', 0.3); // Also works without #
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare const darkenColor: (color: string, factor?: number) => string;
|
|
23
|
+
/**
|
|
24
|
+
* Lightens a hex color by a specified factor.
|
|
25
|
+
*
|
|
26
|
+
* @param color - Hex color string (with or without #)
|
|
27
|
+
* @param factor - Amount to lighten (0-1). Default: 0.3
|
|
28
|
+
* @returns Lightened hex color string with # prefix
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* lightenColor('#0000FF', 0.5); // Returns a lighter blue
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare const lightenColor: (color: string, factor?: number) => string;
|
|
36
|
+
/**
|
|
37
|
+
* Converts a hex color to RGB values.
|
|
38
|
+
*
|
|
39
|
+
* @param hex - Hex color string (with or without #)
|
|
40
|
+
* @returns Object with r, g, b values (0-255)
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* hexToRgb('#FF5733'); // { r: 255, g: 87, b: 51 }
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare const hexToRgb: (hex: string) => {
|
|
48
|
+
r: number;
|
|
49
|
+
g: number;
|
|
50
|
+
b: number;
|
|
51
|
+
} | null;
|
|
52
|
+
/**
|
|
53
|
+
* Converts RGB values to a hex color string.
|
|
54
|
+
*
|
|
55
|
+
* @param r - Red value (0-255)
|
|
56
|
+
* @param g - Green value (0-255)
|
|
57
|
+
* @param b - Blue value (0-255)
|
|
58
|
+
* @returns Hex color string with # prefix
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* rgbToHex(255, 87, 51); // '#ff5733'
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare const rgbToHex: (r: number, g: number, b: number) => string;
|
|
66
|
+
/**
|
|
67
|
+
* Adjusts the opacity of a hex color, returning an rgba string.
|
|
68
|
+
*
|
|
69
|
+
* @param hex - Hex color string
|
|
70
|
+
* @param opacity - Opacity value (0-1)
|
|
71
|
+
* @returns RGBA color string
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* withOpacity('#FF0000', 0.5); // 'rgba(255, 0, 0, 0.5)'
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare const withOpacity: (hex: string, opacity: number) => string;
|
|
79
|
+
/**
|
|
80
|
+
* Checks if a color is considered "light" (for determining text contrast).
|
|
81
|
+
*
|
|
82
|
+
* @param hex - Hex color string
|
|
83
|
+
* @returns true if the color is light, false if dark
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* isLightColor('#FFFFFF'); // true
|
|
88
|
+
* isLightColor('#000000'); // false
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare const isLightColor: (hex: string) => boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Gets a contrasting text color (black or white) for a given background color.
|
|
94
|
+
*
|
|
95
|
+
* @param backgroundColor - Hex color string of the background
|
|
96
|
+
* @returns '#000000' for light backgrounds, '#ffffff' for dark backgrounds
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```ts
|
|
100
|
+
* getContrastTextColor('#FFFF00'); // '#000000' (black text on yellow)
|
|
101
|
+
* getContrastTextColor('#000080'); // '#ffffff' (white text on navy)
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export declare const getContrastTextColor: (backgroundColor: string) => string;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Consolidated error handling utilities for the OxyServices ecosystem.
|
|
5
|
+
* These functions help with common error patterns like checking HTTP status codes.
|
|
6
|
+
*
|
|
7
|
+
* @module shared/utils/errorUtils
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Common HTTP status codes used in error checking.
|
|
11
|
+
*/
|
|
12
|
+
export declare const HttpStatus: {
|
|
13
|
+
readonly BAD_REQUEST: 400;
|
|
14
|
+
readonly UNAUTHORIZED: 401;
|
|
15
|
+
readonly FORBIDDEN: 403;
|
|
16
|
+
readonly NOT_FOUND: 404;
|
|
17
|
+
readonly CONFLICT: 409;
|
|
18
|
+
readonly UNPROCESSABLE_ENTITY: 422;
|
|
19
|
+
readonly TOO_MANY_REQUESTS: 429;
|
|
20
|
+
readonly INTERNAL_SERVER_ERROR: 500;
|
|
21
|
+
readonly BAD_GATEWAY: 502;
|
|
22
|
+
readonly SERVICE_UNAVAILABLE: 503;
|
|
23
|
+
readonly GATEWAY_TIMEOUT: 504;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Extracts the HTTP status code from an error object.
|
|
27
|
+
*
|
|
28
|
+
* @param error - Any error object
|
|
29
|
+
* @returns The status code if found, undefined otherwise
|
|
30
|
+
*/
|
|
31
|
+
export declare const getErrorStatus: (error: unknown) => number | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Extracts the error message from an error object.
|
|
34
|
+
*
|
|
35
|
+
* @param error - Any error object
|
|
36
|
+
* @param fallback - Fallback message if none found
|
|
37
|
+
* @returns The error message
|
|
38
|
+
*/
|
|
39
|
+
export declare const getErrorMessage: (error: unknown, fallback?: string) => string;
|
|
40
|
+
/**
|
|
41
|
+
* Check if an error indicates the user is already registered (HTTP 409 Conflict).
|
|
42
|
+
*
|
|
43
|
+
* The backend should always return HTTP 409 for duplicate registrations.
|
|
44
|
+
*
|
|
45
|
+
* @param error - Any error object
|
|
46
|
+
* @returns true if the error is a 409 Conflict
|
|
47
|
+
*/
|
|
48
|
+
export declare const isAlreadyRegisteredError: (error: unknown) => boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Check if an error is an authentication error (HTTP 401).
|
|
51
|
+
*
|
|
52
|
+
* @param error - Any error object
|
|
53
|
+
* @returns true if the error is a 401 Unauthorized
|
|
54
|
+
*/
|
|
55
|
+
export declare const isUnauthorizedError: (error: unknown) => boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Check if an error is a forbidden error (HTTP 403).
|
|
58
|
+
*
|
|
59
|
+
* @param error - Any error object
|
|
60
|
+
* @returns true if the error is a 403 Forbidden
|
|
61
|
+
*/
|
|
62
|
+
export declare const isForbiddenError: (error: unknown) => boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Check if an error is a not found error (HTTP 404).
|
|
65
|
+
*
|
|
66
|
+
* @param error - Any error object
|
|
67
|
+
* @returns true if the error is a 404 Not Found
|
|
68
|
+
*/
|
|
69
|
+
export declare const isNotFoundError: (error: unknown) => boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Check if an error is a rate limit error (HTTP 429).
|
|
72
|
+
*
|
|
73
|
+
* @param error - Any error object
|
|
74
|
+
* @returns true if the error is a 429 Too Many Requests
|
|
75
|
+
*/
|
|
76
|
+
export declare const isRateLimitError: (error: unknown) => boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Check if an error is a server error (HTTP 5xx).
|
|
79
|
+
*
|
|
80
|
+
* @param error - Any error object
|
|
81
|
+
* @returns true if the error is a 5xx server error
|
|
82
|
+
*/
|
|
83
|
+
export declare const isServerError: (error: unknown) => boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Check if an error is a network error (no response received).
|
|
86
|
+
*
|
|
87
|
+
* @param error - Any error object
|
|
88
|
+
* @returns true if the error appears to be a network error
|
|
89
|
+
*/
|
|
90
|
+
export declare const isNetworkError: (error: unknown) => boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Check if an error is retryable (network errors or 5xx server errors).
|
|
93
|
+
*
|
|
94
|
+
* @param error - Any error object
|
|
95
|
+
* @returns true if the request should be retried
|
|
96
|
+
*/
|
|
97
|
+
export declare const isRetryableError: (error: unknown) => boolean;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all shared utilities for convenient importing.
|
|
5
|
+
*
|
|
6
|
+
* @module shared/utils
|
|
7
|
+
*/
|
|
8
|
+
export { darkenColor, lightenColor, hexToRgb, rgbToHex, withOpacity, isLightColor, getContrastTextColor, } from './colorUtils';
|
|
9
|
+
export { normalizeTheme, normalizeColorScheme, getOppositeTheme, systemPrefersDarkMode, getSystemColorScheme, } from './themeUtils';
|
|
10
|
+
export type { ThemeValue } from './themeUtils';
|
|
11
|
+
export { HttpStatus, getErrorStatus, getErrorMessage, isAlreadyRegisteredError, isUnauthorizedError, isForbiddenError, isNotFoundError, isRateLimitError, isServerError, isNetworkError, isRetryableError, } from './errorUtils';
|
|
12
|
+
export { DEFAULT_CIRCUIT_BREAKER_CONFIG, createCircuitBreakerState, calculateBackoffInterval, recordFailure, recordSuccess, shouldAllowRequest, delay, withRetry, } from './networkUtils';
|
|
13
|
+
export type { CircuitBreakerState, CircuitBreakerConfig, } from './networkUtils';
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Consolidated network utilities including circuit breaker pattern
|
|
5
|
+
* and exponential backoff for resilient API calls.
|
|
6
|
+
*
|
|
7
|
+
* @module shared/utils/networkUtils
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* State for circuit breaker pattern.
|
|
11
|
+
*/
|
|
12
|
+
export interface CircuitBreakerState {
|
|
13
|
+
/** Number of consecutive failures */
|
|
14
|
+
consecutiveFailures: number;
|
|
15
|
+
/** Current interval between retries (ms) */
|
|
16
|
+
currentInterval: number;
|
|
17
|
+
/** Base interval for retries (ms) */
|
|
18
|
+
baseInterval: number;
|
|
19
|
+
/** Maximum interval cap (ms) */
|
|
20
|
+
maxInterval: number;
|
|
21
|
+
/** Number of failures before circuit opens */
|
|
22
|
+
maxFailures: number;
|
|
23
|
+
/** Whether the circuit is currently open (blocking requests) */
|
|
24
|
+
isOpen?: boolean;
|
|
25
|
+
/** Timestamp when circuit was opened */
|
|
26
|
+
openedAt?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Configuration for circuit breaker.
|
|
30
|
+
*/
|
|
31
|
+
export interface CircuitBreakerConfig {
|
|
32
|
+
/** Base interval between retries in milliseconds. Default: 10000 (10s) */
|
|
33
|
+
baseInterval?: number;
|
|
34
|
+
/** Maximum interval cap in milliseconds. Default: 60000 (60s) */
|
|
35
|
+
maxInterval?: number;
|
|
36
|
+
/** Number of consecutive failures before opening circuit. Default: 5 */
|
|
37
|
+
maxFailures?: number;
|
|
38
|
+
/** Time to wait before attempting recovery in milliseconds. Default: 30000 (30s) */
|
|
39
|
+
recoveryTimeout?: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Default circuit breaker configuration.
|
|
43
|
+
*/
|
|
44
|
+
export declare const DEFAULT_CIRCUIT_BREAKER_CONFIG: Required<CircuitBreakerConfig>;
|
|
45
|
+
/**
|
|
46
|
+
* Creates initial circuit breaker state.
|
|
47
|
+
*
|
|
48
|
+
* @param config - Optional custom configuration
|
|
49
|
+
* @returns Initial circuit breaker state
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* const state = createCircuitBreakerState({ maxFailures: 3 });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare const createCircuitBreakerState: (config?: CircuitBreakerConfig) => CircuitBreakerState;
|
|
57
|
+
/**
|
|
58
|
+
* Calculates next interval using exponential backoff.
|
|
59
|
+
*
|
|
60
|
+
* @param state - Current circuit breaker state
|
|
61
|
+
* @returns Next interval in milliseconds
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* const nextInterval = calculateBackoffInterval(state);
|
|
66
|
+
* await delay(nextInterval);
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare const calculateBackoffInterval: (state: CircuitBreakerState) => number;
|
|
70
|
+
/**
|
|
71
|
+
* Records a failure and updates circuit breaker state.
|
|
72
|
+
*
|
|
73
|
+
* @param state - Current circuit breaker state
|
|
74
|
+
* @returns Updated state after recording failure
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* try {
|
|
79
|
+
* await apiCall();
|
|
80
|
+
* state = recordSuccess(state);
|
|
81
|
+
* } catch (error) {
|
|
82
|
+
* state = recordFailure(state);
|
|
83
|
+
* }
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare const recordFailure: (state: CircuitBreakerState) => CircuitBreakerState;
|
|
87
|
+
/**
|
|
88
|
+
* Records a success and resets circuit breaker state.
|
|
89
|
+
*
|
|
90
|
+
* @param state - Current circuit breaker state
|
|
91
|
+
* @returns Reset state after successful request
|
|
92
|
+
*/
|
|
93
|
+
export declare const recordSuccess: (state: CircuitBreakerState) => CircuitBreakerState;
|
|
94
|
+
/**
|
|
95
|
+
* Checks if the circuit breaker should allow a request.
|
|
96
|
+
*
|
|
97
|
+
* When the circuit is open, it will only allow requests after
|
|
98
|
+
* the recovery timeout has passed (half-open state).
|
|
99
|
+
*
|
|
100
|
+
* @param state - Current circuit breaker state
|
|
101
|
+
* @param recoveryTimeout - Time to wait before allowing recovery attempts
|
|
102
|
+
* @returns true if request should be allowed
|
|
103
|
+
*/
|
|
104
|
+
export declare const shouldAllowRequest: (state: CircuitBreakerState, recoveryTimeout?: number) => boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Delays execution for a specified duration.
|
|
107
|
+
*
|
|
108
|
+
* @param ms - Milliseconds to delay
|
|
109
|
+
* @returns Promise that resolves after the delay
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* await delay(1000); // Wait 1 second
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export declare const delay: (ms: number) => Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* Executes a function with exponential backoff retry.
|
|
119
|
+
*
|
|
120
|
+
* @param fn - Async function to execute
|
|
121
|
+
* @param options - Retry options
|
|
122
|
+
* @returns Result of the function
|
|
123
|
+
* @throws Last error if all retries fail
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* const result = await withRetry(
|
|
128
|
+
* () => fetchData(),
|
|
129
|
+
* { maxRetries: 3, baseDelay: 1000 }
|
|
130
|
+
* );
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export declare const withRetry: <T>(fn: () => Promise<T>, options?: {
|
|
134
|
+
maxRetries?: number;
|
|
135
|
+
baseDelay?: number;
|
|
136
|
+
maxDelay?: number;
|
|
137
|
+
shouldRetry?: (error: unknown) => boolean;
|
|
138
|
+
onRetry?: (error: unknown, attempt: number) => void;
|
|
139
|
+
}) => Promise<T>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Consolidated theme utilities for normalizing and handling color schemes
|
|
5
|
+
* across the OxyServices ecosystem.
|
|
6
|
+
*
|
|
7
|
+
* @module shared/utils/themeUtils
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Valid theme values in the Oxy ecosystem.
|
|
11
|
+
*/
|
|
12
|
+
export type ThemeValue = 'light' | 'dark';
|
|
13
|
+
/**
|
|
14
|
+
* Normalizes a theme value to ensure it's always 'light' or 'dark'.
|
|
15
|
+
*
|
|
16
|
+
* @param theme - Theme value (may be 'light' | 'dark' | string | undefined)
|
|
17
|
+
* @returns Normalized 'light' | 'dark' theme (defaults to 'light')
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* normalizeTheme('dark'); // 'dark'
|
|
22
|
+
* normalizeTheme('light'); // 'light'
|
|
23
|
+
* normalizeTheme('unknown'); // 'light'
|
|
24
|
+
* normalizeTheme(undefined); // 'light'
|
|
25
|
+
* normalizeTheme(null); // 'light'
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare const normalizeTheme: (theme?: string | null) => ThemeValue;
|
|
29
|
+
/**
|
|
30
|
+
* Normalizes a color scheme value with optional fallback chain.
|
|
31
|
+
*
|
|
32
|
+
* Handles null/undefined cases from React Native's useColorScheme() hook
|
|
33
|
+
* with a proper fallback chain.
|
|
34
|
+
*
|
|
35
|
+
* @param colorScheme - The color scheme from useColorScheme() hook (may be null/undefined)
|
|
36
|
+
* @param theme - Optional theme prop as fallback
|
|
37
|
+
* @returns Normalized 'light' | 'dark' color scheme
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* // In a React Native component:
|
|
42
|
+
* const systemScheme = useColorScheme(); // might be null
|
|
43
|
+
* const colorScheme = normalizeColorScheme(systemScheme, props.theme);
|
|
44
|
+
*
|
|
45
|
+
* normalizeColorScheme('dark', 'light'); // 'dark'
|
|
46
|
+
* normalizeColorScheme(null, 'dark'); // 'dark'
|
|
47
|
+
* normalizeColorScheme(undefined, undefined); // 'light'
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare const normalizeColorScheme: (colorScheme?: string | null, theme?: string) => ThemeValue;
|
|
51
|
+
/**
|
|
52
|
+
* Gets the opposite theme value.
|
|
53
|
+
*
|
|
54
|
+
* @param theme - Current theme value
|
|
55
|
+
* @returns The opposite theme ('light' → 'dark', 'dark' → 'light')
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* getOppositeTheme('light'); // 'dark'
|
|
60
|
+
* getOppositeTheme('dark'); // 'light'
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare const getOppositeTheme: (theme: ThemeValue) => ThemeValue;
|
|
64
|
+
/**
|
|
65
|
+
* Checks if the system prefers dark mode.
|
|
66
|
+
*
|
|
67
|
+
* This function only works in browser environments.
|
|
68
|
+
* Returns false in non-browser environments (Node.js, React Native).
|
|
69
|
+
*
|
|
70
|
+
* @returns true if system prefers dark mode, false otherwise
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* if (systemPrefersDarkMode()) {
|
|
75
|
+
* setTheme('dark');
|
|
76
|
+
* }
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export declare const systemPrefersDarkMode: () => boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Gets the system's preferred color scheme.
|
|
82
|
+
*
|
|
83
|
+
* @returns 'dark' if system prefers dark mode, 'light' otherwise
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* const theme = getSystemColorScheme();
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export declare const getSystemColorScheme: () => ThemeValue;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE enumeration of `OxyServices` GET-cache keys that serve the ACCOUNT FOREST
|
|
3
|
+
* — the caller's accessible accounts, as lists and as individual detail rows —
|
|
4
|
+
* and the one sweep that clears them.
|
|
5
|
+
*
|
|
6
|
+
* WHY THIS IS NOT A METHOD ON THE ACCOUNTS MIXIN
|
|
7
|
+
* ---------------------------------------------
|
|
8
|
+
* `AccountNode.account` is a whole `User`, so a forest read embeds the very
|
|
9
|
+
* profile the identity reads serve. That makes an IDENTITY write a writer of
|
|
10
|
+
* these keys too: `updateProfile` edits the caller's own personal account,
|
|
11
|
+
* which is a row in `GET /accounts` and is its own `GET /accounts/<id>`. Leave
|
|
12
|
+
* those cached and the account switcher keeps drawing the pre-edit name and
|
|
13
|
+
* picture for the full TTL, against a perfectly healthy server.
|
|
14
|
+
*
|
|
15
|
+
* The mixins compose into one class at runtime but are typed one at a time, so
|
|
16
|
+
* the user mixin cannot call a method the accounts mixin owns. The key list
|
|
17
|
+
* therefore lives here, once, and every writer calls {@link
|
|
18
|
+
* evictOxyAccountForestCache} — exactly like the identity key list in
|
|
19
|
+
* `identityCacheSweep`, which the accounts mixin already calls for the
|
|
20
|
+
* mirror-image case (an account write staling the identity reads). The
|
|
21
|
+
* alternative — a second hand-written copy of these keys in the other mixin —
|
|
22
|
+
* is the drift that shipped the two stale-profile bugs `identityCacheSweep`
|
|
23
|
+
* documents.
|
|
24
|
+
*
|
|
25
|
+
* WHY THE LIST NEEDS A PREFIX AND THE DETAIL DOES NOT
|
|
26
|
+
* --------------------------------------------------
|
|
27
|
+
* `listAccounts({tree?})` keys the flat list as `GET:/accounts` and every
|
|
28
|
+
* option variant as `GET:/accounts?<query>` (the query string is part of the
|
|
29
|
+
* URL, hence of the key), and a writer cannot enumerate which variants a caller
|
|
30
|
+
* has read. The detail key, by contrast, is derivable from the account id the
|
|
31
|
+
* writer already holds.
|
|
32
|
+
*
|
|
33
|
+
* The `GET:/accounts?` prefix matches ONLY the query-string list variants —
|
|
34
|
+
* never `GET:/accounts/<id>` or its `…/members`, `…/credentials`, `…/children`
|
|
35
|
+
* sub-resources, which are the accounts mixin's own business and stay there.
|
|
36
|
+
*/
|
|
37
|
+
import type { OxyIdentityCacheEvictor } from './identityCacheSweep';
|
|
38
|
+
/**
|
|
39
|
+
* The cache-eviction surface of an `OxyServices` instance. Reused from
|
|
40
|
+
* `identityCacheSweep` rather than re-declared: it is the SDK's one published
|
|
41
|
+
* name for these two methods, and a second identical interface would be one
|
|
42
|
+
* more shape to keep in step.
|
|
43
|
+
*/
|
|
44
|
+
export type OxyAccountCacheEvictor = OxyIdentityCacheEvictor;
|
|
45
|
+
/** The cache key `listAccounts()` reads under with no options. */
|
|
46
|
+
export declare const OXY_ACCOUNT_LIST_CACHE_KEY = "GET:/accounts";
|
|
47
|
+
/**
|
|
48
|
+
* The prefix covering every option-carrying `listAccounts(opts)` variant
|
|
49
|
+
* (`?tree=true`, …), none of which a writer can enumerate.
|
|
50
|
+
*/
|
|
51
|
+
export declare const OXY_ACCOUNT_LIST_CACHE_QUERY_PREFIX = "GET:/accounts?";
|
|
52
|
+
/**
|
|
53
|
+
* Prefix covering every per-account sub-resource cache key
|
|
54
|
+
* (`GET:/accounts/<id>`, `…/members`, `…/credentials`, `…/children`). A
|
|
55
|
+
* membership mutation on an ancestor must sweep ALL of these, not only the
|
|
56
|
+
* account named in the path: descendant member rosters embed inherited rows
|
|
57
|
+
* resolved from that ancestor, and the writer cannot enumerate which descendant
|
|
58
|
+
* ids a caller has already read. The trailing slash deliberately excludes the
|
|
59
|
+
* forest list keys (`GET:/accounts`, `GET:/accounts?…`) documented above.
|
|
60
|
+
*/
|
|
61
|
+
export declare const OXY_ACCOUNT_PER_ACCOUNT_CACHE_PREFIX = "GET:/accounts/";
|
|
62
|
+
/**
|
|
63
|
+
* Build the exact cache key `getAccount(accountId)` reads under.
|
|
64
|
+
*/
|
|
65
|
+
export declare function oxyAccountDetailCacheKey(accountId: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Sweep an `OxyServices` GET response cache of the account forest.
|
|
68
|
+
*
|
|
69
|
+
* @param oxy - Anything exposing the SDK's two eviction methods.
|
|
70
|
+
* @param accountId - The account whose detail row to drop as well. Optional: a
|
|
71
|
+
* writer that changed the SHAPE of the forest rather than one
|
|
72
|
+
* account in it (create, archive, ownership transfer) has no
|
|
73
|
+
* detail row to name, and clears only the lists.
|
|
74
|
+
*/
|
|
75
|
+
export declare function evictOxyAccountForestCache(oxy: OxyAccountCacheEvictor, accountId?: string): void;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared account types and pure helper functions.
|
|
3
|
+
* Used by the @oxy.so/services account stores (Expo/RN and RN-Web).
|
|
4
|
+
*/
|
|
5
|
+
export interface QuickAccount {
|
|
6
|
+
sessionId: string;
|
|
7
|
+
userId?: string;
|
|
8
|
+
username: string;
|
|
9
|
+
displayName: string;
|
|
10
|
+
avatar?: string;
|
|
11
|
+
avatarUrl?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Device-local account slot index, 0..N-1 (Google-style multi-account).
|
|
14
|
+
* Optional so that pre-multi-account QuickAccounts (sessionId-only) remain
|
|
15
|
+
* valid; the device session set populates it where available.
|
|
16
|
+
*/
|
|
17
|
+
authuser?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Account's preferred Bloom color preset (e.g. `"blue"`, `"oxy"`). Drives
|
|
20
|
+
* per-account theming in the account chooser. `null` / `undefined` means
|
|
21
|
+
* the account has no preference and the base theme should be used.
|
|
22
|
+
*/
|
|
23
|
+
color?: string | null;
|
|
24
|
+
}
|
|
25
|
+
/** Minimal user shape accepted by display-name helpers. Avoids importing the full User type. */
|
|
26
|
+
export interface DisplayNameUserShape {
|
|
27
|
+
name?: string | {
|
|
28
|
+
displayName?: string;
|
|
29
|
+
first?: string;
|
|
30
|
+
last?: string;
|
|
31
|
+
full?: string;
|
|
32
|
+
[key: string]: unknown;
|
|
33
|
+
};
|
|
34
|
+
/** Pre-normalized account-row display name, not the API User DTO field. */
|
|
35
|
+
displayName?: string;
|
|
36
|
+
username?: string;
|
|
37
|
+
publicKey?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Truncate a long public key for display, e.g. `0x12345678…`.
|
|
41
|
+
* Falls back to the raw key if it's too short to truncate.
|
|
42
|
+
*/
|
|
43
|
+
export declare const formatPublicKeyHandle: (publicKey: string) => string;
|
|
44
|
+
/**
|
|
45
|
+
* Resolve a friendly display name for a user.
|
|
46
|
+
*
|
|
47
|
+
* Order of preference:
|
|
48
|
+
* 1. `name.displayName` from the API user contract.
|
|
49
|
+
* 2. `name.full`, or composed `name.first name.last` for local unsaved shapes.
|
|
50
|
+
* 3. `name` when passed as a plain string by local non-DTO call sites.
|
|
51
|
+
* 4. pre-normalized account-row `displayName`.
|
|
52
|
+
* 5. `username`
|
|
53
|
+
* 6. `Account 0x12345678…` (derived from publicKey, when present)
|
|
54
|
+
* 7. Translated fallback (e.g. "Unnamed")
|
|
55
|
+
*
|
|
56
|
+
* The translation key `common.unnamed` is used for the final fallback. If the
|
|
57
|
+
* caller does not pass a locale, the default English translation is used.
|
|
58
|
+
*/
|
|
59
|
+
export declare const getAccountDisplayName: (user: DisplayNameUserShape | null | undefined, locale?: string) => string;
|
|
60
|
+
/**
|
|
61
|
+
* Resolve a `@handle` style identifier for a user.
|
|
62
|
+
*
|
|
63
|
+
* Returns the bare username when present (without the `@`), otherwise a
|
|
64
|
+
* truncated public-key handle (`0x12345678…`), or `undefined` when neither is
|
|
65
|
+
* available — callers can decide whether to hide the line entirely.
|
|
66
|
+
*/
|
|
67
|
+
export declare const getAccountFallbackHandle: (user: DisplayNameUserShape | null | undefined) => string | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Build an ordered array of QuickAccounts from a map and order list.
|
|
70
|
+
*/
|
|
71
|
+
export declare const buildAccountsArray: (accounts: Record<string, QuickAccount>, order: string[]) => QuickAccount[];
|
|
72
|
+
/**
|
|
73
|
+
* Create a QuickAccount from user data returned by the API.
|
|
74
|
+
*
|
|
75
|
+
* @param sessionId - Session identifier
|
|
76
|
+
* @param userData - Raw user object from the API
|
|
77
|
+
* @param existingAccount - Previously cached account (to preserve avatarUrl if unchanged)
|
|
78
|
+
* @param getFileDownloadUrl - Function to generate avatar download URL from file ID
|
|
79
|
+
*/
|
|
80
|
+
export declare const createQuickAccount: (sessionId: string, userData: {
|
|
81
|
+
name?: string | {
|
|
82
|
+
displayName?: string;
|
|
83
|
+
full?: string;
|
|
84
|
+
first?: string;
|
|
85
|
+
last?: string;
|
|
86
|
+
};
|
|
87
|
+
username?: string;
|
|
88
|
+
publicKey?: string;
|
|
89
|
+
id?: string;
|
|
90
|
+
_id?: {
|
|
91
|
+
toString(): string;
|
|
92
|
+
} | string;
|
|
93
|
+
avatar?: string | null;
|
|
94
|
+
}, existingAccount?: QuickAccount, getFileDownloadUrl?: (fileId: string, variant: string) => string) => QuickAccount;
|
|
95
|
+
/**
|
|
96
|
+
* Return the account's preferred Bloom color preset, or `null` if it has no
|
|
97
|
+
* preference. Centralises the `color ?? null` normalisation so consumers can
|
|
98
|
+
* drive per-account theming without duplicating the nullish-handling.
|
|
99
|
+
*/
|
|
100
|
+
export declare const getAccountColor: (account: QuickAccount) => string | null;
|