tradly
Version:
Tradly JS SDK
187 lines (172 loc) • 4.25 kB
JavaScript
/**
* Auth Helper
* Provides integration with @tradly/auth package (optional dependency)
* All functions safely handle cases where @tradly/auth is not installed
*/
let authPackage = null;
let authPackageLoading = false;
// Try to load auth package eagerly (non-blocking)
// This will attempt to load the package in the background
(async () => {
if (authPackage !== null || authPackageLoading) return;
authPackageLoading = true;
try {
authPackage = await import("@tradly/auth");
} catch (e) {
// Auth package not installed, continue without it
authPackage = false; // Use false to indicate we tried and failed
} finally {
authPackageLoading = false;
}
})();
/**
* Get auth package (synchronous check)
* @returns {Object|false|null} Auth package, false if not available, null if still loading
*/
function getAuthPackage() {
if (authPackage === false) return null; // Not available
if (authPackage === null) {
// Still loading, try to trigger load if not already loading
if (!authPackageLoading) {
(async () => {
authPackageLoading = true;
try {
authPackage = await import("@tradly/auth");
} catch (e) {
authPackage = false;
} finally {
authPackageLoading = false;
}
})();
}
return null; // Still loading
}
return authPackage;
}
/**
* Get auth key from @tradly/auth if available
* @returns {string|null} Auth key or null if not available
*/
export function getAuthKeyFromAuth() {
const pkg = getAuthPackage();
if (!pkg) return null;
try {
return pkg.getAuthKey();
} catch (e) {
return null;
}
}
/**
* Get PK key from @tradly/auth if available
* @returns {string|null} PK key or null if not available
*/
export function getPKKeyFromAuth() {
const pkg = getAuthPackage();
if (!pkg) return null;
try {
const { getDomain, getEnv, getCachedPKKey } = pkg;
const domain = getDomain();
const env = getEnv();
if (domain && env) {
const pkData = getCachedPKKey(domain, env);
return pkData?.key || null;
}
} catch (e) {
return null;
}
return null;
}
/**
* Check if auth package is initialized
* @returns {boolean} True if auth is initialized
*/
export function isAuthInitialized() {
const pkg = getAuthPackage();
if (!pkg) return false;
try {
return pkg.isAuthInitialized() || false;
} catch (e) {
return false;
}
}
/**
* Get auth configuration from @tradly/auth if available
* @returns {Object|null} Auth config or null if not available
*/
export function getAuthConfig() {
const pkg = getAuthPackage();
if (!pkg) return null;
try {
return pkg.getAuthConfig();
} catch (e) {
return null;
}
}
/**
* Get cached PK key data from @tradly/auth if available
* @param {string} domain - Domain name
* @param {string} env - Environment
* @returns {Object|null} PK key data or null if not available
*/
export function getCachedPKKeyFromAuth(domain, env) {
const pkg = getAuthPackage();
if (!pkg) return null;
try {
const { getCachedPKKey } = pkg;
return getCachedPKKey(domain, env);
} catch (e) {
return null;
}
}
/**
* Get environment from @tradly/auth if available
* @returns {string|null} Environment or null if not available
*/
export function getEnvFromAuth() {
const pkg = getAuthPackage();
if (!pkg) return null;
try {
return pkg.getEnv();
} catch (e) {
return null;
}
}
/**
* Get base URL from @tradly/auth if available
* @returns {string|null} Base URL or null if not available
*/
export function getBaseUrlFromAuth() {
const pkg = getAuthPackage();
if (!pkg) return null;
try {
return pkg.getBaseUrl();
} catch (e) {
return null;
}
}
/**
* Enrich params with keys from @tradly/auth if available
* @param {Object} params - Original params object
* @returns {Object} - Enriched params with authKey if not provided
*/
export function enrichParamsWithAuth(params = {}) {
const pkg = getAuthPackage();
if (!pkg) {
return params; // No auth package, return as-is
}
// If authKey not provided, try to get from auth package
if (!params.authKey) {
try {
const authKey = pkg.getAuthKey();
if (authKey) {
return {
...params,
authKey: authKey,
};
}
} catch (e) {
// Auth not initialized or error, continue without it
}
}
return params;
}