@oxy.so/core 1.18.1 → 3.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/README.md +13 -7
- package/dist/cjs/HttpService.js +159 -111
- package/dist/cjs/OxyServices.errors.js +48 -1
- package/dist/cjs/OxyServices.js +263 -60
- package/dist/cjs/api/accounts.js +231 -0
- package/dist/cjs/api/agency.js +102 -0
- package/dist/cjs/api/appData.js +45 -0
- package/dist/cjs/api/apps.js +197 -0
- package/dist/cjs/api/assets.js +329 -0
- package/dist/cjs/api/auth.js +900 -0
- package/dist/cjs/api/billing.js +44 -0
- package/dist/cjs/api/civic.js +289 -0
- package/dist/cjs/api/contacts.js +16 -0
- package/dist/cjs/api/devices.js +351 -0
- package/dist/cjs/api/follows.js +240 -0
- package/dist/cjs/api/identity.js +569 -0
- package/dist/cjs/api/linkedAccounts.js +48 -0
- package/dist/cjs/api/nodes.js +75 -0
- package/dist/cjs/api/notifications.js +75 -0
- package/dist/cjs/api/privacy.js +105 -0
- package/dist/cjs/api/reputation.js +74 -0
- package/dist/cjs/api/session.js +177 -0
- package/dist/cjs/api/store.js +199 -0
- package/dist/cjs/api/topics.js +66 -0
- package/dist/cjs/api/users.js +309 -0
- package/dist/cjs/boot/sessionColdBoot.js +4 -4
- package/dist/cjs/civic/index.js +16 -0
- package/dist/cjs/civic/payloads.js +156 -0
- package/dist/cjs/client/context.js +2 -0
- package/dist/cjs/crypto/identityLink.js +5 -5
- package/dist/cjs/crypto/index.js +44 -0
- package/dist/cjs/crypto/internal.js +37 -0
- package/dist/cjs/crypto/keyManager.js +2 -2
- package/dist/cjs/crypto/polyfill.js +9 -80
- package/dist/cjs/crypto/recoveryPhrase.js +1 -0
- package/dist/cjs/crypto/registrationPow.js +1 -1
- package/dist/cjs/crypto/signatureService.js +1 -0
- package/dist/cjs/i18n/accountCategoryLabels.js +3 -3
- package/dist/cjs/i18n/accountRoleLabels.js +7 -7
- package/dist/cjs/i18n/index.js +130 -52
- package/dist/cjs/i18n/locales/{ar-SA.json → ar-SA.js} +134 -52
- package/dist/cjs/i18n/locales/{ca-ES.json → ca-ES.js} +134 -52
- package/dist/{esm/i18n/locales/de-DE.json → cjs/i18n/locales/de-DE.js} +136 -54
- package/dist/{esm/i18n/locales/en-US.json → cjs/i18n/locales/en-US.js} +163 -245
- package/dist/{esm/i18n/locales/es-ES.json → cjs/i18n/locales/es-ES.js} +163 -245
- package/dist/cjs/i18n/locales/{fr-FR.json → fr-FR.js} +134 -52
- package/dist/cjs/i18n/locales/{it-IT.json → it-IT.js} +134 -52
- package/dist/{esm/i18n/locales/ja-JP.json → cjs/i18n/locales/ja-JP.js} +134 -52
- package/dist/cjs/i18n/locales/{ko-KR.json → ko-KR.js} +134 -52
- package/dist/{esm/i18n/locales/pt-PT.json → cjs/i18n/locales/pt-PT.js} +136 -54
- package/dist/{esm/i18n/locales/zh-CN.json → cjs/i18n/locales/zh-CN.js} +135 -53
- package/dist/cjs/i18n/reputationCategoryLabels.js +2 -2
- package/dist/cjs/i18n/trustTierLabels.js +2 -2
- package/dist/cjs/index.js +55 -263
- package/dist/cjs/inference/index.js +21 -0
- package/dist/cjs/server/OxyServer.js +521 -0
- package/dist/cjs/server/auth.js +2 -2
- package/dist/cjs/server/index.js +23 -6
- package/dist/cjs/server/middleware.js +1154 -0
- package/dist/cjs/server/namespaces.js +214 -0
- package/dist/cjs/server/rateLimit.js +2 -2
- package/dist/cjs/server/requesterAssertion.js +5 -5
- package/dist/cjs/server/securityHeaders.js +3 -3
- package/dist/cjs/server/traffic.js +7 -6
- package/dist/cjs/server/trafficNodeHttp.js +9 -3
- package/dist/cjs/server/userInvalidation.js +5 -5
- package/dist/cjs/session/accountDialogController.js +23 -23
- package/dist/cjs/session/authStateStore.js +2 -2
- package/dist/cjs/session/identitySession.js +3 -3
- package/dist/cjs/session/index.js +131 -0
- package/dist/cjs/session/refresh.js +37 -30
- package/dist/cjs/session/sessionClientHost.js +5 -5
- package/dist/cjs/session/sharedDeviceCredential.js +3 -2
- package/dist/cjs/shared/utils/networkUtils.js +2 -2
- package/dist/cjs/utils/accountCacheSweep.js +11 -15
- package/dist/cjs/utils/asyncUtils.js +22 -163
- package/dist/cjs/utils/authHelpers.js +2 -2
- package/dist/cjs/utils/authWebUrl.js +3 -4
- package/dist/cjs/utils/avatarUtils.js +2 -2
- package/dist/cjs/utils/cache.js +32 -2
- package/dist/cjs/utils/cacheKey.js +5 -10
- package/dist/cjs/utils/deviceManager.js +17 -16
- package/dist/cjs/utils/edgeRegion.js +2 -3
- package/dist/cjs/utils/identityCacheSweep.js +6 -10
- package/dist/cjs/utils/oxyServiceEnvironment.js +3 -7
- package/dist/cjs/utils/requestUtils.js +40 -33
- package/dist/cjs/utils/sessionUtils.js +0 -2
- package/dist/cjs/utils/tokenClaims.js +34 -0
- package/dist/esm/HttpService.js +160 -112
- package/dist/esm/OxyServices.errors.js +45 -0
- package/dist/esm/OxyServices.js +262 -57
- package/dist/esm/api/accounts.js +218 -0
- package/dist/esm/api/agency.js +95 -0
- package/dist/esm/api/appData.js +40 -0
- package/dist/esm/api/apps.js +191 -0
- package/dist/esm/api/assets.js +324 -0
- package/dist/esm/api/auth.js +858 -0
- package/dist/esm/api/billing.js +40 -0
- package/dist/esm/api/civic.js +250 -0
- package/dist/esm/api/contacts.js +12 -0
- package/dist/esm/api/devices.js +346 -0
- package/dist/esm/api/follows.js +236 -0
- package/dist/esm/api/identity.js +527 -0
- package/dist/esm/api/linkedAccounts.js +44 -0
- package/dist/esm/api/nodes.js +71 -0
- package/dist/esm/api/notifications.js +71 -0
- package/dist/esm/api/privacy.js +101 -0
- package/dist/esm/api/reputation.js +70 -0
- package/dist/esm/api/session.js +173 -0
- package/dist/esm/api/store.js +192 -0
- package/dist/esm/api/topics.js +62 -0
- package/dist/esm/api/users.js +272 -0
- package/dist/esm/boot/sessionColdBoot.js +4 -4
- package/dist/esm/civic/index.js +10 -0
- package/dist/esm/civic/payloads.js +118 -0
- package/dist/esm/client/context.js +1 -0
- package/dist/esm/crypto/identityLink.js +5 -5
- package/dist/esm/crypto/index.js +24 -0
- package/dist/esm/crypto/internal.js +19 -0
- package/dist/esm/crypto/keyManager.js +2 -2
- package/dist/esm/crypto/polyfill.js +10 -81
- package/dist/esm/crypto/recoveryPhrase.js +1 -0
- package/dist/esm/crypto/registrationPow.js +1 -1
- package/dist/esm/crypto/signatureService.js +1 -0
- package/dist/esm/i18n/accountCategoryLabels.js +2 -2
- package/dist/esm/i18n/accountRoleLabels.js +1 -1
- package/dist/esm/i18n/index.js +93 -52
- package/dist/esm/i18n/locales/{ar-SA.json → ar-SA.js} +132 -52
- package/dist/esm/i18n/locales/{ca-ES.json → ca-ES.js} +132 -52
- package/dist/{cjs/i18n/locales/de-DE.json → esm/i18n/locales/de-DE.js} +134 -54
- package/dist/{cjs/i18n/locales/en-US.json → esm/i18n/locales/en-US.js} +161 -245
- package/dist/{cjs/i18n/locales/es-ES.json → esm/i18n/locales/es-ES.js} +161 -245
- package/dist/esm/i18n/locales/{fr-FR.json → fr-FR.js} +132 -52
- package/dist/esm/i18n/locales/{it-IT.json → it-IT.js} +132 -52
- package/dist/{cjs/i18n/locales/ja-JP.json → esm/i18n/locales/ja-JP.js} +132 -52
- package/dist/esm/i18n/locales/{ko-KR.json → ko-KR.js} +132 -52
- package/dist/{cjs/i18n/locales/pt-PT.json → esm/i18n/locales/pt-PT.js} +134 -54
- package/dist/{cjs/i18n/locales/zh-CN.json → esm/i18n/locales/zh-CN.js} +133 -53
- package/dist/esm/i18n/reputationCategoryLabels.js +1 -1
- package/dist/esm/i18n/trustTierLabels.js +1 -1
- package/dist/esm/index.js +30 -166
- package/dist/esm/inference/index.js +13 -0
- package/dist/esm/server/OxyServer.js +516 -0
- package/dist/esm/server/auth.js +2 -2
- package/dist/esm/server/index.js +10 -5
- package/dist/esm/server/middleware.js +1147 -0
- package/dist/esm/server/namespaces.js +206 -0
- package/dist/esm/server/rateLimit.js +2 -2
- package/dist/esm/server/requesterAssertion.js +5 -5
- package/dist/esm/server/securityHeaders.js +3 -3
- package/dist/esm/server/traffic.js +7 -6
- package/dist/esm/server/trafficNodeHttp.js +9 -3
- package/dist/esm/server/userInvalidation.js +5 -5
- package/dist/esm/session/accountDialogController.js +23 -23
- package/dist/esm/session/authStateStore.js +2 -2
- package/dist/esm/session/identitySession.js +3 -3
- package/dist/esm/session/index.js +82 -0
- package/dist/esm/session/refresh.js +37 -30
- package/dist/esm/session/sessionClientHost.js +5 -5
- package/dist/esm/session/sharedDeviceCredential.js +3 -2
- package/dist/esm/shared/utils/networkUtils.js +2 -2
- package/dist/esm/utils/accountCacheSweep.js +11 -15
- package/dist/esm/utils/asyncUtils.js +22 -151
- package/dist/esm/utils/authHelpers.js +2 -2
- package/dist/esm/utils/authWebUrl.js +3 -4
- package/dist/esm/utils/avatarUtils.js +2 -2
- package/dist/esm/utils/cache.js +32 -2
- package/dist/esm/utils/cacheKey.js +5 -10
- package/dist/esm/utils/deviceManager.js +17 -16
- package/dist/esm/utils/edgeRegion.js +1 -2
- package/dist/esm/utils/identityCacheSweep.js +6 -10
- package/dist/esm/utils/oxyServiceEnvironment.js +3 -7
- package/dist/esm/utils/requestUtils.js +40 -33
- package/dist/esm/utils/sessionUtils.js +0 -2
- package/dist/esm/utils/tokenClaims.js +31 -0
- package/dist/types/HttpService.d.ts +26 -9
- package/dist/types/OxyServices.d.ts +160 -131
- package/dist/types/OxyServices.errors.d.ts +42 -0
- package/dist/types/api/accounts.d.ts +415 -0
- package/dist/types/api/agency.d.ts +135 -0
- package/dist/types/api/appData.d.ts +27 -0
- package/dist/types/api/apps.d.ts +433 -0
- package/dist/types/api/assets.d.ts +174 -0
- package/dist/types/api/auth.d.ts +766 -0
- package/dist/types/api/billing.d.ts +113 -0
- package/dist/types/api/civic.d.ts +203 -0
- package/dist/types/api/contacts.d.ts +31 -0
- package/{src/mixins/OxyServices.deviceBoot.ts → dist/types/api/devices.d.ts} +130 -110
- package/dist/types/api/follows.d.ts +236 -0
- package/dist/types/api/identity.d.ts +275 -0
- package/dist/types/api/linkedAccounts.d.ts +48 -0
- package/dist/types/api/nodes.d.ts +102 -0
- package/dist/types/api/notifications.d.ts +77 -0
- package/dist/types/api/privacy.d.ts +43 -0
- package/dist/types/api/reputation.d.ts +50 -0
- package/dist/types/api/session.d.ts +85 -0
- package/dist/types/api/store.d.ts +278 -0
- package/dist/types/api/topics.d.ts +34 -0
- package/dist/types/api/users.d.ts +134 -0
- package/dist/types/boot/sessionColdBoot.d.ts +1 -1
- package/dist/types/civic/index.d.ts +10 -0
- package/dist/types/civic/payloads.d.ts +83 -0
- package/dist/types/client/context.d.ts +33 -0
- package/dist/types/crypto/identityLink.d.ts +5 -5
- package/dist/types/crypto/index.d.ts +24 -0
- package/dist/types/crypto/internal.d.ts +19 -0
- package/dist/types/crypto/polyfill.d.ts +6 -9
- package/dist/types/crypto/registrationPow.d.ts +1 -1
- package/dist/types/i18n/accountCategoryLabels.d.ts +1 -1
- package/dist/types/i18n/accountRoleLabels.d.ts +1 -1
- package/dist/types/i18n/index.d.ts +20 -1
- package/dist/types/i18n/locales/ar-SA.d.ts +386 -0
- package/dist/types/i18n/locales/ca-ES.d.ts +386 -0
- package/dist/types/i18n/locales/de-DE.d.ts +386 -0
- package/dist/types/i18n/locales/en-US.d.ts +2034 -0
- package/dist/types/i18n/locales/es-ES.d.ts +2034 -0
- package/dist/types/i18n/locales/fr-FR.d.ts +386 -0
- package/dist/types/i18n/locales/it-IT.d.ts +386 -0
- package/dist/types/i18n/locales/ja-JP.d.ts +386 -0
- package/dist/types/i18n/locales/ko-KR.d.ts +386 -0
- package/dist/types/i18n/locales/pt-PT.d.ts +386 -0
- package/dist/types/i18n/locales/zh-CN.d.ts +386 -0
- package/dist/types/index.d.ts +46 -95
- package/dist/types/inference/index.d.ts +22 -0
- package/dist/types/models/interfaces.d.ts +1 -22
- package/dist/types/server/OxyServer.d.ts +183 -0
- package/dist/types/server/auth.d.ts +10 -7
- package/dist/types/server/index.d.ts +10 -4
- package/dist/types/server/middleware.d.ts +291 -0
- package/dist/types/server/namespaces.d.ts +98 -0
- package/dist/types/server/rateLimit.d.ts +7 -5
- package/dist/types/server/requesterAssertion.d.ts +14 -11
- package/dist/types/server/securityHeaders.d.ts +4 -5
- package/dist/types/server/userInvalidation.d.ts +10 -8
- package/dist/types/session/accountDelegationAccess.d.ts +1 -1
- package/dist/types/session/accountDialogController.d.ts +8 -8
- package/dist/types/session/accountSwitchTargets.d.ts +1 -1
- package/dist/types/session/authStateStore.d.ts +7 -6
- package/dist/types/session/index.d.ts +40 -0
- package/dist/types/utils/accountCacheSweep.d.ts +7 -10
- package/dist/types/utils/apiUtils.d.ts +3 -3
- package/dist/types/utils/asyncUtils.d.ts +11 -58
- package/dist/types/utils/authWebUrl.d.ts +3 -4
- package/dist/types/utils/avatarUtils.d.ts +5 -6
- package/dist/types/utils/cache.d.ts +11 -3
- package/dist/types/utils/commonsApproval.d.ts +1 -1
- package/dist/types/utils/edgeRegion.d.ts +1 -2
- package/dist/types/utils/identityCacheSweep.d.ts +6 -4
- package/dist/types/utils/oauthPkce.d.ts +2 -2
- package/dist/types/utils/oxyServiceEnvironment.d.ts +3 -7
- package/dist/types/utils/requestUtils.d.ts +18 -14
- package/dist/types/utils/tokenClaims.d.ts +9 -0
- package/package.json +68 -7
- package/src/HttpService.ts +166 -131
- package/src/OxyServices.errors.ts +73 -0
- package/src/OxyServices.ts +289 -164
- package/src/api/accounts.ts +579 -0
- package/src/api/agency.ts +277 -0
- package/src/api/appData.ts +63 -0
- package/src/api/apps.ts +596 -0
- package/src/api/assets.ts +416 -0
- package/src/api/auth.ts +1457 -0
- package/src/api/billing.ts +144 -0
- package/src/api/civic.ts +428 -0
- package/src/api/contacts.ts +41 -0
- package/src/api/devices.ts +438 -0
- package/src/api/follows.ts +414 -0
- package/src/api/identity.ts +727 -0
- package/src/api/linkedAccounts.ts +78 -0
- package/src/api/nodes.ts +169 -0
- package/src/api/notifications.ts +135 -0
- package/src/api/privacy.ts +120 -0
- package/src/api/reputation.ts +134 -0
- package/src/api/session.ts +210 -0
- package/src/api/store.ts +435 -0
- package/src/api/topics.ts +83 -0
- package/src/api/users.ts +357 -0
- package/src/boot/sessionColdBoot.ts +4 -4
- package/src/civic/index.ts +12 -0
- package/src/civic/payloads.ts +175 -0
- package/src/client/context.ts +34 -0
- package/src/crypto/identityLink.ts +5 -5
- package/src/crypto/index.ts +39 -0
- package/src/crypto/internal.ts +20 -0
- package/src/crypto/keyManager.ts +2 -2
- package/src/crypto/polyfill.ts +9 -89
- package/src/crypto/recoveryPhrase.ts +1 -0
- package/src/crypto/registrationPow.ts +1 -1
- package/src/crypto/signatureService.ts +1 -0
- package/src/i18n/accountCategoryLabels.ts +2 -2
- package/src/i18n/accountRoleLabels.ts +2 -2
- package/src/i18n/index.ts +105 -54
- package/src/i18n/locales/{ar-SA.json → ar-SA.ts} +132 -52
- package/src/i18n/locales/{ca-ES.json → ca-ES.ts} +132 -52
- package/{dist/cjs/i18n/locales/locales/de-DE.json → src/i18n/locales/de-DE.ts} +134 -54
- package/src/i18n/locales/{en-US.json → en-US.ts} +161 -245
- package/{dist/cjs/i18n/locales/locales/es-ES.json → src/i18n/locales/es-ES.ts} +161 -245
- package/src/i18n/locales/{fr-FR.json → fr-FR.ts} +132 -52
- package/src/i18n/locales/{it-IT.json → it-IT.ts} +132 -52
- package/{dist/cjs/i18n/locales/locales/ja-JP.json → src/i18n/locales/ja-JP.ts} +132 -52
- package/src/i18n/locales/{ko-KR.json → ko-KR.ts} +132 -52
- package/src/i18n/locales/{pt-PT.json → pt-PT.ts} +134 -54
- package/src/i18n/locales/{zh-CN.json → zh-CN.ts} +133 -53
- package/src/i18n/reputationCategoryLabels.ts +1 -1
- package/src/i18n/trustTierLabels.ts +1 -1
- package/src/index.ts +170 -501
- package/src/inference/index.ts +48 -0
- package/src/models/interfaces.ts +1 -22
- package/src/server/OxyServer.ts +637 -0
- package/src/server/auth.ts +12 -8
- package/src/server/index.ts +28 -5
- package/src/server/middleware.ts +1520 -0
- package/src/server/namespaces.ts +257 -0
- package/src/server/rateLimit.ts +10 -9
- package/src/server/requesterAssertion.ts +13 -10
- package/src/server/securityHeaders.ts +7 -8
- package/src/server/traffic.ts +6 -6
- package/src/server/trafficNodeHttp.ts +7 -3
- package/src/server/userInvalidation.ts +9 -9
- package/src/session/accountDelegationAccess.ts +1 -1
- package/src/session/accountDialogController.ts +24 -24
- package/src/session/accountSwitchTargets.ts +1 -1
- package/src/session/authStateStore.ts +9 -8
- package/src/session/identitySession.ts +3 -3
- package/src/session/index.ts +210 -0
- package/src/session/refresh.ts +36 -30
- package/src/session/sessionClientHost.ts +5 -5
- package/src/session/sharedDeviceCredential.ts +3 -2
- package/src/shared/utils/networkUtils.ts +2 -2
- package/src/utils/accountCacheSweep.ts +11 -15
- package/src/utils/apiUtils.ts +3 -3
- package/src/utils/asyncUtils.ts +38 -235
- package/src/utils/authHelpers.ts +2 -2
- package/src/utils/authWebUrl.ts +3 -4
- package/src/utils/avatarUtils.ts +4 -7
- package/src/utils/cache.ts +36 -5
- package/src/utils/cacheKey.ts +5 -9
- package/src/utils/commonsApproval.ts +1 -1
- package/src/utils/deviceManager.ts +17 -16
- package/src/utils/edgeRegion.ts +1 -2
- package/src/utils/identityCacheSweep.ts +7 -12
- package/src/utils/oauthPkce.ts +2 -2
- package/src/utils/oxyServiceEnvironment.ts +3 -7
- package/src/utils/requestUtils.ts +48 -44
- package/src/utils/sessionUtils.ts +0 -2
- package/src/utils/tokenClaims.ts +38 -0
- package/dist/cjs/.tsbuildinfo +0 -1
- package/dist/cjs/OxyServices.base.js +0 -392
- package/dist/cjs/i18n/locales/locales/ar-SA.json +0 -306
- package/dist/cjs/i18n/locales/locales/ca-ES.json +0 -306
- package/dist/cjs/i18n/locales/locales/en-US.json +0 -2127
- package/dist/cjs/i18n/locales/locales/fr-FR.json +0 -306
- package/dist/cjs/i18n/locales/locales/it-IT.json +0 -306
- package/dist/cjs/i18n/locales/locales/ko-KR.json +0 -306
- package/dist/cjs/i18n/locales/locales/pt-PT.json +0 -306
- package/dist/cjs/i18n/locales/locales/zh-CN.json +0 -306
- package/dist/cjs/mixins/OxyServices.accounts.js +0 -555
- package/dist/cjs/mixins/OxyServices.agency.js +0 -154
- package/dist/cjs/mixins/OxyServices.analytics.js +0 -49
- package/dist/cjs/mixins/OxyServices.appData.js +0 -108
- package/dist/cjs/mixins/OxyServices.assets.js +0 -854
- package/dist/cjs/mixins/OxyServices.auth.js +0 -1495
- package/dist/cjs/mixins/OxyServices.chains.js +0 -73
- package/dist/cjs/mixins/OxyServices.civic.js +0 -611
- package/dist/cjs/mixins/OxyServices.connectedApps.js +0 -95
- package/dist/cjs/mixins/OxyServices.contacts.js +0 -50
- package/dist/cjs/mixins/OxyServices.deviceBoot.js +0 -191
- package/dist/cjs/mixins/OxyServices.devices.js +0 -116
- package/dist/cjs/mixins/OxyServices.features.js +0 -335
- package/dist/cjs/mixins/OxyServices.followGraph.js +0 -221
- package/dist/cjs/mixins/OxyServices.identity.js +0 -562
- package/dist/cjs/mixins/OxyServices.identityBackup.js +0 -172
- package/dist/cjs/mixins/OxyServices.inference.js +0 -59
- package/dist/cjs/mixins/OxyServices.language.js +0 -125
- package/dist/cjs/mixins/OxyServices.linkedAccounts.js +0 -79
- package/dist/cjs/mixins/OxyServices.location.js +0 -43
- package/dist/cjs/mixins/OxyServices.nodes.js +0 -175
- package/dist/cjs/mixins/OxyServices.notifications.js +0 -63
- package/dist/cjs/mixins/OxyServices.payment.js +0 -158
- package/dist/cjs/mixins/OxyServices.privacy.js +0 -199
- package/dist/cjs/mixins/OxyServices.reputation.js +0 -289
- package/dist/cjs/mixins/OxyServices.security.js +0 -89
- package/dist/cjs/mixins/OxyServices.store.js +0 -266
- package/dist/cjs/mixins/OxyServices.topics.js +0 -137
- package/dist/cjs/mixins/OxyServices.user.js +0 -954
- package/dist/cjs/mixins/OxyServices.utility.js +0 -1402
- package/dist/cjs/mixins/index.js +0 -136
- package/dist/cjs/mixins/mixinHelpers.js +0 -53
- package/dist/cjs/utils/webauthnOrigin.js +0 -51
- package/dist/esm/.tsbuildinfo +0 -1
- package/dist/esm/OxyServices.base.js +0 -388
- package/dist/esm/i18n/locales/locales/ar-SA.json +0 -306
- package/dist/esm/i18n/locales/locales/ca-ES.json +0 -306
- package/dist/esm/i18n/locales/locales/de-DE.json +0 -306
- package/dist/esm/i18n/locales/locales/en-US.json +0 -2127
- package/dist/esm/i18n/locales/locales/es-ES.json +0 -2127
- package/dist/esm/i18n/locales/locales/fr-FR.json +0 -306
- package/dist/esm/i18n/locales/locales/it-IT.json +0 -306
- package/dist/esm/i18n/locales/locales/ja-JP.json +0 -306
- package/dist/esm/i18n/locales/locales/ko-KR.json +0 -306
- package/dist/esm/i18n/locales/locales/pt-PT.json +0 -306
- package/dist/esm/i18n/locales/locales/zh-CN.json +0 -306
- package/dist/esm/mixins/OxyServices.accounts.js +0 -543
- package/dist/esm/mixins/OxyServices.agency.js +0 -151
- package/dist/esm/mixins/OxyServices.analytics.js +0 -46
- package/dist/esm/mixins/OxyServices.appData.js +0 -103
- package/dist/esm/mixins/OxyServices.assets.js +0 -851
- package/dist/esm/mixins/OxyServices.auth.js +0 -1455
- package/dist/esm/mixins/OxyServices.chains.js +0 -70
- package/dist/esm/mixins/OxyServices.civic.js +0 -605
- package/dist/esm/mixins/OxyServices.connectedApps.js +0 -92
- package/dist/esm/mixins/OxyServices.contacts.js +0 -47
- package/dist/esm/mixins/OxyServices.deviceBoot.js +0 -186
- package/dist/esm/mixins/OxyServices.devices.js +0 -113
- package/dist/esm/mixins/OxyServices.features.js +0 -332
- package/dist/esm/mixins/OxyServices.followGraph.js +0 -218
- package/dist/esm/mixins/OxyServices.identity.js +0 -558
- package/dist/esm/mixins/OxyServices.identityBackup.js +0 -169
- package/dist/esm/mixins/OxyServices.inference.js +0 -56
- package/dist/esm/mixins/OxyServices.language.js +0 -122
- package/dist/esm/mixins/OxyServices.linkedAccounts.js +0 -76
- package/dist/esm/mixins/OxyServices.location.js +0 -40
- package/dist/esm/mixins/OxyServices.nodes.js +0 -172
- package/dist/esm/mixins/OxyServices.notifications.js +0 -60
- package/dist/esm/mixins/OxyServices.payment.js +0 -155
- package/dist/esm/mixins/OxyServices.privacy.js +0 -196
- package/dist/esm/mixins/OxyServices.reputation.js +0 -286
- package/dist/esm/mixins/OxyServices.security.js +0 -86
- package/dist/esm/mixins/OxyServices.store.js +0 -263
- package/dist/esm/mixins/OxyServices.topics.js +0 -134
- package/dist/esm/mixins/OxyServices.user.js +0 -951
- package/dist/esm/mixins/OxyServices.utility.js +0 -1397
- package/dist/esm/mixins/index.js +0 -133
- package/dist/esm/mixins/mixinHelpers.js +0 -48
- package/dist/esm/utils/webauthnOrigin.js +0 -48
- package/dist/types/.tsbuildinfo +0 -1
- package/dist/types/OxyServices.base.d.ts +0 -189
- package/dist/types/mixins/OxyServices.accounts.d.ts +0 -868
- package/dist/types/mixins/OxyServices.agency.d.ts +0 -176
- package/dist/types/mixins/OxyServices.analytics.d.ts +0 -72
- package/dist/types/mixins/OxyServices.appData.d.ts +0 -108
- package/dist/types/mixins/OxyServices.assets.d.ts +0 -371
- package/dist/types/mixins/OxyServices.auth.d.ts +0 -998
- package/dist/types/mixins/OxyServices.chains.d.ts +0 -156
- package/dist/types/mixins/OxyServices.civic.d.ts +0 -520
- package/dist/types/mixins/OxyServices.connectedApps.d.ts +0 -184
- package/dist/types/mixins/OxyServices.contacts.d.ts +0 -100
- package/dist/types/mixins/OxyServices.deviceBoot.d.ts +0 -185
- package/dist/types/mixins/OxyServices.devices.d.ts +0 -103
- package/dist/types/mixins/OxyServices.features.d.ts +0 -250
- package/dist/types/mixins/OxyServices.followGraph.d.ts +0 -223
- package/dist/types/mixins/OxyServices.identity.d.ts +0 -337
- package/dist/types/mixins/OxyServices.identityBackup.d.ts +0 -129
- package/dist/types/mixins/OxyServices.inference.d.ts +0 -95
- package/dist/types/mixins/OxyServices.language.d.ts +0 -87
- package/dist/types/mixins/OxyServices.linkedAccounts.d.ts +0 -107
- package/dist/types/mixins/OxyServices.location.d.ts +0 -70
- package/dist/types/mixins/OxyServices.nodes.d.ts +0 -198
- package/dist/types/mixins/OxyServices.notifications.d.ts +0 -143
- package/dist/types/mixins/OxyServices.payment.d.ts +0 -117
- package/dist/types/mixins/OxyServices.privacy.d.ts +0 -146
- package/dist/types/mixins/OxyServices.reputation.d.ts +0 -202
- package/dist/types/mixins/OxyServices.security.d.ts +0 -84
- package/dist/types/mixins/OxyServices.store.d.ts +0 -334
- package/dist/types/mixins/OxyServices.topics.d.ts +0 -110
- package/dist/types/mixins/OxyServices.user.d.ts +0 -600
- package/dist/types/mixins/OxyServices.utility.d.ts +0 -526
- package/dist/types/mixins/index.d.ts +0 -87
- package/dist/types/mixins/mixinHelpers.d.ts +0 -31
- package/dist/types/utils/webauthnOrigin.d.ts +0 -32
- package/src/OxyServices.base.ts +0 -480
- package/src/__tests__/authSocket.test.ts +0 -96
- package/src/__tests__/fixEsmImports.test.ts +0 -132
- package/src/__tests__/httpServiceAbort.test.ts +0 -308
- package/src/__tests__/httpServiceActivityId.test.ts +0 -49
- package/src/__tests__/httpServiceAuthSelfAwait.test.ts +0 -108
- package/src/__tests__/httpServiceCache.test.ts +0 -318
- package/src/__tests__/httpServiceFormEncoded.test.ts +0 -139
- package/src/__tests__/httpServiceQueueDeadlock.test.ts +0 -128
- package/src/__tests__/httpServiceRateLimitedRefresh.test.ts +0 -160
- package/src/__tests__/httpServiceUnwrapEnvelope.test.ts +0 -115
- package/src/__tests__/httpServiceWrites.test.ts +0 -175
- package/src/__tests__/inSessionRefresh.test.ts +0 -313
- package/src/__tests__/linkedClient.test.ts +0 -363
- package/src/__tests__/nearExpiryMintStorm.test.ts +0 -165
- package/src/__tests__/parseHttpErrorBody.test.ts +0 -116
- package/src/__tests__/publicInterfaceParity.test.ts +0 -75
- package/src/__tests__/serverValueImportsDeclared.test.ts +0 -120
- package/src/__tests__/serviceIdentityWhenAnonymous.test.ts +0 -159
- package/src/__tests__/serviceTokenWorkloadFallback.test.ts +0 -85
- package/src/__tests__/userIdentity.test.ts +0 -143
- package/src/boot/__tests__/sessionColdBoot.identity.test.ts +0 -393
- package/src/boot/__tests__/sessionColdBoot.sharedDevice.test.ts +0 -325
- package/src/boot/__tests__/sessionColdBoot.test.ts +0 -570
- package/src/crypto/__tests__/backupMaterial.test.ts +0 -86
- package/src/crypto/__tests__/cryptoPrimitives.test.ts +0 -226
- package/src/crypto/__tests__/identityLink.test.ts +0 -18
- package/src/crypto/__tests__/identityMocks.ts +0 -125
- package/src/crypto/__tests__/identityProof.test.ts +0 -81
- package/src/crypto/__tests__/keyManager.atomicity.test.ts +0 -272
- package/src/crypto/__tests__/keyManager.cacheSafety.test.ts +0 -175
- package/src/crypto/__tests__/keyManager.deviceBackup.test.ts +0 -310
- package/src/crypto/__tests__/keyManager.identityStatus.test.ts +0 -217
- package/src/crypto/__tests__/keyManager.recoveryLadder.test.ts +0 -179
- package/src/crypto/__tests__/keyManager.recoveryMnemonic.test.ts +0 -138
- package/src/crypto/__tests__/keyManager.sharedSlotSync.test.ts +0 -150
- package/src/crypto/__tests__/keyManager.storageMigration.test.ts +0 -227
- package/src/crypto/__tests__/keyManager.test.ts +0 -329
- package/src/crypto/__tests__/polyfill.test.ts +0 -109
- package/src/crypto/__tests__/polyfillOrder.test.ts +0 -114
- package/src/crypto/__tests__/recoveryPhrase.test.ts +0 -61
- package/src/crypto/__tests__/registrationPow.test.ts +0 -61
- package/src/crypto/__tests__/scopedSeed.test.ts +0 -126
- package/src/crypto/__tests__/signChallengeShared.test.ts +0 -63
- package/src/crypto/__tests__/signedRecord.test.ts +0 -230
- package/src/i18n/__tests__/accountCategoryLabels.test.ts +0 -62
- package/src/i18n/__tests__/accountRoleLabels.test.ts +0 -54
- package/src/i18n/__tests__/reputationCategoryLabels.test.ts +0 -56
- package/src/i18n/__tests__/trustTierLabels.test.ts +0 -47
- package/src/i18n/locales/de-DE.json +0 -306
- package/src/i18n/locales/es-ES.json +0 -2127
- package/src/i18n/locales/ja-JP.json +0 -306
- package/src/inference/__tests__/OxyInferenceClient.test.ts +0 -899
- package/src/logger/__tests__/logger.test.ts +0 -207
- package/src/mixins/OxyServices.accounts.ts +0 -1330
- package/src/mixins/OxyServices.agency.ts +0 -353
- package/src/mixins/OxyServices.analytics.ts +0 -53
- package/src/mixins/OxyServices.appData.ts +0 -158
- package/src/mixins/OxyServices.assets.ts +0 -964
- package/src/mixins/OxyServices.auth.ts +0 -2083
- package/src/mixins/OxyServices.chains.ts +0 -134
- package/src/mixins/OxyServices.civic.ts +0 -945
- package/src/mixins/OxyServices.connectedApps.ts +0 -212
- package/src/mixins/OxyServices.contacts.ts +0 -73
- package/src/mixins/OxyServices.devices.ts +0 -120
- package/src/mixins/OxyServices.features.ts +0 -454
- package/src/mixins/OxyServices.followGraph.ts +0 -293
- package/src/mixins/OxyServices.identity.ts +0 -787
- package/src/mixins/OxyServices.identityBackup.ts +0 -250
- package/src/mixins/OxyServices.inference.ts +0 -57
- package/src/mixins/OxyServices.language.ts +0 -144
- package/src/mixins/OxyServices.linkedAccounts.ts +0 -129
- package/src/mixins/OxyServices.location.ts +0 -46
- package/src/mixins/OxyServices.nodes.ts +0 -337
- package/src/mixins/OxyServices.notifications.ts +0 -142
- package/src/mixins/OxyServices.payment.ts +0 -163
- package/src/mixins/OxyServices.privacy.ts +0 -219
- package/src/mixins/OxyServices.reputation.ts +0 -436
- package/src/mixins/OxyServices.security.ts +0 -110
- package/src/mixins/OxyServices.store.ts +0 -585
- package/src/mixins/OxyServices.topics.ts +0 -169
- package/src/mixins/OxyServices.user.ts +0 -1208
- package/src/mixins/OxyServices.utility.ts +0 -1803
- package/src/mixins/__tests__/OxyServices.civic.test.ts +0 -1095
- package/src/mixins/__tests__/OxyServices.deviceBoot.test.ts +0 -124
- package/src/mixins/__tests__/OxyServices.identity.test.ts +0 -301
- package/src/mixins/__tests__/OxyServices.nodes.test.ts +0 -341
- package/src/mixins/__tests__/OxyServices.rotateKey.test.ts +0 -323
- package/src/mixins/__tests__/OxyServices.serviceAssetMetadata.test.ts +0 -192
- package/src/mixins/__tests__/OxyServices.serviceAssetMetadataBySha.test.ts +0 -135
- package/src/mixins/__tests__/OxyServices.serviceLinkedDownloadUrl.test.ts +0 -139
- package/src/mixins/__tests__/accountEvents.test.ts +0 -158
- package/src/mixins/__tests__/accounts.test.ts +0 -727
- package/src/mixins/__tests__/agency.test.ts +0 -120
- package/src/mixins/__tests__/appData.test.ts +0 -203
- package/src/mixins/__tests__/assetCredentials.test.ts +0 -47
- package/src/mixins/__tests__/assetUpload.test.ts +0 -191
- package/src/mixins/__tests__/authRefusalObservability.test.ts +0 -396
- package/src/mixins/__tests__/backgroundCredential.httpIntegration.test.ts +0 -130
- package/src/mixins/__tests__/chains.test.ts +0 -113
- package/src/mixins/__tests__/commonsSignIn.test.ts +0 -1147
- package/src/mixins/__tests__/connectedApps.test.ts +0 -146
- package/src/mixins/__tests__/deviceTokenMintPinned.test.ts +0 -113
- package/src/mixins/__tests__/discoveryErrorHandling.test.ts +0 -265
- package/src/mixins/__tests__/followCacheInvalidation.test.ts +0 -173
- package/src/mixins/__tests__/followGraph.test.ts +0 -147
- package/src/mixins/__tests__/followGraphPagination.test.ts +0 -271
- package/src/mixins/__tests__/getFileDownloadUrl.test.ts +0 -346
- package/src/mixins/__tests__/getFollowStatuses.test.ts +0 -95
- package/src/mixins/__tests__/getUsersByIds.test.ts +0 -176
- package/src/mixins/__tests__/identityBackup.test.ts +0 -315
- package/src/mixins/__tests__/identityLink.test.ts +0 -89
- package/src/mixins/__tests__/identityWriteCacheInvalidation.test.ts +0 -407
- package/src/mixins/__tests__/inferenceFactory.test.ts +0 -58
- package/src/mixins/__tests__/linkedAccounts.test.ts +0 -109
- package/src/mixins/__tests__/notifications.read.test.ts +0 -82
- package/src/mixins/__tests__/onTokensChanged.test.ts +0 -129
- package/src/mixins/__tests__/preSessionSkipAuth.test.ts +0 -284
- package/src/mixins/__tests__/privacyCacheInvalidation.test.ts +0 -155
- package/src/mixins/__tests__/reputation.test.ts +0 -522
- package/src/mixins/__tests__/serviceAuth.test.ts +0 -889
- package/src/mixins/__tests__/serviceTokenJwks.test.ts +0 -208
- package/src/mixins/__tests__/store.test.ts +0 -304
- package/src/mixins/__tests__/topics.test.ts +0 -155
- package/src/mixins/__tests__/userReadCacheBypass.test.ts +0 -129
- package/src/mixins/__tests__/userTokenAuth.test.ts +0 -746
- package/src/mixins/__tests__/verifyChallenge.test.ts +0 -161
- package/src/mixins/__tests__/verifyServiceActingAs.test.ts +0 -167
- package/src/mixins/__tests__/webauthnAuth.test.ts +0 -279
- package/src/mixins/index.ts +0 -203
- package/src/mixins/mixinHelpers.ts +0 -69
- package/src/server/__tests__/auth.test.ts +0 -78
- package/src/server/__tests__/capabilityTicket.test.ts +0 -111
- package/src/server/__tests__/cors.socket.test.ts +0 -225
- package/src/server/__tests__/cors.test.ts +0 -158
- package/src/server/__tests__/rateLimit.test.ts +0 -257
- package/src/server/__tests__/requesterAssertion.test.ts +0 -359
- package/src/server/__tests__/safeFetch.test.ts +0 -232
- package/src/server/__tests__/securityHeaders.test.ts +0 -387
- package/src/server/__tests__/serviceTokenAttribution.test.ts +0 -396
- package/src/server/__tests__/traffic.test.ts +0 -180
- package/src/server/__tests__/trafficNodeHttp.test.ts +0 -38
- package/src/server/__tests__/userInvalidation.test.ts +0 -203
- package/src/server/__tests__/verifySecret.test.ts +0 -40
- package/src/server/__tests__/workloadIdentity.client.test.ts +0 -16
- package/src/server/__tests__/workloadIdentity.test.ts +0 -128
- package/src/session/__tests__/SessionClient.additive.test.ts +0 -153
- package/src/session/__tests__/SessionClient.broadcastChannel.test.ts +0 -114
- package/src/session/__tests__/SessionClient.diagnostics.test.ts +0 -91
- package/src/session/__tests__/SessionClient.directory.test.ts +0 -688
- package/src/session/__tests__/SessionClient.httpIntegration.test.ts +0 -65
- package/src/session/__tests__/SessionClient.identityPin.test.ts +0 -175
- package/src/session/__tests__/SessionClient.rest.test.ts +0 -119
- package/src/session/__tests__/SessionClient.serverEvents.test.ts +0 -72
- package/src/session/__tests__/SessionClient.socket.test.ts +0 -202
- package/src/session/__tests__/SessionClient.socketFactory.test.ts +0 -81
- package/src/session/__tests__/SessionClient.state.test.ts +0 -78
- package/src/session/__tests__/SessionClient.switchTokenOrder.test.ts +0 -170
- package/src/session/__tests__/accountDelegationAccess.test.ts +0 -104
- package/src/session/__tests__/accountDialogController.test.ts +0 -2502
- package/src/session/__tests__/accountDialogShape.test.ts +0 -120
- package/src/session/__tests__/accountSwitchTargets.test.ts +0 -137
- package/src/session/__tests__/authStateStore.test.ts +0 -451
- package/src/session/__tests__/deviceDirectory.test.ts +0 -422
- package/src/session/__tests__/deviceSwitcherRows.test.ts +0 -223
- package/src/session/__tests__/identityPin.test.ts +0 -131
- package/src/session/__tests__/identitySession.test.ts +0 -194
- package/src/session/__tests__/projectSessionState.test.ts +0 -105
- package/src/session/__tests__/refresh.identityPin.test.ts +0 -307
- package/src/session/__tests__/refresh.test.ts +0 -606
- package/src/session/__tests__/sessionIntegration.test.ts +0 -209
- package/src/session/__tests__/sharedDeviceCredential.test.ts +0 -300
- package/src/utils/__tests__/accountUtils.test.ts +0 -151
- package/src/utils/__tests__/activityId.test.ts +0 -45
- package/src/utils/__tests__/asyncUtils.test.ts +0 -279
- package/src/utils/__tests__/authWebUrl.test.ts +0 -15
- package/src/utils/__tests__/cacheKey.test.ts +0 -0
- package/src/utils/__tests__/cacheLifecycle.test.ts +0 -65
- package/src/utils/__tests__/coldBoot.test.ts +0 -496
- package/src/utils/__tests__/commonsApproval.test.ts +0 -60
- package/src/utils/__tests__/identityCacheSweep.test.ts +0 -151
- package/src/utils/__tests__/languageUtils.test.ts +0 -244
- package/src/utils/__tests__/oauthPkce.test.ts +0 -303
- package/src/utils/__tests__/officialOrigins.test.ts +0 -31
- package/src/utils/__tests__/oxyServiceEnvironment.test.ts +0 -7
- package/src/utils/__tests__/profileLinks.test.ts +0 -180
- package/src/utils/__tests__/redactUrl.test.ts +0 -33
- package/src/utils/__tests__/registrableApex.test.ts +0 -62
- package/src/utils/__tests__/requestUtilsAbort.test.ts +0 -155
- package/src/utils/__tests__/textNormalization.test.ts +0 -205
- package/src/utils/__tests__/validationUtils.test.ts +0 -703
- package/src/utils/__tests__/webauthnOrigin.test.ts +0 -83
- package/src/utils/webauthnOrigin.ts +0 -52
|
@@ -1,600 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* User Management Methods Mixin
|
|
3
|
-
*/
|
|
4
|
-
import type { CreateOxyNotificationRequest } from '@oxy.so/contracts';
|
|
5
|
-
import type { User, Notification, NotificationPage, NotificationPreferences, UserPreferences, SearchProfilesResponse, PrivacySettings } from '../models/interfaces';
|
|
6
|
-
import type { UserNameResponse, UserProfileUpdate, RecommendationRequest, RecommendationItem, ThemePreference } from '@oxy.so/contracts';
|
|
7
|
-
import type { OxyServicesBase } from '../OxyServices.base';
|
|
8
|
-
import { type PaginationParams, type FollowGraphParams } from '../utils/apiUtils';
|
|
9
|
-
/**
|
|
10
|
-
* Response of the single follow/unfollow toggle route
|
|
11
|
-
* (`POST /users/:id/follow` and `DELETE /users/:id/follow`). The route reports a
|
|
12
|
-
* status message, which side of the toggle was applied, and the post-write
|
|
13
|
-
* follower/following counts for the affected users.
|
|
14
|
-
*/
|
|
15
|
-
export interface FollowMutationResult {
|
|
16
|
-
/** Human-readable status message. */
|
|
17
|
-
message: string;
|
|
18
|
-
/** Which side of the toggle was applied, when reported by the route. */
|
|
19
|
-
action?: 'follow' | 'unfollow';
|
|
20
|
-
/** Post-write counts, when reported by the route. */
|
|
21
|
-
counts?: {
|
|
22
|
-
/** The target user's follower count after the write. */
|
|
23
|
-
followers: number;
|
|
24
|
-
/** The viewer's following count after the write. */
|
|
25
|
-
following: number;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
/** Per-user outcome returned by `POST /users/follow/bulk`. */
|
|
29
|
-
export interface BulkFollowEntry {
|
|
30
|
-
/** The user ID that was processed. */
|
|
31
|
-
userId: string;
|
|
32
|
-
/** Whether the follow was applied (or already in place) without error. */
|
|
33
|
-
success: boolean;
|
|
34
|
-
/** Whether the caller was already following this user before the request. */
|
|
35
|
-
alreadyFollowing: boolean;
|
|
36
|
-
}
|
|
37
|
-
/** Response shape of `POST /users/follow/bulk`. */
|
|
38
|
-
export interface BulkFollowResult {
|
|
39
|
-
/** Per-user outcomes, in request order. */
|
|
40
|
-
results: BulkFollowEntry[];
|
|
41
|
-
/** Number of users newly followed by this request. */
|
|
42
|
-
followedCount: number;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* The authenticated viewer's OWN social graph, ids-only — the response of
|
|
46
|
-
* `GET /users/me/graph`. Consolidates the accounts the viewer follows, the
|
|
47
|
-
* subset who follow back (mutuals), and the accounts the viewer has blocked
|
|
48
|
-
* into one payload so a consumer can fetch its whole viewer graph in a single
|
|
49
|
-
* round trip instead of three. Each list is server-bounded; bare ids only (no
|
|
50
|
-
* hydrated DTOs) because the consumer hydrates/ranks itself.
|
|
51
|
-
*/
|
|
52
|
-
export interface ViewerGraph {
|
|
53
|
-
/** Accounts the viewer follows (most-recent first, bounded). */
|
|
54
|
-
followingIds: string[];
|
|
55
|
-
/** Accounts the viewer follows that ALSO follow the viewer back (bounded). */
|
|
56
|
-
mutualIds: string[];
|
|
57
|
-
/** Accounts the viewer has blocked (bounded). */
|
|
58
|
-
blockedIds: string[];
|
|
59
|
-
/** Accounts the viewer has restricted (bounded). */
|
|
60
|
-
restrictedIds: string[];
|
|
61
|
-
}
|
|
62
|
-
/** Per-user outcome returned by `POST /users/unfollow/bulk`. */
|
|
63
|
-
export interface BulkUnfollowEntry {
|
|
64
|
-
/** The user ID that was processed. */
|
|
65
|
-
userId: string;
|
|
66
|
-
/** Whether the unfollow was applied (or already absent) without error. */
|
|
67
|
-
success: boolean;
|
|
68
|
-
/** Whether the caller was following this user before the request. */
|
|
69
|
-
wasFollowing: boolean;
|
|
70
|
-
}
|
|
71
|
-
/** Response shape of `POST /users/unfollow/bulk`. */
|
|
72
|
-
export interface BulkUnfollowResult {
|
|
73
|
-
/** Per-user outcomes, in request order. */
|
|
74
|
-
results: BulkUnfollowEntry[];
|
|
75
|
-
/** Number of users newly unfollowed by this request. */
|
|
76
|
-
unfollowedCount: number;
|
|
77
|
-
}
|
|
78
|
-
export declare function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T): {
|
|
79
|
-
new (...args: any[]): {
|
|
80
|
-
/**
|
|
81
|
-
* Service-token request, implemented by the auth mixin earlier in the
|
|
82
|
-
* composition pipeline (see `mixins/index.ts`). The user mixin is typed
|
|
83
|
-
* against `OxyServicesBase`, which does not carry the auth mixin's methods,
|
|
84
|
-
* so this `declare` surfaces the inherited runtime method to TypeScript
|
|
85
|
-
* without re-implementing it. Used by `getUsersByIds` to authenticate the
|
|
86
|
-
* server-to-server `/users/by-ids` bulk fetch with a bearer service token.
|
|
87
|
-
*/
|
|
88
|
-
makeServiceRequest: <R = unknown>(method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE", url: string, data?: unknown, userId?: string) => Promise<R>;
|
|
89
|
-
/**
|
|
90
|
-
* Raw service credentials stored by `configureServiceAuth()` on the auth
|
|
91
|
-
* mixin (earlier in the pipeline). Surfaced here via `declare` — for the
|
|
92
|
-
* same typing reason as `makeServiceRequest` above — so `getUsersByIds` can
|
|
93
|
-
* detect whether this instance is service-configured (a backend) and pick
|
|
94
|
-
* the bearer-service path, or fall back to the user-session path (a browser/
|
|
95
|
-
* RN client). Both are `null` until `configureServiceAuth(apiKey, apiSecret)`
|
|
96
|
-
* is called.
|
|
97
|
-
*/
|
|
98
|
-
_serviceApiKey: string | null;
|
|
99
|
-
_serviceApiSecret: string | null;
|
|
100
|
-
/**
|
|
101
|
-
* Whether this process can mint a service token by attesting what it is
|
|
102
|
-
* (ADR 0026), defined on the auth mixin. A host with no key pair that CAN
|
|
103
|
-
* attest is a first-party backend exactly like one with a key pair, and
|
|
104
|
-
* `getUsersByIds` must treat it as one.
|
|
105
|
-
*/
|
|
106
|
-
_canUseWorkloadIdentity: () => Promise<boolean>;
|
|
107
|
-
/**
|
|
108
|
-
* Get profile by username.
|
|
109
|
-
*
|
|
110
|
-
* @param username - The profile's username.
|
|
111
|
-
* @param options.cache - Defaults to `true` (5-minute TTL), matching prior
|
|
112
|
-
* behavior. Pass `{ cache: false }` to force a registry-fresh read: the
|
|
113
|
-
* request bypasses BOTH the cache lookup and the post-fetch cache write
|
|
114
|
-
* (see {@link HttpService.request}'s `cache` handling), so it neither
|
|
115
|
-
* serves nor overwrites any entry already cached for this key — a
|
|
116
|
-
* previously cached response (if one exists) is left in place until its
|
|
117
|
-
* own TTL expires or is explicitly invalidated elsewhere. Use this when a
|
|
118
|
-
* caller must observe a just-written change (e.g. a privacy/consent flag)
|
|
119
|
-
* that would otherwise be masked by the TTL window.
|
|
120
|
-
*/
|
|
121
|
-
getProfileByUsername(username: string, options?: {
|
|
122
|
-
cache?: boolean;
|
|
123
|
-
}): Promise<User>;
|
|
124
|
-
/**
|
|
125
|
-
* Lightweight username lookup for login flows.
|
|
126
|
-
* Returns minimal public info: exists, color, avatar, name.displayName.
|
|
127
|
-
* Faster than getProfileByUsername — no stats, no formatting.
|
|
128
|
-
*/
|
|
129
|
-
lookupUsername(username: string): Promise<{
|
|
130
|
-
exists: boolean;
|
|
131
|
-
username: string;
|
|
132
|
-
color: string | null;
|
|
133
|
-
avatar: string | null;
|
|
134
|
-
name: UserNameResponse;
|
|
135
|
-
}>;
|
|
136
|
-
/**
|
|
137
|
-
* Search user profiles
|
|
138
|
-
*
|
|
139
|
-
* Takes an `AbortSignal` because people search is typed into: without one
|
|
140
|
-
* every keystroke started a search that ran to completion and had its
|
|
141
|
-
* result discarded, while holding one of the request queue's slots. It was
|
|
142
|
-
* the only search lane in Mention that could not be cancelled, purely
|
|
143
|
-
* because this signature had no way to say so.
|
|
144
|
-
*/
|
|
145
|
-
searchProfiles(query: string, pagination?: PaginationParams, options?: {
|
|
146
|
-
signal?: AbortSignal;
|
|
147
|
-
}): Promise<SearchProfilesResponse>;
|
|
148
|
-
/**
|
|
149
|
-
* Resolve a fediverse handle to an Oxy user profile.
|
|
150
|
-
* Performs WebFinger discovery and returns the user, or null if not found.
|
|
151
|
-
* @param handle - Fediverse handle (e.g. "@user@mastodon.social" or "user@domain")
|
|
152
|
-
*/
|
|
153
|
-
resolveProfile(handle: string): Promise<User | null>;
|
|
154
|
-
/**
|
|
155
|
-
* Resolve (find or create) a non-local user. All user creation for
|
|
156
|
-
* external accounts (federated, agent, automated) goes through this
|
|
157
|
-
* method — calling services never write user data directly.
|
|
158
|
-
*/
|
|
159
|
-
resolveExternalUser(data: {
|
|
160
|
-
type: "federated" | "agent" | "automated";
|
|
161
|
-
username: string;
|
|
162
|
-
actorUri?: string;
|
|
163
|
-
domain?: string;
|
|
164
|
-
displayName?: string;
|
|
165
|
-
avatar?: string;
|
|
166
|
-
bio?: string;
|
|
167
|
-
ownerId?: string;
|
|
168
|
-
}): Promise<User>;
|
|
169
|
-
/**
|
|
170
|
-
* Get profile recommendations.
|
|
171
|
-
*
|
|
172
|
-
* Public discovery read — works WITHOUT authentication. The SDK attaches the
|
|
173
|
-
* access token automatically when one is available (personalized via
|
|
174
|
-
* mutual-connection overlap), and falls back to popular public profiles when
|
|
175
|
-
* the caller is logged out. This deliberately does NOT use `withAuthRetry`,
|
|
176
|
-
* which would throw an authentication timeout for logged-out callers before
|
|
177
|
-
* the request is ever sent.
|
|
178
|
-
*
|
|
179
|
-
* Routing (two server endpoints, both validated against the same
|
|
180
|
-
* `@oxy.so/contracts` recommendation schemas so the wire shape cannot drift):
|
|
181
|
-
*
|
|
182
|
-
* - **GET `/profiles/recommendations`** (cached) is used for the simple,
|
|
183
|
-
* back-compatible case: no options at all, or only `excludeTypes` and/or
|
|
184
|
-
* `limit`. `excludeTypes` is sent as a comma-joined query param and
|
|
185
|
-
* `limit` as a numeric query param — byte-for-byte identical to the legacy
|
|
186
|
-
* behavior so every existing caller keeps the same request and cache key.
|
|
187
|
-
* - **POST `/profiles/recommendations`** is used whenever any of the scored
|
|
188
|
-
* (v2) fields — `boosts`, `excludeIds`, `signalWeights`, `clientId`, or
|
|
189
|
-
* `offset` — is present. The full options object is validated with
|
|
190
|
-
* `recommendationRequestSchema` and sent as the request body. The POST is
|
|
191
|
-
* cached by the HttpService keyed on the serialized body, so repeated
|
|
192
|
-
* identical scored requests are deduplicated/cached just like the GET path.
|
|
193
|
-
*
|
|
194
|
-
* @param options - {@link RecommendationRequest} from `@oxy.so/contracts`.
|
|
195
|
-
* Omitted entirely (or `{ excludeTypes }`) preserves the legacy GET path.
|
|
196
|
-
*/
|
|
197
|
-
getProfileRecommendations(options?: RecommendationRequest): Promise<RecommendationItem[]>;
|
|
198
|
-
/**
|
|
199
|
-
* Get profiles similar to a given user, based on co-follower overlap.
|
|
200
|
-
*/
|
|
201
|
-
getSimilarProfiles(userId: string, limitOrParams?: number | {
|
|
202
|
-
limit?: number;
|
|
203
|
-
offset?: number;
|
|
204
|
-
}): Promise<User[]>;
|
|
205
|
-
/**
|
|
206
|
-
* Get user by ID.
|
|
207
|
-
*
|
|
208
|
-
* @param userId - The target user's id.
|
|
209
|
-
* @param options.cache - Defaults to `true` (5-minute TTL), matching prior
|
|
210
|
-
* behavior. Pass `{ cache: false }` to force a registry-fresh read: the
|
|
211
|
-
* request bypasses BOTH the cache lookup and the post-fetch cache write
|
|
212
|
-
* (see {@link HttpService.request}'s `cache` handling), so it neither
|
|
213
|
-
* serves nor overwrites any entry already cached for this key — a
|
|
214
|
-
* previously cached response (if one exists) is left in place until its
|
|
215
|
-
* own TTL expires or is explicitly invalidated elsewhere. Use this when a
|
|
216
|
-
* caller must observe a just-written change (e.g. a privacy/consent flag)
|
|
217
|
-
* that would otherwise be masked by the TTL window.
|
|
218
|
-
*/
|
|
219
|
-
getUserById(userId: string, options?: {
|
|
220
|
-
cache?: boolean;
|
|
221
|
-
}): Promise<User>;
|
|
222
|
-
/**
|
|
223
|
-
* Fetch many users by id in one round-trip per chunk.
|
|
224
|
-
*
|
|
225
|
-
* Built for feed/hydration call sites that would otherwise issue one
|
|
226
|
-
* `getUserById` request per unique author (the classic M+1). Ids are
|
|
227
|
-
* deduplicated and validated (empty/blank ids dropped) before being split
|
|
228
|
-
* into chunks of {@link USERS_BY_IDS_CHUNK_SIZE} and POSTed to
|
|
229
|
-
* `/users/by-ids` as `{ ids }`. The server returns the matched users as a
|
|
230
|
-
* flat `User[]` (order is not guaranteed and the caller is expected to map
|
|
231
|
-
* by `id`); each is run through `normalizeUserIdentity`, matching
|
|
232
|
-
* `getUserById`.
|
|
233
|
-
*
|
|
234
|
-
* **Dual-mode auth.** `/users/by-ids` is `optionalUserOrServiceAuth` on
|
|
235
|
-
* oxy-api: it accepts a service token, a user session, or an anonymous
|
|
236
|
-
* caller, and returns the SAME public `{ data: PublicUserProfile[] }`
|
|
237
|
-
* payload (canonical `name.displayName` + `_count`) in every case — no
|
|
238
|
-
* viewer-specific fields. This method picks the path automatically:
|
|
239
|
-
* - **Service host (backend):** when `configureServiceAuth(apiKey,
|
|
240
|
-
* apiSecret)` has been called, OR the process can attest its workload
|
|
241
|
-
* identity (ADR 0026 — an ECS task with no key pair), the chunk is fetched
|
|
242
|
-
* via `makeServiceRequest`
|
|
243
|
-
* (attaches `Authorization: Bearer <serviceToken>`). This is the
|
|
244
|
-
* server-to-server feed/notification hydration path (e.g. Mention's
|
|
245
|
-
* `PostHydrationService`) and is unchanged.
|
|
246
|
-
* - **Plain client (browser / React Native with a user session):** when no
|
|
247
|
-
* service credentials are configured, the chunk is fetched via
|
|
248
|
-
* `makeRequest`, which attaches the configured user bearer. Previously
|
|
249
|
-
* this method always used the service path, so every client-side caller
|
|
250
|
-
* silently received `[]` because `getServiceToken()` had no credentials.
|
|
251
|
-
*
|
|
252
|
-
* Both paths run results through `normalizeUserIdentity` and unwrap the
|
|
253
|
-
* API's `{ data }` envelope identically (`makeServiceRequest` is literally
|
|
254
|
-
* `makeRequest` plus a bearer service header).
|
|
255
|
-
*
|
|
256
|
-
* Resilience: chunks are independent. A failed chunk is logged and skipped
|
|
257
|
-
* — the method returns every user that resolved successfully rather than
|
|
258
|
-
* discarding the whole call on one chunk's failure. An empty/whitespace-only
|
|
259
|
-
* input resolves immediately with `[]` and performs no network call.
|
|
260
|
-
*
|
|
261
|
-
* Not cached at the SDK layer: the response is keyed on a multi-id POST body
|
|
262
|
-
* (low hit rate) and the backend maintains its own per-id Redis cache.
|
|
263
|
-
*/
|
|
264
|
-
getUsersByIds(ids: string[]): Promise<User[]>;
|
|
265
|
-
/**
|
|
266
|
-
* Get current user
|
|
267
|
-
*/
|
|
268
|
-
getCurrentUser(): Promise<User>;
|
|
269
|
-
/**
|
|
270
|
-
* Update user profile.
|
|
271
|
-
*
|
|
272
|
-
* Invalidates the SDK-side response cache for every endpoint that can
|
|
273
|
-
* return this user — the list is owned by {@link evictOxyIdentityCache}, so
|
|
274
|
-
* a new identity read is added in one place instead of to each writer
|
|
275
|
-
* separately (this method's own hand-written copy had already drifted from
|
|
276
|
-
* the server-side one, missing `GET /auth/lookup/*` and
|
|
277
|
-
* `GET /profiles/resolve`). The account forest (`GET /accounts` and the
|
|
278
|
-
* caller's own detail row) is swept too — a personal account IS this user,
|
|
279
|
-
* and `AccountNode.account` embeds the whole profile — from the list that
|
|
280
|
-
* {@link evictOxyAccountForestCache} owns, for the same reason: the accounts
|
|
281
|
-
* mixin writes those keys as well, and two hand-written copies drift.
|
|
282
|
-
*
|
|
283
|
-
* TanStack Query handles offline queuing automatically.
|
|
284
|
-
*/
|
|
285
|
-
updateProfile(updates: UserProfileUpdate): Promise<User>;
|
|
286
|
-
/**
|
|
287
|
-
* Get privacy settings for a user
|
|
288
|
-
* @param userId - The user ID (defaults to current user)
|
|
289
|
-
*/
|
|
290
|
-
getPrivacySettings(userId?: string): Promise<PrivacySettings>;
|
|
291
|
-
/**
|
|
292
|
-
* Update privacy settings.
|
|
293
|
-
*
|
|
294
|
-
* Invalidates the cached `GET /privacy/<id>/privacy` response (the exact
|
|
295
|
-
* key `getPrivacySettings` reads, scoped to the same `id`) after the write.
|
|
296
|
-
* `getPrivacySettings` caches for ~2 minutes (identity-scoped); without
|
|
297
|
-
* busting that entry, a follow-up read within the TTL window returns the
|
|
298
|
-
* pre-update settings. `clearCacheEntry` deletes every identity-scoped
|
|
299
|
-
* variant of the key.
|
|
300
|
-
* @param settings - Partial privacy settings object
|
|
301
|
-
* @param userId - The user ID (defaults to current user)
|
|
302
|
-
*/
|
|
303
|
-
updatePrivacySettings(settings: Partial<PrivacySettings>, userId?: string): Promise<PrivacySettings>;
|
|
304
|
-
/**
|
|
305
|
-
* Update the authenticated user's notification preferences.
|
|
306
|
-
*
|
|
307
|
-
* Thin wrapper over `updateProfile` that constrains the patch to known
|
|
308
|
-
* notification channels — same persistence path, same cache invalidation,
|
|
309
|
-
* but type-safe at the call site.
|
|
310
|
-
*/
|
|
311
|
-
updateNotificationPreferences(preferences: Partial<NotificationPreferences>): Promise<User>;
|
|
312
|
-
/**
|
|
313
|
-
* Update the authenticated user's general preferences (language, theme,
|
|
314
|
-
* reduce-motion, timezone). Persisted on the User document via
|
|
315
|
-
* `PUT /users/me` — same cache-invalidation behaviour as `updateProfile`.
|
|
316
|
-
*/
|
|
317
|
-
updateUserPreferences(preferences: Partial<UserPreferences>): Promise<User>;
|
|
318
|
-
/**
|
|
319
|
-
* Update the authenticated user's portable theme preference (light/dark/
|
|
320
|
-
* system + Bloom color-preset key). Persisted on the User document via the
|
|
321
|
-
* SAME `PUT /users/me` settings path as the other preferences — same cache
|
|
322
|
-
* invalidation — so the next cold boot serves it on the self/session payload
|
|
323
|
-
* with no extra network call. The full object is written (both `mode` and
|
|
324
|
-
* `colorPreset` are required by the API).
|
|
325
|
-
*/
|
|
326
|
-
updateThemePreference(themePreference: ThemePreference): Promise<User>;
|
|
327
|
-
/**
|
|
328
|
-
* Request account verification
|
|
329
|
-
*/
|
|
330
|
-
requestAccountVerification(reason: string, evidence?: string): Promise<{
|
|
331
|
-
message: string;
|
|
332
|
-
requestId: string;
|
|
333
|
-
}>;
|
|
334
|
-
/**
|
|
335
|
-
* Download account data export
|
|
336
|
-
*/
|
|
337
|
-
downloadAccountData(format?: "json" | "csv"): Promise<Blob>;
|
|
338
|
-
/**
|
|
339
|
-
* Delete account permanently.
|
|
340
|
-
*
|
|
341
|
-
* Signs `delete:{publicKey}:{timestamp}` with the locally-stored identity
|
|
342
|
-
* private key and submits the signature alongside the confirmation text
|
|
343
|
-
* (must equal the user's username). The signature is the cryptographic
|
|
344
|
-
* proof of ownership — only the device holding the private key can issue
|
|
345
|
-
* a valid signature, so no password is required.
|
|
346
|
-
*
|
|
347
|
-
* @param confirmText - Must equal the user's username (verified server-side)
|
|
348
|
-
* @throws If no identity is stored on this device, or signing fails
|
|
349
|
-
*/
|
|
350
|
-
deleteAccount(confirmText: string): Promise<{
|
|
351
|
-
message: string;
|
|
352
|
-
}>;
|
|
353
|
-
/**
|
|
354
|
-
* WebAuthn request options to delete a PASSKEY account (ADR 0029 D3): its own
|
|
355
|
-
* passkeys, user verification required, and a challenge bound to it. Opaque —
|
|
356
|
-
* hand them to the browser's authentication ceremony, on auth.oxy.so. An
|
|
357
|
-
* account with a Commons key deletes with {@link deleteAccount} instead.
|
|
358
|
-
*/
|
|
359
|
-
getAccountDeletionOptions(): Promise<unknown>;
|
|
360
|
-
/**
|
|
361
|
-
* Delete a PASSKEY account permanently, with an assertion by one of its
|
|
362
|
-
* passkeys over {@link getAccountDeletionOptions}' challenge.
|
|
363
|
-
*
|
|
364
|
-
* @param confirmText - Must equal the user's username (verified server-side)
|
|
365
|
-
* @param assertion - The ceremony's opaque `AuthenticationResponseJSON`
|
|
366
|
-
*/
|
|
367
|
-
deleteAccountWithPasskey(confirmText: string, assertion: unknown): Promise<{
|
|
368
|
-
message: string;
|
|
369
|
-
}>;
|
|
370
|
-
/**
|
|
371
|
-
* Invalidate every cached read a follow/unfollow write invalidates.
|
|
372
|
-
*
|
|
373
|
-
* Shared by the four mutation entry points (`followUser`, `unfollowUser`,
|
|
374
|
-
* `followUsers`, `unfollowUsers`) so they can never drift on which caches a
|
|
375
|
-
* write busts.
|
|
376
|
-
*
|
|
377
|
-
* The follower/following/mutuals LISTS are cleared by PREFIX rather than by
|
|
378
|
-
* exact key. Those reads are paginated and ordered, so one logical list is
|
|
379
|
-
* spread across many content-addressed keys
|
|
380
|
-
* (`GET:/users/<id>/followers:{"limit":"20","offset":"40","sort":"oldest"}`);
|
|
381
|
-
* an exact-key clear would only bust whichever page/sort variant happened to
|
|
382
|
-
* be read last and would leave every other page stale. `clearCacheByPrefix`
|
|
383
|
-
* deletes all of them, and all identity-scoped variants of each.
|
|
384
|
-
*/
|
|
385
|
-
invalidateFollowGraphCaches(targetUserIds: string[]): void;
|
|
386
|
-
/**
|
|
387
|
-
* Follow a user.
|
|
388
|
-
*
|
|
389
|
-
* Invalidates the cached `GET /users/<id>/follow-status` response after
|
|
390
|
-
* the write. `getFollowStatus` caches for ~1 minute (identity-scoped);
|
|
391
|
-
* without busting that entry, a `FollowButton` that remounts within the
|
|
392
|
-
* TTL window re-reads the STALE pre-write status and reverts the optimistic
|
|
393
|
-
* UI (the "follow resets after navigating away and back" bug).
|
|
394
|
-
* `clearCacheEntry` deletes every identity-scoped variant of the key.
|
|
395
|
-
*/
|
|
396
|
-
followUser(userId: string): Promise<FollowMutationResult>;
|
|
397
|
-
/**
|
|
398
|
-
* Follow multiple users in a single request.
|
|
399
|
-
*
|
|
400
|
-
* POSTs `/users/follow/bulk` with `{ userIds }` (server caps the batch at
|
|
401
|
-
* 200). Returns the per-user outcomes and the count of users newly
|
|
402
|
-
* followed. An empty `userIds` array resolves immediately with an empty
|
|
403
|
-
* result and performs no network call.
|
|
404
|
-
*/
|
|
405
|
-
followUsers(userIds: string[]): Promise<BulkFollowResult>;
|
|
406
|
-
/**
|
|
407
|
-
* Unfollow multiple users in a single request.
|
|
408
|
-
*
|
|
409
|
-
* POSTs `/users/unfollow/bulk` with `{ userIds }` (server caps the batch at
|
|
410
|
-
* 200). Returns the per-user outcomes and the count of users newly
|
|
411
|
-
* unfollowed. An empty `userIds` array resolves immediately with an empty
|
|
412
|
-
* result and performs no network call.
|
|
413
|
-
*/
|
|
414
|
-
unfollowUsers(userIds: string[]): Promise<BulkUnfollowResult>;
|
|
415
|
-
/**
|
|
416
|
-
* Unfollow a user
|
|
417
|
-
*/
|
|
418
|
-
unfollowUser(userId: string): Promise<FollowMutationResult>;
|
|
419
|
-
/**
|
|
420
|
-
* Get follow status
|
|
421
|
-
*/
|
|
422
|
-
getFollowStatus(userId: string): Promise<{
|
|
423
|
-
isFollowing: boolean;
|
|
424
|
-
}>;
|
|
425
|
-
/**
|
|
426
|
-
* Resolve the viewer's follow status for MANY users in one round-trip per
|
|
427
|
-
* chunk. Built for list UIs (a page of `FollowButton`s) that would otherwise
|
|
428
|
-
* fire one `getFollowStatus` per button (the classic N+1).
|
|
429
|
-
*
|
|
430
|
-
* Ids are deduplicated and validated (empty/blank ids dropped), split into
|
|
431
|
-
* chunks of {@link FOLLOW_STATUS_CHUNK_SIZE} (the server's bulk cap), and
|
|
432
|
-
* POSTed to `/users/follow-status/bulk` as `{ userIds }`. The per-chunk
|
|
433
|
-
* `{ statuses }` maps are merged into one `Record<string, boolean>` covering
|
|
434
|
-
* every requested id — ids the viewer does not follow come back `false`.
|
|
435
|
-
*
|
|
436
|
-
* Uncached (`{ cache: false }`): the UI store owns follow-status freshness
|
|
437
|
-
* and writes optimistically on every mutation, so an SDK cache here would
|
|
438
|
-
* serve a stale status right after a follow/unfollow. An empty/whitespace-
|
|
439
|
-
* only input resolves immediately with `{}` and performs no network call.
|
|
440
|
-
*/
|
|
441
|
-
getFollowStatuses(userIds: string[]): Promise<Record<string, boolean>>;
|
|
442
|
-
/**
|
|
443
|
-
* Get user followers.
|
|
444
|
-
*
|
|
445
|
-
* `sort` orders the underlying follow edges — `recent` (newest first, the
|
|
446
|
-
* server default) or `oldest`. Because the response is cached and the cache
|
|
447
|
-
* key is content-addressed on the query params, each `limit`/`offset`/`sort`
|
|
448
|
-
* combination is its own entry.
|
|
449
|
-
*/
|
|
450
|
-
getUserFollowers(userId: string, pagination?: FollowGraphParams): Promise<{
|
|
451
|
-
followers: User[];
|
|
452
|
-
total: number;
|
|
453
|
-
hasMore: boolean;
|
|
454
|
-
}>;
|
|
455
|
-
/**
|
|
456
|
-
* Get user following. `sort` behaves as in {@link getUserFollowers}.
|
|
457
|
-
*/
|
|
458
|
-
getUserFollowing(userId: string, pagination?: FollowGraphParams): Promise<{
|
|
459
|
-
following: User[];
|
|
460
|
-
total: number;
|
|
461
|
-
hasMore: boolean;
|
|
462
|
-
}>;
|
|
463
|
-
/**
|
|
464
|
-
* Get user mutuals ("followers you know" — users the authenticated viewer
|
|
465
|
-
* follows who also follow `userId`). The viewer is derived server-side from auth.
|
|
466
|
-
*/
|
|
467
|
-
getUserMutuals(userId: string, pagination?: FollowGraphParams): Promise<{
|
|
468
|
-
mutuals: User[];
|
|
469
|
-
total: number;
|
|
470
|
-
hasMore: boolean;
|
|
471
|
-
}>;
|
|
472
|
-
/**
|
|
473
|
-
* Get the authenticated VIEWER's OWN mutual-follow user ids — the accounts the
|
|
474
|
-
* viewer follows that ALSO follow the viewer back (a bidirectional follow
|
|
475
|
-
* edge). The viewer is derived server-side from the SDK's auth token (never a
|
|
476
|
-
* param), so there is no target id to pass.
|
|
477
|
-
*
|
|
478
|
-
* Returns a bounded, lean list of ids meant to SEED a "Mutuals" feed (the
|
|
479
|
-
* consumer hydrates/ranks the posts itself) — distinct from
|
|
480
|
-
* {@link getUserMutuals}, which returns hydrated "followers you know" DTOs
|
|
481
|
-
* about ANOTHER profile. An anonymous caller resolves to an empty array.
|
|
482
|
-
*/
|
|
483
|
-
getMutualUserIds(params?: {
|
|
484
|
-
limit?: number;
|
|
485
|
-
}): Promise<string[]>;
|
|
486
|
-
/**
|
|
487
|
-
* Get the authenticated VIEWER's bounded "follows-of-follows" user ids — the
|
|
488
|
-
* union of the accounts followed by the accounts the viewer follows (a
|
|
489
|
-
* two-hop walk of the follow graph), MINUS the viewer's own follows and the
|
|
490
|
-
* viewer themselves. The viewer is derived server-side from the SDK's auth
|
|
491
|
-
* token (never a param), so there is no target id to pass.
|
|
492
|
-
*
|
|
493
|
-
* Returns a bounded, lean list of ids meant to SEED a friends-of-friends
|
|
494
|
-
* feed (the consumer hydrates/ranks the posts itself), ordered by frequency
|
|
495
|
-
* (accounts followed by more of the viewer's follows first), then recency.
|
|
496
|
-
* An anonymous caller resolves to an empty array. Mirrors
|
|
497
|
-
* {@link getMutualUserIds}'s caching posture.
|
|
498
|
-
*/
|
|
499
|
-
getFollowsOfFollowsIds(params?: {
|
|
500
|
-
limit?: number;
|
|
501
|
-
}): Promise<string[]>;
|
|
502
|
-
/**
|
|
503
|
-
* Get the authenticated VIEWER's OWN social graph — the accounts they follow,
|
|
504
|
-
* the subset who follow back (mutuals), and the accounts they have blocked —
|
|
505
|
-
* as ONE ids-only payload. The viewer is derived server-side from the SDK's
|
|
506
|
-
* auth token (never a param).
|
|
507
|
-
*
|
|
508
|
-
* Consolidates what were three separate round trips (`getUserFollowing` /
|
|
509
|
-
* `getMutualUserIds` / `getBlockedUsers`) into a single request so a consumer
|
|
510
|
-
* can prime its whole viewer graph at once. Mirrors {@link getMutualUserIds}'s
|
|
511
|
-
* caching posture (2-minute identity-scoped cache); the follow/unfollow/block/
|
|
512
|
-
* unblock write methods bust this entry so a local mutation is reflected
|
|
513
|
-
* immediately. An anonymous caller resolves to empty lists.
|
|
514
|
-
*/
|
|
515
|
-
getViewerGraph(): Promise<ViewerGraph>;
|
|
516
|
-
/**
|
|
517
|
-
* One page of the signed-in user's Oxy notifications, newest first
|
|
518
|
-
* (`GET /notifications`), with the unread count across all pages.
|
|
519
|
-
*/
|
|
520
|
-
getNotifications(params?: {
|
|
521
|
-
page?: number;
|
|
522
|
-
limit?: number;
|
|
523
|
-
}): Promise<NotificationPage>;
|
|
524
|
-
/**
|
|
525
|
-
* Get unread notification count
|
|
526
|
-
*/
|
|
527
|
-
getUnreadCount(): Promise<number>;
|
|
528
|
-
/**
|
|
529
|
-
* Create a notification (`POST /notifications`; the API requires a service
|
|
530
|
-
* token whose application holds `notifications:write`). `type` is one of
|
|
531
|
-
* `OXY_NOTIFICATION_TYPES` from `@oxy.so/contracts` — `system` for a message
|
|
532
|
-
* from an Oxy service about the recipient's own account, with the recipient
|
|
533
|
-
* as actor and their profile as the entity.
|
|
534
|
-
*/
|
|
535
|
-
createNotification(data: CreateOxyNotificationRequest): Promise<Notification>;
|
|
536
|
-
/**
|
|
537
|
-
* Mark one of the signed-in user's notifications read and return it as
|
|
538
|
-
* stored. Scoped to the recipient server-side, so it is also the
|
|
539
|
-
* authoritative read of a notification by id: a foreign or unknown id 404s.
|
|
540
|
-
*/
|
|
541
|
-
markNotificationAsRead(notificationId: string): Promise<Notification>;
|
|
542
|
-
/**
|
|
543
|
-
* Mark all notifications as read
|
|
544
|
-
*/
|
|
545
|
-
markAllNotificationsAsRead(): Promise<void>;
|
|
546
|
-
/**
|
|
547
|
-
* Delete notification
|
|
548
|
-
*/
|
|
549
|
-
deleteNotification(notificationId: string): Promise<void>;
|
|
550
|
-
httpService: import("../HttpService").HttpService;
|
|
551
|
-
cloudURL: string;
|
|
552
|
-
config: import("../OxyServices.base").OxyConfig;
|
|
553
|
-
__resetTokensForTests(): void;
|
|
554
|
-
makeRequest<T_1>(method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE", url: string, data?: any, options?: import("../HttpService").RequestOptions): Promise<T_1>;
|
|
555
|
-
getBaseURL(): string;
|
|
556
|
-
getClient(): import("../HttpService").HttpService;
|
|
557
|
-
createLinkedClient(config: import("../OxyServices.base").OxyConfig): import("..").LinkedHttpClient;
|
|
558
|
-
getMetrics(): {
|
|
559
|
-
totalRequests: number;
|
|
560
|
-
successfulRequests: number;
|
|
561
|
-
failedRequests: number;
|
|
562
|
-
cacheHits: number;
|
|
563
|
-
cacheMisses: number;
|
|
564
|
-
averageResponseTime: number;
|
|
565
|
-
};
|
|
566
|
-
clearCache(): void;
|
|
567
|
-
clearCacheEntry(key: string): void;
|
|
568
|
-
clearCacheByPrefix(prefix: string): number;
|
|
569
|
-
getCacheStats(): {
|
|
570
|
-
size: number;
|
|
571
|
-
hits: number;
|
|
572
|
-
misses: number;
|
|
573
|
-
hitRate: number;
|
|
574
|
-
};
|
|
575
|
-
getCloudURL(): string;
|
|
576
|
-
setTokens(accessToken: string): void;
|
|
577
|
-
clearTokens(): void;
|
|
578
|
-
onTokensChanged(listener: (accessToken: string | null) => void): () => void;
|
|
579
|
-
_cachedUserId: string | null | undefined;
|
|
580
|
-
_cachedAccessToken: string | null;
|
|
581
|
-
getCurrentUserId(): string | null;
|
|
582
|
-
hasValidToken(): boolean;
|
|
583
|
-
getAccessToken(): string | null;
|
|
584
|
-
getAccessTokenExpiry(): number | null;
|
|
585
|
-
waitForAuth(timeoutMs?: number): Promise<boolean>;
|
|
586
|
-
withAuthRetry<T_1>(operation: () => Promise<T_1>, operationName: string, options?: {
|
|
587
|
-
maxRetries?: number;
|
|
588
|
-
retryDelay?: number;
|
|
589
|
-
authTimeoutMs?: number;
|
|
590
|
-
}): Promise<T_1>;
|
|
591
|
-
validate(): Promise<boolean>;
|
|
592
|
-
handleError(error: unknown): Error;
|
|
593
|
-
healthCheck(): Promise<{
|
|
594
|
-
status: string;
|
|
595
|
-
users?: number;
|
|
596
|
-
timestamp?: string;
|
|
597
|
-
[key: string]: any;
|
|
598
|
-
}>;
|
|
599
|
-
};
|
|
600
|
-
} & T;
|