@oxy.so/core 1.18.0 → 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 +189 -112
- 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 +190 -113
- 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 +47 -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 -1
- 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 +201 -132
- 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 -1
- 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 -1440
- 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 -1400
- 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 -965
- 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__/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 -2028
- 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
package/src/mixins/index.ts
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Centralized mixin exports and composition helper
|
|
3
|
-
*
|
|
4
|
-
* This module provides a clean way to compose all mixins
|
|
5
|
-
* and ensures consistent ordering for better maintainability
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { OxyServicesBase } from '../OxyServices.base';
|
|
9
|
-
import { OxyServicesAuthMixin } from './OxyServices.auth';
|
|
10
|
-
import { OxyServicesUserMixin } from './OxyServices.user';
|
|
11
|
-
import { OxyServicesIdentityMixin } from './OxyServices.identity';
|
|
12
|
-
import { OxyServicesIdentityBackupMixin } from './OxyServices.identityBackup';
|
|
13
|
-
import { OxyServicesPrivacyMixin } from './OxyServices.privacy';
|
|
14
|
-
import { OxyServicesLanguageMixin } from './OxyServices.language';
|
|
15
|
-
import { OxyServicesPaymentMixin } from './OxyServices.payment';
|
|
16
|
-
import { OxyServicesReputationMixin } from './OxyServices.reputation';
|
|
17
|
-
import { OxyServicesAssetsMixin } from './OxyServices.assets';
|
|
18
|
-
import { OxyServicesAccountsMixin } from './OxyServices.accounts';
|
|
19
|
-
import { OxyServicesConnectedAppsMixin } from './OxyServices.connectedApps';
|
|
20
|
-
import { OxyServicesAgencyMixin } from './OxyServices.agency';
|
|
21
|
-
import { OxyServicesStoreMixin } from './OxyServices.store';
|
|
22
|
-
import { OxyServicesLocationMixin } from './OxyServices.location';
|
|
23
|
-
import { OxyServicesAnalyticsMixin } from './OxyServices.analytics';
|
|
24
|
-
import { OxyServicesDevicesMixin } from './OxyServices.devices';
|
|
25
|
-
import { OxyServicesSecurityMixin } from './OxyServices.security';
|
|
26
|
-
import { OxyServicesUtilityMixin } from './OxyServices.utility';
|
|
27
|
-
import { OxyServicesFeaturesMixin } from './OxyServices.features';
|
|
28
|
-
import { OxyServicesTopicsMixin } from './OxyServices.topics';
|
|
29
|
-
import { OxyServicesContactsMixin } from './OxyServices.contacts';
|
|
30
|
-
import { OxyServicesNotificationsMixin } from './OxyServices.notifications';
|
|
31
|
-
import { OxyServicesAppDataMixin } from './OxyServices.appData';
|
|
32
|
-
import { OxyServicesCivicMixin } from './OxyServices.civic';
|
|
33
|
-
import { OxyServicesChainsMixin } from './OxyServices.chains';
|
|
34
|
-
import { OxyServicesNodesMixin } from './OxyServices.nodes';
|
|
35
|
-
import { OxyServicesFollowGraphMixin } from './OxyServices.followGraph';
|
|
36
|
-
import { OxyServicesInferenceMixin } from './OxyServices.inference';
|
|
37
|
-
import { OxyServicesDeviceBootMixin } from './OxyServices.deviceBoot';
|
|
38
|
-
import { OxyServicesLinkedAccountsMixin } from './OxyServices.linkedAccounts';
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Instance shape of every mixin in the pipeline, intersected. The runtime
|
|
42
|
-
* `composeOxyServices()` produces a class whose instances expose all of
|
|
43
|
-
* these methods; we surface that to TypeScript via this intersection so the
|
|
44
|
-
* `extends` site in `OxyServices.ts` can avoid an `as any` cast.
|
|
45
|
-
*
|
|
46
|
-
* If you add a new mixin to `MIXIN_PIPELINE`, add it here too so its methods
|
|
47
|
-
* are visible without a cast.
|
|
48
|
-
*/
|
|
49
|
-
type AllMixinInstances =
|
|
50
|
-
& InstanceType<ReturnType<typeof OxyServicesAuthMixin<typeof OxyServicesBase>>>
|
|
51
|
-
& InstanceType<ReturnType<typeof OxyServicesUserMixin<typeof OxyServicesBase>>>
|
|
52
|
-
& InstanceType<ReturnType<typeof OxyServicesIdentityMixin<typeof OxyServicesBase>>>
|
|
53
|
-
& InstanceType<ReturnType<typeof OxyServicesIdentityBackupMixin<typeof OxyServicesBase>>>
|
|
54
|
-
& InstanceType<ReturnType<typeof OxyServicesPrivacyMixin<typeof OxyServicesBase>>>
|
|
55
|
-
& InstanceType<ReturnType<typeof OxyServicesLanguageMixin<typeof OxyServicesBase>>>
|
|
56
|
-
& InstanceType<ReturnType<typeof OxyServicesPaymentMixin<typeof OxyServicesBase>>>
|
|
57
|
-
& InstanceType<ReturnType<typeof OxyServicesReputationMixin<typeof OxyServicesBase>>>
|
|
58
|
-
& InstanceType<ReturnType<typeof OxyServicesAssetsMixin<typeof OxyServicesBase>>>
|
|
59
|
-
& InstanceType<ReturnType<typeof OxyServicesAccountsMixin<typeof OxyServicesBase>>>
|
|
60
|
-
& InstanceType<ReturnType<typeof OxyServicesConnectedAppsMixin<typeof OxyServicesBase>>>
|
|
61
|
-
& InstanceType<ReturnType<typeof OxyServicesAgencyMixin<typeof OxyServicesBase>>>
|
|
62
|
-
& InstanceType<ReturnType<typeof OxyServicesStoreMixin<typeof OxyServicesBase>>>
|
|
63
|
-
& InstanceType<ReturnType<typeof OxyServicesLocationMixin<typeof OxyServicesBase>>>
|
|
64
|
-
& InstanceType<ReturnType<typeof OxyServicesAnalyticsMixin<typeof OxyServicesBase>>>
|
|
65
|
-
& InstanceType<ReturnType<typeof OxyServicesDevicesMixin<typeof OxyServicesBase>>>
|
|
66
|
-
& InstanceType<ReturnType<typeof OxyServicesSecurityMixin<typeof OxyServicesBase>>>
|
|
67
|
-
& InstanceType<ReturnType<typeof OxyServicesFeaturesMixin<typeof OxyServicesBase>>>
|
|
68
|
-
& InstanceType<ReturnType<typeof OxyServicesTopicsMixin<typeof OxyServicesBase>>>
|
|
69
|
-
& InstanceType<ReturnType<typeof OxyServicesContactsMixin<typeof OxyServicesBase>>>
|
|
70
|
-
& InstanceType<ReturnType<typeof OxyServicesNotificationsMixin<typeof OxyServicesBase>>>
|
|
71
|
-
& InstanceType<ReturnType<typeof OxyServicesAppDataMixin<typeof OxyServicesBase>>>
|
|
72
|
-
& InstanceType<ReturnType<typeof OxyServicesCivicMixin<typeof OxyServicesBase>>>
|
|
73
|
-
& InstanceType<ReturnType<typeof OxyServicesChainsMixin<typeof OxyServicesBase>>>
|
|
74
|
-
& InstanceType<ReturnType<typeof OxyServicesNodesMixin<typeof OxyServicesBase>>>
|
|
75
|
-
& InstanceType<ReturnType<typeof OxyServicesFollowGraphMixin<typeof OxyServicesBase>>>
|
|
76
|
-
& InstanceType<ReturnType<typeof OxyServicesInferenceMixin<typeof OxyServicesBase>>>
|
|
77
|
-
& InstanceType<ReturnType<typeof OxyServicesDeviceBootMixin<typeof OxyServicesBase>>>
|
|
78
|
-
& InstanceType<ReturnType<typeof OxyServicesLinkedAccountsMixin<typeof OxyServicesBase>>>
|
|
79
|
-
& InstanceType<ReturnType<typeof OxyServicesUtilityMixin<typeof OxyServicesBase>>>;
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Constructor type for the fully composed mixin pipeline. Each mixin returns
|
|
83
|
-
* a new constructor that augments its input; reducing across the pipeline
|
|
84
|
-
* yields an instance with every mixin's methods.
|
|
85
|
-
*/
|
|
86
|
-
export type ComposedOxyServicesConstructor = new (config: import('../OxyServices.base').OxyConfig) => AllMixinInstances;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* A mixin function: takes a constructor and returns an augmented constructor.
|
|
90
|
-
* Each individual mixin uses a `<T extends typeof OxyServicesBase>` generic
|
|
91
|
-
* to preserve its specific augmentations, but those refinements are
|
|
92
|
-
* intentionally collapsed across the `reduce` call below.
|
|
93
|
-
*/
|
|
94
|
-
type MixinFunction = (Base: new (...args: unknown[]) => OxyServicesBase) => new (...args: unknown[]) => OxyServicesBase;
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Mixin pipeline - applied in order from first to last.
|
|
98
|
-
*
|
|
99
|
-
* Order matters for dependencies:
|
|
100
|
-
* 1. Base auth mixin first (required by all others)
|
|
101
|
-
* 2. User mixin (requires auth)
|
|
102
|
-
* 3. Feature mixins (can depend on user)
|
|
103
|
-
* 4. Utility mixin last (augments all)
|
|
104
|
-
*
|
|
105
|
-
* To add a new mixin: insert it at the appropriate position in this array.
|
|
106
|
-
*/
|
|
107
|
-
const MIXIN_PIPELINE: MixinFunction[] = [
|
|
108
|
-
// Base authentication
|
|
109
|
-
OxyServicesAuthMixin,
|
|
110
|
-
|
|
111
|
-
// User management (requires auth)
|
|
112
|
-
OxyServicesUserMixin,
|
|
113
|
-
// Self-sovereign identity (DID, signed records, auth-method ↔ VM mapping)
|
|
114
|
-
OxyServicesIdentityMixin,
|
|
115
|
-
// Encrypted off-device identity backup (b3 Feature 1): store/restore an
|
|
116
|
-
// encrypted copy of the self-custody key, keyed off the recovery phrase.
|
|
117
|
-
OxyServicesIdentityBackupMixin,
|
|
118
|
-
OxyServicesPrivacyMixin,
|
|
119
|
-
|
|
120
|
-
// Feature mixins
|
|
121
|
-
OxyServicesLanguageMixin,
|
|
122
|
-
OxyServicesPaymentMixin,
|
|
123
|
-
OxyServicesReputationMixin,
|
|
124
|
-
OxyServicesAssetsMixin,
|
|
125
|
-
// Unified account graph + the applications owned within it. The clean-cut
|
|
126
|
-
// replacement for the former managedAccounts + workspaces + applications
|
|
127
|
-
// (account-management) mixins.
|
|
128
|
-
OxyServicesAccountsMixin,
|
|
129
|
-
// OAuth-consent surface (public app identity + connected-app grants). Kept
|
|
130
|
-
// separate from account ownership.
|
|
131
|
-
OxyServicesConnectedAppsMixin,
|
|
132
|
-
// Oxy-owned delegated authority for Alia and digital-agent accounts.
|
|
133
|
-
OxyServicesAgencyMixin,
|
|
134
|
-
// The app store: the public storefront, the reviews on it, and the listing a
|
|
135
|
-
// publisher edits. A module OVER the platform — turn it off and OAuth still
|
|
136
|
-
// works — so it is its own surface rather than more of `accounts`.
|
|
137
|
-
OxyServicesStoreMixin,
|
|
138
|
-
OxyServicesLocationMixin,
|
|
139
|
-
OxyServicesAnalyticsMixin,
|
|
140
|
-
OxyServicesDevicesMixin,
|
|
141
|
-
OxyServicesSecurityMixin,
|
|
142
|
-
OxyServicesFeaturesMixin,
|
|
143
|
-
OxyServicesTopicsMixin,
|
|
144
|
-
OxyServicesContactsMixin,
|
|
145
|
-
// Push-token registration: the one SDK-owned register/unregister pair every
|
|
146
|
-
// Oxy app uses, and what lets a "Sign in with Oxy" request be delivered to a
|
|
147
|
-
// known Commons installation instead of falling back to a QR.
|
|
148
|
-
OxyServicesNotificationsMixin,
|
|
149
|
-
OxyServicesAppDataMixin,
|
|
150
|
-
// Civic / Commons "Oxy ID" (public signed cards, Oxy ID QR payload)
|
|
151
|
-
OxyServicesCivicMixin,
|
|
152
|
-
OxyServicesChainsMixin,
|
|
153
|
-
// User nodes / decentralization (Fase 5): register/read/revoke/manage the
|
|
154
|
-
// caller's personal data node + ingest hint.
|
|
155
|
-
OxyServicesNodesMixin,
|
|
156
|
-
// The user-owned follow graph (#809). One relationship per user and target,
|
|
157
|
-
// shared across applications, with per-application context on top.
|
|
158
|
-
OxyServicesFollowGraphMixin,
|
|
159
|
-
|
|
160
|
-
// The inference model catalogue (#972). Reads only, and deliberately no
|
|
161
|
-
// request/stream/receipt methods — the public inference edge those would
|
|
162
|
-
// call is workstream 4 and does not exist yet. See
|
|
163
|
-
// `docs/inference/README.md` for what is and is not built.
|
|
164
|
-
OxyServicesInferenceMixin,
|
|
165
|
-
|
|
166
|
-
// Device-first token mint: the client half of the zero-cookie transport
|
|
167
|
-
// (`mintFromDeviceSecret` → `POST /session/device/token`).
|
|
168
|
-
OxyServicesDeviceBootMixin,
|
|
169
|
-
|
|
170
|
-
// Linked external accounts (Mastodon-API, Bluesky) proven by OAuth; the
|
|
171
|
-
// service read uses the auth mixin's `makeServiceRequest`.
|
|
172
|
-
OxyServicesLinkedAccountsMixin,
|
|
173
|
-
|
|
174
|
-
// Device-to-device identity transfer ("add a device"): E2E-encrypted key
|
|
175
|
-
// clone over a short-lived relay (b3 Feature 2).
|
|
176
|
-
|
|
177
|
-
// Utility (last, can use all above)
|
|
178
|
-
OxyServicesUtilityMixin,
|
|
179
|
-
];
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Composes all OxyServices mixins using a pipeline pattern.
|
|
183
|
-
*
|
|
184
|
-
* This is equivalent to the nested calls but more readable and maintainable.
|
|
185
|
-
* Adding a new mixin: add it to MIXIN_PIPELINE at the appropriate position
|
|
186
|
-
* AND extend `AllMixinInstances` so its methods are visible to consumers.
|
|
187
|
-
*
|
|
188
|
-
* The cast through `unknown` carries the runtime augmentation chain into the
|
|
189
|
-
* static type system. `Array.reduce` cannot track each mixin's generic
|
|
190
|
-
* refinement, so we assert the final shape exposed by all mixins together.
|
|
191
|
-
*
|
|
192
|
-
* @returns The fully composed OxyServices constructor with all mixins applied
|
|
193
|
-
*/
|
|
194
|
-
export function composeOxyServices(): ComposedOxyServicesConstructor {
|
|
195
|
-
const composed = MIXIN_PIPELINE.reduce(
|
|
196
|
-
(Base, mixin) => mixin(Base),
|
|
197
|
-
OxyServicesBase as unknown as new (...args: unknown[]) => OxyServicesBase
|
|
198
|
-
);
|
|
199
|
-
return composed as unknown as ComposedOxyServicesConstructor;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// Export the pipeline for testing/debugging
|
|
203
|
-
export { MIXIN_PIPELINE };
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Helper utilities for mixin classes
|
|
3
|
-
* Provides common patterns to reduce code duplication
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { OxyServicesBase } from '../OxyServices.base';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Wraps an async method with standard error handling
|
|
10
|
-
* Reduces boilerplate in mixin methods
|
|
11
|
-
*/
|
|
12
|
-
export async function withErrorHandling<T>(
|
|
13
|
-
operation: () => Promise<T>,
|
|
14
|
-
handleError: (error: any) => Error
|
|
15
|
-
): Promise<T> {
|
|
16
|
-
try {
|
|
17
|
-
return await operation();
|
|
18
|
-
} catch (error) {
|
|
19
|
-
throw handleError(error);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Creates a standard API request method with error handling
|
|
25
|
-
* Reduces duplication across mixin methods
|
|
26
|
-
*/
|
|
27
|
-
export function createApiMethod<T>(
|
|
28
|
-
makeRequest: OxyServicesBase['makeRequest'],
|
|
29
|
-
handleError: OxyServicesBase['handleError'],
|
|
30
|
-
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',
|
|
31
|
-
url: string | ((...args: any[]) => string),
|
|
32
|
-
options: {
|
|
33
|
-
cache?: boolean;
|
|
34
|
-
cacheTTL?: number;
|
|
35
|
-
retry?: boolean;
|
|
36
|
-
transformData?: (data: any) => any;
|
|
37
|
-
transformResponse?: (response: any) => T;
|
|
38
|
-
} = {}
|
|
39
|
-
) {
|
|
40
|
-
return async (...args: any[]): Promise<T> => {
|
|
41
|
-
const urlString = typeof url === 'function' ? url(...args) : url;
|
|
42
|
-
const requestData = options.transformData ? options.transformData(args) : args[0];
|
|
43
|
-
|
|
44
|
-
const requestOptions = {
|
|
45
|
-
cache: options.cache ?? true,
|
|
46
|
-
cacheTTL: options.cacheTTL,
|
|
47
|
-
retry: options.retry ?? true,
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
try {
|
|
51
|
-
const response = await makeRequest<T>(method, urlString, requestData, requestOptions);
|
|
52
|
-
return options.transformResponse ? options.transformResponse(response) : response;
|
|
53
|
-
} catch (error) {
|
|
54
|
-
throw handleError(error);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Cache time constants (in milliseconds)
|
|
61
|
-
*/
|
|
62
|
-
export const CACHE_TIMES = {
|
|
63
|
-
SHORT: 1 * 60 * 1000, // 1 minute
|
|
64
|
-
MEDIUM: 2 * 60 * 1000, // 2 minutes
|
|
65
|
-
LONG: 5 * 60 * 1000, // 5 minutes
|
|
66
|
-
VERY_LONG: 10 * 60 * 1000, // 10 minutes
|
|
67
|
-
EXTRA_LONG: 30 * 60 * 1000, // 30 minutes
|
|
68
|
-
} as const;
|
|
69
|
-
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import type { NextFunction, Request, Response } from 'express';
|
|
2
|
-
import type { OxyServices } from '../../OxyServices';
|
|
3
|
-
import {
|
|
4
|
-
createOxyAuthMiddleware,
|
|
5
|
-
getOxyUserId,
|
|
6
|
-
getRequiredOxyUserId,
|
|
7
|
-
requireOxyAuth,
|
|
8
|
-
type OxyAuthRequest,
|
|
9
|
-
} from '../auth';
|
|
10
|
-
|
|
11
|
-
function makeResponse(): Response {
|
|
12
|
-
return {
|
|
13
|
-
status: jest.fn().mockReturnThis(),
|
|
14
|
-
json: jest.fn().mockReturnThis(),
|
|
15
|
-
} as unknown as Response;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function makeNext(): NextFunction {
|
|
19
|
-
return jest.fn() as unknown as NextFunction;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
describe('@oxy.so/core/server auth helpers', () => {
|
|
23
|
-
it('reads the current user id from userId, user.id, or user._id', () => {
|
|
24
|
-
expect(getOxyUserId({ userId: 'user-from-request' } as OxyAuthRequest)).toBe('user-from-request');
|
|
25
|
-
expect(getOxyUserId({ user: { id: 'user-from-id' } } as OxyAuthRequest)).toBe('user-from-id');
|
|
26
|
-
expect(getOxyUserId({ user: { id: '', _id: 'user-from-mongo-id' } } as OxyAuthRequest)).toBe('user-from-mongo-id');
|
|
27
|
-
expect(getOxyUserId({ user: { id: '' } } as OxyAuthRequest)).toBeNull();
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it('throws when a required user id is missing', () => {
|
|
31
|
-
expect(() => getRequiredOxyUserId({} as Request)).toThrow('User not authenticated');
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('returns a consistent 401 when auth is missing', () => {
|
|
35
|
-
const req = {} as Request;
|
|
36
|
-
const res = makeResponse();
|
|
37
|
-
const next = makeNext();
|
|
38
|
-
|
|
39
|
-
requireOxyAuth(req, res, next);
|
|
40
|
-
|
|
41
|
-
expect(res.status).toHaveBeenCalledWith(401);
|
|
42
|
-
expect(res.json).toHaveBeenCalledWith({
|
|
43
|
-
error: 'Unauthorized',
|
|
44
|
-
message: 'Authentication required',
|
|
45
|
-
});
|
|
46
|
-
expect(next).not.toHaveBeenCalled();
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('normalizes an authenticated request before continuing', () => {
|
|
50
|
-
const req = { user: { id: '', _id: 'mongo-user-id' } } as OxyAuthRequest;
|
|
51
|
-
const res = makeResponse();
|
|
52
|
-
const next = makeNext();
|
|
53
|
-
|
|
54
|
-
requireOxyAuth(req, res, next);
|
|
55
|
-
|
|
56
|
-
expect(req.userId).toBe('mongo-user-id');
|
|
57
|
-
expect(req.user?.id).toBe('mongo-user-id');
|
|
58
|
-
expect(next).toHaveBeenCalledTimes(1);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('can resolve and require auth as one middleware', () => {
|
|
62
|
-
const oxy = {
|
|
63
|
-
auth: jest.fn(() => (req: OxyAuthRequest, _res: Response, next: NextFunction) => {
|
|
64
|
-
req.user = { id: 'resolved-user' };
|
|
65
|
-
next();
|
|
66
|
-
}),
|
|
67
|
-
} as unknown as OxyServices;
|
|
68
|
-
const req = {} as OxyAuthRequest;
|
|
69
|
-
const res = makeResponse();
|
|
70
|
-
const next = makeNext();
|
|
71
|
-
|
|
72
|
-
createOxyAuthMiddleware(oxy)(req, res, next);
|
|
73
|
-
|
|
74
|
-
expect(oxy.auth).toHaveBeenCalledWith({ optional: true });
|
|
75
|
-
expect(req.userId).toBe('resolved-user');
|
|
76
|
-
expect(next).toHaveBeenCalledTimes(1);
|
|
77
|
-
});
|
|
78
|
-
});
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import type { CapabilityTicketClaims } from '@oxy.so/contracts';
|
|
2
|
-
import { generateKeyPairSync } from 'node:crypto';
|
|
3
|
-
import type { CapabilityTicketError } from '../capabilityTicket';
|
|
4
|
-
import {
|
|
5
|
-
inputSatisfiesCapabilityLimits,
|
|
6
|
-
issueCapabilityTicket,
|
|
7
|
-
readCapabilityAuthorization,
|
|
8
|
-
verifyCapabilityTicket,
|
|
9
|
-
} from '../capabilityTicket';
|
|
10
|
-
|
|
11
|
-
const NOW = new Date('2026-09-01T10:00:00.000Z');
|
|
12
|
-
const KEY_PAIR = generateKeyPairSync('ed25519');
|
|
13
|
-
const KEY_ID = 'capability-test-1';
|
|
14
|
-
|
|
15
|
-
const claims: Omit<CapabilityTicketClaims, 'iss' | 'iat' | 'exp' | 'jti'> = {
|
|
16
|
-
aud: 'inbox-api',
|
|
17
|
-
sub: 'agent-1',
|
|
18
|
-
runId: 'run-1',
|
|
19
|
-
executionAuthorization: { kind: 'direct_request', id: 'authorization-1' },
|
|
20
|
-
coordinator: { applicationId: 'alia-app', credentialId: 'alia-credential' },
|
|
21
|
-
requesterAccountId: 'owner-1',
|
|
22
|
-
ownerAccountId: 'owner-1',
|
|
23
|
-
actor: { type: 'agent', accountId: 'agent-1' },
|
|
24
|
-
resource: {
|
|
25
|
-
appId: 'inbox',
|
|
26
|
-
effectiveAccountId: 'business-1',
|
|
27
|
-
resourceType: 'mailbox',
|
|
28
|
-
resourceId: 'mailbox-1',
|
|
29
|
-
},
|
|
30
|
-
tool: 'sendEmail',
|
|
31
|
-
capabilities: ['email.send'],
|
|
32
|
-
limits: [],
|
|
33
|
-
autonomy: 'execute_on_request',
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
describe('capability tickets', () => {
|
|
37
|
-
it('parses the Capability HTTP authentication scheme case-insensitively', () => {
|
|
38
|
-
expect(readCapabilityAuthorization('Capability signed-ticket')).toBe('signed-ticket');
|
|
39
|
-
expect(readCapabilityAuthorization('capability signed-ticket')).toBe('signed-ticket');
|
|
40
|
-
expect(readCapabilityAuthorization('Bearer signed-ticket')).toBeNull();
|
|
41
|
-
expect(readCapabilityAuthorization('Capability signed-ticket extra')).toBeNull();
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
it('round-trips exact actor, effective account, resource and run claims', () => {
|
|
45
|
-
const token = issueCapabilityTicket(claims, {
|
|
46
|
-
issuer: 'https://api.oxy.so',
|
|
47
|
-
privateKey: KEY_PAIR.privateKey,
|
|
48
|
-
keyId: KEY_ID,
|
|
49
|
-
now: NOW,
|
|
50
|
-
jti: 'ticket-1',
|
|
51
|
-
ttlSeconds: 60,
|
|
52
|
-
});
|
|
53
|
-
const verified = verifyCapabilityTicket(token, {
|
|
54
|
-
audience: 'inbox-api',
|
|
55
|
-
issuer: 'https://api.oxy.so',
|
|
56
|
-
resolvePublicKey: (keyId) => keyId === KEY_ID ? KEY_PAIR.publicKey : undefined,
|
|
57
|
-
now: new Date('2026-09-01T10:00:30.000Z'),
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
expect(verified.actor).toEqual({ type: 'agent', accountId: 'agent-1' });
|
|
61
|
-
expect(verified.resource.effectiveAccountId).toBe('business-1');
|
|
62
|
-
expect(verified.resource.resourceId).toBe('mailbox-1');
|
|
63
|
-
expect(verified.runId).toBe('run-1');
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it('rejects cross-app replay even when the signature is valid', () => {
|
|
67
|
-
const token = issueCapabilityTicket(claims, {
|
|
68
|
-
issuer: 'https://api.oxy.so', privateKey: KEY_PAIR.privateKey, keyId: KEY_ID, now: NOW,
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
expect(() => verifyCapabilityTicket(token, {
|
|
72
|
-
audience: 'mention-api', resolvePublicKey: () => KEY_PAIR.publicKey, now: NOW,
|
|
73
|
-
})).toThrow(expect.objectContaining<Partial<CapabilityTicketError>>({ code: 'wrong_audience' }));
|
|
74
|
-
expect(() => verifyCapabilityTicket(token, {
|
|
75
|
-
audience: 'inbox-api', resolvePublicKey: () => undefined, now: NOW,
|
|
76
|
-
})).toThrow(expect.objectContaining<Partial<CapabilityTicketError>>({ code: 'unknown_key' }));
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it('rejects expired, tampered and overlong tickets', () => {
|
|
80
|
-
const token = issueCapabilityTicket(claims, {
|
|
81
|
-
issuer: 'https://api.oxy.so', privateKey: KEY_PAIR.privateKey, keyId: KEY_ID, now: NOW, ttlSeconds: 60,
|
|
82
|
-
});
|
|
83
|
-
expect(() => verifyCapabilityTicket(token, {
|
|
84
|
-
audience: 'inbox-api', resolvePublicKey: () => KEY_PAIR.publicKey, now: new Date('2026-09-01T10:01:00.000Z'),
|
|
85
|
-
})).toThrow(expect.objectContaining<Partial<CapabilityTicketError>>({ code: 'expired' }));
|
|
86
|
-
|
|
87
|
-
const [header, payload, signature] = token.split('.');
|
|
88
|
-
expect(() => verifyCapabilityTicket(`${header}.${payload}x.${signature}`, {
|
|
89
|
-
audience: 'inbox-api', resolvePublicKey: () => KEY_PAIR.publicKey, now: NOW,
|
|
90
|
-
})).toThrow(expect.objectContaining<Partial<CapabilityTicketError>>({ code: 'invalid_signature' }));
|
|
91
|
-
|
|
92
|
-
expect(() => issueCapabilityTicket(claims, {
|
|
93
|
-
issuer: 'https://api.oxy.so', privateKey: KEY_PAIR.privateKey, keyId: KEY_ID, now: NOW, ttlSeconds: 301,
|
|
94
|
-
})).toThrow(expect.objectContaining<Partial<CapabilityTicketError>>({ code: 'ttl_exceeded' }));
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it('enforces numeric and boolean limits carried by a ticket', () => {
|
|
98
|
-
const limits = [
|
|
99
|
-
{ tool: 'sendPayment', key: 'amount', value: 100 },
|
|
100
|
-
{ tool: 'sendPayment', key: 'confirmed', value: true },
|
|
101
|
-
];
|
|
102
|
-
expect(inputSatisfiesCapabilityLimits('sendPayment', { amount: 75, confirmed: true }, limits)).toBe(true);
|
|
103
|
-
expect(inputSatisfiesCapabilityLimits('sendPayment', { amount: 101, confirmed: true }, limits)).toBe(false);
|
|
104
|
-
expect(inputSatisfiesCapabilityLimits('sendPayment', { amount: 75, confirmed: false }, limits)).toBe(false);
|
|
105
|
-
expect(inputSatisfiesCapabilityLimits('sendPayment', { amount: 75 }, limits)).toBe(false);
|
|
106
|
-
expect(inputSatisfiesCapabilityLimits('otherTool', { amount: 75, confirmed: true }, limits)).toBe(false);
|
|
107
|
-
expect(inputSatisfiesCapabilityLimits('updateFlags', {
|
|
108
|
-
flags: { seen: true },
|
|
109
|
-
}, [{ tool: 'updateFlags', key: 'flags.seen', value: true }])).toBe(true);
|
|
110
|
-
});
|
|
111
|
-
});
|