@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,786 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AccountKind,
|
|
3
|
+
AccountCategoryId,
|
|
4
|
+
UserNameResponse,
|
|
5
|
+
UserRelationship,
|
|
6
|
+
ThemePreference,
|
|
7
|
+
} from '@oxy.so/contracts';
|
|
8
|
+
|
|
9
|
+
export interface OxyConfig {
|
|
10
|
+
baseURL: string;
|
|
11
|
+
cloudURL?: string;
|
|
12
|
+
authWebUrl?: string;
|
|
13
|
+
authRedirectUri?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The app's Oxy OAuth client id (ApplicationCredential publicKey).
|
|
16
|
+
*
|
|
17
|
+
* Identifies this app in OAuth authorize / consent flows (issue #214). Purely
|
|
18
|
+
* declarative: the SDK stores it on `OxyServices.config.clientId` for later
|
|
19
|
+
* OAuth-authorize use. It is unrelated to the cross-domain `/sso?client_id=…`
|
|
20
|
+
* bounce (which uses the RP origin, not this registered client id).
|
|
21
|
+
*/
|
|
22
|
+
clientId?: string;
|
|
23
|
+
// Performance & caching options
|
|
24
|
+
/**
|
|
25
|
+
* Enable the per-instance GET response cache. Defaults to `true` (5-minute
|
|
26
|
+
* TTL). Set to `false` to disable caching entirely for this instance — GET
|
|
27
|
+
* responses are then never stored and never served from cache, so every read
|
|
28
|
+
* hits the network. Useful for a linked backend client where another layer
|
|
29
|
+
* (e.g. React Query) is the single cache authority and the SDK's own cache
|
|
30
|
+
* would otherwise serve stale data after a write.
|
|
31
|
+
*/
|
|
32
|
+
enableCache?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Cache TTL in milliseconds (default: 5 minutes). A value `<= 0` disables the
|
|
35
|
+
* per-instance GET response cache, equivalent to `enableCache: false`.
|
|
36
|
+
*/
|
|
37
|
+
cacheTTL?: number;
|
|
38
|
+
enableRequestDeduplication?: boolean;
|
|
39
|
+
enableRetry?: boolean;
|
|
40
|
+
maxRetries?: number;
|
|
41
|
+
retryDelay?: number;
|
|
42
|
+
requestTimeout?: number; // Default timeout in milliseconds (default: 5000)
|
|
43
|
+
// Rate limiting
|
|
44
|
+
maxConcurrentRequests?: number;
|
|
45
|
+
requestQueueSize?: number;
|
|
46
|
+
// Logging
|
|
47
|
+
enableLogging?: boolean;
|
|
48
|
+
logLevel?: 'none' | 'error' | 'warn' | 'info' | 'debug';
|
|
49
|
+
// Performance monitoring
|
|
50
|
+
onRequestStart?: (url: string, method: string) => void;
|
|
51
|
+
onRequestEnd?: (url: string, method: string, duration: number, success: boolean) => void;
|
|
52
|
+
onRequestError?: (url: string, method: string, error: Error) => void;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Privacy settings for a user account.
|
|
57
|
+
*
|
|
58
|
+
* All fields are optional because:
|
|
59
|
+
* - Updates are dot-path partial PATCHes — clients send only changed keys.
|
|
60
|
+
* - The server may return a partial subdocument depending on the API
|
|
61
|
+
* build (older builds returned only the field that changed).
|
|
62
|
+
* - User accounts created before a new toggle was introduced won't
|
|
63
|
+
* have that key persisted yet.
|
|
64
|
+
*
|
|
65
|
+
* Mirrors `IPrivacySettings` from `packages/api/src/types/privacy.types.ts`,
|
|
66
|
+
* but with every field marked optional.
|
|
67
|
+
*/
|
|
68
|
+
export interface PrivacySettings {
|
|
69
|
+
isPrivateAccount?: boolean;
|
|
70
|
+
hideOnlineStatus?: boolean;
|
|
71
|
+
hideLastSeen?: boolean;
|
|
72
|
+
profileVisibility?: boolean;
|
|
73
|
+
loginAlerts?: boolean;
|
|
74
|
+
blockScreenshots?: boolean;
|
|
75
|
+
login?: boolean;
|
|
76
|
+
biometricLogin?: boolean;
|
|
77
|
+
showActivity?: boolean;
|
|
78
|
+
allowTagging?: boolean;
|
|
79
|
+
allowMentions?: boolean;
|
|
80
|
+
hideReadReceipts?: boolean;
|
|
81
|
+
allowDirectMessages?: boolean;
|
|
82
|
+
dataSharing?: boolean;
|
|
83
|
+
locationSharing?: boolean;
|
|
84
|
+
analyticsSharing?: boolean;
|
|
85
|
+
sensitiveContent?: boolean;
|
|
86
|
+
autoFilter?: boolean;
|
|
87
|
+
muteKeywords?: boolean;
|
|
88
|
+
/** Allow sharing this user's content on the fediverse. Defaults to true. */
|
|
89
|
+
fediverseSharing?: boolean;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface User {
|
|
93
|
+
id: string;
|
|
94
|
+
publicKey: string;
|
|
95
|
+
username: string;
|
|
96
|
+
email?: string;
|
|
97
|
+
// Avatar file id (asset id)
|
|
98
|
+
avatar?: string | null;
|
|
99
|
+
// Named color preset (e.g. 'teal', 'blue', 'purple')
|
|
100
|
+
color?: string | null;
|
|
101
|
+
// Privacy and security settings
|
|
102
|
+
privacySettings?: PrivacySettings;
|
|
103
|
+
/**
|
|
104
|
+
* Structured human name. `name.displayName` is the canonical display string
|
|
105
|
+
* resolved by the API when present; consumers render it directly instead of
|
|
106
|
+
* recomposing names from `first` / `last` / `full` / `username`. It is now
|
|
107
|
+
* OPTIONAL (see `UserNameResponse`) — when absent, fall back to a handle
|
|
108
|
+
* (e.g. `getNormalizedUserHandle`) rather than recomposing a name locally.
|
|
109
|
+
*/
|
|
110
|
+
name: UserNameResponse;
|
|
111
|
+
bio?: string;
|
|
112
|
+
/**
|
|
113
|
+
* Longer public profile text. Emitted alongside `bio` by every user DTO the
|
|
114
|
+
* API produces (single profile, `getUsersByIds`, follower/following/mutual
|
|
115
|
+
* lists, profile search) — the two are separate fields on the User document.
|
|
116
|
+
*/
|
|
117
|
+
description?: string;
|
|
118
|
+
phone?: string;
|
|
119
|
+
address?: string;
|
|
120
|
+
birthday?: string;
|
|
121
|
+
website?: string;
|
|
122
|
+
createdAt?: string;
|
|
123
|
+
updatedAt?: string;
|
|
124
|
+
links?: string[];
|
|
125
|
+
linksMetadata?: Array<{
|
|
126
|
+
url: string;
|
|
127
|
+
title?: string;
|
|
128
|
+
description?: string;
|
|
129
|
+
image?: string;
|
|
130
|
+
id?: string;
|
|
131
|
+
}>;
|
|
132
|
+
// Social counts
|
|
133
|
+
_count?: {
|
|
134
|
+
followers?: number;
|
|
135
|
+
following?: number;
|
|
136
|
+
};
|
|
137
|
+
accountExpiresAfterInactivityDays?: number | null; // Days of inactivity before account expires (null = never expire)
|
|
138
|
+
/**
|
|
139
|
+
* Account-graph classification — WHAT this account is.
|
|
140
|
+
*
|
|
141
|
+
* ORTHOGONAL to `type` below, and easy to confuse with it: `type` says where
|
|
142
|
+
* the account lives and how it is driven (`local` / `federated` / `agent` /
|
|
143
|
+
* `automated`), `kind` says what it IS (`personal` / `organization` /
|
|
144
|
+
* `project` / `bot` / `channel`). A federated channel is `type: 'federated'`
|
|
145
|
+
* AND `kind: 'channel'`; neither value substitutes for the other.
|
|
146
|
+
*
|
|
147
|
+
* This is what a consumer rendering authored content reads to tell a
|
|
148
|
+
* channel's post from a person's — a channel is the author, so there is no
|
|
149
|
+
* second identity to carry alongside the user.
|
|
150
|
+
*
|
|
151
|
+
* Absent should be read as `personal` (the column's default), not as unknown.
|
|
152
|
+
*/
|
|
153
|
+
kind?: AccountKind;
|
|
154
|
+
// User type and external account support
|
|
155
|
+
type?: 'local' | 'federated' | 'agent' | 'automated';
|
|
156
|
+
isFederated?: boolean;
|
|
157
|
+
/** Allow sharing this user's content on the fediverse. Defaults to true. */
|
|
158
|
+
fediverseSharing?: boolean;
|
|
159
|
+
isAgent?: boolean;
|
|
160
|
+
isAutomated?: boolean;
|
|
161
|
+
instance?: string;
|
|
162
|
+
federation?: {
|
|
163
|
+
actorUri?: string;
|
|
164
|
+
domain?: string;
|
|
165
|
+
actorId?: string;
|
|
166
|
+
};
|
|
167
|
+
automation?: {
|
|
168
|
+
ownerId?: string;
|
|
169
|
+
};
|
|
170
|
+
// Managed account fields
|
|
171
|
+
isManagedAccount?: boolean;
|
|
172
|
+
managedBy?: string;
|
|
173
|
+
/**
|
|
174
|
+
* What this account is about, for any NON-personal account. ORDERED — the
|
|
175
|
+
* first element is the primary category, and nothing may reorder it.
|
|
176
|
+
*
|
|
177
|
+
* Stable ids, not labels: render each through the
|
|
178
|
+
* `accounts.accountCategory.<id>` translation key so the reader sees their own
|
|
179
|
+
* language rather than the language of whoever chose it. Absent when the
|
|
180
|
+
* account has none.
|
|
181
|
+
*/
|
|
182
|
+
accountCategories?: AccountCategoryId[];
|
|
183
|
+
/**
|
|
184
|
+
* The account's languages as full BCP-47 locales (`language-REGION`, e.g.
|
|
185
|
+
* `en-US`, `es-MX`, `pt-BR`), ordered with the PRIMARY (UI) locale first.
|
|
186
|
+
* `languages[0]` is the primary locale — there is no singular `language`
|
|
187
|
+
* field. Resolve via `getUserLanguages` / `getPrimaryLanguage`, which
|
|
188
|
+
* normalize, validate against the supported catalog, and de-duplicate.
|
|
189
|
+
*/
|
|
190
|
+
languages?: string[];
|
|
191
|
+
// User-controlled notification preferences. All channels default to on; users
|
|
192
|
+
// opt out per-channel. Updated via `PUT /users/me`.
|
|
193
|
+
notificationPreferences?: NotificationPreferences;
|
|
194
|
+
// General app-wide user preferences. Updated via `PUT /users/me`.
|
|
195
|
+
userPreferences?: UserPreferences;
|
|
196
|
+
/**
|
|
197
|
+
* Portable theme preference (mode + Bloom color-preset key). Rides the
|
|
198
|
+
* self/session payload so it is present on the current-user DTO at cold boot
|
|
199
|
+
* (`useAuth().user.themePreference`) with no extra fetch. Absent until the
|
|
200
|
+
* user sets it. Updated via `updateThemePreference` / `updateProfile`.
|
|
201
|
+
*/
|
|
202
|
+
themePreference?: ThemePreference;
|
|
203
|
+
/**
|
|
204
|
+
* The authenticated viewer's relationship to THIS profile. Populated ONLY on
|
|
205
|
+
* single-profile fetches (`getProfileByUsername` / `getUserById`) when the
|
|
206
|
+
* request is authenticated; absent for anonymous requests, self-views, and
|
|
207
|
+
* bulk fetches — so `undefined` means "unknown", not "not following".
|
|
208
|
+
*/
|
|
209
|
+
relationship?: UserRelationship;
|
|
210
|
+
[key: string]: unknown;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* User-controlled notification channels. Persisted on the User document.
|
|
215
|
+
*/
|
|
216
|
+
export interface NotificationPreferences {
|
|
217
|
+
/** Push notifications on registered devices. */
|
|
218
|
+
pushEnabled?: boolean;
|
|
219
|
+
/** Periodic email digest of activity. */
|
|
220
|
+
emailDigest?: boolean;
|
|
221
|
+
/** Security/account alerts (sign-ins, recovery, key changes). */
|
|
222
|
+
securityAlerts?: boolean;
|
|
223
|
+
/** Marketing / product update emails. */
|
|
224
|
+
marketingEmails?: boolean;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* General per-user preferences applied across all Oxy apps for the user.
|
|
229
|
+
* Persisted on the User document.
|
|
230
|
+
*/
|
|
231
|
+
export interface UserPreferences {
|
|
232
|
+
/** BCP-47 language tag, e.g. "en-US", "es-ES". Empty string = follow device. */
|
|
233
|
+
language?: string;
|
|
234
|
+
/** Theme mode preference. */
|
|
235
|
+
theme?: 'light' | 'dark' | 'system';
|
|
236
|
+
/** Mirror of OS reduce-motion preference, persisted server-side. */
|
|
237
|
+
reduceMotion?: boolean;
|
|
238
|
+
/** IANA timezone, e.g. "Europe/Madrid". Empty string = follow device. */
|
|
239
|
+
timezone?: string;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export interface LoginResponse {
|
|
243
|
+
accessToken?: string;
|
|
244
|
+
user: User;
|
|
245
|
+
message?: string;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export interface Notification {
|
|
249
|
+
id: string;
|
|
250
|
+
message: string;
|
|
251
|
+
// Add other notification fields as needed
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export interface Wallet {
|
|
255
|
+
id: string;
|
|
256
|
+
balance: number;
|
|
257
|
+
// Add other wallet fields as needed
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export interface Transaction {
|
|
261
|
+
id: string;
|
|
262
|
+
amount: number;
|
|
263
|
+
type: string;
|
|
264
|
+
timestamp: string;
|
|
265
|
+
// Add other transaction fields as needed
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
export interface BlockedUser {
|
|
269
|
+
_id?: string;
|
|
270
|
+
blockedId: string | {
|
|
271
|
+
_id: string;
|
|
272
|
+
username: string;
|
|
273
|
+
avatar?: string;
|
|
274
|
+
name?: { displayName?: string };
|
|
275
|
+
};
|
|
276
|
+
userId: string;
|
|
277
|
+
createdAt?: string;
|
|
278
|
+
blockedAt?: string;
|
|
279
|
+
username?: string;
|
|
280
|
+
avatar?: string;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
export interface RestrictedUser {
|
|
284
|
+
_id?: string;
|
|
285
|
+
restrictedId: string | {
|
|
286
|
+
_id: string;
|
|
287
|
+
username: string;
|
|
288
|
+
avatar?: string;
|
|
289
|
+
name?: { displayName?: string };
|
|
290
|
+
};
|
|
291
|
+
userId: string;
|
|
292
|
+
createdAt?: string;
|
|
293
|
+
restrictedAt?: string;
|
|
294
|
+
username?: string;
|
|
295
|
+
avatar?: string;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
export interface TransferFundsRequest {
|
|
299
|
+
fromUserId: string;
|
|
300
|
+
toUserId: string;
|
|
301
|
+
amount: number;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
export interface PurchaseRequest {
|
|
305
|
+
userId: string;
|
|
306
|
+
itemId: string;
|
|
307
|
+
amount: number;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
export interface WithdrawalRequest {
|
|
311
|
+
userId: string;
|
|
312
|
+
amount: number;
|
|
313
|
+
address: string;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
export interface TransactionResponse {
|
|
317
|
+
success: boolean;
|
|
318
|
+
transaction: Transaction;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
export interface PaginationInfo {
|
|
322
|
+
total: number;
|
|
323
|
+
limit: number;
|
|
324
|
+
offset: number;
|
|
325
|
+
hasMore: boolean;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export interface SearchProfilesResponse {
|
|
329
|
+
data: User[];
|
|
330
|
+
pagination: PaginationInfo;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
export interface ApiError {
|
|
334
|
+
message: string;
|
|
335
|
+
code: string;
|
|
336
|
+
status: number;
|
|
337
|
+
details?: Record<string, unknown>;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export interface PaymentMethod {
|
|
341
|
+
id: string;
|
|
342
|
+
type: string;
|
|
343
|
+
// Add other payment method fields as needed
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
export interface PaymentRequest {
|
|
347
|
+
userId: string;
|
|
348
|
+
planId: string;
|
|
349
|
+
paymentMethodId: string;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export interface PaymentResponse {
|
|
353
|
+
transactionId: string;
|
|
354
|
+
status: string;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
export interface AnalyticsData {
|
|
358
|
+
userId: string;
|
|
359
|
+
// Add other analytics fields as needed
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
export interface FollowerDetails {
|
|
363
|
+
userId: string;
|
|
364
|
+
followers: number;
|
|
365
|
+
// Add other follower details as needed
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
export interface ContentViewer {
|
|
369
|
+
userId: string;
|
|
370
|
+
viewedAt: string;
|
|
371
|
+
// Add other content viewer fields as needed
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* File management interfaces
|
|
376
|
+
*/
|
|
377
|
+
export interface FileMetadata {
|
|
378
|
+
id: string;
|
|
379
|
+
filename: string;
|
|
380
|
+
contentType: string;
|
|
381
|
+
length: number;
|
|
382
|
+
chunkSize: number;
|
|
383
|
+
uploadDate: string;
|
|
384
|
+
metadata?: {
|
|
385
|
+
userId?: string;
|
|
386
|
+
description?: string;
|
|
387
|
+
title?: string;
|
|
388
|
+
tags?: string[];
|
|
389
|
+
[key: string]: unknown;
|
|
390
|
+
};
|
|
391
|
+
variants?: Array<{
|
|
392
|
+
type: string; // e.g. 'thumb', 'poster'
|
|
393
|
+
key: string; // storage key/path
|
|
394
|
+
width?: number;
|
|
395
|
+
height?: number;
|
|
396
|
+
readyAt?: string;
|
|
397
|
+
metadata?: Record<string, unknown>;
|
|
398
|
+
}>;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
export interface FileUploadResponse {
|
|
402
|
+
files: FileMetadata[];
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export interface FileListResponse {
|
|
406
|
+
files: FileMetadata[];
|
|
407
|
+
total: number;
|
|
408
|
+
hasMore: boolean;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
export interface FileUpdateRequest {
|
|
412
|
+
filename?: string;
|
|
413
|
+
metadata?: {
|
|
414
|
+
description?: string;
|
|
415
|
+
title?: string;
|
|
416
|
+
tags?: string[];
|
|
417
|
+
[key: string]: unknown;
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
export interface FileDeleteResponse {
|
|
422
|
+
success: boolean;
|
|
423
|
+
message: string;
|
|
424
|
+
fileId: string;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* React Native file descriptor accepted by FormData.
|
|
429
|
+
*
|
|
430
|
+
* On React Native, the multipart upload reads the file from disk via the URI
|
|
431
|
+
* during the network request — no in-JS Blob construction is required (and
|
|
432
|
+
* doing so would fail on Hermes since RN's BlobManager cannot wrap an
|
|
433
|
+
* ArrayBuffer/ArrayBufferView).
|
|
434
|
+
*
|
|
435
|
+
* This shape matches what `expo-document-picker` and `expo-image-picker`
|
|
436
|
+
* return for selected assets, and is what `OxyServices.assetUpload` accepts
|
|
437
|
+
* on native platforms.
|
|
438
|
+
*/
|
|
439
|
+
export interface RNFileDescriptor {
|
|
440
|
+
uri: string;
|
|
441
|
+
type?: string;
|
|
442
|
+
name?: string;
|
|
443
|
+
size?: number;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Asset upload input — accepted by `OxyServices.assetUpload` and `uploadRawFile`.
|
|
448
|
+
*
|
|
449
|
+
* - `File` / `Blob`: standard web browser path. `assetUpload` appends the
|
|
450
|
+
* Blob to FormData directly.
|
|
451
|
+
* - {@link RNFileDescriptor}: React Native path. FormData reads the file from
|
|
452
|
+
* disk via the URI during the multipart request.
|
|
453
|
+
*/
|
|
454
|
+
export type AssetUploadInput = File | Blob | RNFileDescriptor;
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Central Asset Service interfaces
|
|
458
|
+
*/
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* File visibility levels
|
|
462
|
+
* - private: Only accessible by owner (default)
|
|
463
|
+
* - public: Accessible by anyone without authentication (e.g., avatars, public profile content)
|
|
464
|
+
* - unlisted: Accessible with direct link but not listed publicly
|
|
465
|
+
*/
|
|
466
|
+
export type FileVisibility = 'private' | 'public' | 'unlisted';
|
|
467
|
+
|
|
468
|
+
export interface AssetLink {
|
|
469
|
+
app: string;
|
|
470
|
+
entityType: string;
|
|
471
|
+
entityId: string;
|
|
472
|
+
createdBy: string;
|
|
473
|
+
createdAt: string;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
export type AssetMetadata = Record<string, string | number | boolean | null | undefined>;
|
|
477
|
+
|
|
478
|
+
export interface AssetVariant {
|
|
479
|
+
type: string;
|
|
480
|
+
key: string;
|
|
481
|
+
width?: number;
|
|
482
|
+
height?: number;
|
|
483
|
+
readyAt?: string;
|
|
484
|
+
size?: number;
|
|
485
|
+
metadata?: AssetMetadata;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
export interface Asset {
|
|
489
|
+
id: string;
|
|
490
|
+
sha256: string;
|
|
491
|
+
size: number;
|
|
492
|
+
mime: string;
|
|
493
|
+
ext: string;
|
|
494
|
+
originalName?: string;
|
|
495
|
+
ownerUserId: string;
|
|
496
|
+
status: 'active' | 'trash' | 'deleted';
|
|
497
|
+
visibility: FileVisibility;
|
|
498
|
+
usageCount: number;
|
|
499
|
+
createdAt: string;
|
|
500
|
+
updatedAt: string;
|
|
501
|
+
links: AssetLink[];
|
|
502
|
+
variants: AssetVariant[];
|
|
503
|
+
metadata?: AssetMetadata;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
export interface AssetInitRequest {
|
|
507
|
+
sha256: string;
|
|
508
|
+
size: number;
|
|
509
|
+
mime: string;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
export interface AssetInitResponse {
|
|
513
|
+
uploadUrl: string;
|
|
514
|
+
fileId: string;
|
|
515
|
+
sha256: string;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
export interface AssetCompleteRequest {
|
|
519
|
+
fileId: string;
|
|
520
|
+
originalName: string;
|
|
521
|
+
size: number;
|
|
522
|
+
mime: string;
|
|
523
|
+
visibility?: FileVisibility;
|
|
524
|
+
metadata?: AssetMetadata;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
export interface AssetLinkRequest {
|
|
528
|
+
app: string;
|
|
529
|
+
entityType: string;
|
|
530
|
+
entityId: string;
|
|
531
|
+
visibility?: FileVisibility;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
export interface AssetUnlinkRequest {
|
|
535
|
+
app: string;
|
|
536
|
+
entityType: string;
|
|
537
|
+
entityId: string;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
export interface AssetUrlResponse {
|
|
541
|
+
success: boolean;
|
|
542
|
+
url: string;
|
|
543
|
+
variant?: string;
|
|
544
|
+
expiresIn: number;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* Per-file result of `POST /assets/batch-access`. `allowed` is authoritative:
|
|
549
|
+
* when `false` the entry carries an `error` string (e.g. `'Access denied'`,
|
|
550
|
+
* `'File not found'`) and no `url`. When `true`, `url` is a caller-scoped,
|
|
551
|
+
* `<img src>`-ready URL — the public CDN form for a public asset or an
|
|
552
|
+
* API-origin stream URL carrying a short-lived media token for a private one.
|
|
553
|
+
*/
|
|
554
|
+
export interface BatchFileAccessEntry {
|
|
555
|
+
allowed: boolean;
|
|
556
|
+
url?: string;
|
|
557
|
+
visibility?: FileVisibility;
|
|
558
|
+
mime?: string;
|
|
559
|
+
error?: string;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/** Envelope returned by `POST /assets/batch-access`, keyed by file id. */
|
|
563
|
+
export interface BatchFileAccessResponse {
|
|
564
|
+
results: Record<string, BatchFileAccessEntry>;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
export interface AssetDeleteSummary {
|
|
568
|
+
fileId: string;
|
|
569
|
+
wouldDelete: boolean;
|
|
570
|
+
affectedApps: string[];
|
|
571
|
+
remainingLinks: number;
|
|
572
|
+
variants: string[];
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
export interface AssetUpdateVisibilityRequest {
|
|
576
|
+
visibility: FileVisibility;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
export interface AssetUpdateVisibilityResponse {
|
|
580
|
+
success: boolean;
|
|
581
|
+
file: {
|
|
582
|
+
id: string;
|
|
583
|
+
visibility: FileVisibility;
|
|
584
|
+
updatedAt: string;
|
|
585
|
+
};
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
/**
|
|
589
|
+
* Minimal, service-token-scoped asset metadata returned by
|
|
590
|
+
* `POST /assets/service/by-ids`.
|
|
591
|
+
*
|
|
592
|
+
* Resolves an Oxy asset `id` to its content-addressed identity (`sha256`),
|
|
593
|
+
* MIME type, byte `size`, and storage `status`. Used by server-to-server
|
|
594
|
+
* callers (e.g. Mention's MTN Protocol blob-ref resolution) that hold a
|
|
595
|
+
* `files:read`-scoped service token rather than a user session. Unknown or
|
|
596
|
+
* deleted ids are omitted from the response (never error the whole batch),
|
|
597
|
+
* so the result may be shorter than the requested id list.
|
|
598
|
+
*/
|
|
599
|
+
export interface ServiceAssetMetadata {
|
|
600
|
+
id: string;
|
|
601
|
+
sha256: string;
|
|
602
|
+
mime: string;
|
|
603
|
+
size: number;
|
|
604
|
+
status: 'active' | 'trash';
|
|
605
|
+
/** Intrinsic width in pixels when variant/metadata extraction has run. */
|
|
606
|
+
width?: number;
|
|
607
|
+
/** Intrinsic height in pixels when variant/metadata extraction has run. */
|
|
608
|
+
height?: number;
|
|
609
|
+
/** Playback duration in seconds for video/audio assets. */
|
|
610
|
+
durationSec?: number;
|
|
611
|
+
/** Derived once from width/height at asset processing time. */
|
|
612
|
+
orientation?: 'portrait' | 'landscape' | 'square';
|
|
613
|
+
/** width / height, derived at asset processing time. */
|
|
614
|
+
aspectRatio?: number;
|
|
615
|
+
/**
|
|
616
|
+
* When the adaptive HLS ladder for this asset finished transcoding.
|
|
617
|
+
*
|
|
618
|
+
* ABSENT when there is none. Transcoding runs after the upload call returns
|
|
619
|
+
* and per-rendition failures are swallowed, so a video may get its ladder
|
|
620
|
+
* minutes later or never. The `?variant=hls_master` URL is derivable from the
|
|
621
|
+
* `id` alone, which is exactly the trap: a consumer that builds it without
|
|
622
|
+
* this field hands the player a URL that 403s until the ladder exists, and
|
|
623
|
+
* the player pays a failed request before falling back — once per video, per
|
|
624
|
+
* play. Treat absence as "no adaptive stream, play the progressive original".
|
|
625
|
+
*/
|
|
626
|
+
hlsReadyAt?: string;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
/**
|
|
630
|
+
* Reverse-lookup asset metadata returned by `POST /assets/service/by-sha256`.
|
|
631
|
+
*
|
|
632
|
+
* Resolves a content-addressed `sha256` digest back to the live Oxy asset that
|
|
633
|
+
* holds those bytes: its file `id`, MIME type, byte `size`, storage `status`,
|
|
634
|
+
* and — for active, public, CDN-reachable assets only — a public `url`
|
|
635
|
+
* (`cloud.oxy.so`). This is the inverse of {@link ServiceAssetMetadata}: it lets
|
|
636
|
+
* a `files:read`-scoped service-to-server caller (e.g. Mention's MTN materializer
|
|
637
|
+
* / node-blob sync) turn a record's `blob.sha256` into a servable asset.
|
|
638
|
+
*
|
|
639
|
+
* `url` is omitted for private/unlisted assets (and for public assets whose
|
|
640
|
+
* bytes are not yet CDN-reachable) — those must be streamed through the origin.
|
|
641
|
+
* Unknown or deleted hashes are omitted from the response (never error the whole
|
|
642
|
+
* batch), so the result may be shorter than the requested hash list.
|
|
643
|
+
*/
|
|
644
|
+
export interface ServiceAssetMetadataBySha {
|
|
645
|
+
sha256: string;
|
|
646
|
+
id: string;
|
|
647
|
+
mime: string;
|
|
648
|
+
size: number;
|
|
649
|
+
status: 'active' | 'trash';
|
|
650
|
+
url?: string;
|
|
651
|
+
width?: number;
|
|
652
|
+
height?: number;
|
|
653
|
+
durationSec?: number;
|
|
654
|
+
orientation?: 'portrait' | 'landscape' | 'square';
|
|
655
|
+
aspectRatio?: number;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* Account storage usage (server-side usage, not local AsyncStorage)
|
|
660
|
+
*/
|
|
661
|
+
export interface AccountStorageCategoryUsage {
|
|
662
|
+
bytes: number;
|
|
663
|
+
count: number;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
export interface AccountStorageUsageResponse {
|
|
667
|
+
plan: 'basic' | 'pro' | 'business';
|
|
668
|
+
totalUsedBytes: number;
|
|
669
|
+
totalLimitBytes: number;
|
|
670
|
+
categories: {
|
|
671
|
+
documents: AccountStorageCategoryUsage;
|
|
672
|
+
mail: AccountStorageCategoryUsage;
|
|
673
|
+
photosVideos: AccountStorageCategoryUsage;
|
|
674
|
+
recordings: AccountStorageCategoryUsage;
|
|
675
|
+
family: AccountStorageCategoryUsage;
|
|
676
|
+
other: AccountStorageCategoryUsage;
|
|
677
|
+
};
|
|
678
|
+
updatedAt: string;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* Security activity event types
|
|
683
|
+
*/
|
|
684
|
+
export type SecurityEventType =
|
|
685
|
+
| 'sign_in'
|
|
686
|
+
| 'sign_out'
|
|
687
|
+
| 'email_changed'
|
|
688
|
+
| 'profile_updated'
|
|
689
|
+
| 'device_added'
|
|
690
|
+
| 'device_removed'
|
|
691
|
+
| 'account_recovery'
|
|
692
|
+
| 'security_settings_changed'
|
|
693
|
+
| 'private_key_exported'
|
|
694
|
+
| 'backup_created'
|
|
695
|
+
| 'suspicious_activity';
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* Security event severity levels
|
|
699
|
+
*/
|
|
700
|
+
export type SecurityEventSeverity = 'low' | 'medium' | 'high' | 'critical';
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* Security event severity mapping (single source of truth)
|
|
704
|
+
* Maps each event type to its default severity level
|
|
705
|
+
*/
|
|
706
|
+
export const SECURITY_EVENT_SEVERITY_MAP: Record<SecurityEventType, SecurityEventSeverity> = {
|
|
707
|
+
'sign_in': 'low',
|
|
708
|
+
'sign_out': 'low',
|
|
709
|
+
'profile_updated': 'low',
|
|
710
|
+
'email_changed': 'medium',
|
|
711
|
+
'device_added': 'medium',
|
|
712
|
+
'device_removed': 'medium',
|
|
713
|
+
'security_settings_changed': 'medium',
|
|
714
|
+
'account_recovery': 'high',
|
|
715
|
+
'private_key_exported': 'high',
|
|
716
|
+
'backup_created': 'high',
|
|
717
|
+
'suspicious_activity': 'critical',
|
|
718
|
+
};
|
|
719
|
+
|
|
720
|
+
/**
|
|
721
|
+
* Security activity event
|
|
722
|
+
*/
|
|
723
|
+
export interface SecurityActivity {
|
|
724
|
+
id: string;
|
|
725
|
+
userId: string;
|
|
726
|
+
eventType: SecurityEventType;
|
|
727
|
+
eventDescription: string;
|
|
728
|
+
metadata?: Record<string, any>;
|
|
729
|
+
userAgent?: string;
|
|
730
|
+
deviceId?: string;
|
|
731
|
+
timestamp: string;
|
|
732
|
+
severity: SecurityEventSeverity;
|
|
733
|
+
createdAt: string;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
/**
|
|
737
|
+
* Security activity response with pagination
|
|
738
|
+
*/
|
|
739
|
+
export interface SecurityActivityResponse {
|
|
740
|
+
data: SecurityActivity[];
|
|
741
|
+
total: number;
|
|
742
|
+
limit: number;
|
|
743
|
+
offset: number;
|
|
744
|
+
hasMore: boolean;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
export interface AssetUploadProgress {
|
|
748
|
+
fileId: string;
|
|
749
|
+
uploaded: number;
|
|
750
|
+
total: number;
|
|
751
|
+
percentage: number;
|
|
752
|
+
status: 'uploading' | 'processing' | 'complete' | 'error';
|
|
753
|
+
error?: string;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
// Device-linked session interfaces — the sessions that share one physical
|
|
757
|
+
// device (GET /session/device/sessions/:sessionId). Distinct from the
|
|
758
|
+
// server-authority `DeviceSession` Mongoose model / `DeviceSessionState`.
|
|
759
|
+
export interface DeviceLinkedSession {
|
|
760
|
+
sessionId: string;
|
|
761
|
+
deviceId: string;
|
|
762
|
+
deviceName: string;
|
|
763
|
+
isActive: boolean;
|
|
764
|
+
lastActive: string;
|
|
765
|
+
expiresAt: string;
|
|
766
|
+
isCurrent: boolean;
|
|
767
|
+
user?: User;
|
|
768
|
+
createdAt?: string;
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
export interface DeviceLinkedSessionsResponse {
|
|
772
|
+
deviceId: string;
|
|
773
|
+
sessions: DeviceLinkedSession[];
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
export interface DeviceLinkedSessionLogoutResponse {
|
|
777
|
+
message: string;
|
|
778
|
+
deviceId: string;
|
|
779
|
+
sessionsTerminated: number;
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
export interface UpdateDeviceNameResponse {
|
|
783
|
+
message: string;
|
|
784
|
+
deviceName: string;
|
|
785
|
+
}
|
|
786
|
+
|