@oxy.so/core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE +16 -0
- package/README.md +221 -0
- package/dist/cjs/.tsbuildinfo +1 -0
- package/dist/cjs/HttpService.js +1270 -0
- package/dist/cjs/OxyServices.base.js +390 -0
- package/dist/cjs/OxyServices.errors.js +95 -0
- package/dist/cjs/OxyServices.js +72 -0
- package/dist/cjs/boot/sessionColdBoot.js +395 -0
- package/dist/cjs/constants/version.js +16 -0
- package/dist/cjs/crypto/aead.js +79 -0
- package/dist/cjs/crypto/ecdh.js +35 -0
- package/dist/cjs/crypto/identityMarker.js +255 -0
- package/dist/cjs/crypto/kdf.js +39 -0
- package/dist/cjs/crypto/keyManager.js +2234 -0
- package/dist/cjs/crypto/polyfill.js +131 -0
- package/dist/cjs/crypto/recoveryPhrase.js +242 -0
- package/dist/cjs/crypto/signatureService.js +273 -0
- package/dist/cjs/i18n/accountCategoryLabels.js +44 -0
- package/dist/cjs/i18n/accountRoleLabels.js +27 -0
- package/dist/cjs/i18n/index.js +90 -0
- package/dist/cjs/i18n/locales/ar-SA.json +282 -0
- package/dist/cjs/i18n/locales/ca-ES.json +282 -0
- package/dist/cjs/i18n/locales/de-DE.json +282 -0
- package/dist/cjs/i18n/locales/en-US.json +2161 -0
- package/dist/cjs/i18n/locales/es-ES.json +2161 -0
- package/dist/cjs/i18n/locales/fr-FR.json +282 -0
- package/dist/cjs/i18n/locales/it-IT.json +282 -0
- package/dist/cjs/i18n/locales/ja-JP.json +282 -0
- package/dist/cjs/i18n/locales/ko-KR.json +282 -0
- package/dist/cjs/i18n/locales/locales/ar-SA.json +282 -0
- package/dist/cjs/i18n/locales/locales/ca-ES.json +282 -0
- package/dist/cjs/i18n/locales/locales/de-DE.json +282 -0
- package/dist/cjs/i18n/locales/locales/en-US.json +2161 -0
- package/dist/cjs/i18n/locales/locales/es-ES.json +2161 -0
- package/dist/cjs/i18n/locales/locales/fr-FR.json +282 -0
- package/dist/cjs/i18n/locales/locales/it-IT.json +282 -0
- package/dist/cjs/i18n/locales/locales/ja-JP.json +282 -0
- package/dist/cjs/i18n/locales/locales/ko-KR.json +282 -0
- package/dist/cjs/i18n/locales/locales/pt-PT.json +282 -0
- package/dist/cjs/i18n/locales/locales/zh-CN.json +282 -0
- package/dist/cjs/i18n/locales/pt-PT.json +282 -0
- package/dist/cjs/i18n/locales/zh-CN.json +282 -0
- package/dist/cjs/i18n/reputationCategoryLabels.js +20 -0
- package/dist/cjs/i18n/trustTierLabels.js +19 -0
- package/dist/cjs/index.js +498 -0
- package/dist/cjs/inference/OxyInferenceClient.js +544 -0
- package/dist/cjs/logger/index.js +149 -0
- package/dist/cjs/mixins/OxyServices.accounts.js +555 -0
- package/dist/cjs/mixins/OxyServices.analytics.js +49 -0
- package/dist/cjs/mixins/OxyServices.appData.js +108 -0
- package/dist/cjs/mixins/OxyServices.assets.js +764 -0
- package/dist/cjs/mixins/OxyServices.auth.js +1254 -0
- package/dist/cjs/mixins/OxyServices.chains.js +73 -0
- package/dist/cjs/mixins/OxyServices.civic.js +611 -0
- package/dist/cjs/mixins/OxyServices.connectedApps.js +78 -0
- package/dist/cjs/mixins/OxyServices.contacts.js +50 -0
- package/dist/cjs/mixins/OxyServices.deviceBoot.js +191 -0
- package/dist/cjs/mixins/OxyServices.deviceTransfer.js +314 -0
- package/dist/cjs/mixins/OxyServices.devices.js +116 -0
- package/dist/cjs/mixins/OxyServices.features.js +335 -0
- package/dist/cjs/mixins/OxyServices.followGraph.js +221 -0
- package/dist/cjs/mixins/OxyServices.identity.js +461 -0
- package/dist/cjs/mixins/OxyServices.identityBackup.js +172 -0
- package/dist/cjs/mixins/OxyServices.inference.js +59 -0
- package/dist/cjs/mixins/OxyServices.language.js +125 -0
- package/dist/cjs/mixins/OxyServices.links.js +72 -0
- package/dist/cjs/mixins/OxyServices.location.js +43 -0
- package/dist/cjs/mixins/OxyServices.nodes.js +175 -0
- package/dist/cjs/mixins/OxyServices.notifications.js +63 -0
- package/dist/cjs/mixins/OxyServices.payment.js +158 -0
- package/dist/cjs/mixins/OxyServices.privacy.js +199 -0
- package/dist/cjs/mixins/OxyServices.reputation.js +289 -0
- package/dist/cjs/mixins/OxyServices.security.js +89 -0
- package/dist/cjs/mixins/OxyServices.store.js +266 -0
- package/dist/cjs/mixins/OxyServices.topics.js +137 -0
- package/dist/cjs/mixins/OxyServices.user.js +902 -0
- package/dist/cjs/mixins/OxyServices.utility.js +1098 -0
- package/dist/cjs/mixins/index.js +135 -0
- package/dist/cjs/mixins/mixinHelpers.js +53 -0
- package/dist/cjs/models/Topic.js +16 -0
- package/dist/cjs/models/interfaces.js +20 -0
- package/dist/cjs/models/session.js +2 -0
- package/dist/cjs/server/auth.js +167 -0
- package/dist/cjs/server/capabilityTicket.js +192 -0
- package/dist/cjs/server/cors.js +225 -0
- package/dist/cjs/server/index.js +97 -0
- package/dist/cjs/server/rateLimit.js +207 -0
- package/dist/cjs/server/safeFetch.js +458 -0
- package/dist/cjs/server/securityHeaders.js +377 -0
- package/dist/cjs/server/userInvalidation.js +156 -0
- package/dist/cjs/server/verifySecret.js +50 -0
- package/dist/cjs/session/SessionClient.js +865 -0
- package/dist/cjs/session/accountDelegationAccess.js +48 -0
- package/dist/cjs/session/accountDialogController.js +1131 -0
- package/dist/cjs/session/accountSwitchTargets.js +81 -0
- package/dist/cjs/session/authStateStore.js +404 -0
- package/dist/cjs/session/createSessionClient.js +32 -0
- package/dist/cjs/session/deviceDirectory.js +143 -0
- package/dist/cjs/session/deviceSwitcherRows.js +76 -0
- package/dist/cjs/session/identityPin.js +256 -0
- package/dist/cjs/session/identitySession.js +135 -0
- package/dist/cjs/session/projectSessionState.js +121 -0
- package/dist/cjs/session/refresh.js +398 -0
- package/dist/cjs/session/sessionClientHost.js +34 -0
- package/dist/cjs/session/sharedDeviceCredential.js +247 -0
- package/dist/cjs/session/socketLoader.js +55 -0
- package/dist/cjs/shared/utils/colorUtils.js +153 -0
- package/dist/cjs/shared/utils/errorUtils.js +183 -0
- package/dist/cjs/shared/utils/index.js +49 -0
- package/dist/cjs/shared/utils/networkUtils.js +183 -0
- package/dist/cjs/shared/utils/themeUtils.js +106 -0
- package/dist/cjs/utils/accountCacheSweep.js +80 -0
- package/dist/cjs/utils/accountUtils.js +140 -0
- package/dist/cjs/utils/activityId.js +6 -0
- package/dist/cjs/utils/apiUtils.js +91 -0
- package/dist/cjs/utils/asyncUtils.js +222 -0
- package/dist/cjs/utils/authHelpers.js +120 -0
- package/dist/cjs/utils/authWebUrl.js +19 -0
- package/dist/cjs/utils/avatarUtils.js +29 -0
- package/dist/cjs/utils/cache.js +235 -0
- package/dist/cjs/utils/cacheKey.js +85 -0
- package/dist/cjs/utils/coldBoot.js +122 -0
- package/dist/cjs/utils/commonsApproval.js +31 -0
- package/dist/cjs/utils/commonsDelivery.js +59 -0
- package/dist/cjs/utils/deviceManager.js +174 -0
- package/dist/cjs/utils/displayNamePolicyRanges.generated.js +60 -0
- package/dist/cjs/utils/edgeRegion.js +6 -0
- package/dist/cjs/utils/errorUtils.js +243 -0
- package/dist/cjs/utils/identityCacheSweep.js +97 -0
- package/dist/cjs/utils/languageUtils.js +224 -0
- package/dist/cjs/utils/oauthPkce.js +311 -0
- package/dist/cjs/utils/officialOrigins.js +64 -0
- package/dist/cjs/utils/oxyServiceEnvironment.js +19 -0
- package/dist/cjs/utils/platform.js +119 -0
- package/dist/cjs/utils/profileLinks.js +63 -0
- package/dist/cjs/utils/redactUrl.js +29 -0
- package/dist/cjs/utils/registrableApex.js +45 -0
- package/dist/cjs/utils/requestUtils.js +209 -0
- package/dist/cjs/utils/sessionUtils.js +181 -0
- package/dist/cjs/utils/textNormalization.js +158 -0
- package/dist/cjs/utils/userHandle.js +37 -0
- package/dist/cjs/utils/userIdentity.js +50 -0
- package/dist/cjs/utils/validationUtils.js +370 -0
- package/dist/cjs/utils/webauthnOrigin.js +51 -0
- package/dist/esm/.tsbuildinfo +1 -0
- package/dist/esm/HttpService.js +1266 -0
- package/dist/esm/OxyServices.base.js +386 -0
- package/dist/esm/OxyServices.errors.js +88 -0
- package/dist/esm/OxyServices.js +66 -0
- package/dist/esm/boot/sessionColdBoot.js +392 -0
- package/dist/esm/constants/version.js +13 -0
- package/dist/esm/crypto/aead.js +74 -0
- package/dist/esm/crypto/ecdh.js +32 -0
- package/dist/esm/crypto/identityMarker.js +248 -0
- package/dist/esm/crypto/kdf.js +36 -0
- package/dist/esm/crypto/keyManager.js +2227 -0
- package/dist/esm/crypto/polyfill.js +129 -0
- package/dist/esm/crypto/recoveryPhrase.js +238 -0
- package/dist/esm/crypto/signatureService.js +269 -0
- package/dist/esm/i18n/accountCategoryLabels.js +37 -0
- package/dist/esm/i18n/accountRoleLabels.js +20 -0
- package/dist/esm/i18n/index.js +83 -0
- package/dist/esm/i18n/locales/ar-SA.json +282 -0
- package/dist/esm/i18n/locales/ca-ES.json +282 -0
- package/dist/esm/i18n/locales/de-DE.json +282 -0
- package/dist/esm/i18n/locales/en-US.json +2161 -0
- package/dist/esm/i18n/locales/es-ES.json +2161 -0
- package/dist/esm/i18n/locales/fr-FR.json +282 -0
- package/dist/esm/i18n/locales/it-IT.json +282 -0
- package/dist/esm/i18n/locales/ja-JP.json +282 -0
- package/dist/esm/i18n/locales/ko-KR.json +282 -0
- package/dist/esm/i18n/locales/locales/ar-SA.json +282 -0
- package/dist/esm/i18n/locales/locales/ca-ES.json +282 -0
- package/dist/esm/i18n/locales/locales/de-DE.json +282 -0
- package/dist/esm/i18n/locales/locales/en-US.json +2161 -0
- package/dist/esm/i18n/locales/locales/es-ES.json +2161 -0
- package/dist/esm/i18n/locales/locales/fr-FR.json +282 -0
- package/dist/esm/i18n/locales/locales/it-IT.json +282 -0
- package/dist/esm/i18n/locales/locales/ja-JP.json +282 -0
- package/dist/esm/i18n/locales/locales/ko-KR.json +282 -0
- package/dist/esm/i18n/locales/locales/pt-PT.json +282 -0
- package/dist/esm/i18n/locales/locales/zh-CN.json +282 -0
- package/dist/esm/i18n/locales/pt-PT.json +282 -0
- package/dist/esm/i18n/locales/zh-CN.json +282 -0
- package/dist/esm/i18n/reputationCategoryLabels.js +13 -0
- package/dist/esm/i18n/trustTierLabels.js +12 -0
- package/dist/esm/index.js +254 -0
- package/dist/esm/inference/OxyInferenceClient.js +538 -0
- package/dist/esm/logger/index.js +140 -0
- package/dist/esm/mixins/OxyServices.accounts.js +543 -0
- package/dist/esm/mixins/OxyServices.analytics.js +46 -0
- package/dist/esm/mixins/OxyServices.appData.js +103 -0
- package/dist/esm/mixins/OxyServices.assets.js +761 -0
- package/dist/esm/mixins/OxyServices.auth.js +1247 -0
- package/dist/esm/mixins/OxyServices.chains.js +70 -0
- package/dist/esm/mixins/OxyServices.civic.js +605 -0
- package/dist/esm/mixins/OxyServices.connectedApps.js +75 -0
- package/dist/esm/mixins/OxyServices.contacts.js +47 -0
- package/dist/esm/mixins/OxyServices.deviceBoot.js +186 -0
- package/dist/esm/mixins/OxyServices.deviceTransfer.js +311 -0
- package/dist/esm/mixins/OxyServices.devices.js +113 -0
- package/dist/esm/mixins/OxyServices.features.js +332 -0
- package/dist/esm/mixins/OxyServices.followGraph.js +218 -0
- package/dist/esm/mixins/OxyServices.identity.js +457 -0
- package/dist/esm/mixins/OxyServices.identityBackup.js +169 -0
- package/dist/esm/mixins/OxyServices.inference.js +56 -0
- package/dist/esm/mixins/OxyServices.language.js +122 -0
- package/dist/esm/mixins/OxyServices.links.js +69 -0
- package/dist/esm/mixins/OxyServices.location.js +40 -0
- package/dist/esm/mixins/OxyServices.nodes.js +172 -0
- package/dist/esm/mixins/OxyServices.notifications.js +60 -0
- package/dist/esm/mixins/OxyServices.payment.js +155 -0
- package/dist/esm/mixins/OxyServices.privacy.js +196 -0
- package/dist/esm/mixins/OxyServices.reputation.js +286 -0
- package/dist/esm/mixins/OxyServices.security.js +86 -0
- package/dist/esm/mixins/OxyServices.store.js +263 -0
- package/dist/esm/mixins/OxyServices.topics.js +134 -0
- package/dist/esm/mixins/OxyServices.user.js +899 -0
- package/dist/esm/mixins/OxyServices.utility.js +1095 -0
- package/dist/esm/mixins/index.js +132 -0
- package/dist/esm/mixins/mixinHelpers.js +48 -0
- package/dist/esm/models/Topic.js +13 -0
- package/dist/esm/models/interfaces.js +17 -0
- package/dist/esm/models/session.js +1 -0
- package/dist/esm/server/auth.js +154 -0
- package/dist/esm/server/capabilityTicket.js +183 -0
- package/dist/esm/server/cors.js +220 -0
- package/dist/esm/server/index.js +47 -0
- package/dist/esm/server/rateLimit.js +201 -0
- package/dist/esm/server/safeFetch.js +447 -0
- package/dist/esm/server/securityHeaders.js +364 -0
- package/dist/esm/server/userInvalidation.js +152 -0
- package/dist/esm/server/verifySecret.js +47 -0
- package/dist/esm/session/SessionClient.js +861 -0
- package/dist/esm/session/accountDelegationAccess.js +45 -0
- package/dist/esm/session/accountDialogController.js +1126 -0
- package/dist/esm/session/accountSwitchTargets.js +77 -0
- package/dist/esm/session/authStateStore.js +398 -0
- package/dist/esm/session/createSessionClient.js +29 -0
- package/dist/esm/session/deviceDirectory.js +135 -0
- package/dist/esm/session/deviceSwitcherRows.js +72 -0
- package/dist/esm/session/identityPin.js +249 -0
- package/dist/esm/session/identitySession.js +131 -0
- package/dist/esm/session/projectSessionState.js +114 -0
- package/dist/esm/session/refresh.js +390 -0
- package/dist/esm/session/sessionClientHost.js +31 -0
- package/dist/esm/session/sharedDeviceCredential.js +239 -0
- package/dist/esm/session/socketLoader.js +19 -0
- package/dist/esm/shared/utils/colorUtils.js +143 -0
- package/dist/esm/shared/utils/errorUtils.js +170 -0
- package/dist/esm/shared/utils/index.js +15 -0
- package/dist/esm/shared/utils/networkUtils.js +173 -0
- package/dist/esm/shared/utils/themeUtils.js +98 -0
- package/dist/esm/utils/accountCacheSweep.js +75 -0
- package/dist/esm/utils/accountUtils.js +131 -0
- package/dist/esm/utils/activityId.js +2 -0
- package/dist/esm/utils/apiUtils.js +84 -0
- package/dist/esm/utils/asyncUtils.js +207 -0
- package/dist/esm/utils/authHelpers.js +111 -0
- package/dist/esm/utils/authWebUrl.js +16 -0
- package/dist/esm/utils/avatarUtils.js +26 -0
- package/dist/esm/utils/cache.js +227 -0
- package/dist/esm/utils/cacheKey.js +80 -0
- package/dist/esm/utils/coldBoot.js +119 -0
- package/dist/esm/utils/commonsApproval.js +27 -0
- package/dist/esm/utils/commonsDelivery.js +54 -0
- package/dist/esm/utils/deviceManager.js +170 -0
- package/dist/esm/utils/displayNamePolicyRanges.generated.js +57 -0
- package/dist/esm/utils/edgeRegion.js +2 -0
- package/dist/esm/utils/errorUtils.js +232 -0
- package/dist/esm/utils/identityCacheSweep.js +92 -0
- package/dist/esm/utils/languageUtils.js +212 -0
- package/dist/esm/utils/oauthPkce.js +297 -0
- package/dist/esm/utils/officialOrigins.js +59 -0
- package/dist/esm/utils/oxyServiceEnvironment.js +16 -0
- package/dist/esm/utils/platform.js +110 -0
- package/dist/esm/utils/profileLinks.js +60 -0
- package/dist/esm/utils/redactUrl.js +26 -0
- package/dist/esm/utils/registrableApex.js +42 -0
- package/dist/esm/utils/requestUtils.js +203 -0
- package/dist/esm/utils/sessionUtils.js +171 -0
- package/dist/esm/utils/textNormalization.js +154 -0
- package/dist/esm/utils/userHandle.js +33 -0
- package/dist/esm/utils/userIdentity.js +45 -0
- package/dist/esm/utils/validationUtils.js +350 -0
- package/dist/esm/utils/webauthnOrigin.js +48 -0
- package/dist/types/.tsbuildinfo +1 -0
- package/dist/types/HttpService.d.ts +413 -0
- package/dist/types/OxyServices.base.d.ts +187 -0
- package/dist/types/OxyServices.d.ts +139 -0
- package/dist/types/OxyServices.errors.d.ts +84 -0
- package/dist/types/boot/sessionColdBoot.d.ts +140 -0
- package/dist/types/constants/version.d.ts +13 -0
- package/dist/types/crypto/aead.d.ts +56 -0
- package/dist/types/crypto/ecdh.d.ts +29 -0
- package/dist/types/crypto/identityMarker.d.ts +94 -0
- package/dist/types/crypto/kdf.d.ts +25 -0
- package/dist/types/crypto/keyManager.d.ts +582 -0
- package/dist/types/crypto/polyfill.d.ts +25 -0
- package/dist/types/crypto/recoveryPhrase.d.ts +173 -0
- package/dist/types/crypto/signatureService.d.ts +136 -0
- package/dist/types/i18n/accountCategoryLabels.d.ts +34 -0
- package/dist/types/i18n/accountRoleLabels.d.ts +10 -0
- package/dist/types/i18n/index.d.ts +3 -0
- package/dist/types/i18n/reputationCategoryLabels.d.ts +10 -0
- package/dist/types/i18n/trustTierLabels.d.ts +9 -0
- package/dist/types/index.d.ts +145 -0
- package/dist/types/inference/OxyInferenceClient.d.ts +342 -0
- package/dist/types/logger/index.d.ts +104 -0
- package/dist/types/mixins/OxyServices.accounts.d.ts +868 -0
- package/dist/types/mixins/OxyServices.analytics.d.ts +72 -0
- package/dist/types/mixins/OxyServices.appData.d.ts +108 -0
- package/dist/types/mixins/OxyServices.assets.d.ts +329 -0
- package/dist/types/mixins/OxyServices.auth.d.ts +908 -0
- package/dist/types/mixins/OxyServices.chains.d.ts +156 -0
- package/dist/types/mixins/OxyServices.civic.d.ts +510 -0
- package/dist/types/mixins/OxyServices.connectedApps.d.ts +169 -0
- package/dist/types/mixins/OxyServices.contacts.d.ts +100 -0
- package/dist/types/mixins/OxyServices.deviceBoot.d.ts +185 -0
- package/dist/types/mixins/OxyServices.deviceTransfer.d.ts +149 -0
- package/dist/types/mixins/OxyServices.devices.d.ts +103 -0
- package/dist/types/mixins/OxyServices.features.d.ts +250 -0
- package/dist/types/mixins/OxyServices.followGraph.d.ts +223 -0
- package/dist/types/mixins/OxyServices.identity.d.ts +351 -0
- package/dist/types/mixins/OxyServices.identityBackup.d.ts +129 -0
- package/dist/types/mixins/OxyServices.inference.d.ts +95 -0
- package/dist/types/mixins/OxyServices.language.d.ts +87 -0
- package/dist/types/mixins/OxyServices.links.d.ts +104 -0
- package/dist/types/mixins/OxyServices.location.d.ts +70 -0
- package/dist/types/mixins/OxyServices.nodes.d.ts +198 -0
- package/dist/types/mixins/OxyServices.notifications.d.ts +143 -0
- package/dist/types/mixins/OxyServices.payment.d.ts +117 -0
- package/dist/types/mixins/OxyServices.privacy.d.ts +146 -0
- package/dist/types/mixins/OxyServices.reputation.d.ts +202 -0
- package/dist/types/mixins/OxyServices.security.d.ts +84 -0
- package/dist/types/mixins/OxyServices.store.d.ts +334 -0
- package/dist/types/mixins/OxyServices.topics.d.ts +110 -0
- package/dist/types/mixins/OxyServices.user.d.ts +558 -0
- package/dist/types/mixins/OxyServices.utility.d.ts +393 -0
- package/dist/types/mixins/index.d.ts +87 -0
- package/dist/types/mixins/mixinHelpers.d.ts +31 -0
- package/dist/types/models/Topic.d.ts +42 -0
- package/dist/types/models/interfaces.d.ts +675 -0
- package/dist/types/models/session.d.ts +51 -0
- package/dist/types/server/auth.d.ts +130 -0
- package/dist/types/server/capabilityTicket.d.ts +41 -0
- package/dist/types/server/cors.d.ts +98 -0
- package/dist/types/server/index.d.ts +35 -0
- package/dist/types/server/rateLimit.d.ts +40 -0
- package/dist/types/server/safeFetch.d.ts +137 -0
- package/dist/types/server/securityHeaders.d.ts +221 -0
- package/dist/types/server/userInvalidation.d.ts +114 -0
- package/dist/types/server/verifySecret.d.ts +29 -0
- package/dist/types/session/SessionClient.d.ts +418 -0
- package/dist/types/session/accountDelegationAccess.d.ts +40 -0
- package/dist/types/session/accountDialogController.d.ts +648 -0
- package/dist/types/session/accountSwitchTargets.d.ts +70 -0
- package/dist/types/session/authStateStore.d.ts +153 -0
- package/dist/types/session/createSessionClient.d.ts +30 -0
- package/dist/types/session/deviceDirectory.d.ts +182 -0
- package/dist/types/session/deviceSwitcherRows.d.ts +92 -0
- package/dist/types/session/identityPin.d.ts +87 -0
- package/dist/types/session/identitySession.d.ts +105 -0
- package/dist/types/session/projectSessionState.d.ts +74 -0
- package/dist/types/session/refresh.d.ts +179 -0
- package/dist/types/session/sessionClientHost.d.ts +18 -0
- package/dist/types/session/sharedDeviceCredential.d.ts +202 -0
- package/dist/types/session/socketLoader.d.ts +11 -0
- package/dist/types/shared/utils/colorUtils.d.ts +104 -0
- package/dist/types/shared/utils/errorUtils.d.ts +97 -0
- package/dist/types/shared/utils/index.d.ts +13 -0
- package/dist/types/shared/utils/networkUtils.d.ts +139 -0
- package/dist/types/shared/utils/themeUtils.d.ts +90 -0
- package/dist/types/utils/accountCacheSweep.d.ts +75 -0
- package/dist/types/utils/accountUtils.d.ts +100 -0
- package/dist/types/utils/activityId.d.ts +2 -0
- package/dist/types/utils/apiUtils.d.ts +95 -0
- package/dist/types/utils/asyncUtils.d.ts +62 -0
- package/dist/types/utils/authHelpers.d.ts +58 -0
- package/dist/types/utils/authWebUrl.d.ts +16 -0
- package/dist/types/utils/avatarUtils.d.ts +16 -0
- package/dist/types/utils/cache.d.ts +130 -0
- package/dist/types/utils/cacheKey.d.ts +66 -0
- package/dist/types/utils/coldBoot.d.ts +131 -0
- package/dist/types/utils/commonsApproval.d.ts +13 -0
- package/dist/types/utils/commonsDelivery.d.ts +105 -0
- package/dist/types/utils/deviceManager.d.ts +65 -0
- package/dist/types/utils/displayNamePolicyRanges.generated.d.ts +57 -0
- package/dist/types/utils/edgeRegion.d.ts +2 -0
- package/dist/types/utils/errorUtils.d.ts +125 -0
- package/dist/types/utils/identityCacheSweep.d.ts +80 -0
- package/dist/types/utils/languageUtils.d.ts +100 -0
- package/dist/types/utils/oauthPkce.d.ts +157 -0
- package/dist/types/utils/officialOrigins.d.ts +13 -0
- package/dist/types/utils/oxyServiceEnvironment.d.ts +17 -0
- package/dist/types/utils/platform.d.ts +49 -0
- package/dist/types/utils/profileLinks.d.ts +44 -0
- package/dist/types/utils/redactUrl.d.ts +17 -0
- package/dist/types/utils/registrableApex.d.ts +27 -0
- package/dist/types/utils/requestUtils.d.ts +123 -0
- package/dist/types/utils/sessionUtils.d.ts +54 -0
- package/dist/types/utils/textNormalization.d.ts +103 -0
- package/dist/types/utils/userHandle.d.ts +26 -0
- package/dist/types/utils/userIdentity.d.ts +21 -0
- package/dist/types/utils/validationUtils.d.ts +268 -0
- package/dist/types/utils/webauthnOrigin.d.ts +32 -0
- package/package.json +168 -0
- package/src/HttpService.ts +1553 -0
- package/src/OxyServices.base.ts +478 -0
- package/src/OxyServices.errors.ts +122 -0
- package/src/OxyServices.ts +172 -0
- package/src/__tests__/authSocket.test.ts +96 -0
- package/src/__tests__/httpServiceActivityId.test.ts +49 -0
- package/src/__tests__/httpServiceAuthSelfAwait.test.ts +108 -0
- package/src/__tests__/httpServiceCache.test.ts +318 -0
- package/src/__tests__/httpServiceCsrf.test.ts +235 -0
- package/src/__tests__/httpServiceFormEncoded.test.ts +142 -0
- package/src/__tests__/httpServiceQueueDeadlock.test.ts +128 -0
- package/src/__tests__/httpServiceUnwrapEnvelope.test.ts +115 -0
- package/src/__tests__/inSessionRefresh.test.ts +260 -0
- package/src/__tests__/linkedClient.test.ts +370 -0
- package/src/__tests__/parseHttpErrorBody.test.ts +116 -0
- package/src/__tests__/serverValueImportsDeclared.test.ts +120 -0
- package/src/__tests__/userIdentity.test.ts +143 -0
- package/src/boot/__tests__/sessionColdBoot.identity.test.ts +393 -0
- package/src/boot/__tests__/sessionColdBoot.sharedDevice.test.ts +325 -0
- package/src/boot/__tests__/sessionColdBoot.test.ts +570 -0
- package/src/boot/sessionColdBoot.ts +529 -0
- package/src/constants/version.ts +15 -0
- package/src/crypto/__tests__/backupMaterial.test.ts +86 -0
- package/src/crypto/__tests__/cryptoPrimitives.test.ts +226 -0
- package/src/crypto/__tests__/identityMocks.ts +125 -0
- package/src/crypto/__tests__/keyManager.atomicity.test.ts +272 -0
- package/src/crypto/__tests__/keyManager.cacheSafety.test.ts +175 -0
- package/src/crypto/__tests__/keyManager.identityStatus.test.ts +217 -0
- package/src/crypto/__tests__/keyManager.recoveryLadder.test.ts +179 -0
- package/src/crypto/__tests__/keyManager.recoveryMnemonic.test.ts +138 -0
- package/src/crypto/__tests__/keyManager.storageMigration.test.ts +227 -0
- package/src/crypto/__tests__/keyManager.test.ts +329 -0
- package/src/crypto/__tests__/polyfill.test.ts +109 -0
- package/src/crypto/__tests__/recoveryPhrase.test.ts +61 -0
- package/src/crypto/__tests__/scopedSeed.test.ts +126 -0
- package/src/crypto/__tests__/signChallengeShared.test.ts +63 -0
- package/src/crypto/__tests__/signedRecord.test.ts +230 -0
- package/src/crypto/aead.ts +97 -0
- package/src/crypto/ecdh.ts +37 -0
- package/src/crypto/identityMarker.ts +291 -0
- package/src/crypto/kdf.ts +43 -0
- package/src/crypto/keyManager.ts +2607 -0
- package/src/crypto/polyfill.ts +143 -0
- package/src/crypto/recoveryPhrase.ts +337 -0
- package/src/crypto/signatureService.ts +350 -0
- package/src/i18n/__tests__/accountCategoryLabels.test.ts +62 -0
- package/src/i18n/__tests__/accountRoleLabels.test.ts +54 -0
- package/src/i18n/__tests__/reputationCategoryLabels.test.ts +56 -0
- package/src/i18n/__tests__/trustTierLabels.test.ts +47 -0
- package/src/i18n/accountCategoryLabels.ts +44 -0
- package/src/i18n/accountRoleLabels.ts +26 -0
- package/src/i18n/index.ts +88 -0
- package/src/i18n/locales/ar-SA.json +282 -0
- package/src/i18n/locales/ca-ES.json +282 -0
- package/src/i18n/locales/de-DE.json +282 -0
- package/src/i18n/locales/en-US.json +2161 -0
- package/src/i18n/locales/es-ES.json +2161 -0
- package/src/i18n/locales/fr-FR.json +282 -0
- package/src/i18n/locales/it-IT.json +282 -0
- package/src/i18n/locales/ja-JP.json +282 -0
- package/src/i18n/locales/ko-KR.json +282 -0
- package/src/i18n/locales/pt-PT.json +282 -0
- package/src/i18n/locales/zh-CN.json +282 -0
- package/src/i18n/reputationCategoryLabels.ts +20 -0
- package/src/i18n/trustTierLabels.ts +18 -0
- package/src/index.ts +881 -0
- package/src/inference/OxyInferenceClient.ts +888 -0
- package/src/inference/__tests__/OxyInferenceClient.test.ts +834 -0
- package/src/logger/__tests__/logger.test.ts +207 -0
- package/src/logger/index.ts +217 -0
- package/src/mixins/OxyServices.accounts.ts +1330 -0
- package/src/mixins/OxyServices.analytics.ts +53 -0
- package/src/mixins/OxyServices.appData.ts +158 -0
- package/src/mixins/OxyServices.assets.ts +861 -0
- package/src/mixins/OxyServices.auth.ts +1858 -0
- package/src/mixins/OxyServices.chains.ts +134 -0
- package/src/mixins/OxyServices.civic.ts +945 -0
- package/src/mixins/OxyServices.connectedApps.ts +174 -0
- package/src/mixins/OxyServices.contacts.ts +73 -0
- package/src/mixins/OxyServices.deviceBoot.ts +210 -0
- package/src/mixins/OxyServices.deviceTransfer.ts +393 -0
- package/src/mixins/OxyServices.devices.ts +120 -0
- package/src/mixins/OxyServices.features.ts +454 -0
- package/src/mixins/OxyServices.followGraph.ts +293 -0
- package/src/mixins/OxyServices.identity.ts +705 -0
- package/src/mixins/OxyServices.identityBackup.ts +250 -0
- package/src/mixins/OxyServices.inference.ts +57 -0
- package/src/mixins/OxyServices.language.ts +144 -0
- package/src/mixins/OxyServices.links.ts +107 -0
- package/src/mixins/OxyServices.location.ts +46 -0
- package/src/mixins/OxyServices.nodes.ts +337 -0
- package/src/mixins/OxyServices.notifications.ts +142 -0
- package/src/mixins/OxyServices.payment.ts +163 -0
- package/src/mixins/OxyServices.privacy.ts +219 -0
- package/src/mixins/OxyServices.reputation.ts +436 -0
- package/src/mixins/OxyServices.security.ts +110 -0
- package/src/mixins/OxyServices.store.ts +585 -0
- package/src/mixins/OxyServices.topics.ts +169 -0
- package/src/mixins/OxyServices.user.ts +1137 -0
- package/src/mixins/OxyServices.utility.ts +1370 -0
- package/src/mixins/__tests__/OxyServices.civic.test.ts +1095 -0
- package/src/mixins/__tests__/OxyServices.deviceBoot.test.ts +124 -0
- package/src/mixins/__tests__/OxyServices.deviceTransfer.test.ts +271 -0
- package/src/mixins/__tests__/OxyServices.identity.test.ts +376 -0
- package/src/mixins/__tests__/OxyServices.links.test.ts +154 -0
- package/src/mixins/__tests__/OxyServices.nodes.test.ts +341 -0
- package/src/mixins/__tests__/OxyServices.rotateKey.test.ts +276 -0
- package/src/mixins/__tests__/OxyServices.serviceAssetMetadata.test.ts +192 -0
- package/src/mixins/__tests__/OxyServices.serviceAssetMetadataBySha.test.ts +135 -0
- package/src/mixins/__tests__/accounts.test.ts +727 -0
- package/src/mixins/__tests__/appData.test.ts +203 -0
- package/src/mixins/__tests__/assetCredentials.test.ts +47 -0
- package/src/mixins/__tests__/assetUpload.test.ts +191 -0
- package/src/mixins/__tests__/backgroundCredential.httpIntegration.test.ts +135 -0
- package/src/mixins/__tests__/chains.test.ts +113 -0
- package/src/mixins/__tests__/commonsSignIn.test.ts +1144 -0
- package/src/mixins/__tests__/connectedApps.test.ts +123 -0
- package/src/mixins/__tests__/deviceTokenMintPinned.test.ts +113 -0
- package/src/mixins/__tests__/discoveryErrorHandling.test.ts +266 -0
- package/src/mixins/__tests__/followCacheInvalidation.test.ts +173 -0
- package/src/mixins/__tests__/followGraph.test.ts +147 -0
- package/src/mixins/__tests__/followGraphPagination.test.ts +271 -0
- package/src/mixins/__tests__/getFileDownloadUrl.test.ts +346 -0
- package/src/mixins/__tests__/getFollowStatuses.test.ts +95 -0
- package/src/mixins/__tests__/getUsersByIds.test.ts +149 -0
- package/src/mixins/__tests__/identityBackup.test.ts +315 -0
- package/src/mixins/__tests__/identityWriteCacheInvalidation.test.ts +407 -0
- package/src/mixins/__tests__/inferenceFactory.test.ts +58 -0
- package/src/mixins/__tests__/onTokensChanged.test.ts +129 -0
- package/src/mixins/__tests__/preSessionSkipAuth.test.ts +284 -0
- package/src/mixins/__tests__/privacyCacheInvalidation.test.ts +155 -0
- package/src/mixins/__tests__/reputation.test.ts +522 -0
- package/src/mixins/__tests__/serviceAuth.test.ts +832 -0
- package/src/mixins/__tests__/serviceTokenJwks.test.ts +208 -0
- package/src/mixins/__tests__/store.test.ts +304 -0
- package/src/mixins/__tests__/topics.test.ts +156 -0
- package/src/mixins/__tests__/userReadCacheBypass.test.ts +129 -0
- package/src/mixins/__tests__/userTokenAuth.test.ts +746 -0
- package/src/mixins/__tests__/verifyChallenge.test.ts +130 -0
- package/src/mixins/__tests__/verifyServiceActingAs.test.ts +167 -0
- package/src/mixins/__tests__/webauthnAuth.test.ts +205 -0
- package/src/mixins/index.ts +201 -0
- package/src/mixins/mixinHelpers.ts +69 -0
- package/src/models/Topic.ts +46 -0
- package/src/models/interfaces.ts +786 -0
- package/src/models/session.ts +55 -0
- package/src/server/__tests__/auth.test.ts +78 -0
- package/src/server/__tests__/capabilityTicket.test.ts +111 -0
- package/src/server/__tests__/cors.socket.test.ts +225 -0
- package/src/server/__tests__/cors.test.ts +158 -0
- package/src/server/__tests__/rateLimit.test.ts +257 -0
- package/src/server/__tests__/safeFetch.test.ts +232 -0
- package/src/server/__tests__/securityHeaders.test.ts +348 -0
- package/src/server/__tests__/serviceTokenAttribution.test.ts +396 -0
- package/src/server/__tests__/userInvalidation.test.ts +203 -0
- package/src/server/__tests__/verifySecret.test.ts +40 -0
- package/src/server/auth.ts +271 -0
- package/src/server/capabilityTicket.ts +258 -0
- package/src/server/cors.ts +277 -0
- package/src/server/index.ts +136 -0
- package/src/server/rateLimit.ts +313 -0
- package/src/server/safeFetch.ts +586 -0
- package/src/server/securityHeaders.ts +467 -0
- package/src/server/userInvalidation.ts +199 -0
- package/src/server/verifySecret.ts +52 -0
- package/src/session/SessionClient.ts +1001 -0
- package/src/session/__tests__/SessionClient.additive.test.ts +153 -0
- package/src/session/__tests__/SessionClient.broadcastChannel.test.ts +114 -0
- package/src/session/__tests__/SessionClient.diagnostics.test.ts +91 -0
- package/src/session/__tests__/SessionClient.directory.test.ts +688 -0
- package/src/session/__tests__/SessionClient.httpIntegration.test.ts +65 -0
- package/src/session/__tests__/SessionClient.identityPin.test.ts +175 -0
- package/src/session/__tests__/SessionClient.rest.test.ts +119 -0
- package/src/session/__tests__/SessionClient.serverEvents.test.ts +72 -0
- package/src/session/__tests__/SessionClient.socket.test.ts +202 -0
- package/src/session/__tests__/SessionClient.socketFactory.test.ts +81 -0
- package/src/session/__tests__/SessionClient.state.test.ts +78 -0
- package/src/session/__tests__/SessionClient.switchTokenOrder.test.ts +170 -0
- package/src/session/__tests__/accountDelegationAccess.test.ts +104 -0
- package/src/session/__tests__/accountDialogController.test.ts +1969 -0
- package/src/session/__tests__/accountDialogShape.test.ts +118 -0
- package/src/session/__tests__/accountSwitchTargets.test.ts +137 -0
- package/src/session/__tests__/authStateStore.test.ts +451 -0
- package/src/session/__tests__/deviceDirectory.test.ts +422 -0
- package/src/session/__tests__/deviceSwitcherRows.test.ts +223 -0
- package/src/session/__tests__/identityPin.test.ts +131 -0
- package/src/session/__tests__/identitySession.test.ts +194 -0
- package/src/session/__tests__/projectSessionState.test.ts +105 -0
- package/src/session/__tests__/refresh.identityPin.test.ts +307 -0
- package/src/session/__tests__/refresh.test.ts +443 -0
- package/src/session/__tests__/sessionIntegration.test.ts +209 -0
- package/src/session/__tests__/sharedDeviceCredential.test.ts +300 -0
- package/src/session/accountDelegationAccess.ts +72 -0
- package/src/session/accountDialogController.ts +1494 -0
- package/src/session/accountSwitchTargets.ts +93 -0
- package/src/session/authStateStore.ts +502 -0
- package/src/session/createSessionClient.ts +39 -0
- package/src/session/deviceDirectory.ts +269 -0
- package/src/session/deviceSwitcherRows.ts +145 -0
- package/src/session/identityPin.ts +310 -0
- package/src/session/identitySession.ts +206 -0
- package/src/session/projectSessionState.ts +137 -0
- package/src/session/refresh.ts +517 -0
- package/src/session/sessionClientHost.ts +39 -0
- package/src/session/sharedDeviceCredential.ts +349 -0
- package/src/session/socketLoader.ts +30 -0
- package/src/shared/utils/colorUtils.ts +155 -0
- package/src/shared/utils/errorUtils.ts +181 -0
- package/src/shared/utils/index.ts +59 -0
- package/src/shared/utils/networkUtils.ts +248 -0
- package/src/shared/utils/themeUtils.ts +115 -0
- package/src/types/buffer.d.ts +97 -0
- package/src/types/expo-crypto.d.ts +16 -0
- package/src/types/expo-secure-store.d.ts +17 -0
- package/src/utils/__tests__/accountUtils.test.ts +151 -0
- package/src/utils/__tests__/activityId.test.ts +45 -0
- package/src/utils/__tests__/asyncUtils.test.ts +187 -0
- package/src/utils/__tests__/authWebUrl.test.ts +15 -0
- package/src/utils/__tests__/cacheKey.test.ts +0 -0
- package/src/utils/__tests__/coldBoot.test.ts +496 -0
- package/src/utils/__tests__/commonsApproval.test.ts +60 -0
- package/src/utils/__tests__/identityCacheSweep.test.ts +151 -0
- package/src/utils/__tests__/languageUtils.test.ts +219 -0
- package/src/utils/__tests__/oauthPkce.test.ts +272 -0
- package/src/utils/__tests__/officialOrigins.test.ts +31 -0
- package/src/utils/__tests__/oxyServiceEnvironment.test.ts +7 -0
- package/src/utils/__tests__/profileLinks.test.ts +180 -0
- package/src/utils/__tests__/redactUrl.test.ts +33 -0
- package/src/utils/__tests__/registrableApex.test.ts +62 -0
- package/src/utils/__tests__/textNormalization.test.ts +205 -0
- package/src/utils/__tests__/validationUtils.test.ts +703 -0
- package/src/utils/__tests__/webauthnOrigin.test.ts +83 -0
- package/src/utils/accountCacheSweep.ts +93 -0
- package/src/utils/accountUtils.ts +194 -0
- package/src/utils/activityId.ts +2 -0
- package/src/utils/apiUtils.ts +137 -0
- package/src/utils/asyncUtils.ts +280 -0
- package/src/utils/authHelpers.ts +148 -0
- package/src/utils/authWebUrl.ts +17 -0
- package/src/utils/avatarUtils.ts +39 -0
- package/src/utils/cache.ts +273 -0
- package/src/utils/cacheKey.ts +93 -0
- package/src/utils/coldBoot.ts +218 -0
- package/src/utils/commonsApproval.ts +39 -0
- package/src/utils/commonsDelivery.ts +132 -0
- package/src/utils/deviceManager.ts +203 -0
- package/src/utils/displayNamePolicyRanges.generated.ts +69 -0
- package/src/utils/edgeRegion.ts +2 -0
- package/src/utils/errorUtils.ts +352 -0
- package/src/utils/identityCacheSweep.ts +104 -0
- package/src/utils/languageUtils.ts +256 -0
- package/src/utils/oauthPkce.ts +392 -0
- package/src/utils/officialOrigins.ts +62 -0
- package/src/utils/oxyServiceEnvironment.ts +17 -0
- package/src/utils/platform.ts +139 -0
- package/src/utils/profileLinks.ts +91 -0
- package/src/utils/redactUrl.ts +28 -0
- package/src/utils/registrableApex.ts +41 -0
- package/src/utils/requestUtils.ts +237 -0
- package/src/utils/sessionUtils.ts +206 -0
- package/src/utils/textNormalization.ts +162 -0
- package/src/utils/userHandle.ts +49 -0
- package/src/utils/userIdentity.ts +60 -0
- package/src/utils/validationUtils.ts +390 -0
- package/src/utils/webauthnOrigin.ts +52 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Official first-party web origin allowlist — shared by OAuth redirect
|
|
4
|
+
* validation and the server-side trusted-origin checks.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.isAllowedDeviceJoinOrigin = void 0;
|
|
8
|
+
exports.isLoopbackOrigin = isLoopbackOrigin;
|
|
9
|
+
exports.isOfficialWebOrigin = isOfficialWebOrigin;
|
|
10
|
+
const authWebUrl_1 = require("./authWebUrl");
|
|
11
|
+
const registrableApex_1 = require("./registrableApex");
|
|
12
|
+
/** Official first-party registrable apexes (mirrors API trusted origins). */
|
|
13
|
+
const OFFICIAL_APEXES = new Set([
|
|
14
|
+
'oxy.so',
|
|
15
|
+
'fairco.in',
|
|
16
|
+
'mention.earth',
|
|
17
|
+
'homiio.com',
|
|
18
|
+
'alia.onl',
|
|
19
|
+
'syra.fm',
|
|
20
|
+
'allo.you',
|
|
21
|
+
'tnp.network',
|
|
22
|
+
'moovo.now',
|
|
23
|
+
'mercaria.co',
|
|
24
|
+
]);
|
|
25
|
+
/**
|
|
26
|
+
* Whether an origin is a loopback / local-dev origin (`localhost`, `127.0.0.1`,
|
|
27
|
+
* or `[::1]` on any port, http or https).
|
|
28
|
+
*/
|
|
29
|
+
function isLoopbackOrigin(origin) {
|
|
30
|
+
try {
|
|
31
|
+
const parsed = new URL(origin);
|
|
32
|
+
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
const host = parsed.hostname.toLowerCase();
|
|
36
|
+
return host === 'localhost' || host === '127.0.0.1' || host === '[::1]';
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Whether an origin belongs to the official Oxy web ecosystem. */
|
|
43
|
+
function isOfficialWebOrigin(origin) {
|
|
44
|
+
if (isLoopbackOrigin(origin)) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const parsed = new URL(origin);
|
|
49
|
+
if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
const host = parsed.hostname.toLowerCase();
|
|
53
|
+
if (host === authWebUrl_1.CENTRAL_IDP_APEX || host.endsWith(`.${authWebUrl_1.CENTRAL_IDP_APEX}`)) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
const apex = (0, registrableApex_1.registrableApex)(host);
|
|
57
|
+
return apex != null && OFFICIAL_APEXES.has(apex);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** @deprecated Use {@link isOfficialWebOrigin}. */
|
|
64
|
+
exports.isAllowedDeviceJoinOrigin = isOfficialWebOrigin;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OXY_SERVICE_ENVIRONMENTS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Environment segregation for Oxy service-token JWTs (test/live isolation).
|
|
6
|
+
* Mirrors `ApplicationCredentialEnvironment` on the API's `ApplicationCredential`
|
|
7
|
+
* model (`packages/api/src/models/ApplicationCredential.ts`) as an INDEPENDENT
|
|
8
|
+
* literal union — `@oxy.so/core` has zero dependency on `@oxy.so/api`, so this is
|
|
9
|
+
* kept in sync by hand, not by import.
|
|
10
|
+
*
|
|
11
|
+
* Defined here (not in `server/auth.ts` or `mixins/OxyServices.utility.ts`
|
|
12
|
+
* directly) because BOTH of those files need it and neither may import from
|
|
13
|
+
* the other: `server/` types import `express` (Node-only, a peer dependency
|
|
14
|
+
* `mixins/` deliberately avoids so it stays safe to bundle into RN/browser
|
|
15
|
+
* consumers — see the "Local request/response/socket typing" comment in
|
|
16
|
+
* `OxyServices.utility.ts`). This file has zero imports, so both sides can
|
|
17
|
+
* depend on it without crossing that boundary.
|
|
18
|
+
*/
|
|
19
|
+
exports.OXY_SERVICE_ENVIRONMENTS = ['development', 'staging', 'production'];
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Platform Detection Utility
|
|
4
|
+
*
|
|
5
|
+
* Provides platform detection WITHOUT importing from 'react-native'.
|
|
6
|
+
* This allows core modules to be used in web/Node.js environments
|
|
7
|
+
* without bundlers failing on react-native imports.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.getPlatformOS = getPlatformOS;
|
|
11
|
+
exports.isWeb = isWeb;
|
|
12
|
+
exports.isNative = isNative;
|
|
13
|
+
exports.isIOS = isIOS;
|
|
14
|
+
exports.isAndroid = isAndroid;
|
|
15
|
+
exports.setPlatformOS = setPlatformOS;
|
|
16
|
+
exports.isWebBrowser = isWebBrowser;
|
|
17
|
+
/**
|
|
18
|
+
* Typed view over `globalThis` for the RN-platform marker, avoiding an `any`
|
|
19
|
+
* cast at each access site.
|
|
20
|
+
*/
|
|
21
|
+
function rnPlatformGlobal() {
|
|
22
|
+
return globalThis;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Detect the current platform without importing react-native
|
|
26
|
+
*
|
|
27
|
+
* Detection order:
|
|
28
|
+
* 1. Check for React Native's Platform object on globalThis (set by RN runtime)
|
|
29
|
+
* 2. Check for Node.js environment
|
|
30
|
+
* 3. Check for browser environment
|
|
31
|
+
* 4. Fall back to 'unknown'
|
|
32
|
+
*/
|
|
33
|
+
function detectPlatform() {
|
|
34
|
+
// Check if React Native Platform is available globally (set by RN runtime)
|
|
35
|
+
// This avoids static imports while still detecting RN environment
|
|
36
|
+
const rnPlatform = rnPlatformGlobal().__REACT_NATIVE_PLATFORM__;
|
|
37
|
+
if (rnPlatform) {
|
|
38
|
+
return rnPlatform;
|
|
39
|
+
}
|
|
40
|
+
// Check navigator.product for React Native
|
|
41
|
+
if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
|
|
42
|
+
// We're in React Native but Platform wasn't set globally
|
|
43
|
+
// Try to get OS from userAgent or default to 'unknown'
|
|
44
|
+
return 'unknown';
|
|
45
|
+
}
|
|
46
|
+
// Check for Node.js environment
|
|
47
|
+
if (typeof process !== 'undefined' && process.versions?.node) {
|
|
48
|
+
return 'web'; // Treat Node.js as 'web' for compatibility (no native features)
|
|
49
|
+
}
|
|
50
|
+
// Check for browser/web environment
|
|
51
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
52
|
+
return 'web';
|
|
53
|
+
}
|
|
54
|
+
return 'unknown';
|
|
55
|
+
}
|
|
56
|
+
// Cache the platform detection result
|
|
57
|
+
let cachedPlatform = null;
|
|
58
|
+
/**
|
|
59
|
+
* Get the current platform OS
|
|
60
|
+
* Safe to call from any environment (web, Node.js, React Native)
|
|
61
|
+
*/
|
|
62
|
+
function getPlatformOS() {
|
|
63
|
+
if (cachedPlatform === null) {
|
|
64
|
+
cachedPlatform = detectPlatform();
|
|
65
|
+
}
|
|
66
|
+
return cachedPlatform;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check if running on web platform (browser or Node.js)
|
|
70
|
+
*/
|
|
71
|
+
function isWeb() {
|
|
72
|
+
return getPlatformOS() === 'web';
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check if running in a native app (iOS or Android)
|
|
76
|
+
*/
|
|
77
|
+
function isNative() {
|
|
78
|
+
const os = getPlatformOS();
|
|
79
|
+
return os === 'ios' || os === 'android';
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Check if running on iOS
|
|
83
|
+
*/
|
|
84
|
+
function isIOS() {
|
|
85
|
+
return getPlatformOS() === 'ios';
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Check if running on Android
|
|
89
|
+
*/
|
|
90
|
+
function isAndroid() {
|
|
91
|
+
return getPlatformOS() === 'android';
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Set the platform OS explicitly
|
|
95
|
+
* Called by React Native entry point to register the platform
|
|
96
|
+
* This allows lazy detection in environments where react-native is available
|
|
97
|
+
*/
|
|
98
|
+
function setPlatformOS(os) {
|
|
99
|
+
cachedPlatform = os;
|
|
100
|
+
rnPlatformGlobal().__REACT_NATIVE_PLATFORM__ = os;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* True only in a real web browser (a DOM is present), false on React Native
|
|
104
|
+
* and Node/SSR.
|
|
105
|
+
*
|
|
106
|
+
* Native defines a global `window` but no `document`, so the DOM probe — not a
|
|
107
|
+
* bare `window` check — is the reliable discriminator. This is the single
|
|
108
|
+
* source of truth consumed by `@oxy.so/services` (which dropped
|
|
109
|
+
* their local copies), so every consumer shares the exact same predicate.
|
|
110
|
+
*
|
|
111
|
+
* NOTE: this is a live runtime probe (not the cached `getPlatformOS()` verdict)
|
|
112
|
+
* because it must reflect the actual DOM availability at call time in the
|
|
113
|
+
* consumer's bundle.
|
|
114
|
+
*/
|
|
115
|
+
function isWebBrowser() {
|
|
116
|
+
return (typeof window !== 'undefined' &&
|
|
117
|
+
typeof document !== 'undefined' &&
|
|
118
|
+
typeof document.documentElement !== 'undefined');
|
|
119
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeProfileLinks = normalizeProfileLinks;
|
|
4
|
+
function cleanUrl(value) {
|
|
5
|
+
if (typeof value !== 'string')
|
|
6
|
+
return null;
|
|
7
|
+
const trimmed = value.trim();
|
|
8
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Normalizes a user's profile links into a clean display shape.
|
|
12
|
+
*
|
|
13
|
+
* Pure, no side effects, no I/O.
|
|
14
|
+
*
|
|
15
|
+
* - Prefers `linksMetadata` when it is a non-empty array: maps each entry to
|
|
16
|
+
* `{ id, title, url, description, image }`, using `entry.id` when present and
|
|
17
|
+
* falling back to the entry index. `title`, `description`, and `image` are
|
|
18
|
+
* carried through only when they are present strings. Entries without a
|
|
19
|
+
* non-empty string `url` are dropped.
|
|
20
|
+
* - Otherwise falls back to the legacy `links` string array: maps each string to
|
|
21
|
+
* `{ id: <index>, url }` (no title/description/image). Empty/non-string values
|
|
22
|
+
* are dropped.
|
|
23
|
+
* - Returns `[]` when both are absent or empty (including when `linksMetadata`
|
|
24
|
+
* is present but every entry is dropped — it does NOT fall back to `links`).
|
|
25
|
+
*
|
|
26
|
+
* URLs are trimmed and blanks are filtered out. This does NOT add a scheme such
|
|
27
|
+
* as `https://`; prefixing is a display concern left to the caller.
|
|
28
|
+
*/
|
|
29
|
+
function normalizeProfileLinks(linksMetadata, links) {
|
|
30
|
+
if (Array.isArray(linksMetadata) && linksMetadata.length > 0) {
|
|
31
|
+
const result = [];
|
|
32
|
+
linksMetadata.forEach((entry, index) => {
|
|
33
|
+
const url = cleanUrl(entry?.url);
|
|
34
|
+
if (!url)
|
|
35
|
+
return;
|
|
36
|
+
const id = typeof entry?.id === 'string' && entry.id.trim().length > 0
|
|
37
|
+
? entry.id
|
|
38
|
+
: String(index);
|
|
39
|
+
const title = typeof entry?.title === 'string' ? entry.title : undefined;
|
|
40
|
+
const description = typeof entry?.description === 'string' ? entry.description : undefined;
|
|
41
|
+
const image = typeof entry?.image === 'string' ? entry.image : undefined;
|
|
42
|
+
result.push({
|
|
43
|
+
id,
|
|
44
|
+
url,
|
|
45
|
+
...(title !== undefined ? { title } : {}),
|
|
46
|
+
...(description !== undefined ? { description } : {}),
|
|
47
|
+
...(image !== undefined ? { image } : {}),
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
if (Array.isArray(links) && links.length > 0) {
|
|
53
|
+
const result = [];
|
|
54
|
+
links.forEach((value, index) => {
|
|
55
|
+
const url = cleanUrl(value);
|
|
56
|
+
if (!url)
|
|
57
|
+
return;
|
|
58
|
+
result.push({ id: String(index), url });
|
|
59
|
+
});
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.redactUrlQuery = redactUrlQuery;
|
|
4
|
+
/**
|
|
5
|
+
* URL redaction for logging.
|
|
6
|
+
*
|
|
7
|
+
* Asset URLs the API hands back for private assets carry a scoped, short-lived
|
|
8
|
+
* media token (`mt=…`) in their query string. That token is a bearer credential
|
|
9
|
+
* for the underlying object, so it must never land in a log line, breadcrumb,
|
|
10
|
+
* or metric — a captured log would otherwise grant read access until the token
|
|
11
|
+
* expires. Query strings on API URLs can also carry other sensitive params, so
|
|
12
|
+
* we redact the whole query rather than allow-listing one key.
|
|
13
|
+
*
|
|
14
|
+
* `redactUrlQuery` returns the URL's path portion with a `?<redacted>` marker
|
|
15
|
+
* when a query string is present, and the input unchanged otherwise. It is
|
|
16
|
+
* defensive: any input that does not parse as a URL is passed through as-is,
|
|
17
|
+
* except that a bare `?query` tail is still stripped so a relative path with a
|
|
18
|
+
* query never leaks.
|
|
19
|
+
*/
|
|
20
|
+
function redactUrlQuery(url) {
|
|
21
|
+
if (typeof url !== 'string' || url.length === 0) {
|
|
22
|
+
return url;
|
|
23
|
+
}
|
|
24
|
+
const queryIndex = url.indexOf('?');
|
|
25
|
+
if (queryIndex === -1) {
|
|
26
|
+
return url;
|
|
27
|
+
}
|
|
28
|
+
return `${url.slice(0, queryIndex)}?<redacted>`;
|
|
29
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Registrable-apex (eTLD+1) host kernel.
|
|
4
|
+
*
|
|
5
|
+
* The client FAPI auto-detection helper was removed in the device-first cutover
|
|
6
|
+
* (which is why this file is now named for what it actually is, not the old
|
|
7
|
+
* `fapiAutoDetect`). What survives is the pure registrable-domain kernel, still
|
|
8
|
+
* used by the `@oxy.so/core/server` CORS layer (the `*.oxy.so` same-apex trust
|
|
9
|
+
* check) and its re-export surface.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.registrableApex = registrableApex;
|
|
13
|
+
const tldts_1 = require("tldts");
|
|
14
|
+
/**
|
|
15
|
+
* Compute the bare registrable apex (eTLD+1) of a hostname using the Public
|
|
16
|
+
* Suffix List, including private hosted suffixes.
|
|
17
|
+
*
|
|
18
|
+
* Performs NO protocol handling and builds NO URL — it only answers "what is
|
|
19
|
+
* the registrable domain of this host, or is that undefinable?".
|
|
20
|
+
*
|
|
21
|
+
* Returns `null` (apex undefinable) for:
|
|
22
|
+
* - empty input;
|
|
23
|
+
* - IPv4 literals (`192.168.1.10`);
|
|
24
|
+
* - IPv6 literals or any host carrying a port (`[::1]`, anything with `:`);
|
|
25
|
+
* - single-label hosts (`intranet`, `localhost`);
|
|
26
|
+
* - public suffixes without a registrable label (e.g. `co.uk`, `github.io`).
|
|
27
|
+
*
|
|
28
|
+
* @param hostname - A bare hostname (no scheme), e.g. `www.mention.earth`.
|
|
29
|
+
* @returns The eTLD+1 (`mention.earth`), or `null` when undefinable.
|
|
30
|
+
*/
|
|
31
|
+
function registrableApex(hostname) {
|
|
32
|
+
if (!hostname)
|
|
33
|
+
return null;
|
|
34
|
+
const host = hostname.toLowerCase();
|
|
35
|
+
if (/^\d+\.\d+\.\d+\.\d+$/.test(host))
|
|
36
|
+
return null;
|
|
37
|
+
// IPv6 literals are bracketed; any remaining ':' implies a port — neither
|
|
38
|
+
// yields a registrable apex.
|
|
39
|
+
if (host.startsWith('[') || host.includes(':'))
|
|
40
|
+
return null;
|
|
41
|
+
// The Public Suffix List (private suffixes included) is the source of truth
|
|
42
|
+
// for what an attacker can register. A multi-part public suffix like `co.uk`
|
|
43
|
+
// or a hosted suffix like `github.io` returns no registrable domain.
|
|
44
|
+
return (0, tldts_1.getDomain)(host, { allowPrivateDomains: true });
|
|
45
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Request utilities for HTTP clients
|
|
4
|
+
*
|
|
5
|
+
* Provides reusable components for request deduplication, queuing, and logging
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SimpleLogger = exports.RequestQueue = exports.RequestDeduplicator = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* Request deduplication - prevents duplicate concurrent requests
|
|
11
|
+
*
|
|
12
|
+
* When multiple requests with the same key are made simultaneously,
|
|
13
|
+
* only one request is executed and all callers receive the same result.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const deduplicator = new RequestDeduplicator();
|
|
18
|
+
*
|
|
19
|
+
* // Multiple calls with same key will share the same promise
|
|
20
|
+
* const promise1 = deduplicator.deduplicate('user-123', () => fetchUser('123'));
|
|
21
|
+
* const promise2 = deduplicator.deduplicate('user-123', () => fetchUser('123'));
|
|
22
|
+
* // promise1 === promise2, only one API call is made
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
class RequestDeduplicator {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.pendingRequests = new Map();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Deduplicate a request by key
|
|
31
|
+
* @param key Unique key for the request
|
|
32
|
+
* @param requestFn Function that returns a promise
|
|
33
|
+
* @returns Promise that will be shared if key already exists
|
|
34
|
+
*/
|
|
35
|
+
async deduplicate(key, requestFn) {
|
|
36
|
+
const existing = this.pendingRequests.get(key);
|
|
37
|
+
if (existing) {
|
|
38
|
+
return existing;
|
|
39
|
+
}
|
|
40
|
+
const promise = requestFn()
|
|
41
|
+
.finally(() => {
|
|
42
|
+
this.pendingRequests.delete(key);
|
|
43
|
+
});
|
|
44
|
+
this.pendingRequests.set(key, promise);
|
|
45
|
+
return promise;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Clear all pending requests
|
|
49
|
+
*/
|
|
50
|
+
clear() {
|
|
51
|
+
this.pendingRequests.clear();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get number of pending requests
|
|
55
|
+
*/
|
|
56
|
+
size() {
|
|
57
|
+
return this.pendingRequests.size;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.RequestDeduplicator = RequestDeduplicator;
|
|
61
|
+
/**
|
|
62
|
+
* Request queue with concurrency control
|
|
63
|
+
*
|
|
64
|
+
* Limits the number of concurrent requests and queues excess requests.
|
|
65
|
+
* Useful for rate limiting and preventing request flooding.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* const queue = new RequestQueue(5, 100); // Max 5 concurrent, queue up to 100
|
|
70
|
+
*
|
|
71
|
+
* // All requests will be queued and processed with max 5 concurrent
|
|
72
|
+
* await queue.enqueue(() => fetchUser('1'));
|
|
73
|
+
* await queue.enqueue(() => fetchUser('2'));
|
|
74
|
+
* // ...
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
class RequestQueue {
|
|
78
|
+
/**
|
|
79
|
+
* Create a new request queue
|
|
80
|
+
* @param maxConcurrent Maximum number of concurrent requests (default: 10)
|
|
81
|
+
* @param maxQueueSize Maximum queue size (default: 100)
|
|
82
|
+
*/
|
|
83
|
+
constructor(maxConcurrent = 10, maxQueueSize = 100) {
|
|
84
|
+
this.queue = [];
|
|
85
|
+
this.running = 0;
|
|
86
|
+
this.maxConcurrent = maxConcurrent;
|
|
87
|
+
this.maxQueueSize = maxQueueSize;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Enqueue a request
|
|
91
|
+
* @param requestFn Function that returns a promise
|
|
92
|
+
* @returns Promise that resolves when request completes
|
|
93
|
+
*/
|
|
94
|
+
async enqueue(requestFn) {
|
|
95
|
+
if (this.queue.length >= this.maxQueueSize) {
|
|
96
|
+
throw new Error('Request queue is full');
|
|
97
|
+
}
|
|
98
|
+
return new Promise((resolve, reject) => {
|
|
99
|
+
this.queue.push(async () => {
|
|
100
|
+
try {
|
|
101
|
+
const result = await requestFn();
|
|
102
|
+
resolve(result);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
reject(error);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
this.process();
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Process queued requests
|
|
113
|
+
*/
|
|
114
|
+
async process() {
|
|
115
|
+
if (this.running >= this.maxConcurrent || this.queue.length === 0) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
this.running++;
|
|
119
|
+
const requestFn = this.queue.shift();
|
|
120
|
+
if (requestFn) {
|
|
121
|
+
try {
|
|
122
|
+
await requestFn();
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
this.running--;
|
|
126
|
+
this.process();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
this.running--;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Clear all queued requests
|
|
135
|
+
*/
|
|
136
|
+
clear() {
|
|
137
|
+
this.queue = [];
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get queue size
|
|
141
|
+
*/
|
|
142
|
+
size() {
|
|
143
|
+
return this.queue.length;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get number of currently running requests
|
|
147
|
+
*/
|
|
148
|
+
runningCount() {
|
|
149
|
+
return this.running;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.RequestQueue = RequestQueue;
|
|
153
|
+
/**
|
|
154
|
+
* Simple logger with level support
|
|
155
|
+
*
|
|
156
|
+
* Lightweight logger for HTTP clients and utilities.
|
|
157
|
+
* For structured, namespaced, level-gated logging, use `@oxy.so/core/logger`.
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```typescript
|
|
161
|
+
* const logger = new SimpleLogger(true, 'debug');
|
|
162
|
+
* logger.debug('Debug message');
|
|
163
|
+
* logger.info('Info message');
|
|
164
|
+
* logger.error('Error message');
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
class SimpleLogger {
|
|
168
|
+
/**
|
|
169
|
+
* Create a new simple logger
|
|
170
|
+
* @param enabled Whether logging is enabled
|
|
171
|
+
* @param level Minimum log level
|
|
172
|
+
* @param prefix Prefix for log messages (default: '')
|
|
173
|
+
*/
|
|
174
|
+
constructor(enabled = false, level = 'error', prefix = '') {
|
|
175
|
+
this.enabled = enabled;
|
|
176
|
+
this.level = level;
|
|
177
|
+
this.prefix = prefix;
|
|
178
|
+
}
|
|
179
|
+
shouldLog(level) {
|
|
180
|
+
if (!this.enabled || this.level === 'none')
|
|
181
|
+
return false;
|
|
182
|
+
const levels = ['none', 'error', 'warn', 'info', 'debug'];
|
|
183
|
+
return levels.indexOf(level) <= levels.indexOf(this.level);
|
|
184
|
+
}
|
|
185
|
+
formatMessage(...args) {
|
|
186
|
+
return this.prefix ? [`[${this.prefix}]`, ...args] : args;
|
|
187
|
+
}
|
|
188
|
+
error(...args) {
|
|
189
|
+
if (this.shouldLog('error')) {
|
|
190
|
+
console.error(...this.formatMessage(...args));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
warn(...args) {
|
|
194
|
+
if (this.shouldLog('warn')) {
|
|
195
|
+
console.warn(...this.formatMessage(...args));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
info(...args) {
|
|
199
|
+
if (this.shouldLog('info')) {
|
|
200
|
+
console.info(...this.formatMessage(...args));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
debug(...args) {
|
|
204
|
+
if (this.shouldLog('debug')) {
|
|
205
|
+
console.log(...this.formatMessage(...args));
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
exports.SimpleLogger = SimpleLogger;
|