@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
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import { signEnvelope, signMessage, verifySignature, sha256, loadExpoCrypto, loadNodeCrypto, isReactNative, isNodeJS, } from '@oxy.so/protocol';
|
|
11
11
|
import { KeyManager } from './keyManager.js';
|
|
12
12
|
import { logger } from '../logger/index.js';
|
|
13
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: a public, static-only API surface (`X.method()`) that consumers and tests call and spy on by name.
|
|
13
14
|
export class SignatureService {
|
|
14
15
|
/**
|
|
15
16
|
* Generate a random challenge string (for offline use)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import enUS from './locales/en-US.
|
|
1
|
+
import enUS from './locales/en-US.js';
|
|
2
2
|
import { translate } from './index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Every account category's English name, keyed by its stable id.
|
|
5
5
|
*
|
|
6
6
|
* **The annotation is the point.** The vocabulary lives in `@oxy.so/contracts`
|
|
7
|
-
* and the names live in `locales/en-US.
|
|
7
|
+
* and the names live in `locales/en-US.ts`, so they are two lists that must
|
|
8
8
|
* agree and nothing but a type can make them. Declaring the JSON node as a
|
|
9
9
|
* TOTAL `Record<AccountCategoryId, string>` turns "somebody added a category at
|
|
10
10
|
* Oxy and nobody wrote its English" into a `TS2741` naming the missing id, at
|
package/dist/esm/i18n/index.js
CHANGED
|
@@ -1,61 +1,102 @@
|
|
|
1
|
-
import enUS from './locales/en-US.
|
|
2
|
-
import esES from './locales/es-ES.json' with { type: "json" };
|
|
3
|
-
import caES from './locales/ca-ES.json' with { type: "json" };
|
|
4
|
-
import frFR from './locales/fr-FR.json' with { type: "json" };
|
|
5
|
-
import deDE from './locales/de-DE.json' with { type: "json" };
|
|
6
|
-
import itIT from './locales/it-IT.json' with { type: "json" };
|
|
7
|
-
import ptPT from './locales/pt-PT.json' with { type: "json" };
|
|
8
|
-
import jaJP from './locales/ja-JP.json' with { type: "json" };
|
|
9
|
-
import koKR from './locales/ko-KR.json' with { type: "json" };
|
|
10
|
-
import zhCN from './locales/zh-CN.json' with { type: "json" };
|
|
11
|
-
import arSA from './locales/ar-SA.json' with { type: "json" };
|
|
1
|
+
import enUS from './locales/en-US.js';
|
|
12
2
|
import { getBaseLanguage } from '../utils/languageUtils.js';
|
|
13
|
-
const DICTS = {
|
|
14
|
-
'en': enUS,
|
|
15
|
-
'en-US': enUS,
|
|
16
|
-
'es': esES,
|
|
17
|
-
'es-ES': esES,
|
|
18
|
-
'ca': caES,
|
|
19
|
-
'ca-ES': caES,
|
|
20
|
-
'fr': frFR,
|
|
21
|
-
'fr-FR': frFR,
|
|
22
|
-
'de': deDE,
|
|
23
|
-
'de-DE': deDE,
|
|
24
|
-
'it': itIT,
|
|
25
|
-
'it-IT': itIT,
|
|
26
|
-
'pt': ptPT,
|
|
27
|
-
'pt-PT': ptPT,
|
|
28
|
-
'ja': jaJP,
|
|
29
|
-
'ja-JP': jaJP,
|
|
30
|
-
'ko': koKR,
|
|
31
|
-
'ko-KR': koKR,
|
|
32
|
-
'zh': zhCN,
|
|
33
|
-
'zh-CN': zhCN,
|
|
34
|
-
'ar': arSA,
|
|
35
|
-
'ar-SA': arSA,
|
|
36
|
-
};
|
|
37
3
|
const FALLBACK = 'en-US';
|
|
38
4
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* translation dictionary is shipped per base language. Resolution order:
|
|
43
|
-
* 1. Exact dictionary for the tag (e.g. `es-ES`).
|
|
44
|
-
* 2. Dictionary for the base subtag (e.g. `es-MX` → `es`).
|
|
45
|
-
* 3. The English fallback.
|
|
5
|
+
* Every dictionary but English loads on demand: an app ships only the languages
|
|
6
|
+
* its people actually use (~200 KB of the ~285 KB total is non-English). English
|
|
7
|
+
* is the fallback for every missing key, so it is always present.
|
|
46
8
|
*/
|
|
47
|
-
|
|
9
|
+
const LOADERS = {
|
|
10
|
+
'es-ES': () => import('./locales/es-ES.js'),
|
|
11
|
+
'ca-ES': () => import('./locales/ca-ES.js'),
|
|
12
|
+
'fr-FR': () => import('./locales/fr-FR.js'),
|
|
13
|
+
'de-DE': () => import('./locales/de-DE.js'),
|
|
14
|
+
'it-IT': () => import('./locales/it-IT.js'),
|
|
15
|
+
'pt-PT': () => import('./locales/pt-PT.js'),
|
|
16
|
+
'ja-JP': () => import('./locales/ja-JP.js'),
|
|
17
|
+
'ko-KR': () => import('./locales/ko-KR.js'),
|
|
18
|
+
'zh-CN': () => import('./locales/zh-CN.js'),
|
|
19
|
+
'ar-SA': () => import('./locales/ar-SA.js'),
|
|
20
|
+
};
|
|
21
|
+
/** Base subtag → the dictionary that serves it. */
|
|
22
|
+
const ALIASES = {
|
|
23
|
+
en: 'en-US', es: 'es-ES', ca: 'ca-ES', fr: 'fr-FR', de: 'de-DE', it: 'it-IT',
|
|
24
|
+
pt: 'pt-PT', ja: 'ja-JP', ko: 'ko-KR', zh: 'zh-CN', ar: 'ar-SA',
|
|
25
|
+
};
|
|
26
|
+
const DICTS = { [FALLBACK]: enUS };
|
|
27
|
+
const pending = new Map();
|
|
28
|
+
const listeners = new Set();
|
|
29
|
+
let version = 0;
|
|
30
|
+
/** The dictionary key serving `locale`, whether or not it is loaded yet. */
|
|
31
|
+
function dictionaryFor(locale) {
|
|
48
32
|
if (locale) {
|
|
49
|
-
if (
|
|
33
|
+
if (locale === FALLBACK || LOADERS[locale])
|
|
50
34
|
return locale;
|
|
51
|
-
const base = getBaseLanguage(locale);
|
|
52
|
-
if (
|
|
35
|
+
const base = ALIASES[getBaseLanguage(locale)];
|
|
36
|
+
if (base)
|
|
53
37
|
return base;
|
|
54
38
|
}
|
|
55
39
|
return FALLBACK;
|
|
56
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Load the dictionary serving `locale`. Resolves `true` once it is available
|
|
43
|
+
* (immediately for English or one already loaded), `false` if it failed to load
|
|
44
|
+
* — `translate` then keeps serving English.
|
|
45
|
+
*/
|
|
46
|
+
export function loadLocale(locale) {
|
|
47
|
+
const key = dictionaryFor(locale);
|
|
48
|
+
if (DICTS[key])
|
|
49
|
+
return Promise.resolve(true);
|
|
50
|
+
let load = pending.get(key);
|
|
51
|
+
if (!load) {
|
|
52
|
+
load = LOADERS[key]()
|
|
53
|
+
.then((mod) => {
|
|
54
|
+
DICTS[key] = mod.default;
|
|
55
|
+
version++;
|
|
56
|
+
for (const listener of listeners)
|
|
57
|
+
listener();
|
|
58
|
+
return true;
|
|
59
|
+
})
|
|
60
|
+
.catch(() => false)
|
|
61
|
+
.finally(() => pending.delete(key));
|
|
62
|
+
pending.set(key, load);
|
|
63
|
+
}
|
|
64
|
+
return load;
|
|
65
|
+
}
|
|
66
|
+
/** Whether the dictionary serving `locale` is loaded (English always is). */
|
|
67
|
+
export function isLocaleLoaded(locale) {
|
|
68
|
+
return Boolean(DICTS[dictionaryFor(locale)]);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Subscribe to dictionaries finishing loading (for re-rendering once a
|
|
72
|
+
* language arrives). Returns the unsubscribe. Pair with {@link getLocalesVersion}
|
|
73
|
+
* in `useSyncExternalStore`.
|
|
74
|
+
*/
|
|
75
|
+
export function subscribeLocales(listener) {
|
|
76
|
+
listeners.add(listener);
|
|
77
|
+
return () => listeners.delete(listener);
|
|
78
|
+
}
|
|
79
|
+
/** Bumps each time a dictionary loads. */
|
|
80
|
+
export function getLocalesVersion() {
|
|
81
|
+
return version;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Resolve a locale tag to the LOADED dictionary that should serve it.
|
|
85
|
+
*
|
|
86
|
+
* Account locales are full BCP-47 tags (e.g. `es-MX`, `pt-BR`), but a
|
|
87
|
+
* dictionary is shipped per language: the exact tag, else its base subtag,
|
|
88
|
+
* else English. A dictionary not loaded yet serves English for now and starts
|
|
89
|
+
* loading — `subscribeLocales` announces its arrival.
|
|
90
|
+
*/
|
|
91
|
+
function resolveLang(locale) {
|
|
92
|
+
const key = dictionaryFor(locale);
|
|
93
|
+
if (DICTS[key])
|
|
94
|
+
return key;
|
|
95
|
+
void loadLocale(key);
|
|
96
|
+
return FALLBACK;
|
|
97
|
+
}
|
|
57
98
|
function getNested(obj, path) {
|
|
58
|
-
return path.split('.').reduce((acc, key) => (acc && acc[key] != null ? acc[key] : undefined), obj);
|
|
99
|
+
return path.split('.').reduce((acc, key) => (acc && typeof acc === 'object' && acc[key] != null ? acc[key] : undefined), obj);
|
|
59
100
|
}
|
|
60
101
|
export function translate(locale, key, vars) {
|
|
61
102
|
const lang = resolveLang(locale);
|
|
@@ -69,13 +110,13 @@ export function translate(locale, key, vars) {
|
|
|
69
110
|
}
|
|
70
111
|
if (typeof val !== 'string')
|
|
71
112
|
return key; // last resort: echo the key when truly absent everywhere
|
|
113
|
+
let text = val;
|
|
72
114
|
if (vars) {
|
|
73
|
-
Object.keys(vars)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
});
|
|
115
|
+
for (const k of Object.keys(vars)) {
|
|
116
|
+
text = text.split(`{{${k}}}`).join(String(vars[k]));
|
|
117
|
+
}
|
|
77
118
|
}
|
|
78
|
-
return
|
|
119
|
+
return text;
|
|
79
120
|
}
|
|
80
121
|
export function hasKey(locale, key) {
|
|
81
122
|
const lang = resolveLang(locale);
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
{
|
|
1
|
+
const dict = {
|
|
2
2
|
"signin": {
|
|
3
3
|
"title": "تسجيل الدخول",
|
|
4
4
|
"subtitle": "استخدم حسابك في Oxy",
|
|
5
5
|
"addAccountTitle": "إضافة حساب آخر",
|
|
6
6
|
"addAccountSubtitle": "تسجيل الدخول بحساب آخر",
|
|
7
|
-
"username": {
|
|
8
|
-
"label": "اسم المستخدم",
|
|
9
|
-
"placeholder": "yourname",
|
|
10
|
-
"required": "يرجى إدخال اسم المستخدم."
|
|
11
|
-
},
|
|
12
7
|
"actions": {
|
|
13
8
|
"continue": "متابعة",
|
|
14
9
|
"back": "رجوع"
|
|
@@ -23,16 +18,25 @@
|
|
|
23
18
|
"caption": "امسح باستخدام Commons لتسجيل الدخول",
|
|
24
19
|
"renew": "عرض رمز جديد"
|
|
25
20
|
},
|
|
26
|
-
"methods": {
|
|
27
|
-
"passkey": "تسجيل الدخول بمفتاح المرور"
|
|
28
|
-
},
|
|
29
21
|
"errors": {
|
|
30
22
|
"rateLimited": "محاولات كثيرة جدًا. حاول مرة أخرى بعد {{seconds}} ث.",
|
|
31
|
-
"
|
|
32
|
-
"
|
|
23
|
+
"invalidCredentials": "اسم المستخدم أو البريد الإلكتروني أو كلمة المرور غير صحيح.",
|
|
24
|
+
"codeInvalid": "الرمز غير صحيح أو انتهت صلاحيته.",
|
|
25
|
+
"requestExpired": "انتهت صلاحية تسجيل الدخول هذا. أرسل رسالة جديدة.",
|
|
26
|
+
"secondFactorInvalid": "الرمز غير صحيح. جرّب الرمز الحالي.",
|
|
27
|
+
"originNotAllowed": "تسجيل الدخول غير متاح هنا.",
|
|
28
|
+
"generic": "حدث خطأ ما. يُرجى المحاولة مرة أخرى.",
|
|
29
|
+
"notConfigured": "تسجيل الدخول غير متاح",
|
|
30
|
+
"notConfiguredDescription": "لم يُعدّ {{app}} لتسجيل الدخول بعد. تواصل مع مطوّر التطبيق.",
|
|
31
|
+
"failed": "تعذّر بدء تسجيل الدخول",
|
|
32
|
+
"failedDescription": "حدث خطأ ما. يُرجى المحاولة مرة أخرى."
|
|
33
33
|
},
|
|
34
34
|
"chooser": {
|
|
35
|
-
"subtitleToApp": "للمتابعة إلى {{app}}"
|
|
35
|
+
"subtitleToApp": "للمتابعة إلى {{app}}",
|
|
36
|
+
"title": "اختر حسابًا",
|
|
37
|
+
"subtitle": "تابع بأحد الحسابات أدناه، أو استخدم حسابًا آخر.",
|
|
38
|
+
"useAnother": "استخدم حسابًا آخر",
|
|
39
|
+
"continueAs": "المتابعة باسم {{name}}"
|
|
36
40
|
},
|
|
37
41
|
"terms": {
|
|
38
42
|
"before": "بالمتابعة، أنت توافق على",
|
|
@@ -42,15 +46,52 @@
|
|
|
42
46
|
},
|
|
43
47
|
"noAccount": "ليس لديك حساب؟",
|
|
44
48
|
"createAccount": "إنشاء حساب",
|
|
45
|
-
"
|
|
49
|
+
"identifier": {
|
|
50
|
+
"label": "البريد الإلكتروني أو اسم المستخدم",
|
|
51
|
+
"placeholder": "you@example.com",
|
|
52
|
+
"required": "أدخل بريدك الإلكتروني أو اسم المستخدم."
|
|
53
|
+
},
|
|
54
|
+
"checkEmail": {
|
|
55
|
+
"title": "تحقق من بريدك",
|
|
56
|
+
"description": "إذا كان هناك حساب يطابق {{identifier}}، فقد أرسلنا إليه رمزًا ورابطًا لتسجيل الدخول.",
|
|
57
|
+
"codeLabel": "الرمز",
|
|
58
|
+
"codeHint": "اكتب الرمز الوارد في الرسالة، أو افتح رابطها في هذا المتصفح.",
|
|
59
|
+
"resend": "أرسل رسالة جديدة",
|
|
60
|
+
"resendIn": "أرسل رسالة جديدة بعد {{seconds}} ث",
|
|
61
|
+
"resent": "أرسلنا رسالة جديدة.",
|
|
62
|
+
"retryLater": "أرسلنا عدة رسائل بالفعل. انتظر بضع دقائق ثم حاول مرة أخرى.",
|
|
63
|
+
"usePassword": "استخدم كلمة المرور بدلًا من ذلك",
|
|
64
|
+
"differentAccount": "استخدم حسابًا آخر"
|
|
65
|
+
},
|
|
66
|
+
"password": {
|
|
67
|
+
"title": "أدخل كلمة المرور",
|
|
68
|
+
"label": "كلمة المرور",
|
|
69
|
+
"required": "أدخل كلمة المرور.",
|
|
70
|
+
"forgot": "نسيتها؟ احصل على رمز عبر البريد"
|
|
71
|
+
},
|
|
72
|
+
"secondFactor": {
|
|
73
|
+
"title": "التحقق بخطوتين",
|
|
74
|
+
"description": "أدخل الرمز من تطبيق المصادقة.",
|
|
75
|
+
"backupDescription": "أدخل أحد رموزك الاحتياطية. يعمل كل رمز مرة واحدة فقط.",
|
|
76
|
+
"label": "رمز المصادقة",
|
|
77
|
+
"backupLabel": "رمز احتياطي",
|
|
78
|
+
"useBackup": "استخدم رمزًا احتياطيًا",
|
|
79
|
+
"useAuthenticator": "استخدم تطبيق المصادقة"
|
|
80
|
+
},
|
|
81
|
+
"link": {
|
|
82
|
+
"approvedTitle": "سجّلت الدخول",
|
|
83
|
+
"approvedDescription": "ارجع إلى التطبيق الذي طلبت منه تسجيل الدخول: سيتابع تلقائيًا. يمكنك إغلاق علامة التبويب هذه.",
|
|
84
|
+
"otherDeviceTitle": "افتح الرابط في المتصفح نفسه",
|
|
85
|
+
"otherDeviceDescription": "يعمل هذا الرابط فقط في المتصفح الذي طلبت منه تسجيل الدخول. افتحه هناك، أو اكتب الرمز الوارد في الرسالة داخل التطبيق.",
|
|
86
|
+
"invalidTitle": "لا يمكن استخدام هذا الرابط",
|
|
87
|
+
"invalidDescription": "انتهت صلاحيته أو استُخدم من قبل. اطلب رسالة جديدة من التطبيق، أو اكتب الرمز الوارد في أحدث رسالة."
|
|
88
|
+
}
|
|
46
89
|
},
|
|
47
90
|
"signup": {
|
|
48
91
|
"title": "أنشئ حسابك",
|
|
49
|
-
"subtitle": "
|
|
50
|
-
"createInCommons": "
|
|
51
|
-
"createAccount": "إنشاء حساب",
|
|
92
|
+
"subtitle": "اختر اسم المستخدم. ثم نؤكد بريدك الإلكتروني.",
|
|
93
|
+
"createInCommons": "أنشئها في Commons بدلًا من ذلك",
|
|
52
94
|
"backToSignInLink": "لديك حساب بالفعل؟ سجّل الدخول",
|
|
53
|
-
"webSubtitle": "بلا كلمة مرور: ينشئ جهازك مفتاح مرور، ويعيدك بريد الاسترداد إذا فقدته.",
|
|
54
95
|
"username": {
|
|
55
96
|
"label": "اسم المستخدم",
|
|
56
97
|
"placeholder": "yourname",
|
|
@@ -58,25 +99,20 @@
|
|
|
58
99
|
"taken": "اسم المستخدم هذا مستخدم بالفعل."
|
|
59
100
|
},
|
|
60
101
|
"email": {
|
|
61
|
-
"title": "
|
|
62
|
-
"subtitle": "
|
|
102
|
+
"title": "ما بريدك الإلكتروني؟",
|
|
103
|
+
"subtitle": "تسجّل الدخول به: نرسل إليك رمزًا في كل مرة. لا يراه أحد غيرك.",
|
|
63
104
|
"label": "البريد الإلكتروني",
|
|
64
105
|
"placeholder": "you@example.com",
|
|
65
106
|
"invalid": "أدخل بريدًا إلكترونيًا صالحًا."
|
|
66
107
|
},
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
"subtitle": "تسجّل الدخول به: ببصمتك أو وجهك أو قفل الشاشة. لا شيء تتذكره.",
|
|
70
|
-
"action": "إنشاء مفتاح مرور"
|
|
71
|
-
},
|
|
72
|
-
"commonsInstead": "تريد الاحتفاظ بمفتاحك بنفسك؟ استخدم Commons"
|
|
108
|
+
"commonsSubtitle": "أو أنشئ هويتك في Commons واحتفظ بمفتاحك بنفسك.",
|
|
109
|
+
"laterNote": "يمكنك لاحقًا إضافة كلمة مرور أو تطبيق مصادقة من إعدادات الأمان في حسابك."
|
|
73
110
|
},
|
|
74
111
|
"accountSwitcher": {
|
|
75
112
|
"loading": "جارٍ تحميل الحسابات...",
|
|
76
113
|
"qrHeadline": "سجّل الدخول بهوية Oxy الخاصة بك",
|
|
77
114
|
"signInWithOxy": "تسجيل الدخول باستخدام Oxy",
|
|
78
115
|
"signUpWithOxy": "التسجيل باستخدام Oxy",
|
|
79
|
-
"useIdentityOnDevice": "لا تملك Commons؟ استخدم مفتاح مرور على هذا الجهاز بدلاً من ذلك",
|
|
80
116
|
"getCommons": "احصل على Commons",
|
|
81
117
|
"commonsNotInstalled": "لا تملك Commons؟ احصل على التطبيق لتسجيل الدخول بمعرّف Oxy الخاص بك.",
|
|
82
118
|
"showQrAnyway": "لدي Commons على جهاز آخر",
|
|
@@ -246,26 +282,9 @@
|
|
|
246
282
|
"privacy": "سياسة الخصوصية",
|
|
247
283
|
"terms": "شروط الخدمة"
|
|
248
284
|
},
|
|
249
|
-
"recover": {
|
|
250
|
-
"title": "استرد حسابك",
|
|
251
|
-
"subtitle": "أدخل اسم المستخدم أو بريد الاسترداد. سنرسل رمزًا إلى بريد الاسترداد الخاص بالحساب.",
|
|
252
|
-
"identifier": {
|
|
253
|
-
"label": "اسم المستخدم أو البريد",
|
|
254
|
-
"placeholder": "yourname",
|
|
255
|
-
"required": "أدخل اسم المستخدم أو البريد."
|
|
256
|
-
},
|
|
257
|
-
"commonsNote": "هل يستخدم حسابك Commons؟ استرده في Commons بعبارة الاسترداد.",
|
|
258
|
-
"passkey": {
|
|
259
|
-
"title": "أضف مفتاح مرور جديدًا",
|
|
260
|
-
"subtitle": "لـ @{{username}}. أزل مفاتيح المرور المفقودة لاحقًا من إعدادات أمان حسابك.",
|
|
261
|
-
"action": "إنشاء مفتاح مرور"
|
|
262
|
-
},
|
|
263
|
-
"backToSignIn": "العودة إلى تسجيل الدخول"
|
|
264
|
-
},
|
|
265
285
|
"emailCode": {
|
|
266
286
|
"title": "تحقق من بريدك",
|
|
267
287
|
"sentTo": "أرسلنا رمزًا من 6 أرقام إلى {{email}}.",
|
|
268
|
-
"sentIfAccount": "إذا كان لهذا الحساب بريد استرداد، فقد أرسلنا إليه رمزًا من 6 أرقام.",
|
|
269
288
|
"label": "الرمز",
|
|
270
289
|
"resend": "أرسل رمزًا جديدًا",
|
|
271
290
|
"resent": "أرسلنا رمزًا جديدًا.",
|
|
@@ -279,17 +298,20 @@
|
|
|
279
298
|
}
|
|
280
299
|
},
|
|
281
300
|
"deleteAccount": {
|
|
282
|
-
"
|
|
283
|
-
"subtitle": "
|
|
284
|
-
"action": "
|
|
301
|
+
"keyless": {
|
|
302
|
+
"subtitle": "سيُحذف @{{username}} وكل ما فيه نهائيًا. اكتب اسم المستخدم، ثم أكّد برمز نرسله إلى بريدك.",
|
|
303
|
+
"action": "حذف الحساب",
|
|
285
304
|
"done": "حُذف حسابك.",
|
|
286
|
-
"
|
|
287
|
-
"
|
|
305
|
+
"doneDescription": "سُجّل خروجك.",
|
|
306
|
+
"keyed": "يستخدم هذا الحساب Commons: احذفه في Oxy Commons من الإعدادات > حذف الحساب، بمفتاحه."
|
|
307
|
+
},
|
|
308
|
+
"handoff": {
|
|
309
|
+
"elsewhereMessage": "حذف حسابك يتطلب مفتاح هويتك، وهو غير موجود على هذا الجهاز. افتح Oxy Commons على الجهاز الذي يحتفظ به وانتقل إلى الإعدادات > حذف الحساب."
|
|
288
310
|
}
|
|
289
311
|
},
|
|
290
312
|
"linkCommons": {
|
|
291
313
|
"title": "اربط Commons",
|
|
292
|
-
"subtitle": "احتفظ بمفتاحك: اربط Commons ليصبح هذا الحساب لك وحدك. يُحذف
|
|
314
|
+
"subtitle": "احتفظ بمفتاحك: اربط Commons ليصبح هذا الحساب لك وحدك. يُحذف بريده الإلكتروني، وتصبح عبارة الاسترداد في Commons طريقك للعودة.",
|
|
293
315
|
"scan": "على هاتفك، افتح Commons واختر «لدي حساب Oxy على الويب» ثم امسح هذا الرمز.",
|
|
294
316
|
"waiting": "بانتظار Commons…",
|
|
295
317
|
"compareTitle": "تحقق من الرمز",
|
|
@@ -297,10 +319,68 @@
|
|
|
297
319
|
"confirm": "نعم، اربط Commons",
|
|
298
320
|
"cancel": "إلغاء",
|
|
299
321
|
"doneTitle": "تم ربط Commons",
|
|
300
|
-
"done": "أصبح هذا الحساب ذاتي الحفظ. حُذف
|
|
322
|
+
"done": "أصبح هذا الحساب ذاتي الحفظ. حُذف بريده الإلكتروني: عبارة الاسترداد في Commons هي طريقك للعودة.",
|
|
301
323
|
"already": "يستخدم هذا الحساب Commons بالفعل.",
|
|
302
324
|
"expired": "انتهت صلاحية هذا الرمز.",
|
|
303
325
|
"renew": "اعرض رمزًا جديدًا",
|
|
304
|
-
"failed": "تعذّر ربط Commons. حاول مجددًا."
|
|
326
|
+
"failed": "تعذّر ربط Commons. حاول مجددًا.",
|
|
327
|
+
"confirmTitle": "أكّد الربط",
|
|
328
|
+
"confirmDescription": "للإنهاء، أكّد أنك أنت برمز نرسله إلى بريدك.",
|
|
329
|
+
"row": "احتفظ بمفتاحك بنفسك مع Commons"
|
|
330
|
+
},
|
|
331
|
+
"reauth": {
|
|
332
|
+
"title": "أكّد أنك أنت",
|
|
333
|
+
"emailDescription": "سنرسل رمزًا إلى بريدك لتأكيد هذا التغيير.",
|
|
334
|
+
"sendCode": "أرسل الرمز",
|
|
335
|
+
"codeSent": "أرسلنا رمزًا من 6 أرقام إلى بريدك.",
|
|
336
|
+
"codeLabel": "الرمز من الرسالة",
|
|
337
|
+
"passwordLabel": "كلمة المرور الحالية",
|
|
338
|
+
"usePassword": "استخدم كلمة المرور بدلًا من ذلك",
|
|
339
|
+
"useEmail": "احصل على رمز عبر البريد بدلًا من ذلك",
|
|
340
|
+
"totpLabel": "رمز المصادقة أو الرمز الاحتياطي",
|
|
341
|
+
"errors": {
|
|
342
|
+
"invalid": "لم ينجح ذلك. تحقق مما كتبته وحاول مرة أخرى.",
|
|
343
|
+
"totpRequired": "أدخل أيضًا الرمز من تطبيق المصادقة."
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
"signInSecurity": {
|
|
347
|
+
"password": {
|
|
348
|
+
"title": "كلمة المرور",
|
|
349
|
+
"setTitle": "عيّن كلمة مرور",
|
|
350
|
+
"changeTitle": "غيّر كلمة المرور",
|
|
351
|
+
"description": "سجّل الدخول بكلمة المرور بدلًا من رمز عبر البريد. استخدم {{min}} أحرف على الأقل.",
|
|
352
|
+
"newLabel": "كلمة المرور الجديدة",
|
|
353
|
+
"repeatLabel": "كرّر كلمة المرور",
|
|
354
|
+
"tooShort": "استخدم {{min}} أحرف على الأقل.",
|
|
355
|
+
"mismatch": "كلمتا المرور غير متطابقتين.",
|
|
356
|
+
"signOutOthers": "سجّل الخروج من كل مكان آخر",
|
|
357
|
+
"save": "احفظ كلمة المرور",
|
|
358
|
+
"saved": "حُفظت كلمة المرور.",
|
|
359
|
+
"row": "اختياري: سجّل الدخول بكلمة مرور"
|
|
360
|
+
},
|
|
361
|
+
"totp": {
|
|
362
|
+
"title": "تطبيق المصادقة",
|
|
363
|
+
"description": "بعد رمز البريد أو كلمة المرور، يطلب Oxy أيضًا رمزًا من تطبيق مثل Google Authenticator أو 1Password.",
|
|
364
|
+
"setUp": "إعداد",
|
|
365
|
+
"scan": "امسح رمز QR هذا بتطبيق المصادقة، أو أدخل مفتاح الإعداد.",
|
|
366
|
+
"secretLabel": "مفتاح الإعداد",
|
|
367
|
+
"codeLabel": "الرمز من التطبيق",
|
|
368
|
+
"enable": "تشغيل",
|
|
369
|
+
"enabled": "تطبيق المصادقة مفعّل.",
|
|
370
|
+
"disable": "أوقف تطبيق المصادقة",
|
|
371
|
+
"disabled": "تطبيق المصادقة متوقف.",
|
|
372
|
+
"on": "مفعّل",
|
|
373
|
+
"off": "متوقف",
|
|
374
|
+
"backupTitle": "احفظ رموزك الاحتياطية",
|
|
375
|
+
"backupDescription": "إذا فقدت هاتفك، فكل رمز يتيح لك تسجيل الدخول مرة واحدة. احفظها في مكان آمن: لن تُعرض مرة أخرى.",
|
|
376
|
+
"copy": "انسخ الرموز",
|
|
377
|
+
"copied": "نُسخت الرموز الاحتياطية.",
|
|
378
|
+
"savedThem": "حفظتها",
|
|
379
|
+
"regenerate": "احصل على رموز احتياطية جديدة",
|
|
380
|
+
"regenerateDescription": "ستتوقف رموزك الاحتياطية القديمة عن العمل.",
|
|
381
|
+
"remaining": "تبقّى {{count}} من الرموز الاحتياطية",
|
|
382
|
+
"row": "خطوة ثانية عند تسجيل الدخول"
|
|
383
|
+
}
|
|
305
384
|
}
|
|
306
|
-
}
|
|
385
|
+
};
|
|
386
|
+
export default dict;
|