@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,6 +1,7 @@
|
|
|
1
1
|
import type { Request, RequestHandler } from 'express';
|
|
2
2
|
import { type Store } from 'express-rate-limit';
|
|
3
|
-
import type {
|
|
3
|
+
import type { AuthMiddlewareOptions } from './middleware';
|
|
4
|
+
import { type OxyAuthHost } from './auth';
|
|
4
5
|
export interface OxyRateLimitOptions {
|
|
5
6
|
/**
|
|
6
7
|
* Max requests per window for AUTHENTICATED users (keyed per user).
|
|
@@ -29,12 +30,13 @@ export interface OxyRateLimitOptions {
|
|
|
29
30
|
/** Response message body sent with a 429. */
|
|
30
31
|
message?: string;
|
|
31
32
|
/**
|
|
32
|
-
* Options forwarded to the internal `
|
|
33
|
-
* (e.g. `{
|
|
33
|
+
* Options forwarded to the internal `server.middleware.auth({ optional: true })` resolver
|
|
34
|
+
* (e.g. `{ serviceTokenJwksUrl }` to verify service tokens against a
|
|
35
|
+
* non-default JWKS). `optional` is forced true.
|
|
34
36
|
*/
|
|
35
|
-
auth?:
|
|
37
|
+
auth?: AuthMiddlewareOptions;
|
|
36
38
|
}
|
|
37
39
|
/**
|
|
38
40
|
* Build the composed Oxy rate-limit middleware. See module docs for rationale.
|
|
39
41
|
*/
|
|
40
|
-
export declare function createOxyRateLimit(oxy:
|
|
42
|
+
export declare function createOxyRateLimit(oxy: OxyAuthHost, options?: OxyRateLimitOptions): RequestHandler;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Present-requester assertions (ADR 0025).
|
|
3
3
|
*
|
|
4
4
|
* A first-party product backend holding a signed-in person's live Oxy session
|
|
5
|
-
* trades it with Oxy (`
|
|
5
|
+
* trades it with Oxy (`server.agency.mintRequesterAssertion`) for a one-use,
|
|
6
6
|
* short-lived `OXY-REQUESTER+JWT`, and sends that — never the person's bearer —
|
|
7
7
|
* to the audience service (Alia) beside its own service token. The audience
|
|
8
8
|
* mounts {@link createOxyRequesterAssertionAuth} after `createOxyAuthMiddleware`
|
|
@@ -101,15 +101,18 @@ export interface OxyRequesterAssertionIntrospection {
|
|
|
101
101
|
readonly jti?: string;
|
|
102
102
|
readonly expiresAt?: string;
|
|
103
103
|
}
|
|
104
|
+
/** What the audience middleware needs of its `OxyServer`. */
|
|
104
105
|
export interface OxyRequesterAssertionIntrospector {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
106
|
+
readonly baseURL: string;
|
|
107
|
+
readonly agency: {
|
|
108
|
+
introspectRequesterAssertion(input: {
|
|
109
|
+
assertion: string;
|
|
110
|
+
presenter: {
|
|
111
|
+
applicationId: string;
|
|
112
|
+
credentialId: string;
|
|
113
|
+
};
|
|
114
|
+
}): Promise<OxyRequesterAssertionIntrospection>;
|
|
115
|
+
};
|
|
113
116
|
}
|
|
114
117
|
/** What the audience learns about the present requester. */
|
|
115
118
|
export interface OxyRequesterContext {
|
|
@@ -144,8 +147,8 @@ export interface OxyRequesterAssertionAuthOptions {
|
|
|
144
147
|
* token. Mount it after `createOxyAuthMiddleware`. Without the header it does
|
|
145
148
|
* nothing, so it composes with every other lane.
|
|
146
149
|
*
|
|
147
|
-
* `introspector`
|
|
148
|
-
* credential
|
|
150
|
+
* `introspector` is this service's `OxyServer`, holding THIS service's own
|
|
151
|
+
* credential: Oxy only lets the audience's application
|
|
149
152
|
* consume an assertion.
|
|
150
153
|
*/
|
|
151
154
|
export declare function createOxyRequesterAssertionAuth(introspector: OxyRequesterAssertionIntrospector, options: OxyRequesterAssertionAuthOptions): RequestHandler;
|
|
@@ -167,11 +167,10 @@ export interface OxyPagesHeadersOptions {
|
|
|
167
167
|
* violation for a script we never asked for. The rest of the value is Pages'
|
|
168
168
|
* own default, so caching is unchanged.
|
|
169
169
|
*
|
|
170
|
-
* And, because this origin is where
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
* with every other powerful feature off (`Permissions-Policy`), and its
|
|
170
|
+
* And, because this origin is where people sign in and approve third-party
|
|
171
|
+
* access (ADR 0028, ADR 0029, ADR 0030) — the rest of the holder policy: no
|
|
172
|
+
* `<base>` and no form posts (`base-uri` / `form-action 'none'`), no Referer
|
|
173
|
+
* to anyone, every powerful feature off (`Permissions-Policy`), and its
|
|
175
174
|
* responses readable by no other origin (`Cross-Origin-Resource-Policy`).
|
|
176
175
|
* Never `Cross-Origin-Opener-Policy`: the third-party OAuth popup reports
|
|
177
176
|
* its code to the app that opened it, and COOP severs `window.opener`.
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* Every Oxy backend caches Oxy identity, and none of them find out when it
|
|
7
7
|
* changes. The `OxyServices` GET response cache holds `GET /users/:id` and
|
|
8
8
|
* `GET /profiles/username/:name` for five minutes; it is swept when THIS process
|
|
9
|
-
* writes the profile (the `evictOxyIdentityCache` calls in the
|
|
10
|
-
*
|
|
9
|
+
* writes the profile (the `evictOxyIdentityCache` calls in the `users` and
|
|
10
|
+
* `accounts` namespaces) and never when somebody else does — which is the normal case, since
|
|
11
11
|
* profiles are edited in Oxy's own apps. So an avatar or display-name change is
|
|
12
12
|
* invisible to every consuming backend for up to five minutes, per process.
|
|
13
13
|
*
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
* // node-redis
|
|
35
35
|
* await subscriber.subscribe(
|
|
36
36
|
* OXY_USER_INVALIDATION_CHANNEL,
|
|
37
|
-
* createOxyUserInvalidationHandler({ oxy:
|
|
37
|
+
* createOxyUserInvalidationHandler({ oxy: server }),
|
|
38
38
|
* );
|
|
39
39
|
*
|
|
40
40
|
* // ioredis
|
|
41
|
-
* const handle = createOxyUserInvalidationHandler({ oxy:
|
|
41
|
+
* const handle = createOxyUserInvalidationHandler({ oxy: server });
|
|
42
42
|
* await subscriber.subscribe(OXY_USER_INVALIDATION_CHANNEL);
|
|
43
43
|
* subscriber.on('message', (_channel, raw) => handle(raw));
|
|
44
44
|
*
|
|
@@ -84,11 +84,13 @@ export declare function publishOxyUserInvalidation(publisher: OxyInvalidationPub
|
|
|
84
84
|
/** Options for {@link createOxyUserInvalidationHandler}. */
|
|
85
85
|
export interface OxyUserInvalidationHandlerOptions {
|
|
86
86
|
/**
|
|
87
|
-
* The backend's `OxyServices`
|
|
88
|
-
* is swept for the invalidated user — this is the whole reason
|
|
89
|
-
* has no cache of its own still benefits from subscribing.
|
|
87
|
+
* The backend's `OxyServer` (or any `OxyServices`). When supplied, its GET
|
|
88
|
+
* response cache is swept for the invalidated user — this is the whole reason
|
|
89
|
+
* a backend that has no cache of its own still benefits from subscribing.
|
|
90
90
|
*/
|
|
91
|
-
oxy?:
|
|
91
|
+
oxy?: {
|
|
92
|
+
readonly http: OxyIdentityCacheEvictor;
|
|
93
|
+
};
|
|
92
94
|
/**
|
|
93
95
|
* App-specific eviction (e.g. a Redis identity cache the app maintains itself).
|
|
94
96
|
* May be async; a rejection is routed to `onError` and never escapes.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* (or the structural subset below), so the SDK and every agent runtime read the
|
|
14
14
|
* API's already-resolved relationship and effective permissions identically.
|
|
15
15
|
*/
|
|
16
|
-
import type { AccountKind, AccountMember, AccountRelationship } from "../
|
|
16
|
+
import type { AccountKind, AccountMember, AccountRelationship } from "../api/accounts";
|
|
17
17
|
export interface AccountDelegationAccess {
|
|
18
18
|
/** The caller owns the account or has a live membership in it. */
|
|
19
19
|
readonly hasStanding: boolean;
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
* account` pair) and the two removals an account id cannot name —
|
|
21
21
|
* `signOutContext` and `signOutPrincipal`;
|
|
22
22
|
* - the "Sign in with Oxy" device flow (same-device shared-keychain via
|
|
23
|
-
* `
|
|
24
|
-
* via `
|
|
23
|
+
* `oxy.auth.signInWithSharedIdentity`, else the cross-device QR handoff
|
|
24
|
+
* via `oxy.auth.commons.start` → poll → `oxy.auth.claimSession`);
|
|
25
25
|
* - AUTOMATIC delivery selection for that flow (issue #691): the user presses
|
|
26
26
|
* ONE primary action and the controller — not the user — picks how the
|
|
27
27
|
* request reaches their Commons identity, by gathering the facts
|
|
@@ -37,10 +37,10 @@
|
|
|
37
37
|
* (native only, via the injected `canOpenApp` probe), so the QR view can
|
|
38
38
|
* offer a "Get Commons" fallback instead of a same-device dead end.
|
|
39
39
|
*
|
|
40
|
-
* Sign-in is
|
|
41
|
-
*
|
|
42
|
-
* creation (`signup` view) is
|
|
43
|
-
*
|
|
40
|
+
* Sign-in is by email (a code or a link), an optional password and an
|
|
41
|
+
* optional authenticator, or the Commons QR / shared-keychain handoff. Account
|
|
42
|
+
* creation (`signup` view) is a username and a confirmed email, or a
|
|
43
|
+
* Commons-created identity.
|
|
44
44
|
*
|
|
45
45
|
* The controller owns NO surface PRESENTATION: whether the account dialog is
|
|
46
46
|
* mounted, visible, or dismissed is the job of the shared surface stack
|
|
@@ -421,7 +421,7 @@ export declare class AccountDialogController {
|
|
|
421
421
|
* Whether a PRIVATE endpoint may be called right now. Mirrors the
|
|
422
422
|
* `hasAccessToken` term of `OxyContext.canUsePrivateApi`
|
|
423
423
|
* (`authResolved && isAuthenticated && tokenReady && hasAccessToken`, where
|
|
424
|
-
* `hasAccessToken = Boolean(
|
|
424
|
+
* `hasAccessToken = Boolean(oxy.session.accessToken)`): a planted bearer
|
|
425
425
|
* is the only term that decides whether a request carries auth — the other
|
|
426
426
|
* three are provider render-lifecycle gates with no headless equivalent.
|
|
427
427
|
*
|
|
@@ -469,7 +469,7 @@ export declare class AccountDialogController {
|
|
|
469
469
|
private hasSession;
|
|
470
470
|
/** Switch to the "add account" view (the sign-in entry chooser). */
|
|
471
471
|
add(): void;
|
|
472
|
-
/** Switch to the "create account" view (
|
|
472
|
+
/** Switch to the "create account" view (email / Commons signup entry). */
|
|
473
473
|
startSignup(): void;
|
|
474
474
|
/**
|
|
475
475
|
* Re-read `GET /session/device/directory`. Safe to call repeatedly;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* question — one about the caller's account GRAPH, which is a list of accounts
|
|
16
16
|
* to manage, not a list of identities the device can become.
|
|
17
17
|
*/
|
|
18
|
-
import type { AccountRelationship, AccountKind, AccountMember } from '../
|
|
18
|
+
import type { AccountRelationship, AccountKind, AccountMember } from '../api/accounts';
|
|
19
19
|
/**
|
|
20
20
|
* Whether the caller can BECOME this account — the one question every account
|
|
21
21
|
* switcher asks, answered here so no surface has to re-derive it.
|
|
@@ -22,9 +22,10 @@
|
|
|
22
22
|
* `sessionId` + `userId` identify the owning device session and active account.
|
|
23
23
|
* `deviceId` + `deviceSecret` are the zero-cookie mint credential: the client
|
|
24
24
|
* presents BOTH at `POST /session/device/token` — the secret is the proof, the
|
|
25
|
-
* deviceId selects the device doc. The
|
|
26
|
-
*
|
|
27
|
-
*
|
|
25
|
+
* deviceId selects the device doc. The mint returns `nextDeviceSecret` (today the
|
|
26
|
+
* presented secret, unchanged — the server never rotates a holder's
|
|
27
|
+
* credential), which the cold boot / re-mint handler persist BEFORE planting
|
|
28
|
+
* the minted access token.
|
|
28
29
|
*
|
|
29
30
|
* `accessToken` + `expiresAt` are OPTIONAL warm-boot fields. Persisting them lets
|
|
30
31
|
* the cold boot plant a still-valid access token on the very first paint WITHOUT
|
|
@@ -46,9 +47,9 @@ export interface PersistedAuthState {
|
|
|
46
47
|
*/
|
|
47
48
|
deviceId?: string;
|
|
48
49
|
/**
|
|
49
|
-
*
|
|
50
|
-
* short access token for the device's active account via
|
|
51
|
-
* `POST /session/device/token`.
|
|
50
|
+
* This holder's device secret (zero-cookie transport). Possession of it mints
|
|
51
|
+
* a short access token for the device's active account via
|
|
52
|
+
* `POST /session/device/token`. Stable: the server never rotates it.
|
|
52
53
|
*/
|
|
53
54
|
deviceSecret?: string;
|
|
54
55
|
/** Optional warm-boot access token (short-lived; see interface docs). */
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@oxy.so/core/session` — the device-first session machinery.
|
|
3
|
+
*
|
|
4
|
+
* The multi-account `SessionClient`, the headless account dialog, the persisted
|
|
5
|
+
* auth-state stores, the token re-mint handler and scheduler, and the cold
|
|
6
|
+
* boot. `@oxy.so/services` builds `OxyProvider` on it; an app that only calls
|
|
7
|
+
* the API with a token it already has never needs it.
|
|
8
|
+
*/
|
|
9
|
+
import '../crypto/polyfill';
|
|
10
|
+
export { DeviceManager } from '../utils/deviceManager';
|
|
11
|
+
export type { DeviceFingerprint, StoredDeviceInfo } from '../utils/deviceManager';
|
|
12
|
+
export { SessionClient } from './SessionClient';
|
|
13
|
+
export type { TokenTransport, SessionClientHost, SessionClientOptions, DeviceCredential, SessionStateOrigin } from './SessionClient';
|
|
14
|
+
export type { SocketIOFactory, MinimalSocket } from './socketLoader';
|
|
15
|
+
export { createSessionClientHost } from './sessionClientHost';
|
|
16
|
+
export { createSessionClient } from './createSessionClient';
|
|
17
|
+
export { deviceStateToClientSessions, activeSessionIdOf, activeUserOf, accountIdsOf, } from './projectSessionState';
|
|
18
|
+
export { canActivateContext, directoryDisplayName, directoryHandle, projectDevicePrincipals, resolveActiveContext, resolveDeviceContext, } from './deviceDirectory';
|
|
19
|
+
export type { DeviceContext, DeviceContextActor, DeviceContextSubject, DevicePrincipalGroup, } from './deviceDirectory';
|
|
20
|
+
export { buildSwitcherRows, showsPrincipalHeaders } from './deviceSwitcherRows';
|
|
21
|
+
export type { ResolveAvatarUrl, SwitcherContextRow, SwitcherPrincipalRow, } from './deviceSwitcherRows';
|
|
22
|
+
export { isSwitchTargetAccount, canSwitchIntoAccount, } from './accountSwitchTargets';
|
|
23
|
+
export { resolveAccountDelegationAccess } from './accountDelegationAccess';
|
|
24
|
+
export type { AccountDelegationAccess, AccountDelegationNode, } from './accountDelegationAccess';
|
|
25
|
+
export { AccountDialogController, createAccountDialogController, } from './accountDialogController';
|
|
26
|
+
export type { AccountDialogControllerOptions, AccountDialogSnapshot, AccountDialogView, CommonsAvailability, ContextChoiceOutcome, SignInFailureReason, SignInFlowPhase, SignInFlowState, SignInProgress, } from './accountDialogController';
|
|
27
|
+
export { createWebAuthStateStore, createNativeAuthStateStore, createMemoryAuthStateStore, AUTH_STATE_STORAGE_KEY, } from './authStateStore';
|
|
28
|
+
export type { PersistedAuthState, AuthStateStore, NativeKeyValueStorage, } from './authStateStore';
|
|
29
|
+
export { createSharedMirroringAuthStateStore, decideSharedDeviceJoin, decideSharedDevicePublish, normalizeSharedDeviceSessionRead, publishProvenDeviceCredential, readLocalDeviceCredential, } from './sharedDeviceCredential';
|
|
30
|
+
export type { SharedDeviceCredential, SharedDeviceCredentialRead, SharedDeviceCredentialStore, SharedDeviceJoinDecision, SharedDeviceJoinSkipReason, SharedDevicePublishDecision, SharedDevicePublishOutcome, SharedDevicePublishSkipReason, } from './sharedDeviceCredential';
|
|
31
|
+
export { createWebIdentityPinStore, createNativeIdentityPinStore, createMemoryIdentityPinStore, identityPinMatches, IDENTITY_PIN_STORAGE_KEY, } from './identityPin';
|
|
32
|
+
export type { IdentityPin, IdentityPinStore } from './identityPin';
|
|
33
|
+
export { resolveIdentityPin, establishIdentitySession, } from './identitySession';
|
|
34
|
+
export type { IdentityBinding, IdentityRequestOptions, EstablishedIdentitySession, } from './identitySession';
|
|
35
|
+
export { refreshPersistedSession, refreshDeviceSecretArm, createAuthRefreshHandler, installAuthRefreshHandler, startTokenRefreshScheduler, TOKEN_REFRESH_LEAD_MS, } from './refresh';
|
|
36
|
+
export type { RefreshDeps, TokenRefreshSchedulerHandle, DeviceSecretMintOutcome } from './refresh';
|
|
37
|
+
export { runSessionColdBoot } from '../boot/sessionColdBoot';
|
|
38
|
+
export type { RunSessionColdBootOptions, SessionMode, SignedOutReason, DeviceBootSession, } from '../boot/sessionColdBoot';
|
|
39
|
+
export { runColdBoot } from '../utils/coldBoot';
|
|
40
|
+
export type { ColdBootStep, ColdBootStepResult, ColdBootSession, ColdBootSkip, ColdBootOutcome, RunColdBootOptions, } from '../utils/coldBoot';
|
|
@@ -12,15 +12,12 @@
|
|
|
12
12
|
* those cached and the account switcher keeps drawing the pre-edit name and
|
|
13
13
|
* picture for the full TTL, against a perfectly healthy server.
|
|
14
14
|
*
|
|
15
|
-
* The
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* alternative — a second hand-written copy of these keys in the other mixin —
|
|
22
|
-
* is the drift that shipped the two stale-profile bugs `identityCacheSweep`
|
|
23
|
-
* documents.
|
|
15
|
+
* The key list lives here, once, and every writer (`users.updateMe`, the
|
|
16
|
+
* `accounts` namespace) reads it — exactly like the identity key list in
|
|
17
|
+
* `identityCacheSweep`, which account writes use for the mirror-image case (an
|
|
18
|
+
* account write staling the identity reads). A second hand-written copy of
|
|
19
|
+
* these keys in another namespace is the drift that shipped the two
|
|
20
|
+
* stale-profile bugs `identityCacheSweep` documents.
|
|
24
21
|
*
|
|
25
22
|
* WHY THE LIST NEEDS A PREFIX AND THE DETAIL DOES NOT
|
|
26
23
|
* --------------------------------------------------
|
|
@@ -72,4 +69,4 @@ export declare function oxyAccountDetailCacheKey(accountId: string): string;
|
|
|
72
69
|
* account in it (create, archive, ownership transfer) has no
|
|
73
70
|
* detail row to name, and clears only the lists.
|
|
74
71
|
*/
|
|
75
|
-
export declare function evictOxyAccountForestCache(
|
|
72
|
+
export declare function evictOxyAccountForestCache(http: OxyAccountCacheEvictor, accountId?: string): void;
|
|
@@ -72,7 +72,7 @@ export declare function buildPaginationParams(params: PaginationParams): Record<
|
|
|
72
72
|
/**
|
|
73
73
|
* Common API response wrapper
|
|
74
74
|
*/
|
|
75
|
-
export interface ApiResponse<T =
|
|
75
|
+
export interface ApiResponse<T = unknown> {
|
|
76
76
|
data: T;
|
|
77
77
|
message?: string;
|
|
78
78
|
success?: boolean;
|
|
@@ -84,7 +84,7 @@ export interface ErrorResponse {
|
|
|
84
84
|
message: string;
|
|
85
85
|
code: string;
|
|
86
86
|
status: number;
|
|
87
|
-
details?:
|
|
87
|
+
details?: unknown;
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
90
|
* Safe JSON parsing with error handling
|
|
@@ -92,4 +92,4 @@ export interface ErrorResponse {
|
|
|
92
92
|
* @param fallback Fallback value if parsing fails
|
|
93
93
|
* @returns Parsed data or fallback
|
|
94
94
|
*/
|
|
95
|
-
export declare function safeJsonParse<T>(data:
|
|
95
|
+
export declare function safeJsonParse<T>(data: unknown, fallback: T): T;
|
|
@@ -1,25 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Wrapper for async operations with automatic error handling
|
|
6
|
-
* Returns null on error instead of throwing
|
|
7
|
-
*/
|
|
8
|
-
export declare function withErrorHandling<T>(operation: () => Promise<T>, errorHandler?: (error: any) => void, context?: string): Promise<T | null>;
|
|
9
|
-
/**
|
|
10
|
-
* Execute multiple async operations in parallel with error handling
|
|
11
|
-
*/
|
|
12
|
-
export declare function parallelWithErrorHandling<T>(operations: (() => Promise<T>)[], errorHandler?: (error: any, index: number) => void): Promise<(T | null)[]>;
|
|
13
|
-
/**
|
|
14
|
-
* Retry an async operation with exponential backoff
|
|
15
|
-
*
|
|
16
|
-
* By default, does not retry on 4xx errors (client errors). The default
|
|
17
|
-
* predicate accepts both the axios-style `error.response.status` and the
|
|
18
|
-
* flat `error.status` shape produced by {@link handleHttpError}, so callers
|
|
19
|
-
* never accidentally retry a deterministic client failure.
|
|
20
|
-
*
|
|
21
|
-
* Use the `shouldRetry` callback to customize retry behavior.
|
|
2
|
+
* Retry with exponential backoff and jitter — the policy `HttpService` uses.
|
|
22
3
|
*/
|
|
4
|
+
/** Options for {@link retryAsync}. */
|
|
23
5
|
export interface RetryOptions {
|
|
24
6
|
maxRetries?: number;
|
|
25
7
|
baseDelay?: number;
|
|
@@ -49,43 +31,14 @@ export interface RetryOptions {
|
|
|
49
31
|
*/
|
|
50
32
|
deadline?: number;
|
|
51
33
|
}
|
|
52
|
-
export declare function retryAsync<T>(operation: () => Promise<T>, maxRetriesOrOptions?: number | RetryOptions, baseDelayArg?: number, shouldRetryArg?: (error: any) => boolean): Promise<T>;
|
|
53
|
-
/**
|
|
54
|
-
* Debounce async function calls
|
|
55
|
-
*/
|
|
56
|
-
export declare function debounceAsync<T extends (...args: any[]) => Promise<any>>(func: T, delay: number): (...args: Parameters<T>) => Promise<ReturnType<T>>;
|
|
57
|
-
/**
|
|
58
|
-
* Throttle async function calls
|
|
59
|
-
*/
|
|
60
|
-
export declare function throttleAsync<T extends (...args: any[]) => Promise<any>>(func: T, limit: number, interval: number): (...args: Parameters<T>) => Promise<ReturnType<T>>;
|
|
61
|
-
/**
|
|
62
|
-
* Execute async operations sequentially with progress tracking
|
|
63
|
-
*/
|
|
64
|
-
export declare function sequentialWithProgress<T>(operations: (() => Promise<T>)[], onProgress?: (completed: number, total: number) => void): Promise<T[]>;
|
|
65
|
-
/**
|
|
66
|
-
* Batch async operations
|
|
67
|
-
*/
|
|
68
|
-
export declare function batchAsync<T>(items: T[], batchSize: number, processor: (batch: T[]) => Promise<void>): Promise<void>;
|
|
69
|
-
/**
|
|
70
|
-
* Create a cancellable async operation
|
|
71
|
-
*/
|
|
72
|
-
export declare function createCancellableAsync<T>(operation: (signal: AbortSignal) => Promise<T>): {
|
|
73
|
-
execute: () => Promise<T>;
|
|
74
|
-
cancel: () => void;
|
|
75
|
-
};
|
|
76
34
|
/**
|
|
77
|
-
*
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
*
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
* Create a promise that resolves after a delay
|
|
86
|
-
*/
|
|
87
|
-
export declare const delay: (ms: number) => Promise<void>;
|
|
88
|
-
/**
|
|
89
|
-
* Execute async operation with retry on specific errors
|
|
35
|
+
* Retry an async operation with exponential backoff
|
|
36
|
+
*
|
|
37
|
+
* By default, does not retry on 4xx errors (client errors). The default
|
|
38
|
+
* predicate accepts both the axios-style `error.response.status` and the
|
|
39
|
+
* flat `error.status` shape produced by {@link handleHttpError}, so callers
|
|
40
|
+
* never accidentally retry a deterministic client failure.
|
|
41
|
+
*
|
|
42
|
+
* Use the `shouldRetry` callback to customize retry behavior.
|
|
90
43
|
*/
|
|
91
|
-
export declare function
|
|
44
|
+
export declare function retryAsync<T>(operation: () => Promise<T>, maxRetriesOrOptions?: number | RetryOptions, baseDelayArg?: number, shouldRetryArg?: (error: unknown) => boolean): Promise<T>;
|
|
@@ -15,9 +15,8 @@
|
|
|
15
15
|
*/
|
|
16
16
|
export declare const CENTRAL_IDP_APEX = "oxy.so";
|
|
17
17
|
/**
|
|
18
|
-
* The IdP's origin, `auth.oxy.so` — the OAuth authorize/consent surface
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* Apps open it; they never run the passkey themselves.
|
|
18
|
+
* The IdP's origin, `auth.oxy.so` — the OAuth authorize/consent surface for
|
|
19
|
+
* third parties, the browser bridge (ADR 0029 D2) and the page an email
|
|
20
|
+
* sign-in link opens. Official apps sign in inside their own dialog (ADR 0030).
|
|
22
21
|
*/
|
|
23
22
|
export declare const AUTH_WEB_ORIGIN = "https://auth.oxy.so";
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal interface for services that can update asset visibility.
|
|
3
|
-
* Kept loose to avoid mixin type-inference issues with the OxyServices class.
|
|
4
|
-
*/
|
|
1
|
+
/** What `updateAvatarVisibility` needs of a client: `oxy.assets.setVisibility`. */
|
|
5
2
|
export interface AssetVisibilityService {
|
|
6
|
-
|
|
3
|
+
assets: {
|
|
4
|
+
setVisibility(fileId: string, visibility: 'private' | 'public' | 'unlisted'): Promise<unknown>;
|
|
5
|
+
};
|
|
7
6
|
}
|
|
8
7
|
/**
|
|
9
8
|
* Updates file visibility to public for avatar use.
|
|
10
9
|
* Logs non-404 errors to help debug upload issues.
|
|
11
10
|
*
|
|
12
11
|
* @param fileId - The file ID to update visibility for
|
|
13
|
-
* @param oxyServices - OxyServices
|
|
12
|
+
* @param oxyServices - An OxyServices client
|
|
14
13
|
* @param contextName - Context name for error logging
|
|
15
14
|
*/
|
|
16
15
|
export declare function updateAvatarVisibility(fileId: string | undefined, oxyServices: AssetVisibilityService, contextName?: string): Promise<void>;
|
|
@@ -44,11 +44,14 @@ export declare class TTLCache<T> {
|
|
|
44
44
|
private defaultTTL;
|
|
45
45
|
private hits;
|
|
46
46
|
private misses;
|
|
47
|
+
private maxEntries;
|
|
47
48
|
/**
|
|
48
49
|
* Create a new TTL cache
|
|
49
50
|
* @param defaultTTL Default TTL in milliseconds (default: 5 minutes)
|
|
51
|
+
* @param maxEntries Bound on live entries; the least recently used is evicted
|
|
52
|
+
* past it (default: 1000)
|
|
50
53
|
*/
|
|
51
|
-
constructor(defaultTTL?: number);
|
|
54
|
+
constructor(defaultTTL?: number, maxEntries?: number);
|
|
52
55
|
/**
|
|
53
56
|
* Get a value from cache
|
|
54
57
|
* @param key Cache key
|
|
@@ -75,6 +78,11 @@ export declare class TTLCache<T> {
|
|
|
75
78
|
* Clear all cache entries
|
|
76
79
|
*/
|
|
77
80
|
clear(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Delete every entry whose key matches, in ONE pass.
|
|
83
|
+
* @returns Number of entries deleted
|
|
84
|
+
*/
|
|
85
|
+
deleteWhere(match: (key: string) => boolean): number;
|
|
78
86
|
/**
|
|
79
87
|
* Check if a key exists and is not expired
|
|
80
88
|
* @param key Cache key
|
|
@@ -117,9 +125,9 @@ export declare function createCache<T>(ttl?: number): TTLCache<T>;
|
|
|
117
125
|
* Register a cache for automatic cleanup
|
|
118
126
|
* @param cache Cache instance to register
|
|
119
127
|
*/
|
|
120
|
-
export declare function registerCacheForCleanup(cache: TTLCache<
|
|
128
|
+
export declare function registerCacheForCleanup(cache: TTLCache<unknown>): void;
|
|
121
129
|
/** Unregister a cache without changing its entries or TTL behavior. */
|
|
122
|
-
export declare function unregisterCacheFromCleanup(cache: TTLCache<
|
|
130
|
+
export declare function unregisterCacheFromCleanup(cache: TTLCache<unknown>): void;
|
|
123
131
|
/**
|
|
124
132
|
* Stop all cleanup intervals (useful for testing)
|
|
125
133
|
* This will clear the interval and unregister all caches
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { getBrowserEdgeRegionHeader } from '@oxy.so/telemetry/browser';
|
|
1
|
+
export { peekBrowserEdgeRegionHeader } from '@oxy.so/telemetry/browser';
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
* refetch; under-eviction serves wrong data.
|
|
48
48
|
*
|
|
49
49
|
* Platform-neutral by construction (no imports, no `OxyServices` reference) so
|
|
50
|
-
* the client
|
|
50
|
+
* the client namespaces and the Node-only `@oxy.so/core/server` invalidation
|
|
51
51
|
* subscriber can share it without either pulling in the other.
|
|
52
52
|
*/
|
|
53
53
|
/**
|
|
@@ -55,8 +55,10 @@
|
|
|
55
55
|
* structurally so this module stays free of any client import.
|
|
56
56
|
*/
|
|
57
57
|
export interface OxyIdentityCacheEvictor {
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
invalidateCache(spec: {
|
|
59
|
+
keys?: readonly string[];
|
|
60
|
+
prefixes?: readonly string[];
|
|
61
|
+
}): number;
|
|
60
62
|
}
|
|
61
63
|
/**
|
|
62
64
|
* Cache-key PREFIXES under which an account's identity can be served, for the
|
|
@@ -77,4 +79,4 @@ export declare function oxyUserByIdCacheKey(userId: string): string;
|
|
|
77
79
|
* that does not know the id still clears every handle-, session-
|
|
78
80
|
* and self-keyed entry, which is the majority of the surface.
|
|
79
81
|
*/
|
|
80
|
-
export declare function evictOxyIdentityCache(
|
|
82
|
+
export declare function evictOxyIdentityCache(http: OxyIdentityCacheEvictor, userId?: string): void;
|
|
@@ -69,8 +69,8 @@ export interface BuildOAuthAuthorizeUrlParams {
|
|
|
69
69
|
responseMode?: 'web_message';
|
|
70
70
|
/**
|
|
71
71
|
* Which of the IdP's screens a person with no session there lands on:
|
|
72
|
-
* `signin` (sign in
|
|
73
|
-
*
|
|
72
|
+
* `signin` (sign in), `signup` (create an account), `recover` (get back
|
|
73
|
+
* into one); each opens its sign-in panel. Omitted, the IdP
|
|
74
74
|
* offers its Commons request first. An Oxy app sends this when it sends the
|
|
75
75
|
* person to auth.oxy.so for what only that origin can do, in the same tab.
|
|
76
76
|
*/
|
|
@@ -5,13 +5,9 @@
|
|
|
5
5
|
* literal union — `@oxy.so/core` has zero dependency on `@oxy.so/api`, so this is
|
|
6
6
|
* kept in sync by hand, not by import.
|
|
7
7
|
*
|
|
8
|
-
* Defined here
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* `mixins/` deliberately avoids so it stays safe to bundle into RN/browser
|
|
12
|
-
* consumers — see the "Local request/response/socket typing" comment in
|
|
13
|
-
* `OxyServices.utility.ts`). This file has zero imports, so both sides can
|
|
14
|
-
* depend on it without crossing that boundary.
|
|
8
|
+
* Defined here, with zero imports, so the server middleware and any
|
|
9
|
+
* client-safe code can both depend on it without the client reaching the
|
|
10
|
+
* Node-only `server/` modules.
|
|
15
11
|
*/
|
|
16
12
|
export declare const OXY_SERVICE_ENVIRONMENTS: readonly ["development", "staging", "production"];
|
|
17
13
|
export type OxyServiceEnvironment = (typeof OXY_SERVICE_ENVIRONMENTS)[number];
|
|
@@ -6,28 +6,32 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Request deduplication - prevents duplicate concurrent requests
|
|
8
8
|
*
|
|
9
|
-
* When multiple requests with the same key are made simultaneously,
|
|
10
|
-
*
|
|
9
|
+
* When multiple requests with the same key are made simultaneously, only one
|
|
10
|
+
* request is executed and all callers receive the same result.
|
|
11
|
+
*
|
|
12
|
+
* The shared work runs in its OWN abort domain, not the first caller's: each
|
|
13
|
+
* caller owns its cancellation, and the shared work is aborted only once every
|
|
14
|
+
* caller waiting on it has cancelled. Binding it to the first caller's signal
|
|
15
|
+
* meant one cancelled caller failed every other caller on the same key.
|
|
11
16
|
*
|
|
12
17
|
* @example
|
|
13
18
|
* ```typescript
|
|
14
19
|
* const deduplicator = new RequestDeduplicator();
|
|
15
20
|
*
|
|
16
|
-
* // Multiple calls with same key
|
|
17
|
-
* const promise1 = deduplicator.deduplicate('user-123', () => fetchUser('123'));
|
|
18
|
-
* const promise2 = deduplicator.deduplicate('user-123', () => fetchUser('123'));
|
|
19
|
-
* // promise1 === promise2, only one API call is made
|
|
21
|
+
* // Multiple calls with same key share one in-flight call
|
|
22
|
+
* const promise1 = deduplicator.deduplicate('user-123', (signal) => fetchUser('123', signal));
|
|
23
|
+
* const promise2 = deduplicator.deduplicate('user-123', (signal) => fetchUser('123', signal));
|
|
20
24
|
* ```
|
|
21
25
|
*/
|
|
22
26
|
export declare class RequestDeduplicator {
|
|
23
|
-
private
|
|
27
|
+
private pending;
|
|
24
28
|
/**
|
|
25
29
|
* Deduplicate a request by key
|
|
26
30
|
* @param key Unique key for the request
|
|
27
|
-
* @param requestFn
|
|
28
|
-
* @
|
|
31
|
+
* @param requestFn Runs the work; its signal aborts once every caller has cancelled
|
|
32
|
+
* @param signal This caller's cancellation
|
|
29
33
|
*/
|
|
30
|
-
deduplicate<T>(key: string, requestFn: () => Promise<T>, signal?: AbortSignal): Promise<T>;
|
|
34
|
+
deduplicate<T>(key: string, requestFn: (signal: AbortSignal) => Promise<T>, signal?: AbortSignal): Promise<T>;
|
|
31
35
|
/**
|
|
32
36
|
* Clear all pending requests
|
|
33
37
|
*/
|
|
@@ -116,8 +120,8 @@ export declare class SimpleLogger {
|
|
|
116
120
|
constructor(enabled?: boolean, level?: LogLevel, prefix?: string);
|
|
117
121
|
private shouldLog;
|
|
118
122
|
private formatMessage;
|
|
119
|
-
error(...args:
|
|
120
|
-
warn(...args:
|
|
121
|
-
info(...args:
|
|
122
|
-
debug(...args:
|
|
123
|
+
error(...args: unknown[]): void;
|
|
124
|
+
warn(...args: unknown[]): void;
|
|
125
|
+
info(...args: unknown[]): void;
|
|
126
|
+
debug(...args: unknown[]): void;
|
|
123
127
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface AccessTokenClaims {
|
|
2
|
+
exp?: number;
|
|
3
|
+
userId?: string;
|
|
4
|
+
id?: string;
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
[claim: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
/** The token's claims, or `null` for an opaque/undecodable token. */
|
|
9
|
+
export declare function decodeTokenClaims(token: string): AccessTokenClaims | null;
|