@oxyhq/core 3.4.12 → 3.4.14
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 +1 -1
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/index.js +5 -4
- package/dist/cjs/utils/userIdentity.js +18 -0
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/utils/userIdentity.js +17 -0
- package/dist/types/.tsbuildinfo +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/server/auth.d.ts +1 -1
- package/dist/types/utils/userIdentity.d.ts +11 -0
- package/package.json +1 -1
- package/src/__tests__/userIdentity.test.ts +46 -1
- package/src/index.ts +7 -1
- package/src/server/auth.ts +1 -1
- package/src/utils/userIdentity.ts +31 -0
package/dist/cjs/index.js
CHANGED
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
* If a symbol does not appear here, it is NOT part of the public API.
|
|
19
19
|
*/
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.
|
|
24
|
-
exports.packageInfo = void 0;
|
|
21
|
+
exports.withOpacity = exports.rgbToHex = exports.hexToRgb = exports.lightenColor = exports.darkenColor = exports.isAndroid = exports.isIOS = exports.isNative = exports.isWeb = exports.setPlatformOS = exports.getPlatformOS = exports.isRTLLocale = exports.normalizeLanguageCode = exports.getNativeLanguageName = exports.getLanguageName = exports.getLanguageMetadata = exports.SUPPORTED_LANGUAGES = exports.TopicSource = exports.TopicType = exports.SECURITY_EVENT_SEVERITY_MAP = exports.DeviceManager = exports.RecoveryPhraseService = exports.SignatureService = exports.IdentityPersistError = exports.IdentityAlreadyExistsError = exports.KeyManager = exports.sessionsArraysEqual = exports.normalizeAndSortSessions = exports.mergeSessions = exports.authenticatedApiCall = exports.withAuthErrorHandling = exports.isAuthenticationError = exports.ensureValidToken = exports.AuthenticationFailedError = exports.SessionSyncRequiredError = exports.normalizeUserIdentityOrNull = exports.normalizeUserIdentity = exports.getNormalizedUserId = exports.getCanonicalUserHandle = exports.OxyAppDataIdentifierError = exports.ServiceCredentialMismatchError = exports.createCrossDomainAuth = exports.CrossDomainAuth = exports.createAuthManager = exports.AuthManager = exports.oxyClient = exports.OXY_CLOUD_URL = exports.OxyAuthenticationTimeoutError = exports.OxyAuthenticationError = exports.OxyServices = void 0;
|
|
22
|
+
exports.isRequiredBoolean = exports.isRequiredNumber = exports.isRequiredString = exports.isValidPassword = exports.isValidUsername = exports.isValidEmail = exports.PASSWORD_REGEX = exports.USERNAME_REGEX = exports.EMAIL_REGEX = exports.retryAsync = exports.validateRequiredFields = exports.handleHttpError = exports.createApiError = exports.ErrorCodes = exports.safeJsonParse = exports.buildPaginationParams = exports.buildUrl = exports.buildSearchParams = exports.translate = exports.createDebugLogger = exports.debugError = exports.debugWarn = exports.debugLog = exports.isDev = exports.withRetry = exports.delay = exports.shouldAllowRequest = exports.recordSuccess = exports.recordFailure = exports.calculateBackoffInterval = exports.createCircuitBreakerState = exports.DEFAULT_CIRCUIT_BREAKER_CONFIG = exports.isRetryableError = exports.isNetworkError = exports.isServerError = exports.isRateLimitError = exports.isNotFoundError = exports.isForbiddenError = exports.isUnauthorizedError = exports.isAlreadyRegisteredError = exports.getErrorMessage = exports.getErrorStatus = exports.HttpStatus = exports.getSystemColorScheme = exports.systemPrefersDarkMode = exports.getOppositeTheme = exports.normalizeColorScheme = exports.normalizeTheme = exports.getContrastTextColor = exports.isLightColor = void 0;
|
|
23
|
+
exports.guardActive = exports.isCentralIdPOrigin = exports.buildSsoBounceUrl = exports.getSsoCallbackBootstrapScript = exports.ssoNavigate = exports.ssoCallbackBootstrapKey = exports.ssoAttemptedKey = exports.ssoNoSessionKey = exports.ssoDestKey = exports.ssoGuardKey = exports.ssoStateKey = exports.SSO_GUARD_TTL_MS = exports.SSO_CALLBACK_PATH = exports.generateSsoState = exports.consumeSsoReturn = exports.parseSsoReturnFragment = exports.resolveCentralAuthUrl = exports.CENTRAL_IDP_APEX = exports.CENTRAL_AUTH_URL = exports.MULTIPART_TLDS = exports.registrableApex = exports.autoDetectAuthWebUrl = exports.getAccountColor = exports.mergeAccountsFromRefreshAll = exports.formatPublicKeyHandle = exports.getAccountFallbackHandle = exports.getAccountDisplayName = exports.createQuickAccount = exports.buildAccountsArray = exports.updateAvatarVisibility = exports.logPerformance = exports.logPayment = exports.logDevice = exports.logUser = exports.logSession = exports.logApi = exports.logAuth = exports.LogLevel = exports.logger = exports.validateAndSanitizeUserInput = exports.isValidObjectId = exports.sanitizeHTML = exports.sanitizeString = exports.isValidFileType = exports.isValidFileSize = exports.isValidDate = exports.isValidURL = exports.isValidUUID = exports.isValidObject = exports.isValidArray = void 0;
|
|
24
|
+
exports.packageInfo = exports.runColdBoot = void 0;
|
|
25
25
|
// Ensure crypto polyfills are loaded before anything else
|
|
26
26
|
require("./crypto/polyfill");
|
|
27
27
|
// ---------------------------------------------------------------------------
|
|
@@ -48,6 +48,7 @@ Object.defineProperty(exports, "ServiceCredentialMismatchError", { enumerable: t
|
|
|
48
48
|
var OxyServices_appData_1 = require("./mixins/OxyServices.appData");
|
|
49
49
|
Object.defineProperty(exports, "OxyAppDataIdentifierError", { enumerable: true, get: function () { return OxyServices_appData_1.OxyAppDataIdentifierError; } });
|
|
50
50
|
var userIdentity_1 = require("./utils/userIdentity");
|
|
51
|
+
Object.defineProperty(exports, "getCanonicalUserHandle", { enumerable: true, get: function () { return userIdentity_1.getCanonicalUserHandle; } });
|
|
51
52
|
Object.defineProperty(exports, "getNormalizedUserId", { enumerable: true, get: function () { return userIdentity_1.getNormalizedUserId; } });
|
|
52
53
|
Object.defineProperty(exports, "normalizeUserIdentity", { enumerable: true, get: function () { return userIdentity_1.normalizeUserIdentity; } });
|
|
53
54
|
Object.defineProperty(exports, "normalizeUserIdentityOrNull", { enumerable: true, get: function () { return userIdentity_1.normalizeUserIdentityOrNull; } });
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getNormalizedUserId = getNormalizedUserId;
|
|
4
4
|
exports.normalizeUserIdentity = normalizeUserIdentity;
|
|
5
5
|
exports.normalizeUserIdentityOrNull = normalizeUserIdentityOrNull;
|
|
6
|
+
exports.getCanonicalUserHandle = getCanonicalUserHandle;
|
|
6
7
|
function stringifyIdentity(value) {
|
|
7
8
|
if (typeof value === 'string') {
|
|
8
9
|
const trimmed = value.trim();
|
|
@@ -23,6 +24,12 @@ function stringifyIdentity(value) {
|
|
|
23
24
|
}
|
|
24
25
|
return null;
|
|
25
26
|
}
|
|
27
|
+
function normalizeHandle(value) {
|
|
28
|
+
const trimmed = value?.trim().replace(/^@+/, '');
|
|
29
|
+
if (!trimmed || /[/?#]/.test(trimmed))
|
|
30
|
+
return null;
|
|
31
|
+
return trimmed;
|
|
32
|
+
}
|
|
26
33
|
function getNormalizedUserId(user) {
|
|
27
34
|
if (!user) {
|
|
28
35
|
return null;
|
|
@@ -39,3 +46,14 @@ function normalizeUserIdentity(user) {
|
|
|
39
46
|
function normalizeUserIdentityOrNull(user) {
|
|
40
47
|
return user ? normalizeUserIdentity(user) : null;
|
|
41
48
|
}
|
|
49
|
+
function getCanonicalUserHandle(user) {
|
|
50
|
+
const username = normalizeHandle(user?.username ?? user?.handle);
|
|
51
|
+
if (!username)
|
|
52
|
+
return null;
|
|
53
|
+
const isFederated = user?.isFederated === true || user?.type === 'federated';
|
|
54
|
+
const instance = normalizeHandle(user?.instance ?? user?.federation?.domain);
|
|
55
|
+
if (isFederated && instance && !username.includes('@')) {
|
|
56
|
+
return `${username}@${instance}`;
|
|
57
|
+
}
|
|
58
|
+
return username;
|
|
59
|
+
}
|