woodsportal-client-sdk 4.0.8-dev.0 → 4.0.8-dev.1

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/main/core/http/visibility-refresh-scheduler.ts","../src/main/core/http/editor-preview-mock.ts","../src/main/core/http/api-endpoints.ts","../src/main/core/http/http-config.ts","../src/main/core/utils/generateApiUrl.ts","../src/main/core/logging/log-http.ts","../src/main/core/http/http-client.ts","../src/main/features/navigation/breadcrumbs.ts","../src/main/features/navigation/generate-url.ts","../src/main/api/navigation-api.ts","../src/main/core/utils/cache/builders.ts","../src/main/core/http/auth-headers.ts","../src/main/features/auth/client/mfa-client.ts","../src/main/features/crm/helpers/normalize-table-list-params.ts","../src/main/core/utils/cache/resolveCrmListPurgeQuery.ts","../src/main/core/utils/cache/crmCacheRefresh.ts","../src/main/core/utils/cache/extractHubspotRecordIdFromWriteResponse.ts","../src/main/core/utils/cache/extractEngagementItemIdFromWriteResponse.ts","../src/main/core/http/client-context.ts","../src/main/features/auth/client/authentication-client.ts","../src/main/features/crm/client/crm-client.ts","../src/main/features/crm/client/engagement-client.ts","../src/main/features/crm/client/cache-client.ts","../src/main/features/auth/client/security-client.ts","../src/main/core/http/client-assembler.ts","../src/main/core/utils/cache/createCachePurgeJob.ts","../src/main/core/utils/logError.ts","../src/main/core/mutation/createMutation.ts"],"names":["config","failureKind","makeLink","lastItem","getParamDetails","actions","updateLink","axios"],"mappings":"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","file":"chunk-C73AH5CW.js","sourcesContent":["import { getClientType } from './client-type'\n\nexport type VisibilityRefreshOptions = {\n shouldRefresh: () => boolean\n refresh: () => Promise<void>\n intervalMs?: number\n}\n\nlet visibilityStop: (() => void) | null = null\n\nfunction hasBrowserDocument(): boolean {\n return typeof document !== 'undefined' && document != null\n}\n\nexport function startVisibilityRefreshScheduler(options: VisibilityRefreshOptions): () => void {\n // Mobile / React Native: no document.visibilityState — HTTP client refreshes on demand.\n if (getClientType() === 'mobile') {\n return () => undefined\n }\n\n if (typeof window === 'undefined' || !hasBrowserDocument()) {\n return () => undefined\n }\n\n visibilityStop?.()\n\n const intervalMs = options.intervalMs ?? 60_000\n\n const tick = () => {\n if (document.visibilityState !== 'visible') return\n if (!options.shouldRefresh()) return\n void options.refresh()\n }\n\n const onVisibility = () => {\n if (document.visibilityState === 'visible') {\n void tick()\n }\n }\n\n const intervalId = window.setInterval(tick, intervalMs)\n document.addEventListener('visibilitychange', onVisibility)\n window.addEventListener('focus', onVisibility)\n\n const stop = () => {\n window.clearInterval(intervalId)\n document.removeEventListener('visibilitychange', onVisibility)\n window.removeEventListener('focus', onVisibility)\n if (visibilityStop === stop) {\n visibilityStop = null\n }\n }\n\n visibilityStop = stop\n return stop\n}\n\nexport function stopVisibilityRefreshScheduler(): void {\n visibilityStop?.()\n}\n","import type { InternalAxiosRequestConfig } from 'axios'\n\nexport type EditorPreviewMockResult = {\n data: unknown\n status?: number\n}\n\nexport type EditorPreviewMockHandler = (\n config: InternalAxiosRequestConfig\n) => EditorPreviewMockResult | null | Promise<EditorPreviewMockResult | null>\n\nlet editorPreviewMockHandler: EditorPreviewMockHandler | null = null\n\nexport function setEditorPreviewMockHandler(handler: EditorPreviewMockHandler | null): void {\n editorPreviewMockHandler = handler\n}\n\nexport function getEditorPreviewMockHandler(): EditorPreviewMockHandler | null {\n return editorPreviewMockHandler\n}\n\nexport function isEditorPreviewMockActive(): boolean {\n return editorPreviewMockHandler != null\n}\n\n/** Short-circuit axios when a preview mock handler returns data for the request. */\nexport async function resolveEditorPreviewMock(config: InternalAxiosRequestConfig): Promise<EditorPreviewMockResult | null> {\n if (!editorPreviewMockHandler) {\n return null\n }\n return editorPreviewMockHandler(config)\n}\n","export const API_ENDPOINTS = {\n // Auth\n PRE_LOGIN: '/api/auth/pre-login',\n LOGIN: '/api/auth/login',\n AUTH_REFRESH: '/api/auth/refresh',\n AUTH_REFRESH_COOKIE: '/api/auth/refresh-cookie',\n FORGET_PASSWORD: '/api/auth/forget-password',\n FORGET_PASSWORD_OTP_VERIFY: '/api/auth/forget-password/otp/verify',\n RESET_PASSWORD_VERIFY_TOKEN: '/api/auth/token/validate',\n RESET_PASSWORD: '/api/auth/reset-password',\n VERIFY_EMAIL: '/api/auth/verify-email',\n REGISTER_EXISTING_USER: '/api/auth/existing-user-register',\n RESEND_EMAIL: '/api/auth/resend-email',\n VERIFY_EMAIL_RESEND: '/api/auth/verify-email/resend',\n LOGOUT: '/api/auth/logout',\n VERIFY_OTP: '/api/auth/verify-otp',\n CLIENT_SESSION: '/api/auth/client-session',\n AUTH_HANDOFF: '/api/auth/handoff',\n\n // Auth MFA (client lane)\n MFA_PENDING_OTP_SEND: '/api/auth/mfa/pending/otp/send',\n MFA_PENDING_PASSKEY_OPTIONS: '/api/auth/mfa/pending/passkey/authenticate/options',\n MFA_PENDING_PASSKEY_VERIFY: '/api/auth/mfa/pending/passkey/authenticate/verify',\n MFA_STATUS: '/api/auth/mfa/status',\n MFA_PREFERENCES: '/api/auth/mfa/preferences',\n MFA_PHONE_VERIFY_START: '/api/auth/mfa/phone/verify/start',\n MFA_PHONE_VERIFY_CONFIRM: '/api/auth/mfa/phone/verify/confirm',\n MFA_PHONE_UNVERIFY: '/api/auth/mfa/phone/unverify',\n MFA_BACKUP_CODES_REGENERATE: '/api/auth/mfa/backup-codes/regenerate',\n MFA_OPT_OUT: '/api/auth/mfa/opt-out',\n MFA_TOTP_ENROLL_START: '/api/auth/mfa/totp/enroll/start',\n MFA_TOTP_ENROLL_VERIFY: '/api/auth/mfa/totp/enroll/verify',\n MFA_TOTP_DISABLE: '/api/auth/mfa/totp/disable',\n MFA_WEBAUTHN_REGISTER_OPTIONS: '/api/auth/mfa/webauthn/register/options',\n MFA_WEBAUTHN_REGISTER_VERIFY: '/api/auth/mfa/webauthn/register/verify',\n MFA_WEBAUTHN_AUTH_OPTIONS: '/api/auth/mfa/webauthn/authenticate/options',\n MFA_WEBAUTHN_AUTH_VERIFY: '/api/auth/mfa/webauthn/authenticate/verify',\n MFA_WEBAUTHN_CREDENTIALS: '/api/auth/mfa/webauthn/credentials',\n MFA_WEBAUTHN_CREDENTIAL_DELETE: '/api/auth/mfa/webauthn/credentials/${credentialRecordId}',\n PASSKEY_LOGIN_OPTIONS: '/api/auth/passkey/login/options',\n PASSKEY_LOGIN_VERIFY: '/api/auth/passkey/login/verify',\n\n // Auth Security (client lane)\n SECURITY_OVERVIEW: '/api/auth/security/overview',\n SECURITY_LOGIN_ACTIVITY: '/api/auth/security/login-activity',\n SECURITY_SESSIONS: '/api/auth/security/sessions',\n SECURITY_SESSION_REVOKE: '/api/auth/security/sessions/${familyId}/revoke',\n SECURITY_SESSIONS_REVOKE_OTHERS: '/api/auth/security/sessions/revoke-others',\n\n // Login bootstrap (portal MFA policy + SSO providers)\n LOGIN_BOOTSTRAP: '/api/auth/login/bootstrap',\n\n // SSO\n SSO_DETAILS: '/api/auth/sso/active',\n SSO_URL: '/api/auth/sso/authorize',\n SSO_CALLBACK: '/api/auth/sso/callback',\n\n // User\n ME: '/api/${hubId}/${portalId}/auth/me?include=crmProfile',\n PROFILE: '/api/${hubId}/${portalId}/profiles',\n PROFILE_UPDATE: '/api/${hubId}/${portalId}/profiles',\n CHANGE_PASSWORD: '/api/auth/change-password',\n\n // Accounts (client lane — hub / portal picker)\n HUBSPOTS: '/api/hubspots',\n PORTALS: '/api/portals',\n\n // Mobile\n MOBILE_NAVIGATION: '/api/${hubId}/${portalId}/mobile/navigation',\n MOBILE_APP_CONFIG: '/api/${hubId}/${portalId}/mobile/app-config',\n MOBILE_NAVIGATION_IMPORT_WEB_MENU: '/api/${hubId}/${portalId}/mobile/navigation/import-web-menu',\n\n // Pipeline\n PIPELINES: '/api/${hubId}/${portalId}/hubspot-object-pipelines/${hubspotObjectTypeId}',\n\n // Stage\n STAGES: '/api/${hubId}/${portalId}/hubspot-object-pipelines/${objectTypeId}/${pipelineId}/stages',\n\n // Cache purge (replaces cache=false refresh; requires features.cache-purge-api-enabled on API)\n CACHE_PURGE: '/api/${hubId}/${portalId}/cache-purge-jobs',\n CACHE_PURGE_STATUS: '/api/${hubId}/${portalId}/cache-purge-jobs/${purgeJobId}',\n /** @deprecated Use CACHE_PURGE */\n CACHE_PURGE_LEGACY: '/api/${hubId}/${portalId}/cache/purge',\n /** @deprecated Use CACHE_PURGE_STATUS */\n CACHE_PURGE_STATUS_LEGACY: '/api/${hubId}/${portalId}/cache/purge/${purgeJobId}',\n\n // Object (read on hubspot-object-data; form layout on hubspot-object-forms)\n OBJECTS: '/api/${hubId}/${portalId}/hubspot-object-data/${hubspotObjectTypeId}/records',\n OBJECTS_FORM: '/api/${hubId}/${portalId}/hubspot-object-forms/${hubspotObjectTypeId}/fields',\n OBJECTS_FORM_OPTIONS: '/api/${hubId}/${portalId}/hubspot-object-forms/${formId}/${objectTypeId}',\n RECORDS_CREATE: '/api/${hubId}/${portalId}/hubspot-object-data/${hubspotObjectTypeId}/records',\n RECORDS_UPDATE: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}',\n RECORDS_ASSOCIATE: '/api/${hubId}/${portalId}/hubspot-object-data/${fromObjectTypeId}/records/${fromRecordId}/associations/${toObjectTypeId}',\n RECORDS_DISASSOCIATE: '/api/${hubId}/${portalId}/hubspot-object-data/${fromObjectTypeId}/records/${fromRecordId}/associations/${toObjectTypeId}',\n /** @deprecated Use RECORDS_CREATE */\n OBJECTS_CREATE: '/api/${hubId}/${portalId}/hubspot-object-forms/${hubspotObjectTypeId}/fields',\n /** @deprecated Use RECORDS_ASSOCIATE */\n OBJECTS_CREATE_EXISTING: '/api/${hubId}/${portalId}/hubspot-object-forms/:fromObjectTypeId/:fromRecordId/associations/:toObjectTypeId',\n OBJECTS_DETAILS: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}',\n /** @deprecated Use RECORDS_UPDATE */\n OBJECTS_DETAILS_UPDATE: '/api/${hubId}/${portalId}/hubspot-object-forms/${objectId}/records/${id}',\n OBJECTS_DETAILS_UPDATE_LEGACY: '/api/${hubId}/${portalId}/hubspot-object-forms/${objectId}/properties/${id}',\n\n // Notes (nested under CRM record)\n NOTES: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/notes',\n NOTES_CREATE: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/notes',\n NOTES_DETAILS_UPDATE: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/notes/${note_id}',\n NOTES_IMAGE_UPLOAD: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/notes/images',\n NOTES_ATTACHMENT_UPLOAD: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/notes/attachments',\n NOTES_ATTACHMENT_UPDATE: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/notes/attachments/${note_id}',\n\n // Email (nested under CRM record)\n EMAILS: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/emails',\n EMAILS_CREATE: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/emails',\n EMAILS_DETAILS_UPDATE: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/emails/${email_id}',\n EMAILS_IMAGE_UPLOAD: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/emails/images',\n EMAILS_ATTACHMENT_UPLOAD: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/emails/attachments',\n EMAILS_ATTACHMENT_UPDATE: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/emails/attachments/${email_id}',\n\n // File manager (nested under CRM record)\n FILES: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/files',\n FILE: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/files/${rowId}',\n FILE_DOWNLOAD: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/files/${rowId}/download',\n FILES_CREATE_FOLDER: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/folders',\n FILES_UPLOAD: '/api/${hubId}/${portalId}/hubspot-object-data/${objectId}/records/${id}/files'\n} as const\n\nexport type ApiEndpointKey = keyof typeof API_ENDPOINTS\nexport type ApiEndpointPath = (typeof API_ENDPOINTS)[ApiEndpointKey]\n","export interface Config {\n /**\n * Base URL for API requests\n */\n baseURL: string\n}\n\n/** Fallback only when initializeHttpClient was not called (development / tests). */\nexport const config: Config = {\n baseURL: ''\n}\n","import { config } from './hub-context'\n\nexport const generateApiUrl = ({ route, params = {}, queryParams = '' }: { route: string; params?: object; queryParams?: any }) => {\n const defaultParams = {\n hubId: config.hubId,\n portalId: config.portalId\n }\n\n params = { ...defaultParams, ...params }\n const url = replaceParams(route, params)\n\n let queryString = ''\n if (queryParams && typeof queryParams === 'object') {\n const cleanedParams = Object.entries(queryParams)\n .filter(([_, value]) => value !== null && value !== undefined)\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n\n queryString = new URLSearchParams(cleanedParams).toString()\n }\n\n return queryString ? `${url}?${queryString}` : url\n}\n\nfunction replaceParams(template: string, values: any) {\n return template.replace(/\\$\\{(\\w+)\\}/g, (_, key) => (key in values ? String(values[key]) : `\\${${key}}`))\n}\n","const SENSITIVE_QUERY_KEYS = new Set([\n 'token',\n 'refreshtoken',\n 'accesstoken',\n 'password',\n 'secret',\n 'authorization',\n 'otp',\n 'code',\n 'api_key',\n 'apikey'\n])\n\nfunction isSensitiveQueryKey(key: string): boolean {\n const normalized = key.toLowerCase()\n return SENSITIVE_QUERY_KEYS.has(normalized) || normalized.includes('password') || normalized.includes('token')\n}\n\nfunction resolveUrlBase(): string {\n if (typeof window === 'undefined') {\n return 'http://localhost'\n }\n try {\n const origin = window.location?.origin\n if (typeof origin === 'string' && origin.length > 0) {\n return origin\n }\n } catch {\n // React Native / partial DOM hosts\n }\n return 'http://localhost'\n}\n\n/** Strip sensitive query params from URLs before debug HTTP logs. */\nexport function sanitizeHttpUrl(url: string | undefined): string | undefined {\n if (url == null || url === '') {\n return url\n }\n\n try {\n const base = resolveUrlBase()\n const parsed = url.startsWith('http') ? new URL(url) : new URL(url, base)\n\n for (const key of [...parsed.searchParams.keys()]) {\n if (isSensitiveQueryKey(key)) {\n parsed.searchParams.set(key, '[redacted]')\n }\n }\n\n return url.startsWith('http') ? parsed.toString() : `${parsed.pathname}${parsed.search}${parsed.hash}`\n } catch {\n return url\n }\n}\n\nexport const SDK_HTTP_TIMING_KEY = '__woodsportalSdkRequestStartMs'\n\ntype TimedRequestConfig = {\n [SDK_HTTP_TIMING_KEY]?: number\n url?: string\n method?: string\n}\n\nexport function markHttpRequestStart(config: TimedRequestConfig): void {\n config[SDK_HTTP_TIMING_KEY] = Date.now()\n}\n\nexport function getHttpRequestDurationMs(config: TimedRequestConfig): number | undefined {\n const start = config[SDK_HTTP_TIMING_KEY]\n return typeof start === 'number' ? Date.now() - start : undefined\n}\n\nexport function getHttpMethod(config: TimedRequestConfig): string | undefined {\n return config.method?.toUpperCase()\n}\n\nexport function getHttpUrl(config: TimedRequestConfig): string | undefined {\n return sanitizeHttpUrl(config.url)\n}\n","import axios from 'axios'\nimport type { AxiosError, AxiosInstance, InternalAxiosRequestConfig } from 'axios'\nimport type { AuthInterceptorPolicyConfig, WoodsportalRequestConfig } from '../auth/auth-interceptor-policy.js'\nimport { AuthErrorCode } from '../auth/auth-error-codes.js'\nimport { API_ENDPOINTS } from './api-endpoints'\nimport {\n getAccessToken,\n ensureValidRefresh,\n refreshSession,\n setRefreshCallback,\n setRefreshBufferSeconds,\n isAccessTokenExpired,\n storAccessToken,\n hydrateSessionRefreshState\n} from './token-store'\nimport { startVisibilityRefreshScheduler, stopVisibilityRefreshScheduler } from './visibility-refresh-scheduler.js'\nimport { config as defaultConfig } from './http-config'\nimport { config as storConfig } from '../utils/hub-context'\nimport { generateApiUrl } from '../utils/generateApiUrl'\nimport { setRefreshToken } from './auth-utils'\nimport { configureLogger, isHttpTracingEnabled, logger } from '../logging/logger'\nimport type { LoggerConfig } from '../logging/logger-types'\nimport { getHttpMethod, getHttpRequestDurationMs, getHttpUrl, markHttpRequestStart, sanitizeHttpUrl } from '../logging/log-http'\nimport { sanitizeAxiosErrorData } from '../utils/error-log-sanitize'\nimport { configureStorageKeys, type StorageKeyConfig } from '../utils/storage-keys'\nimport { setIframeStorageMode } from './iframe-session-storage'\nimport { isServiceUnavailableError } from './http-errors'\nimport {\n classifyRefreshHttpError,\n classifyRefreshResponseWithoutToken,\n type RefreshCallbackResult,\n shouldLogoutAfterRefreshFailure\n} from './refresh-failure-policy.js'\nimport {\n isEditorPreviewMockActive,\n resolveEditorPreviewMock,\n setEditorPreviewMockHandler,\n type EditorPreviewMockHandler\n} from './editor-preview-mock'\nimport { HUBSPOT_DATA, HUB_ID, DEV_PORTAL_ID, PORTAL_ID, DEV_API_URL } from '../utils/constants'\nimport { storage } from '../utils/localStorage'\nimport { setRuntimeHttpClientHubContext } from '../utils/runtime-hub-context'\n\nexport type { EditorPreviewMockHandler, EditorPreviewMockResult } from './editor-preview-mock'\nexport { isEditorPreviewMockActive, setEditorPreviewMockHandler } from './editor-preview-mock'\n\nexport type { RefreshCallbackResult, RefreshFailureKind } from './refresh-failure-policy.js'\nexport {\n classifyRefreshHttpError,\n classifyRefreshResponseWithoutToken,\n isDefinitiveRefreshAuthError,\n isTransientRefreshFailure,\n shouldLogoutAfterRefreshFailure\n} from './refresh-failure-policy.js'\n\nexport type { StorageKeyConfig } from '../utils/storage-keys'\n\nexport interface HttpClientConfig {\n /**\n * Base URL for API requests\n */\n baseURL?: string\n\n /**\n * Request timeout in milliseconds\n */\n timeout?: number\n\n /**\n * Custom headers to include in all requests\n */\n headers?: Record<string, string>\n\n /**\n * Function to check if current path should skip auth error handling\n * Returns true if auth errors should be handled (redirect to login)\n */\n skipCurrentPublicPath?: () => boolean\n\n /**\n * When false, 401 responses do not redirect to unauthorized or invoke onLogout.\n * Used in HubSpot CMS editor iframe to avoid redirect loops.\n */\n shouldHandleUnauthorized?: () => boolean\n\n /**\n * Routes configuration object with route paths\n */\n routes?: {\n unauthorized?: string\n login?: string\n twoFa?: string\n resendEmail?: string\n accountSelect?: string\n }\n\n /**\n * Proactive refresh buffer before access JWT expiry (seconds). Default 60.\n */\n refreshBufferSeconds?: number\n\n /**\n * Auth interceptor policy overrides. Built from `routes` when omitted.\n */\n authPolicy?: Partial<AuthInterceptorPolicyConfig>\n\n /**\n * When true, try HttpOnly refresh cookie (`POST /api/auth/refresh-cookie`) before body token.\n */\n useCookieRefresh?: boolean\n\n /**\n * Hub ID for API requests\n */\n hubId?: string\n\n /**\n * Dev Portal ID for API requests\n */\n devPortalId?: string\n\n /**\n * Function to handle logout\n */\n onLogout?: () => void | Promise<void>\n\n /**\n * SDK logger configuration (level, sinks, HTTP tracing)\n */\n logger?: LoggerConfig\n\n /**\n * Cookie / localStorage key names for session persistence (consumer env mapping).\n */\n storageKeys?: StorageKeyConfig\n\n /** When `iframe`, refresh tokens also persist to localStorage for HubSpot editor iframes. */\n storageMode?: 'cookie' | 'iframe'\n\n /**\n * Invoked when the API appears unavailable (502/503/504 or edge/network failure).\n */\n onServiceUnavailable?: (error: unknown) => void\n\n /**\n * When set, matching requests are fulfilled locally (HubSpot CMS editor preview).\n * Handler returns mock payload or null to pass through to the network.\n */\n editorPreviewMockHandler?: EditorPreviewMockHandler\n}\n\nlet axiosInstance: AxiosInstance | null = null\nlet config: HttpClientConfig = {}\n\ntype RequestConfig = InternalAxiosRequestConfig & WoodsportalRequestConfig\n\nfunction hasBrowserLocation(): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n try {\n return window.location != null\n } catch {\n return false\n }\n}\n\nfunction buildAuthPolicy(): AuthInterceptorPolicyConfig {\n const routes = config.routes ?? {}\n const base = config.authPolicy ?? {}\n return {\n routes: {\n unauthorized: routes.unauthorized ?? '/unauthorized',\n login: routes.login ?? '/login',\n twoFa: routes.twoFa ?? '/login/two-fa',\n resendEmail: routes.resendEmail ?? '/resend-email',\n accountSelect: routes.accountSelect ?? '/account-select',\n ...base.routes\n },\n optionalAuthFailurePaths: base.optionalAuthFailurePaths ?? [\n API_ENDPOINTS.MFA_STATUS,\n API_ENDPOINTS.MFA_PREFERENCES,\n API_ENDPOINTS.MFA_TOTP_ENROLL_START,\n API_ENDPOINTS.MFA_TOTP_ENROLL_VERIFY,\n API_ENDPOINTS.MFA_TOTP_DISABLE,\n API_ENDPOINTS.MFA_PHONE_VERIFY_START,\n API_ENDPOINTS.MFA_PHONE_VERIFY_CONFIRM,\n API_ENDPOINTS.MFA_WEBAUTHN_REGISTER_OPTIONS,\n API_ENDPOINTS.MFA_WEBAUTHN_REGISTER_VERIFY,\n API_ENDPOINTS.MFA_WEBAUTHN_CREDENTIALS\n ],\n sessionProbePaths: base.sessionProbePaths,\n includeAdminMfaSecurityPrefixes: base.includeAdminMfaSecurityPrefixes ?? true\n }\n}\n\nfunction formatUnauthorizedRoute(route: string): string {\n if (route.startsWith('#')) {\n return route\n }\n if (hasBrowserLocation() && window.location!.hash.startsWith('#/')) {\n return `#${route.startsWith('/') ? route : `/${route}`}`\n }\n return route\n}\n\nfunction isRecoverableSessionExpiredCode(errorCode: string | undefined): boolean {\n return (\n errorCode === AuthErrorCode.TOKEN_EXPIRED ||\n errorCode === AuthErrorCode.TOKEN_INVALID ||\n errorCode === AuthErrorCode.AUTHENTICATION_FAILED ||\n errorCode === AuthErrorCode.MISSING_REFRESH_TOKEN ||\n errorCode === AuthErrorCode.ACCESS_UNAUTHORIZED\n )\n}\n\nfunction formatLoginRouteWithReturn(loginRoute: string): string {\n const loginPath = loginRoute.startsWith('/') ? loginRoute : `/${loginRoute}`\n if (!hasBrowserLocation()) {\n return formatUnauthorizedRoute(loginPath)\n }\n const returnPath = window.location!.hash.replace(/^#/, '') || window.location!.pathname\n if (!returnPath || returnPath.startsWith('/login')) {\n return formatUnauthorizedRoute(loginPath)\n }\n return formatUnauthorizedRoute(`${loginPath}?r=${encodeURIComponent(returnPath)}`)\n}\n\nfunction setBearerAuthorization(requestConfig: RequestConfig, token: string): void {\n if (!requestConfig.headers) {\n requestConfig.headers = {} as RequestConfig['headers']\n }\n if (typeof requestConfig.headers.set === 'function') {\n requestConfig.headers.set('Authorization', `Bearer ${token}`)\n return\n }\n ;(requestConfig.headers as Record<string, string>).Authorization = `Bearer ${token}`\n}\n\nasync function handleAuthHttpError(error: AxiosError, axiosInstanceRef: AxiosInstance): Promise<unknown> {\n if (!error.response || !error.config) {\n return Promise.reject(error)\n }\n\n const status = error.response.status\n if (status !== 401 && status !== 403) {\n return Promise.reject(error)\n }\n\n const shouldHandleOnPublicPath = config.skipCurrentPublicPath?.() ?? false\n const allowUnauthorizedHandling = config.shouldHandleUnauthorized?.() ?? true\n if (!shouldHandleOnPublicPath || !allowUnauthorizedHandling) {\n return Promise.reject(error)\n }\n\n const { parseApiErrorPayload } = await import('../auth/auth-error-codes.js')\n const { persistAuthError, resolveAuthErrorAction } = await import('../auth/auth-interceptor-policy.js')\n\n const reqConfig = error.config as RequestConfig\n const payload = parseApiErrorPayload(error.response.data)\n const action = resolveAuthErrorAction({\n status,\n errorCode: payload.errorCode,\n url: reqConfig.url,\n skipGlobalAuthRedirect: reqConfig.skipGlobalAuthRedirect,\n isRetryRequest: reqConfig.__isRetryRequest,\n policy: buildAuthPolicy()\n })\n\n if (action.kind === 'reject') {\n return Promise.reject(error)\n }\n\n if (action.kind === 'refresh_retry') {\n if (isRefreshCallbackInFlight()) {\n return Promise.reject(error)\n }\n try {\n await refreshSession({ force: true })\n } catch {\n /* handled below */\n }\n const token = getAccessToken()\n if (token) {\n const newConfig: RequestConfig = { ...reqConfig, __isRetryRequest: true }\n setBearerAuthorization(newConfig, token)\n return axiosInstanceRef.request(newConfig)\n }\n persistAuthError(payload)\n void config.onLogout?.()\n const policy = buildAuthPolicy()\n const destination = isRecoverableSessionExpiredCode(payload.errorCode)\n ? formatLoginRouteWithReturn(policy.routes.login)\n : formatUnauthorizedRoute(policy.routes.unauthorized)\n if (hasBrowserLocation()) {\n window.location!.replace(destination)\n }\n return Promise.reject(error)\n }\n\n persistAuthError(payload)\n\n if (action.kind === 'logout' || action.kind === 'redirect') {\n if (action.clearSession) {\n void config.onLogout?.()\n }\n if (hasBrowserLocation()) {\n window.location!.replace(formatUnauthorizedRoute(action.route))\n }\n }\n\n return Promise.reject(error)\n}\n\nfunction persistHubContextFromClientConfig(clientConfig: HttpClientConfig): void {\n const existing = storage.get<Record<string, unknown>>(HUBSPOT_DATA) || {}\n const next: Record<string, unknown> = { ...existing }\n\n if (clientConfig.hubId != null && String(clientConfig.hubId).trim() !== '') {\n next[HUB_ID] = String(clientConfig.hubId)\n }\n\n if (clientConfig.devPortalId != null && String(clientConfig.devPortalId).trim() !== '') {\n const portalId = String(clientConfig.devPortalId)\n next[DEV_PORTAL_ID] = portalId\n next[PORTAL_ID] = portalId\n } else {\n delete next[DEV_PORTAL_ID]\n }\n\n if (clientConfig.baseURL) {\n next[DEV_API_URL] = clientConfig.baseURL\n }\n\n storage.set(HUBSPOT_DATA, next)\n setRuntimeHttpClientHubContext({\n hubId: clientConfig.hubId != null ? String(clientConfig.hubId) : '',\n devPortalId: clientConfig.devPortalId != null ? String(clientConfig.devPortalId) : '',\n devApiUrl: clientConfig.baseURL ?? ''\n })\n}\n\nfunction notifyServiceUnavailable(error: unknown): void {\n if (!isServiceUnavailableError(error)) return\n config.onServiceUnavailable?.(error)\n}\n\n/**\n * Initialize the HTTP client with configuration\n */\nexport function initializeHttpClient(clientConfig: HttpClientConfig): void {\n config = clientConfig\n persistHubContextFromClientConfig(clientConfig)\n\n if (clientConfig.logger != null) {\n configureLogger(clientConfig.logger)\n }\n\n if (clientConfig.storageKeys != null) {\n configureStorageKeys(clientConfig.storageKeys)\n }\n\n void import('../utils/storage-migration.js')\n .then(({ migrateLegacyStorageKeys }) => {\n migrateLegacyStorageKeys()\n })\n .catch(() => {\n // Non-browser hosts (e.g. React Native) — cookie/session migration is web-only.\n })\n void import('./cross-tab-session.js')\n .then(({ installCrossTabSessionListener }) => {\n installCrossTabSessionListener()\n })\n .catch(() => {\n // ignore\n })\n\n setIframeStorageMode(clientConfig.storageMode === 'iframe')\n\n if (typeof clientConfig.refreshBufferSeconds === 'number') {\n setRefreshBufferSeconds(clientConfig.refreshBufferSeconds)\n }\n\n if (clientConfig.editorPreviewMockHandler !== undefined) {\n setEditorPreviewMockHandler(clientConfig.editorPreviewMockHandler)\n }\n\n const baseURL = storConfig?.devApiUrl || config.baseURL\n if (!baseURL) {\n throw new Error('WoodsPortal SDK HTTP client is not configured. Call initializeHttpClient({ baseURL }) at app startup.')\n }\n const timeout = config.timeout ?? 50000\n\n axiosInstance = axios.create({\n baseURL,\n timeout,\n headers: {\n 'Content-Type': 'application/json',\n ...config.headers\n }\n })\n\n // Set up refresh callback to avoid circular dependency\n setRefreshCallback(getAuthRefreshToken)\n\n hydrateSessionRefreshState()\n\n // Request interceptor: inject auth token if available\n axiosInstance.interceptors.request.use(async (requestConfig: RequestConfig) => {\n const previewMock = await resolveEditorPreviewMock(requestConfig)\n if (previewMock) {\n requestConfig.adapter = () =>\n Promise.resolve({\n data: previewMock.data,\n status: previewMock.status ?? 200,\n statusText: 'OK',\n headers: {},\n config: requestConfig\n })\n }\n\n markHttpRequestStart(requestConfig)\n\n if (isHttpTracingEnabled()) {\n logger.debug('http', 'request start', {\n method: getHttpMethod(requestConfig),\n url: getHttpUrl(requestConfig),\n phase: 'start'\n })\n }\n\n const token = getAccessToken()\n if (token) {\n setBearerAuthorization(requestConfig, token)\n }\n return requestConfig\n })\n\n // Response interceptor: handle errors\n axiosInstance.interceptors.response.use(\n (response) => {\n if (isHttpTracingEnabled()) {\n logger.debug('http', 'request complete', {\n method: getHttpMethod(response.config),\n url: getHttpUrl(response.config),\n status: response.status,\n durationMs: getHttpRequestDurationMs(response.config),\n phase: 'complete'\n })\n }\n return response\n },\n (error: AxiosError) => {\n if (axios.isAxiosError(error) && error.config) {\n const status = error.response?.status\n\n if (isHttpTracingEnabled()) {\n logger.debug('http', 'request failed', {\n method: getHttpMethod(error.config),\n url: getHttpUrl(error.config),\n status,\n durationMs: getHttpRequestDurationMs(error.config),\n phase: 'complete'\n })\n }\n\n if (status != null && status >= 400 && status !== 401 && status !== 403) {\n logger.warn('http', 'HTTP error response', {\n method: getHttpMethod(error.config),\n url: sanitizeHttpUrl(error.config.url),\n status,\n statusText: error.response?.statusText,\n data: sanitizeAxiosErrorData(error.response?.data)\n })\n }\n\n notifyServiceUnavailable(error)\n }\n\n return handleAuthHttpError(error, axiosInstance!)\n }\n )\n\n stopVisibilityRefreshScheduler()\n startVisibilityRefreshScheduler({\n shouldRefresh: () => !isEditorPreviewMockActive() && isAccessTokenExpired(),\n refresh: async () => {\n try {\n await refreshSession()\n } catch {\n // Scheduler tick — next interval or focus may retry.\n }\n }\n })\n\n logger.info('http', 'HTTP client initialized', { baseURL })\n}\n\n/**\n * Get the axios instance (creates default if not initialized)\n */\nfunction getAxiosInstance(): AxiosInstance {\n if (!axiosInstance) {\n // Create default instance if not initialized\n initializeHttpClient({\n baseURL: defaultConfig.baseURL,\n timeout: 50000\n })\n }\n return axiosInstance!\n}\n\nfunction formatBooleanSearchParam(key: string, value: boolean): string {\n return value ? `${key}:1` : `${key}:`\n}\n\nasync function maybeEnsureValidRefresh(): Promise<void> {\n if (isEditorPreviewMockActive()) {\n return\n }\n await ensureValidRefresh()\n}\n\nexport class HttpClient {\n static async get<T>(url: string, params?: unknown, options?: any): Promise<T> {\n await maybeEnsureValidRefresh()\n const response = await getAxiosInstance().get<T>(url, { params, ...(options || {}) })\n return response.data\n }\n\n static async post<T>(url: string, data: unknown, options?: any): Promise<T> {\n await maybeEnsureValidRefresh()\n const response = await getAxiosInstance().post<T>(url, data, options)\n return response.data\n }\n\n static async put<T>(url: string, data: unknown): Promise<T> {\n await maybeEnsureValidRefresh()\n const response = await getAxiosInstance().put<T>(url, data)\n return response.data\n }\n\n static async delete<T>(url: string, config?: { data?: unknown }): Promise<T> {\n await maybeEnsureValidRefresh()\n const response = await getAxiosInstance().delete<T>(url, config)\n return response.data\n }\n\n static formatSearchParams(params: Partial<any>): string {\n return Object.entries(params)\n .filter(([, value]) => Boolean(value))\n .map(([k, v]) =>\n ['type', 'categories', 'tags', 'author', 'manufacturer', 'shops', 'refund_reason'].includes(k)\n ? `${k}.slug:${v}`\n : ['is_approved'].includes(k)\n ? formatBooleanSearchParam(k, v as boolean)\n : `${k}:${v}`\n )\n .join(';')\n }\n}\n\nfunction mergeAuthRequestOptions(options?: { headers?: Record<string, string> }): { headers?: Record<string, string> } | undefined {\n const devPortalId = storConfig.devPortalId\n if (!devPortalId && !options?.headers) {\n return options\n }\n return {\n ...options,\n headers: {\n ...(devPortalId ? { 'X-Dev-Portal-Id': devPortalId } : {}),\n ...options?.headers\n }\n }\n}\n\nexport class AuthHttpClient {\n static async get<T>(url: string, params?: unknown, options?: { headers?: Record<string, string> }): Promise<T> {\n const response = await getAxiosInstance().get<T>(url, { params, ...mergeAuthRequestOptions(options) })\n return response.data\n }\n\n static async post<T>(url: string, data: unknown, options?: any): Promise<T> {\n const response = await getAxiosInstance().post<T>(url, data, options)\n return response.data\n }\n\n static async put<T>(url: string, data: unknown, options?: any): Promise<T> {\n const response = await getAxiosInstance().put<T>(url, data, options)\n return response.data\n }\n}\n\nexport function getFormErrors(error: unknown): string | null {\n if (axios.isAxiosError(error)) {\n return (error.response?.data as any)?.message ?? null\n }\n return null\n}\n\nexport function getFieldErrors(error: unknown): any {\n if (axios.isAxiosError(error)) {\n return (error.response?.data as any)?.errors ?? null\n }\n return null\n}\n\nasync function postRefreshCookie(headers: Record<string, string>): Promise<any> {\n const apiUrl = generateApiUrl({\n route: API_ENDPOINTS.AUTH_REFRESH_COOKIE,\n queryParams: { hubId: storConfig.hubId }\n })\n return getAxiosInstance().post(apiUrl, {}, {\n headers,\n withCredentials: true,\n skipGlobalAuthRedirect: true\n } as RequestConfig)\n}\n\nlet refreshCallbackInFlight = false\n\n/** True while {@link getAuthRefreshToken} is in progress — avoids interceptor refresh_retry deadlock. */\nexport function isRefreshCallbackInFlight(): boolean {\n return refreshCallbackInFlight\n}\n\nfunction clearSessionAfterRefreshFailure(): void {\n if (isEditorPreviewMockActive()) {\n return\n }\n if (config.shouldHandleUnauthorized?.() === false) {\n return\n }\n void config.onLogout?.()\n}\n\nexport async function getAuthRefreshToken(refreshToken: string | null): Promise<RefreshCallbackResult> {\n refreshCallbackInFlight = true\n try {\n const hubId = storConfig.hubId\n if (hubId == null || String(hubId).trim() === '') {\n return { token: null, success: false, failureKind: 'missing_context' }\n }\n\n if (refreshToken == null || refreshToken.trim() === '') {\n return { token: null, success: false, failureKind: 'missing_refresh_token' }\n }\n\n const headers: Record<string, string> = {}\n\n if (storConfig.devPortalId) {\n headers['X-Dev-Portal-Id'] = storConfig.devPortalId\n }\n\n let response: any\n\n if (config.useCookieRefresh) {\n try {\n response = await postRefreshCookie(headers)\n } catch {\n const apiUrl = generateApiUrl({\n route: API_ENDPOINTS.AUTH_REFRESH,\n queryParams: { hubId: storConfig.hubId }\n })\n try {\n response = await getAxiosInstance().post(apiUrl, { refreshToken }, {\n headers,\n skipGlobalAuthRedirect: true\n } as RequestConfig)\n } catch (bodyError) {\n const failureKind = classifyRefreshHttpError(bodyError)\n if (shouldLogoutAfterRefreshFailure(failureKind)) {\n clearSessionAfterRefreshFailure()\n }\n if (failureKind === 'transient') {\n notifyServiceUnavailable(bodyError)\n logger.warn('auth', bodyError instanceof Error ? bodyError.message : 'token refresh failed', {\n operation: 'token refresh',\n failureKind\n })\n } else {\n logger.error('auth', bodyError instanceof Error ? bodyError.message : 'token refresh failed', {\n operation: 'token refresh',\n failureKind\n })\n }\n return { token: null, success: false, failureKind }\n }\n }\n } else {\n const apiUrl = generateApiUrl({\n route: API_ENDPOINTS.AUTH_REFRESH,\n queryParams: { hubId: storConfig.hubId }\n })\n try {\n response = await getAxiosInstance().post(apiUrl, { refreshToken }, {\n headers,\n skipGlobalAuthRedirect: true\n } as RequestConfig)\n } catch (error) {\n const failureKind = classifyRefreshHttpError(error)\n if (shouldLogoutAfterRefreshFailure(failureKind)) {\n clearSessionAfterRefreshFailure()\n }\n if (failureKind === 'transient') {\n notifyServiceUnavailable(error)\n logger.warn('auth', error instanceof Error ? error.message : 'token refresh failed', {\n operation: 'token refresh',\n failureKind\n })\n } else {\n logger.error('auth', error instanceof Error ? error.message : 'token refresh failed', {\n operation: 'token refresh',\n failureKind\n })\n }\n return { token: null, success: false, failureKind }\n }\n }\n\n const maybeData = response?.data?.data || response?.data\n const tokenData = maybeData?.tokenData || maybeData || ({} as any)\n const newRefreshToken = tokenData?.refreshToken as string\n const token = tokenData?.token as string | undefined\n const expiresIn = tokenData?.expiresIn as number | undefined\n const rExpiresIn = tokenData?.refreshExpiresIn as number | undefined\n const rExpiresAt = tokenData?.refreshExpiresAt as number | undefined // epoch seconds\n\n if (typeof newRefreshToken === 'string') {\n let rExpires = 0\n if (typeof rExpiresIn === 'number') {\n rExpires = Date.now() + rExpiresIn * 1000\n } else if (typeof rExpiresAt === 'number') {\n rExpires = rExpiresAt * 1000\n }\n setRefreshToken(newRefreshToken, rExpires)\n }\n\n if (typeof token === 'string') {\n storAccessToken(token, typeof expiresIn === 'number' ? expiresIn : undefined)\n return { token, success: true }\n }\n\n const failureKind = classifyRefreshResponseWithoutToken(response)\n if (shouldLogoutAfterRefreshFailure(failureKind)) {\n clearSessionAfterRefreshFailure()\n logger.error('auth', 'refresh response missing access token', {\n operation: 'token refresh',\n failureKind\n })\n } else {\n logger.warn('auth', 'refresh response missing access token', {\n operation: 'token refresh',\n failureKind\n })\n }\n return { token: null, success: false, failureKind }\n } finally {\n refreshCallbackInFlight = false\n }\n}\n\n// Export the axios instance getter for advanced usage\nexport { getAxiosInstance }\n","import { decodeToBase64 } from '../../core/utils/compress'\nimport { getParam, getPath } from '../../core/utils/param'\nimport { getRouteMenu } from './param'\nimport { generatePath } from './url-utils'\n\nexport const getBreadcrumbs = () => {\n // const router = useRouter()\n // const search: any = router.state.location.search\n const search: any = getParam('b')\n\n const breadcrumbs = decodeToBase64(search) || []\n\n if (!breadcrumbs && breadcrumbs.length < 1) return []\n\n const updated = breadcrumbs.map((breadcrumb: any, index: any) => {\n return generatePath(breadcrumbs, breadcrumb, index)\n })\n\n if (updated.length < 1) {\n const pathname: any = getPath()\n const routeMenu: any = getRouteMenu(pathname)\n return [\n {\n name: routeMenu?.title,\n path: routeMenu?.path\n }\n ]\n }\n return updated\n}\n\nexport const getTableTitle = (componentName: string, title: string, ticketTableTitle: string) => {\n // const router = useRouter()\n // const search: any = router.state.location.search\n const search: any = getParam('b')\n let breadcrumbs = decodeToBase64(search) || []\n\n if (breadcrumbs.length < 1) {\n // const router = useRouter()\n // const { pathname } = router.state.location\n const pathname: any = getPath()\n const routeMenu: any = getRouteMenu(pathname)\n\n breadcrumbs = [\n {\n n: routeMenu?.title,\n pt: routeMenu?.path\n }\n ]\n }\n\n let associatedtableTitleSingular: any = ''\n let tableTitle: any = ''\n let singularTableTitle: any = ''\n\n if (breadcrumbs && breadcrumbs.length > 0) {\n const lastItem: any = breadcrumbs[breadcrumbs.length - 1]\n const last: any = lastItem ? generatePath(breadcrumbs, lastItem, breadcrumbs.length - 1) : null\n const previousItem: any = breadcrumbs[breadcrumbs.length - 2]\n const previous: any = previousItem ? generatePath(breadcrumbs, previousItem, breadcrumbs.length - 2) : null\n const singularLastName = last?.name\n\n associatedtableTitleSingular = singularLastName\n if (componentName != 'ticket') {\n tableTitle = previous?.name ? { last: last, previous: previous } : { last: last }\n singularTableTitle = previous?.name ? `${singularLastName} with ${previous?.name}` : singularLastName\n } else {\n const ticketTableTitleSingular = ticketTableTitle.endsWith('s') ? ticketTableTitle.slice(0, -1) : ticketTableTitle\n tableTitle = { last: { name: title } }\n\n singularTableTitle = previous?.name ? `${ticketTableTitleSingular} with ${singularLastName} ` : ticketTableTitleSingular\n }\n }\n return { associatedtableTitleSingular, tableTitle, singularTableTitle }\n}\n\nexport const getFormTitle = (type: string, title: string, activeTab: string) => {\n // const router = useRouter()\n // const search: any = router.state.location.search\n const search: any = getParam('b')\n let breadcrumbs = decodeToBase64(search) || []\n\n if (breadcrumbs.length < 1) {\n // const router = useRouter()\n // const { pathname } = router.state.location\n const pathname: any = getPath()\n const routeMenu: any = getRouteMenu(pathname)\n breadcrumbs = [\n {\n n: routeMenu?.title,\n pt: routeMenu?.path\n }\n ]\n }\n\n let objectName: any = ''\n let puralObjectName: any = ''\n let dialogTitle: any = ''\n\n if (breadcrumbs && breadcrumbs?.length > 0) {\n const last: any = breadcrumbs[breadcrumbs?.length - 1]\n const lastName = last?.n\n const mTitle = title\n if (type === 'association' && breadcrumbs && breadcrumbs?.length > 0) {\n objectName = title\n puralObjectName = title\n dialogTitle = `${activeTab == 'addNew' ? `Create a new ${mTitle} for ${nameTrancate(lastName)}` : `Associate an Existing ${mTitle} with ${nameTrancate(lastName)}`}`\n } else {\n const singularLastName = typeof lastName === 'string' && lastName?.endsWith('s') ? lastName.slice(0, -1) : lastName\n objectName = singularLastName\n puralObjectName = lastName\n dialogTitle = `${activeTab == 'addNew' ? `Create a new ${mTitle?.includes('with') ? nameTrancate(mTitle?.replace('with', 'for')) : nameTrancate(mTitle)}` : `Associate an Existing ${nameTrancate(mTitle)}`}`\n }\n }\n return { objectName, puralObjectName, dialogTitle }\n}\n\nconst nameTrancate = (name: any) => {\n return name?.length > 30 ? `${name?.slice(0, 30) + '...'}` : name\n}\n","import { decodeToBase64 } from '../../core/utils/compress'\nimport { breadcrumbStage, generateUrl, isMessingParent, isMessingParentLastItem } from './url-utils'\nimport { getParam, getPath } from '../../core/utils/param'\nimport { getRouteMenu } from './param'\n\nexport const makeLink = () => {\n // const router = useRouter()\n // const search: any = router.state.location.search\n const search: any = getParam('b')\n\n // const makeLink = (props: any) => {\n // if (!search.b || \"isPC\" in props) { // check props?.isPC if dashbaord sidebar\n // return buildParentRoute(props, search, router) // pure helper\n // } else {\n // const breadcrumbItems = decodeToBase64(search?.b) || []\n // return buildChildRoute(props, search, breadcrumbItems) // pure helper\n // }\n // }\n\n const makeLink = (props: any) => {\n if (!search || 'isPC' in props) {\n // check props?.isPC if dashbaord sidebar\n return buildParentRoute(props)\n } else {\n const breadcrumbItems = decodeToBase64(search) || []\n return buildChildRoute(props, breadcrumbItems)\n }\n }\n\n return { makeLink }\n}\n\n// if 0 index iths mean have no parent then add this\nconst buildParentRoute = (props: any) => {\n // const { pathname } = router.state.location\n // const routeMenu: any = getRouteMenu(pathname)\n const pathname: any = getPath()\n const routeMenu: any = getRouteMenu(pathname)\n\n const breadcrumbItems: any = [\n {\n n: routeMenu?.title,\n o_t_id: routeMenu?.path,\n isHome: props?.isHome || false\n }\n ]\n // return buildChildRoute(props, search, breadcrumbItems)\n return buildChildRoute(props, breadcrumbItems)\n}\n\n// if hav parent then add this\nconst buildChildRoute = (props: any, breadcrumbItems: any) => {\n const breadcrumbs = [...breadcrumbItems]\n // let breadcrumbType: string = 'child'\n\n // if (breadcrumbItems.length === 1) {\n // breadcrumbType = 'root'\n // } else if (breadcrumbItems.length === 2) {\n // breadcrumbType = 'root_details'\n // }\n const breadcrumbType = breadcrumbStage(breadcrumbItems)\n\n if (props?.isHome && isMessingParentLastItem(breadcrumbItems)) {\n // its for home side bard card data\n const parent: any = {\n n: props?.title || '',\n o_t_id: props?.objectTypeId,\n pt: `/association/${props?.objectTypeId}`,\n isHome: props?.isHome || false,\n prm: {\n sort: '-hs_createdate',\n s: '',\n fPn: 'hs_pipeline',\n fO: 'eq',\n fV: '',\n c: true,\n isPC: props?.isPC,\n v: 'LIST',\n l: '10',\n p: 1\n }\n }\n\n breadcrumbs.push(parent)\n\n const newCrumb: any = {\n n: props?.name,\n o_t_id: props?.objectTypeId,\n o_r_id: props?.recordId\n }\n breadcrumbs.push(newCrumb)\n } else if (breadcrumbType === 'root') {\n const newCrumb: any = {\n n: props?.name,\n o_t_id: props?.objectTypeId,\n o_r_id: props?.recordId\n }\n\n // ✅ Add params if available\n // if (props.params) {\n // newCrumb.p = props.params\n // }\n\n if (props?.isPC) {\n newCrumb.prm = {\n isPC: props?.isPC\n }\n }\n\n breadcrumbs.push(newCrumb)\n } else {\n const lastItem = breadcrumbs[breadcrumbs.length - 1]\n\n if (\n props?.objectTypeId != '0-5' &&\n breadcrumbs.length > 2 && // check for only association ticket object\n !isMessingParent(breadcrumbItems) &&\n lastItem?.o_t_id === props?.objectTypeId && // check for all associated object and check isMessingParent for skip parent to child and child to parent association data\n props?.isHome &&\n !isMessingParentLastItem(breadcrumbItems)\n ) {\n // check home side bar child last item is messing parent then skip\n const newCrumb: any = {\n n: props?.name,\n o_t_id: props?.objectTypeId,\n o_r_id: props?.recordId\n }\n\n // ✅ Add params if available\n // if (props.params) {\n // newCrumb.p = props.params\n // }\n\n if (props?.isPC) {\n newCrumb.prm = {\n isPC: props?.isPC\n }\n }\n\n breadcrumbs.push(newCrumb)\n } else {\n const lastItem = breadcrumbs[breadcrumbs.length - 1]\n\n // if associated data have no parent\n const parent: any = {\n n: props?.associationLabel || props?.name,\n o_t_id: props?.objectTypeId\n }\n\n if (props?.tableParam) {\n parent.prm = props?.tableParam\n }\n\n if (props?.defPermissions) {\n parent.dp = props?.defPermissions\n }\n\n if (lastItem?.o_t_id && lastItem?.o_r_id) {\n // check if last item have no parent\n breadcrumbs.push(parent) // association list data\n }\n // end\n\n if (props?.recordId) {\n // association single data\n const newCrumb: any = {\n n: props?.name,\n o_t_id: props?.objectTypeId,\n o_r_id: props?.recordId\n }\n\n // ✅ Add params if available\n // if (props.params) {\n // newCrumb.p = props.params\n // }\n\n if (props?.isPC) {\n newCrumb.prm = {\n isPC: props?.isPC\n }\n }\n\n breadcrumbs.push(newCrumb)\n }\n }\n }\n return generateUrl(props, breadcrumbs)\n}\n","import { getRouteDetails, getParamDetails } from '../features/navigation/param'\nimport { getBreadcrumbs, getFormTitle, getTableTitle } from '../features/navigation/breadcrumbs'\nimport { makeLink } from '../features/navigation/generate-url'\nimport { updateLink } from '../features/navigation/url'\n\n/** Nested navigation API (SDK 4.0 canonical). */\nexport const navigationApi = {\n url: {\n makeLink,\n updateLink\n },\n route: {\n getDetails: getRouteDetails,\n getParamDetails\n },\n breadcrumbs: {\n getList: getBreadcrumbs,\n getTableTitle,\n getFormTitle\n }\n}\n\nexport { getRouteDetails, getParamDetails, getBreadcrumbs, getFormTitle, getTableTitle, makeLink, updateLink }\n","import type { CachePurgeListQuery, CachePurgeRequest, CachePurgeTarget, CachePurgeView } from '../../types/cache-purge'\n\nexport function buildCrmListPurgeTarget(objectTypeId: string, listQuery?: CachePurgeListQuery, recordIds?: string[]): CachePurgeTarget {\n const target: CachePurgeTarget = {\n domain: 'crm_object_data',\n objectTypeId,\n views: ['list'],\n listQuery: listQuery ?? { page: 1, limit: 10, view: 'LIST' }\n }\n if (recordIds?.length) {\n target.recordIds = recordIds\n }\n return target\n}\n\nexport function buildCrmSinglePurgeTarget(objectTypeId: string, recordIds: string[], listQuery?: CachePurgeListQuery): CachePurgeTarget {\n return {\n domain: 'crm_object_data',\n objectTypeId,\n views: ['single'],\n recordIds,\n listQuery\n }\n}\n\nexport function buildEngagementPurgeTarget(\n objectTypeId: string,\n recordIds: string[],\n views: Extract<CachePurgeView, 'notes' | 'emails' | 'files'>[],\n options?: {\n fileIds?: string[]\n listQuery?: CachePurgeListQuery\n engagementItemIds?: string[]\n }\n): CachePurgeTarget {\n if (!recordIds.length) {\n throw new Error('recordIds is required for engagement purge views')\n }\n const target: CachePurgeTarget = {\n domain: 'crm_object_data',\n objectTypeId,\n recordIds,\n views,\n fileIds: options?.fileIds,\n listQuery: options?.listQuery ?? { page: 1, limit: 10 }\n }\n if (options?.engagementItemIds?.length) {\n target.engagementItemIds = options.engagementItemIds\n }\n return target\n}\n\nexport function buildUserSessionPurgeTarget(): CachePurgeTarget {\n return { domain: 'user_session' }\n}\n\nexport function buildPortalConfigPurgeTarget(objectTypeIds: string[]): CachePurgeTarget {\n return {\n domain: 'portal_object_config',\n objectTypeIds\n }\n}\n\nexport function mergePurgeTargets(...targets: CachePurgeTarget[]): CachePurgeTarget[] {\n return targets\n}\n\nexport function buildCachePurgeRequest(\n targets: CachePurgeTarget[],\n options?: {\n mode?: 'soft' | 'hard'\n warm?: boolean\n includeContactAccess?: boolean\n includeShortOnHard?: boolean\n confirmPortalWide?: boolean\n postCrmWrite?: boolean\n warmListDelayMs?: number\n }\n): CachePurgeRequest {\n const request: CachePurgeRequest = {\n mode: options?.mode ?? 'soft',\n warm: options?.warm ?? true,\n includeContactAccess: options?.includeContactAccess ?? true,\n includeShortOnHard: options?.includeShortOnHard ?? false,\n confirmPortalWide: options?.confirmPortalWide ?? false,\n targets\n }\n if (options?.postCrmWrite) {\n request.postCrmWrite = true\n }\n if (options?.warmListDelayMs != null) {\n request.warmListDelayMs = options.warmListDelayMs\n }\n return request\n}\n","import { getAccessToken } from './token-store'\nimport { config } from '../utils/hub-context'\n\nexport function devPortalHeaders(): Record<string, string> | undefined {\n if (!config?.devPortalId) {\n return undefined\n }\n return { 'X-Dev-Portal-Id': config.devPortalId }\n}\n\nexport function mergeRequestOptions(token?: string, extraHeaders?: Record<string, string>): { headers: Record<string, string> } | undefined {\n const bearerToken = token || getAccessToken()\n const headers: Record<string, string> = { ...extraHeaders }\n\n if (bearerToken) {\n headers.Authorization = `Bearer ${bearerToken}`\n }\n\n const devHeaders = devPortalHeaders()\n if (devHeaders) {\n Object.assign(headers, devHeaders)\n }\n\n return Object.keys(headers).length > 0 ? { headers } : undefined\n}\n\nexport function hubIdQuery(): Record<string, string> | null {\n return config.hubId ? { hubId: config.hubId } : null\n}\n\nexport function portalIdQuery(portalId?: string | number | null): Record<string, string> | undefined {\n const id = portalId ?? config.portalId ?? config.devPortalId\n if (id === null || id === undefined || id === '') {\n return undefined\n }\n return { portalId: String(id) }\n}\n","import { generateApiUrl } from '../../../core/utils/generateApiUrl'\nimport { API_ENDPOINTS } from '../../../core/http/api-endpoints'\nimport { AuthHttpClient, HttpClient } from '../../../core/http/http-client'\nimport { hubIdQuery, mergeRequestOptions, portalIdQuery } from '../../../core/http/auth-headers'\nimport type {\n MfaOtpSendRequest,\n MfaPendingPasskeyOptionsRequest,\n MfaPendingPasskeyVerifyRequest,\n MfaPreferenceRequest,\n MfaStatusQuery,\n PasskeyLoginOptionsRequest,\n PasskeyLoginVerifyRequest,\n PhoneVerifyConfirmRequest,\n PhoneVerifyStartRequest,\n BackupCodesRegenerateRequest,\n MfaBackupCodesResponse,\n MfaOptOutRequest,\n PhoneUnverifyRequest,\n TotpDisableRequest,\n TotpEnrollVerifyRequest,\n TwoFaVerificationRequest,\n WebAuthnVerifyRequest\n} from '../../../core/types/mfa'\n\nconst mfaPortalQuery = (portalId?: string | number | null) => portalIdQuery(portalId) ?? null\n\nexport const mfaClient = {\n verifyOtp: (data: TwoFaVerificationRequest) =>\n AuthHttpClient.post(generateApiUrl({ route: API_ENDPOINTS.VERIFY_OTP, queryParams: hubIdQuery() }), data, mergeRequestOptions(data.token)),\n\n sendPendingOtp: (data: MfaOtpSendRequest) => AuthHttpClient.post(API_ENDPOINTS.MFA_PENDING_OTP_SEND, data, mergeRequestOptions(data.token)),\n\n pendingPasskeyOptions: (data: MfaPendingPasskeyOptionsRequest) =>\n AuthHttpClient.post(API_ENDPOINTS.MFA_PENDING_PASSKEY_OPTIONS, data, mergeRequestOptions(data.token)),\n\n pendingPasskeyVerify: (data: MfaPendingPasskeyVerifyRequest) =>\n AuthHttpClient.post(\n generateApiUrl({ route: API_ENDPOINTS.MFA_PENDING_PASSKEY_VERIFY, queryParams: hubIdQuery() }),\n data,\n mergeRequestOptions(data.token)\n ),\n\n getStatus: (query?: MfaStatusQuery) =>\n HttpClient.get(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_STATUS,\n queryParams: mfaPortalQuery(query?.portalId)\n })\n ),\n\n setPreferences: (data: MfaPreferenceRequest, query?: MfaStatusQuery) =>\n HttpClient.put(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_PREFERENCES,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n data\n ),\n\n startPhoneVerify: (data: PhoneVerifyStartRequest, query?: MfaStatusQuery) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_PHONE_VERIFY_START,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n data\n ),\n\n confirmPhoneVerify: (data: PhoneVerifyConfirmRequest, query?: MfaStatusQuery) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_PHONE_VERIFY_CONFIRM,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n data\n ),\n\n totpEnrollStart: (query?: MfaStatusQuery) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_TOTP_ENROLL_START,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n null\n ),\n\n totpEnrollVerify: (data: TotpEnrollVerifyRequest) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_TOTP_ENROLL_VERIFY,\n queryParams: mfaPortalQuery(data.portalId)\n }),\n data\n ),\n\n totpDisable: (data: TotpDisableRequest, query?: MfaStatusQuery) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_TOTP_DISABLE,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n data\n ),\n\n phoneUnverify: (data: PhoneUnverifyRequest, query?: MfaStatusQuery) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_PHONE_UNVERIFY,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n data\n ),\n\n backupCodesRegenerate: (data: BackupCodesRegenerateRequest, query?: MfaStatusQuery) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_BACKUP_CODES_REGENERATE,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n data\n ) as Promise<MfaBackupCodesResponse>,\n\n optOut: (data: MfaOptOutRequest, query?: MfaStatusQuery) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_OPT_OUT,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n data\n ),\n\n webauthnRegisterOptions: (query?: MfaStatusQuery) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_WEBAUTHN_REGISTER_OPTIONS,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n null,\n mergeRequestOptions(undefined)\n ),\n\n webauthnRegisterVerify: (data: WebAuthnVerifyRequest) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_WEBAUTHN_REGISTER_VERIFY,\n queryParams: mfaPortalQuery(data.portalId)\n }),\n data,\n mergeRequestOptions(undefined)\n ),\n\n webauthnAuthOptions: (query?: MfaStatusQuery) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_WEBAUTHN_AUTH_OPTIONS,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n null,\n mergeRequestOptions(undefined)\n ),\n\n webauthnAuthVerify: (data: WebAuthnVerifyRequest) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_WEBAUTHN_AUTH_VERIFY,\n queryParams: mfaPortalQuery(data.portalId)\n }),\n data,\n mergeRequestOptions(undefined)\n ),\n\n listWebauthnCredentials: (query?: MfaStatusQuery) =>\n HttpClient.get(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_WEBAUTHN_CREDENTIALS,\n queryParams: mfaPortalQuery(query?.portalId)\n }),\n undefined,\n mergeRequestOptions(undefined)\n ),\n\n deleteWebauthnCredential: (credentialRecordId: string | number, query?: MfaStatusQuery) =>\n HttpClient.delete(\n generateApiUrl({\n route: API_ENDPOINTS.MFA_WEBAUTHN_CREDENTIAL_DELETE,\n params: { credentialRecordId: String(credentialRecordId) },\n queryParams: mfaPortalQuery(query?.portalId)\n })\n ),\n\n passkeyLoginOptions: (data: PasskeyLoginOptionsRequest) =>\n AuthHttpClient.post(\n generateApiUrl({ route: API_ENDPOINTS.PASSKEY_LOGIN_OPTIONS, queryParams: hubIdQuery() }),\n data,\n mergeRequestOptions(undefined)\n ),\n\n passkeyLoginVerify: (data: PasskeyLoginVerifyRequest) =>\n AuthHttpClient.post(\n generateApiUrl({ route: API_ENDPOINTS.PASSKEY_LOGIN_VERIFY, queryParams: hubIdQuery() }),\n data,\n mergeRequestOptions(undefined)\n )\n}\n","import { tableUiActions } from '../../../state/crm/table-ui-actions'\n\nimport { tableUiStore } from '../../../state/crm/table-ui'\n\nexport type TableListPayload = {\n companyAsMediator?: boolean\n\n currentPageOverride?: number\n\n tableParams?: Record<string, unknown>\n}\n\n/**\n\n * Resolves list query params from live tableUiStore (e7120db getTableParam parity).\n\n * Optional payload.tableParams shallow-overrides for tests/advanced callers.\n\n */\n\nexport function resolveListTableParams(payload?: TableListPayload | null): Record<string, unknown> {\n const param = tableUiActions.getTableParam(payload?.companyAsMediator, payload?.currentPageOverride)\n\n if (payload?.tableParams && typeof payload.tableParams === 'object') {\n return { ...param, ...payload.tableParams }\n }\n\n return { ...param }\n}\n\n/** @deprecated Use resolveListTableParams — kept for callers passing explicit tableParams only. */\n\nexport function normalizeTableListParams(payload?: TableListPayload | null): Record<string, unknown> {\n if (payload?.tableParams && typeof payload.tableParams === 'object') {\n return { ...payload.tableParams }\n }\n\n return resolveListTableParams(payload)\n}\n\n/** Ensures board view query params include stageId and page when present in tableParams. */\n\nexport function applyBoardPaginationToParams(param: Record<string, unknown>, tableParams: Record<string, unknown>): Record<string, unknown> {\n const stageId = tableParams.stageId\n\n const page = tableParams.page\n\n if (stageId !== undefined && stageId !== null && stageId !== '') {\n param.stageId = stageId\n }\n\n if (param.view === 'BOARD' && page !== undefined) {\n param.page = page\n }\n\n return param\n}\n\n/**\n\n * Legacy finalization: apply live view, pipeline filter, and board pagination after URL/filter merges.\n\n * Matches pre-4.0 Client.object.list reading stageId/nextPage/view from useTable() last.\n\n */\n\nexport type FinalizeBoardListQueryParamsContext = {\n payload?: {\n isHome?: boolean\n hubspotObjectTypeId?: string\n componentName?: string\n } | null\n userData?: {\n crmProfile?: {\n configurations?: { ticket?: { pipeline_id?: string } }\n response?: {\n associations?: {\n COMPANY?: { configurations?: { ticket?: { pipeline_id?: string } } }\n }\n }\n }\n } | null\n}\n\nexport function finalizeBoardListQueryParams(\n param: Record<string, unknown>,\n _context?: FinalizeBoardListQueryParamsContext\n): Record<string, unknown> {\n const { stageId, nextPage, view, selectedPipeline } = tableUiStore.getState()\n // const payload = context?.payload\n\n if (view) {\n param.view = view\n }\n\n // const ticketPipelineContext =\n // (payload?.isHome && payload?.hubspotObjectTypeId === '0-5') || (payload?.componentName === 'object' && payload?.hubspotObjectTypeId === '0-5')\n\n // if (ticketPipelineContext && !param?.isPrimaryCompany) {\n // param.parentObjectTypeId = '0-1'\n // } else if (ticketPipelineContext && param?.isPrimaryCompany) {\n // param.parentObjectTypeId = '0-2'\n // }\n\n if (selectedPipeline !== undefined && selectedPipeline !== null && selectedPipeline !== '') {\n param.filterValue = selectedPipeline\n }\n\n return applyBoardPaginationToParams(param, {\n stageId,\n\n page: stageId ? nextPage : 1\n })\n}\n","import type { CachePurgeListQuery } from '../../types/cache-purge'\nimport { applyBoardPaginationToParams } from '../../../features/crm/helpers/normalize-table-list-params'\nimport { tableUiStore } from '../../../state/crm/table-ui'\n\nconst LIST_QUERY_KEYS = [\n 'sort',\n 'search',\n 'filterPropertyName',\n 'filterOperator',\n 'filterValue',\n 'page',\n 'limit',\n 'view',\n 'mediatorObjectTypeId',\n 'mediatorObjectRecordId',\n 'parentObjectTypeId',\n 'parentObjectRecordId',\n 'stageId',\n 'after'\n] as const\n\nconst PURGE_FILTER_KEYS = ['sort', 'filterPropertyName', 'filterOperator', 'filterValue', 'view', 'page', 'limit'] as const\n\nfunction hasPurgeFilterContext(raw: Record<string, unknown> | null | undefined): boolean {\n if (!raw || typeof raw !== 'object') {\n return false\n }\n return PURGE_FILTER_KEYS.some((key) => {\n const value = raw[key]\n return value !== undefined && value !== null && String(value).length > 0\n })\n}\n\n/** Merge live table UI state when stored list GET params are missing or incomplete. */\nfunction mergeLiveTableUiState(raw: Record<string, unknown> | null | undefined): Record<string, unknown> {\n const state = tableUiStore.getState()\n const merged: Record<string, unknown> = { ...(raw ?? {}) }\n\n if (!merged.sort && state.sort) {\n merged.sort = state.sort\n }\n if (!merged.search && state.search) {\n merged.search = state.search\n }\n if (!merged.filterPropertyName && state.filterPropertyName) {\n merged.filterPropertyName = state.filterPropertyName\n }\n if (!merged.filterOperator && state.filterOperator) {\n merged.filterOperator = state.filterOperator\n }\n if (!merged.filterValue && state.selectedPipeline) {\n merged.filterValue = state.selectedPipeline\n }\n if (merged.limit === undefined && state.limit) {\n merged.limit = state.limit\n }\n if (merged.page === undefined && state.page !== undefined && state.page !== '') {\n merged.page = state.page\n }\n if (!merged.view && state.view) {\n merged.view = state.view\n }\n if (merged.isPrimaryCompany === undefined && state.isPrimaryCompany !== null) {\n merged.isPrimaryCompany = state.isPrimaryCompany\n }\n\n return applyBoardPaginationToParams(merged, {\n stageId: state.stageId,\n page: state.stageId ? state.nextPage : 1\n })\n}\n\nfunction listQueryCacheKey(q: CachePurgeListQuery): string {\n return JSON.stringify({\n ...q,\n stageId: q.stageId ?? ''\n })\n}\n\n/** Map last table list GET params (+ association write context) to purge API `listQuery`. */\nexport function toCachePurgeListQuery(raw: Record<string, unknown> | null | undefined): CachePurgeListQuery {\n if (!raw || typeof raw !== 'object') {\n return { page: 1, limit: 10, view: 'LIST' }\n }\n const q: CachePurgeListQuery = {}\n for (const key of LIST_QUERY_KEYS) {\n const value = raw[key]\n if (value !== undefined && value !== null && String(value).length > 0) {\n ;(q as Record<string, unknown>)[key] = String(value)\n }\n }\n if (raw.page !== undefined && raw.page !== null) {\n const page = Number(raw.page)\n if (!Number.isNaN(page) && page > 0) {\n q.page = page\n }\n }\n if (raw.limit !== undefined && raw.limit !== null) {\n const limit = Number(raw.limit)\n if (!Number.isNaN(limit) && limit > 0) {\n q.limit = limit\n }\n }\n const isPc = raw.isPrimaryCompany ?? raw.isPC\n if (isPc !== undefined && isPc !== null) {\n q.isPrimaryCompany = isPc === true || isPc === 'true' || isPc === 1 || isPc === '1'\n }\n const view = raw.view\n if (typeof view === 'string') {\n q.view = view.toUpperCase() === 'BOARD' ? 'BOARD' : 'LIST'\n }\n if (Object.keys(q).length === 0) {\n return { page: 1, limit: 10, view: 'LIST' }\n }\n if (q.page === undefined) {\n q.page = 1\n }\n if (q.limit === undefined) {\n q.limit = 10\n }\n if (q.view === undefined) {\n q.view = 'LIST'\n }\n return q\n}\n\nexport type ResolveCrmListPurgeQueryOptions = {\n componentName?: string\n hubspotObjectTypeId?: string\n tableQueryParams?: Record<string, unknown> | null\n multiObjectsQueryParams?: Record<string, Record<string, unknown>>\n /** Parent/mediator from route params (association card create/update). */\n writeContext?: Record<string, string>\n}\n\n/**\n * After CRM writes that change list membership, evict both LIST and BOARD cache keys.\n * Always returns LIST (no stageId) and BOARD variants from shared filters.\n */\nexport function expandListPurgeQueriesForCrmWrite(base: CachePurgeListQuery): CachePurgeListQuery[] {\n const listQuery: CachePurgeListQuery = { ...base, view: 'LIST' }\n delete listQuery.stageId\n\n const boardQuery: CachePurgeListQuery = { ...base, view: 'BOARD' }\n\n const seen = new Set<string>()\n const expanded: CachePurgeListQuery[] = []\n for (const query of [listQuery, boardQuery]) {\n const key = listQueryCacheKey(query)\n if (seen.has(key)) {\n continue\n }\n seen.add(key)\n expanded.push(query)\n }\n return expanded\n}\n\n/** When list params name a filter but omit value, use live pipeline selection from table UI. */\nfunction applyFilterValueFromPipelineState(query: CachePurgeListQuery): CachePurgeListQuery {\n if (query.filterValue) {\n return query\n }\n const { filterPropertyName, filterOperator } = query\n if (!filterPropertyName || !filterOperator) {\n return query\n }\n const selectedPipeline = tableUiStore.getState().selectedPipeline\n if (!selectedPipeline) {\n return query\n }\n return { ...query, filterValue: selectedPipeline }\n}\n\n/**\n * Resolves the list cache key the UI last used, including association parent context.\n * Replaces association-create `listQuery: {}` with merged table + write context.\n */\nexport function resolveCrmListPurgeQuery(options: ResolveCrmListPurgeQueryOptions): CachePurgeListQuery {\n let raw: Record<string, unknown> | null | undefined\n if (options.componentName === 'sidebarTable' && options.hubspotObjectTypeId) {\n raw = options.multiObjectsQueryParams?.[String(options.hubspotObjectTypeId)] ?? null\n } else {\n raw = options.tableQueryParams ?? null\n }\n\n if (!hasPurgeFilterContext(raw)) {\n raw = mergeLiveTableUiState(raw)\n }\n\n let base = applyFilterValueFromPipelineState(toCachePurgeListQuery(raw ?? undefined))\n if (!options.writeContext || Object.keys(options.writeContext).length === 0) {\n return base\n }\n base = {\n ...base,\n ...options.writeContext\n }\n return applyFilterValueFromPipelineState(base)\n}\n","import type { CachePurgeTarget, CrmCachePurgeOptions, PurgeResult } from '../../types/cache-purge'\nimport {\n buildCachePurgeRequest,\n buildCrmListPurgeTarget,\n buildCrmSinglePurgeTarget,\n buildEngagementPurgeTarget,\n buildPortalConfigPurgeTarget,\n buildUserSessionPurgeTarget,\n mergePurgeTargets\n} from './builders'\nimport { createCachePurgeJob } from './createCachePurgeJob'\nimport { expandListPurgeQueriesForCrmWrite } from './resolveCrmListPurgeQuery'\nimport type { CachePurgeListQuery } from '../../types/cache-purge'\n\nfunction buildPostWriteListPurgeTargets(objectTypeId: string, listQuery: CachePurgeListQuery | undefined, recordIds?: string[]): CachePurgeTarget[] {\n const base = listQuery ?? { page: 1, limit: 10, view: 'LIST' }\n return expandListPurgeQueriesForCrmWrite(base).map((query) => buildCrmListPurgeTarget(objectTypeId, query, recordIds))\n}\n\n/**\n * Portal-wide CRM list purge (e.g. manual Sync when purge API is enabled).\n * Does **not** set {@code postCrmWrite} — use {@link purgeCrmListCacheAfterCrmWrite} after create/update.\n * @deprecated Prefer {@link createCachePurgeJob} with {@link buildCrmListPurgeTarget} for full control.\n */\nexport async function purgeCrmObjectDataCache(options: CrmCachePurgeOptions): Promise<boolean> {\n const result = await purgeCrmListCache(options)\n return result.ok\n}\n\n/**\n * List-only CRM purge after create/update (delayed warm for HubSpot list indexing).\n * Sets {@code postCrmWrite: true}; pass {@code recordIds} when the new/updated row id is known.\n */\nexport async function purgeCrmListCacheAfterCrmWrite(options: CrmCachePurgeOptions): Promise<PurgeResult> {\n const objectTypeId = options.objectTypeId?.trim()\n if (!objectTypeId) {\n return { ok: false, errorCode: 'VALIDATION', message: 'objectTypeId is required' }\n }\n return purgeCrmCombined({\n ...options,\n objectTypeId,\n postCrmWrite: true,\n targets: buildPostWriteListPurgeTargets(objectTypeId, options.listQuery, options.recordIds)\n })\n}\n\n/**\n * List + single purge after CRM update when record id is known.\n */\nexport async function purgeCrmDetailAndListAfterCrmWrite(options: CrmCachePurgeOptions & { recordIds: string[] }): Promise<PurgeResult> {\n const objectTypeId = options.objectTypeId?.trim()\n if (!objectTypeId || !options.recordIds?.length) {\n return {\n ok: false,\n errorCode: 'VALIDATION',\n message: 'objectTypeId and recordIds are required'\n }\n }\n return purgeCrmCombined({\n ...options,\n objectTypeId,\n postCrmWrite: true,\n targets: mergePurgeTargets(\n ...buildPostWriteListPurgeTargets(objectTypeId, options.listQuery, options.recordIds),\n buildCrmSinglePurgeTarget(objectTypeId, options.recordIds, options.listQuery)\n )\n })\n}\n\n/**\n * List-only CRM purge (generic). Omit {@code postCrmWrite} for manual Sync-style refresh.\n * Use {@link purgeCrmListCacheAfterCrmWrite} after CRM writes that change list membership.\n */\nexport async function purgeCrmListCache(options: CrmCachePurgeOptions): Promise<PurgeResult> {\n const objectTypeId = options.objectTypeId?.trim()\n if (!objectTypeId) {\n return { ok: false, errorCode: 'VALIDATION', message: 'objectTypeId is required' }\n }\n const target = buildCrmListPurgeTarget(objectTypeId, options.listQuery, options.recordIds)\n const request = buildCachePurgeRequest([target], {\n mode: options.mode,\n warm: options.warm,\n postCrmWrite: options.postCrmWrite,\n warmListDelayMs: options.warmListDelayMs\n })\n return createCachePurgeJob(request, {\n idempotencyKey: options.idempotencyKey,\n waitForWarm: options.waitForWarm,\n pollTimeoutMs: options.pollTimeoutMs,\n pollIntervalMs: options.pollIntervalMs\n })\n}\n\n/** Single-record purge for one or more record ids. */\nexport async function purgeCrmRecordCache(options: CrmCachePurgeOptions & { recordIds: string[] }): Promise<PurgeResult> {\n const objectTypeId = options.objectTypeId?.trim()\n if (!objectTypeId || !options.recordIds?.length) {\n return {\n ok: false,\n errorCode: 'VALIDATION',\n message: 'objectTypeId and recordIds are required'\n }\n }\n const target = buildCrmSinglePurgeTarget(objectTypeId, options.recordIds, options.listQuery)\n const request = buildCachePurgeRequest([target], {\n mode: options.mode,\n warm: options.warm,\n postCrmWrite: options.postCrmWrite,\n warmListDelayMs: options.warmListDelayMs\n })\n return createCachePurgeJob(request, {\n idempotencyKey: options.idempotencyKey,\n waitForWarm: options.waitForWarm,\n pollTimeoutMs: options.pollTimeoutMs,\n pollIntervalMs: options.pollIntervalMs\n })\n}\n\n/**\n * Engagement tab purge (notes, emails, files on a parent CRM record).\n * Used by file addFolder/addFile and manual-style refresh. Does **not** set {@code postCrmWrite}.\n */\nexport async function purgeEngagementCaches(\n options: CrmCachePurgeOptions & {\n recordIds: string[]\n views: ('notes' | 'emails' | 'files')[]\n }\n): Promise<PurgeResult> {\n return purgeEngagementCachesInternal(options)\n}\n\n/**\n * Notes/emails purge after create/update (delayed warm + retry on {@code engagementItemIds}).\n */\nexport async function purgeEngagementCachesAfterCrmWrite(\n options: CrmCachePurgeOptions & {\n recordIds: string[]\n views: ('notes' | 'emails')[]\n engagementItemIds?: string[]\n }\n): Promise<PurgeResult> {\n return purgeEngagementCachesInternal({\n ...options,\n postCrmWrite: true\n })\n}\n\nasync function purgeEngagementCachesInternal(\n options: CrmCachePurgeOptions & {\n recordIds: string[]\n views: ('notes' | 'emails' | 'files')[]\n }\n): Promise<PurgeResult> {\n const objectTypeId = options.objectTypeId?.trim()\n if (!objectTypeId || !options.recordIds?.length || !options.views?.length) {\n return {\n ok: false,\n errorCode: 'VALIDATION',\n message: 'objectTypeId, recordIds, and views are required'\n }\n }\n const target = buildEngagementPurgeTarget(objectTypeId, options.recordIds, options.views, {\n fileIds: options.fileIds,\n listQuery: options.listQuery,\n engagementItemIds: options.engagementItemIds\n })\n const request = buildCachePurgeRequest([target], {\n mode: options.mode,\n warm: options.warm,\n postCrmWrite: options.postCrmWrite,\n warmListDelayMs: options.warmListDelayMs\n })\n return createCachePurgeJob(request, {\n idempotencyKey: options.idempotencyKey,\n waitForWarm: options.waitForWarm,\n pollTimeoutMs: options.pollTimeoutMs,\n pollIntervalMs: options.pollIntervalMs\n })\n}\n\n/** Compose multiple targets in one purge job (e.g. list + notes on detail Sync). */\nexport async function purgeCrmCombined(options: CrmCachePurgeOptions & { targets: CachePurgeTarget[] }): Promise<PurgeResult> {\n const request = buildCachePurgeRequest(options.targets, {\n mode: options.mode,\n warm: options.warm,\n postCrmWrite: options.postCrmWrite,\n warmListDelayMs: options.warmListDelayMs\n })\n return createCachePurgeJob(request, {\n idempotencyKey: options.idempotencyKey,\n waitForWarm: options.waitForWarm,\n pollTimeoutMs: options.pollTimeoutMs,\n pollIntervalMs: options.pollIntervalMs\n })\n}\n\nexport {\n buildCachePurgeRequest,\n buildCrmListPurgeTarget,\n buildCrmSinglePurgeTarget,\n buildEngagementPurgeTarget,\n buildPortalConfigPurgeTarget,\n buildUserSessionPurgeTarget,\n mergePurgeTargets,\n createCachePurgeJob\n}\n","/**\n * HubSpot record id from CRM create/update response envelopes.\n * Supports `{ data: { id } }`, `{ data: { hs_object_id } }`, and top-level `{ id }`.\n */\nexport function extractHubspotRecordIdFromWriteResponse(response: unknown): string | undefined {\n if (response == null || typeof response !== 'object') {\n return undefined\n }\n const root = response as Record<string, unknown>\n const data = root.data\n if (data != null && typeof data === 'object') {\n const fromData = idFromRecordPayload(data as Record<string, unknown>)\n if (fromData) {\n return fromData\n }\n }\n return idFromRecordPayload(root)\n}\n\nfunction idFromRecordPayload(payload: Record<string, unknown>): string | undefined {\n const id = payload.id\n if (id !== undefined && id !== null && String(id).length > 0) {\n return String(id)\n }\n const hsObjectId = payload.hs_object_id\n if (hsObjectId !== undefined && hsObjectId !== null && String(hsObjectId).length > 0) {\n return String(hsObjectId)\n }\n return undefined\n}\n","/**\n * Note/email id from create/update response envelopes (extended object-data shape).\n * Mirrors API {@code extractCreatedNoteId}: {@code hs_object_id.value} on the response body.\n */\nexport function extractEngagementItemIdFromWriteResponse(response: unknown): string | undefined {\n if (response == null || typeof response !== 'object') {\n return undefined\n }\n const root = response as Record<string, unknown>\n const candidates: Record<string, unknown>[] = []\n const data = root.data\n if (data != null && typeof data === 'object') {\n const dataObj = data as Record<string, unknown>\n candidates.push(dataObj)\n const nested = dataObj.response\n if (nested != null && typeof nested === 'object') {\n candidates.push(nested as Record<string, unknown>)\n }\n }\n const topResponse = root.response\n if (topResponse != null && typeof topResponse === 'object') {\n candidates.push(topResponse as Record<string, unknown>)\n }\n candidates.push(root)\n\n for (const payload of candidates) {\n const id = engagementIdFromPayload(payload)\n if (id) {\n return id\n }\n }\n return undefined\n}\n\nfunction engagementIdFromPayload(payload: Record<string, unknown>): string | undefined {\n const fromHs = fieldValue(payload.hs_object_id)\n if (fromHs) {\n return fromHs\n }\n const fromId = fieldValue(payload.id)\n if (fromId) {\n return fromId\n }\n return undefined\n}\n\nfunction fieldValue(raw: unknown): string | undefined {\n if (raw == null) {\n return undefined\n }\n if (typeof raw === 'object') {\n const value = (raw as Record<string, unknown>).value\n if (value !== undefined && value !== null && String(value).length > 0) {\n return String(value)\n }\n return undefined\n }\n const s = String(raw)\n return s.length > 0 ? s : undefined\n}\n","import { generateApiUrl } from '../utils/generateApiUrl'\nimport { API_ENDPOINTS } from './api-endpoints'\nimport { AuthHttpClient, HttpClient } from './http-client'\nimport { config } from '../utils/hub-context'\nimport { getClientType } from './client-type'\nimport { navigationApi } from '../../api/navigation-api'\nimport { actions as tableActions, tableStore } from '../../state/crm/use-table'\nimport { actions as noteActions, noteStore } from '../../state/crm/use-note'\nimport { actions as emailActions, emailStore } from '../../state/crm/use-email'\nimport { actions as fileActions, fileStore } from '../../state/crm/use-file'\nimport {\n extractEngagementItemIdFromWriteResponse,\n extractHubspotRecordIdFromWriteResponse,\n purgeCrmDetailAndListAfterCrmWrite,\n purgeCrmListCache,\n purgeCrmListCacheAfterCrmWrite,\n purgeEngagementCaches,\n purgeEngagementCachesAfterCrmWrite,\n resolveCrmListPurgeQuery,\n toCachePurgeListQuery\n} from '../utils/cache'\nimport type { CachePurgeListQuery } from '../types/cache-purge'\nimport { updateLink } from '../../features/navigation/url'\nimport { ticketHubspotObjectTypeId } from '../utils/url'\nimport { userStore } from '../../state/crm/use-user'\n\nexport {\n generateApiUrl,\n API_ENDPOINTS,\n AuthHttpClient,\n HttpClient,\n config,\n tableActions,\n tableStore,\n noteActions,\n noteStore,\n emailActions,\n emailStore,\n fileActions,\n fileStore,\n extractEngagementItemIdFromWriteResponse,\n extractHubspotRecordIdFromWriteResponse,\n purgeCrmDetailAndListAfterCrmWrite,\n purgeCrmListCache,\n purgeCrmListCacheAfterCrmWrite,\n purgeEngagementCaches,\n purgeEngagementCachesAfterCrmWrite,\n resolveCrmListPurgeQuery,\n toCachePurgeListQuery,\n updateLink,\n ticketHubspotObjectTypeId,\n userStore\n}\nexport type { CachePurgeListQuery }\n\n/** Delegates to navigationApi.route so tests can stub route helpers. */\nexport function getParamDetails(...args: Parameters<typeof navigationApi.route.getParamDetails>) {\n return navigationApi.route.getParamDetails(...args)\n}\n\nexport const recordWriteContext = (paramsObject: Record<string, unknown> | undefined) => {\n if (!paramsObject) {\n return undefined\n }\n const context: Record<string, string> = {}\n const keys = ['parentObjectTypeId', 'parentObjectRecordId', 'mediatorObjectTypeId', 'mediatorObjectRecordId'] as const\n keys.forEach((key) => {\n const value = paramsObject[key]\n if (value !== undefined && value !== null && String(value).length > 0) {\n context[key] = String(value)\n }\n })\n return Object.keys(context).length > 0 ? context : undefined\n}\n\n/** Post-write list purge using tableStore list key + optional association parent context. */\nexport const triggerPostWriteListPurge = (props: {\n hubspotObjectTypeId?: string\n componentName?: string\n paramsObject?: Record<string, unknown>\n recordId?: string\n}) => {\n const objectTypeId = props.hubspotObjectTypeId\n if (!objectTypeId) {\n return\n }\n // Mobile lists prepend locally; skip background purge/warm polling (avoids unhandled rejections in RN hosts).\n if (getClientType() === 'mobile') {\n return\n }\n const { queryParams, multiObjectsQueryParams } = tableStore.getState()\n const listQuery = resolveCrmListPurgeQuery({\n componentName: props.componentName,\n hubspotObjectTypeId: objectTypeId,\n tableQueryParams: queryParams,\n multiObjectsQueryParams,\n writeContext: recordWriteContext(props.paramsObject)\n })\n const recordIds = props.recordId ? [String(props.recordId)] : undefined\n void purgeCrmListCacheAfterCrmWrite({\n objectTypeId: String(objectTypeId),\n listQuery,\n recordIds,\n waitForWarm: true,\n pollTimeoutMs: 45_000\n }).catch(() => {\n // Purge is best-effort; never surface as an unhandled rejection to the host app.\n })\n}\n\nexport const mergeRecordWriteBody = (\n payload: Record<string, unknown> | null | undefined,\n paramsObject: Record<string, unknown> | undefined,\n options: Record<string, unknown> | undefined\n) => {\n const base = { ...(payload || {}) }\n const context = recordWriteContext(paramsObject)\n if (context) {\n base.context = context\n }\n if (options && Object.keys(options).length > 0) {\n base.options = options\n }\n return base\n}\n","import {\n PreLoginPayload,\n LoginPayload,\n ForgetPasswordPayload,\n ForgetPasswordOtpVerifyPayload,\n ChangePasswordPayload,\n VerifyEmailPayload,\n ResetPasswordVerifyTokenPayload,\n ResetPasswordPayload,\n TwoFaVerificationRequest\n} from '../../../core/types'\nimport { mfaClient } from './mfa-client'\nimport { generateApiUrl, API_ENDPOINTS, AuthHttpClient, HttpClient, config } from '../../../core/http/client-context'\n\nexport const authenticationClient = {\n authentication: {\n preLogin: (data: PreLoginPayload) => {\n const queryParams: Record<string, number> = {}\n if (data.hubId != null) {\n queryParams.hubId = data.hubId\n }\n const resolvedPortalId =\n data.portalId ?? (config?.devPortalId != null && String(config.devPortalId).trim() !== '' ? Number(config.devPortalId) : undefined)\n if (resolvedPortalId != null && !Number.isNaN(resolvedPortalId)) {\n queryParams.portalId = resolvedPortalId\n }\n const email = data.email ?? data.username\n return AuthHttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.PRE_LOGIN,\n queryParams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n }),\n { email }\n )\n },\n login: (data: LoginPayload) => {\n const queryParams = config.hubId ? { hubId: config.hubId } : null\n return AuthHttpClient.post(\n generateApiUrl({ route: API_ENDPOINTS.LOGIN, queryParams: queryParams }),\n data,\n config?.devPortalId && {\n headers: {\n 'X-Dev-Portal-Id': config.devPortalId\n }\n }\n )\n },\n verifyOtp: (data: TwoFaVerificationRequest) => mfaClient.verifyOtp(data),\n verifyEmail: (data: VerifyEmailPayload) => AuthHttpClient.post(API_ENDPOINTS.VERIFY_EMAIL, data),\n /** Legacy client greenfield signup route (predates /api/auth/* registry). */\n register: (data: { name: string; email: string; password: string }) => AuthHttpClient.post('/register', data),\n resetPasswordVerifyToken: (data: ResetPasswordVerifyTokenPayload) => AuthHttpClient.post(API_ENDPOINTS.RESET_PASSWORD_VERIFY_TOKEN, data),\n resetPassword: (data: ResetPasswordPayload) => AuthHttpClient.post(API_ENDPOINTS.RESET_PASSWORD, data),\n forgetPassword: (data: ForgetPasswordPayload) => AuthHttpClient.post(API_ENDPOINTS.FORGET_PASSWORD, data),\n verifyForgotPasswordOtp: (data: ForgetPasswordOtpVerifyPayload) => AuthHttpClient.post(API_ENDPOINTS.FORGET_PASSWORD_OTP_VERIFY, data),\n registerExistingUser: (data: any) => AuthHttpClient.post(API_ENDPOINTS.REGISTER_EXISTING_USER, data?.payload),\n verifyEmailResend: (data: any) => AuthHttpClient.post(API_ENDPOINTS.VERIFY_EMAIL_RESEND, data),\n resendEmail: (data: any) => AuthHttpClient.post(API_ENDPOINTS.RESEND_EMAIL, data),\n logout: () => HttpClient.post(API_ENDPOINTS.LOGOUT, null),\n clientSession: (payload: { accessToken: string; refreshToken?: string }) =>\n AuthHttpClient.post(\n API_ENDPOINTS.CLIENT_SESSION,\n { refreshToken: payload.refreshToken ?? payload.accessToken },\n {\n headers: {\n Authorization: `Bearer ${payload.accessToken}`\n }\n }\n ),\n handoff: (payload: { code: string; hubId: number }) =>\n AuthHttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.AUTH_HANDOFF,\n queryParams: { hubId: payload.hubId }\n }),\n { code: payload.code }\n ),\n getLoginBootstrap: (payload?: { hubId?: number; portalId?: number }) => {\n const queryParams: Record<string, number> = {}\n if (payload?.hubId != null) {\n queryParams.hubId = payload.hubId\n }\n const resolvedPortalId =\n payload?.portalId ??\n (config?.devPortalId != null && String(config.devPortalId).trim() !== '' ? Number(config.devPortalId) : undefined)\n if (resolvedPortalId != null && !Number.isNaN(resolvedPortalId)) {\n queryParams.portalId = resolvedPortalId\n }\n return AuthHttpClient.get(\n generateApiUrl({\n route: API_ENDPOINTS.LOGIN_BOOTSTRAP,\n queryParams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n })\n )\n }\n },\n sso: {\n getSsoDetails: () => AuthHttpClient.get(API_ENDPOINTS.SSO_DETAILS),\n generateSsoUrl: (payload: any) => AuthHttpClient.get(generateApiUrl({ route: API_ENDPOINTS.SSO_URL, queryParams: payload?.queryParams })),\n ssoCallback: (payload: any) => AuthHttpClient.get(generateApiUrl({ route: API_ENDPOINTS.SSO_CALLBACK, queryParams: payload?.queryParams }))\n },\n user: {\n me: () => HttpClient.get(generateApiUrl({ route: API_ENDPOINTS.ME })),\n profile: (payload: any) => HttpClient.get(generateApiUrl({ route: API_ENDPOINTS.PROFILE, queryParams: payload })),\n profileUpdate: (props: any) => {\n const properties = props?.properties ?? props?.payload ?? {}\n return HttpClient.put(generateApiUrl({ route: API_ENDPOINTS.PROFILE_UPDATE, queryParams: props?.queryParams || {} }), { properties })\n },\n changePassword: (data: ChangePasswordPayload) => HttpClient.post(API_ENDPOINTS.CHANGE_PASSWORD, data)\n }\n}\n","import { isPipelineBoardObjectTypeId } from '../../../core/constants/hubspot-object-type-ids'\nimport {\n generateApiUrl,\n API_ENDPOINTS,\n HttpClient,\n getParamDetails,\n userStore,\n tableActions,\n tableStore,\n extractHubspotRecordIdFromWriteResponse,\n purgeCrmDetailAndListAfterCrmWrite,\n purgeCrmListCache,\n resolveCrmListPurgeQuery,\n updateLink as createUpdateLink,\n ticketHubspotObjectTypeId,\n recordWriteContext,\n triggerPostWriteListPurge,\n mergeRecordWriteBody\n} from '../../../core/http/client-context'\nimport { makePreviewParams } from '../../navigation/param'\nimport { finalizeBoardListQueryParams } from '../helpers/normalize-table-list-params'\n\nexport const crmClient = {\n pipeline: {\n list: (payload: any = null, param: any = null) => {\n const params = { hubspotObjectTypeId: payload?.hubspotObjectTypeId }\n\n const { paramsObject } = getParamDetails({ type: payload?.componentName })\n\n const userData = userStore.getState().profile\n\n const apiParams: any = {}\n const tableParams = payload?.tableParams && typeof payload.tableParams === 'object' ? payload.tableParams : {}\n\n const parentObjectTypeId = paramsObject?.parentObjectTypeId ?? param?.parentObjectTypeId ?? tableParams.parentObjectTypeId\n\n if (parentObjectTypeId) {\n apiParams.parentObjectTypeId = parentObjectTypeId\n } else if (payload?.isHome && userData?.crmProfile?.info?.objectTypeId && !param?.isPrimaryCompany) {\n apiParams.parentObjectTypeId = userData?.crmProfile?.info?.objectTypeId\n } else if (payload?.isHome && userData?.crmProfile?.info?.objectTypeId && param?.isPrimaryCompany) {\n apiParams.parentObjectTypeId = '0-2'\n }\n\n const isPrimaryCompany = param?.isPrimaryCompany ?? tableParams.isPrimaryCompany ?? paramsObject?.isPrimaryCompany\n if (isPrimaryCompany !== undefined && isPrimaryCompany !== null && isPrimaryCompany !== '') {\n apiParams.isPrimaryCompany = isPrimaryCompany\n }\n\n apiParams.cache = payload?.cache\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.PIPELINES, params, queryParams: apiParams })\n return HttpClient.get(apiUrl)\n }\n },\n stage: {\n list: (props: any = null) => {\n // const portalId = config.devPortalId;\n const params = {\n // hubId: config.hubId,\n // portalId: portalId,\n objectTypeId: props?.params?.objectTypeId,\n pipelineId: props?.params?.pipelineId\n }\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.STAGES, params })\n return HttpClient.get(apiUrl)\n }\n },\n object: {\n list: async (payload: any = null, param: any = null) => {\n // Persist list query for later post-write list purge (object create/update/associate).\n const { setObjectsQueryParams } = tableActions\n\n // const params = generateParam(payload) || null\n // const queryParams = payload?.queryParams || null\n\n const params = { hubspotObjectTypeId: payload?.hubspotObjectTypeId }\n\n // const { updateLink: updateLink2 } = url\n // const { updateLink, getLinkParams } = updateLink2();\n const { updateLink, getLinkParams } = createUpdateLink()\n\n const { paramsObject, parentAccessLabel } = getParamDetails({ type: payload?.componentName })\n\n const userData = userStore.getState().profile\n\n // const { pipeline, mPipelines } = payload?.variables;\n const pipeline = payload?.variables?.pipeline\n const mPipelines = payload?.variables?.mPipelines\n\n const mSelectedPipeline = pipeline !== undefined ? pipeline : payload?.selectedPipeline\n\n if (mSelectedPipeline) {\n param.filterValue = mSelectedPipeline\n } else if (payload?.specPipeLine && payload?.pipeLineId) {\n param.filterValue = payload?.pipeLineId\n } else if (!isPipelineBoardObjectTypeId(payload?.hubspotObjectTypeId)) {\n param.filterValue = ''\n }\n\n // const API_ENDPOINT = apis.tableAPI;\n\n const fParams = getLinkParams()\n\n param = { ...(payload?.isFristTimeLoadData && fParams && !payload?.isHome ? fParams : param), ...paramsObject }\n\n if (!payload?.isFristTimeLoadData || !fParams) {\n await updateLink({\n sort: param?.sort,\n s: param?.search,\n fPn: param?.filterPropertyName,\n fO: param?.filterOperator,\n fV: param?.filterValue,\n // \"c\": param?.cache,\n isPC: param?.isPrimaryCompany,\n v: param?.view,\n l: param?.limit,\n p: param?.page,\n a: param?.after\n })\n }\n\n if (mPipelines != undefined && mPipelines?.length === 0 && !payload?.specPipeLine) {\n // if pipelines empty then set filter value is empty (n-a)\n param.filterValue = ''\n await updateLink({\n fV: param?.filterValue\n })\n }\n\n if (mPipelines != undefined && mPipelines?.length === 1 && !payload?.specPipeLine && mSelectedPipeline != null) {\n // if pipelines length is 0 then forcefully set 0 index pipeline\n param.filterValue = mPipelines[0].pipelineId\n await updateLink({\n fV: param?.filterValue\n })\n }\n\n if (payload?.isHome || (payload?.hubspotObjectTypeId === '0-5' && payload?.componentName === 'object')) {\n // Only for Home tickets and Main Ticket Object componentName is Tickets\n let parentObjectTypeId = ''\n if (userData?.crmProfile?.info?.objectTypeId && !param?.isPrimaryCompany) {\n parentObjectTypeId = userData?.crmProfile?.info?.objectTypeId\n } else if (userData?.crmProfile?.info?.objectTypeId && param?.isPrimaryCompany) {\n parentObjectTypeId = '0-2'\n }\n param.parentObjectTypeId = parentObjectTypeId\n }\n\n // if(isHome) { // Only for home tickets\n // let parentObjectTypeId = \"\"\n // if (userData?.info?.objectTypeId && !param?.isPrimaryCompany) {\n // parentObjectTypeId = userData?.info?.objectTypeId\n // } else if (userData?.info?.objectTypeId && param?.isPrimaryCompany) {\n // parentObjectTypeId = \"0-2\"\n // }\n // param.parentObjectTypeId = parentObjectTypeId\n // setParentObjectTypeId(parentObjectTypeId)\n // }\n\n param.parentAccessLabel = parentAccessLabel\n\n finalizeBoardListQueryParams(param, { payload, userData })\n\n // tableStore.queryParams ← sort, filters, view, parent context, etc.\n setObjectsQueryParams(param)\n\n param.cache = payload?.cache\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.OBJECTS, params, queryParams: param })\n return HttpClient.get(apiUrl)\n },\n sideBarList: async (payload: any = null) => {\n const { setMultiObjectsQueryParams } = tableActions\n\n const hubspotObjectTypeId = payload?.hubspotObjectTypeId\n const params = { hubspotObjectTypeId }\n const queryParams = payload.param\n // const subscriptionType = getSubscriptionType()\n\n // const { updateLink: updateLink } = url\n // const { updateLink, filterParams } = updateLink();\n\n // const tab = filterParams(`tabs.a.${hubspotObjectTypeId}`)\n\n // let param: any = {};\n\n // const baseParams: any = {\n // sort: payload?.sortConfig,\n // filterValue: payload?.filterValue,\n // cache: payload?.cache,\n // isPrimaryCompany: payload?.isPrimaryCompany,\n // };\n\n // if (subscriptionType === \"FREE\") {\n // param = {\n // ...baseParams,\n // ...({ after: payload?.isFristTimeLoadData && tab?.page ? tab?.page : payload?.currentPage }),\n // };\n // } else {\n // param = {\n // ...baseParams,\n // ...({\n // limit: payload?.itemsPerPage || 10,\n // page: payload?.isFristTimeLoadData && tab?.page ? tab?.page : payload?.currentPage,\n // ...(payload?.after && payload?.after.length > 0 && { after: payload?.after }),\n // }),\n // };\n // }\n\n // updateLink(param);\n // if (payload?.isPrimaryCompany) param.mediatorObjectTypeId = '0-2';\n\n // const apiUrl = generateApiUrl({ route: API_ENDPOINTS.OBJECTS, params, queryParams: param })\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.OBJECTS, params, queryParams })\n\n setMultiObjectsQueryParams(hubspotObjectTypeId, queryParams ?? {})\n\n return HttpClient.get(apiUrl)\n },\n form: (payload: any = null) => {\n const params = { hubspotObjectTypeId: payload?.hubspotObjectTypeId }\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.OBJECTS_FORM, params, queryParams: payload?.params })\n return HttpClient.get(apiUrl)\n },\n objectFormOptions: (payload: any = null) => {\n const params = {\n formId: payload?.formId,\n objectTypeId: payload?.objectTypeId ?? payload?.hubspotObjectTypeId\n }\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.OBJECTS_FORM_OPTIONS, params, queryParams: payload?.params })\n return HttpClient.get(apiUrl)\n },\n create: async (props: any = null) => {\n const { paramsObject } = getParamDetails({ type: props?.componentName })\n const cardParentMerge = props?.componentName === 'association' || props?.componentName === 'sidebarAssociation' ? true : false\n const body = mergeRecordWriteBody(props?.payload, paramsObject, {\n cardParentMerge,\n addAnother: props?.params?.addAnother\n })\n const params = { hubspotObjectTypeId: props?.hubspotObjectTypeId }\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.RECORDS_CREATE, params, queryParams: props?.params })\n\n const response = await HttpClient.post(apiUrl, body)\n\n triggerPostWriteListPurge({\n hubspotObjectTypeId: props?.hubspotObjectTypeId,\n componentName: props?.componentName,\n paramsObject,\n recordId: extractHubspotRecordIdFromWriteResponse(response)\n })\n\n return response\n },\n createExisting: async (props: any = null) => {\n const { paramsObject } = getParamDetails({ type: props?.componentName })\n const { getLinkParams } = createUpdateLink()\n const fParams = getLinkParams()\n const queryParams = { ...fParams, ...props?.params }\n\n const params = {\n fromObjectTypeId: props?.fromObjectTypeId ?? props?.hubspotObjectTypeId,\n fromRecordId: props?.fromRecordId,\n toObjectTypeId: props?.toObjectTypeId\n }\n const payload = props.payload\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.RECORDS_ASSOCIATE, params, queryParams })\n const response = await HttpClient.post(apiUrl, payload)\n\n const objectTypeId = props?.toObjectTypeId ?? props?.hubspotObjectTypeId\n const recordId =\n extractHubspotRecordIdFromWriteResponse(response) ?? (props?.fromRecordId != null ? String(props.fromRecordId) : undefined)\n\n triggerPostWriteListPurge({\n hubspotObjectTypeId: objectTypeId,\n componentName: props?.componentName,\n paramsObject,\n recordId\n })\n\n return response\n },\n removeExisting: async (props: any = null) => {\n const { paramsObject } = getParamDetails({ type: props?.componentName })\n const body = mergeRecordWriteBody(props?.payload, paramsObject, undefined)\n const params = {\n fromObjectTypeId: props?.fromObjectTypeId ?? props?.hubspotObjectTypeId,\n fromRecordId: props?.fromRecordId,\n toObjectTypeId: props?.toObjectTypeId\n }\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.RECORDS_DISASSOCIATE, params })\n const response = await HttpClient.delete(apiUrl, { data: body })\n\n const objectTypeId = props?.toObjectTypeId ?? props?.hubspotObjectTypeId\n if (objectTypeId) {\n const { queryParams, multiObjectsQueryParams } = tableStore.getState()\n const listQuery = resolveCrmListPurgeQuery({\n componentName: props?.componentName,\n hubspotObjectTypeId: objectTypeId,\n tableQueryParams: queryParams,\n multiObjectsQueryParams,\n writeContext: recordWriteContext(paramsObject)\n })\n purgeCrmListCache({\n objectTypeId: String(objectTypeId),\n listQuery\n })\n }\n\n return response\n },\n details: (props: any = null) => {\n const isDdetails = props?.queryParams?.preview ? false : true\n const { paramsObject: urlParam, parentAccessLabel } = getParamDetails('', isDdetails)\n\n const hubspotObjectTypeId = ticketHubspotObjectTypeId()\n\n const previewParams = makePreviewParams(props)\n\n let objectId = null\n\n if (props?.queryParams?.preview) {\n objectId = previewParams?.params?.objectId\n } else {\n objectId = props?.params?.objectId\n }\n\n const params: any = {\n objectId: objectId,\n id: props?.params?.id\n }\n\n let queryParams = {\n parentAccessLabel: parentAccessLabel,\n ...props?.queryParams,\n ...urlParam\n }\n\n if (props?.queryParams?.preview) {\n queryParams = {\n parentAccessLabel: parentAccessLabel,\n ...props?.queryParams,\n ...previewParams?.queryParams\n }\n } else {\n queryParams = {\n parentAccessLabel: parentAccessLabel,\n ...props?.queryParams,\n ...urlParam\n }\n }\n\n if (hubspotObjectTypeId) queryParams.parentObjectTypeId = hubspotObjectTypeId // this hubspotObjectTypeId only for main ticket object type\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.OBJECTS_DETAILS, params, queryParams })\n return HttpClient.get(apiUrl)\n },\n update: async (props: any = null) => {\n const hubspotObjectTypeId = ticketHubspotObjectTypeId()\n const params = {\n objectId: props?.params?.objectId,\n id: props?.params?.id\n }\n\n const { paramsObject } = getParamDetails({ type: props?.componentName })\n const cardParentMerge = props?.componentName === 'association' ? true : false\n const rawPayload = props?.payload || {}\n const properties = rawPayload.properties ?? rawPayload.propertyPayload ?? rawPayload\n const body: any = mergeRecordWriteBody({ properties }, paramsObject, { cardParentMerge })\n\n const queryParams: any = {}\n if (hubspotObjectTypeId) queryParams.parentObjectTypeId = hubspotObjectTypeId // this hubspotObjectTypeId only for main ticket object type\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.RECORDS_UPDATE, params, queryParams })\n\n // Purge: single record (detail/card) when id is known; otherwise fall back to list purge.\n const { queryParams: tableQueryParams, multiObjectsQueryParams } = tableStore.getState()\n const writeContext = recordWriteContext(paramsObject)\n const listQuery = resolveCrmListPurgeQuery({\n componentName: props?.componentName,\n hubspotObjectTypeId: props?.hubspotObjectTypeId ?? props?.params?.objectId,\n tableQueryParams: tableQueryParams,\n multiObjectsQueryParams,\n writeContext\n })\n\n if (props?.view === 'board') {\n body.options.view = 'board'\n }\n\n const response = await HttpClient.put(apiUrl, body)\n\n const objectTypeId = props?.hubspotObjectTypeId ?? props?.params?.objectId\n const recordId = props?.params?.id\n if (objectTypeId && recordId) {\n purgeCrmDetailAndListAfterCrmWrite({\n objectTypeId: String(objectTypeId),\n recordIds: [String(recordId)],\n listQuery\n })\n } else if (objectTypeId) {\n triggerPostWriteListPurge({\n hubspotObjectTypeId: objectTypeId,\n componentName: props?.componentName,\n paramsObject\n })\n }\n\n return response\n }\n }\n}\n","import {\n generateApiUrl,\n API_ENDPOINTS,\n HttpClient,\n getParamDetails,\n noteActions,\n noteStore,\n emailActions,\n emailStore,\n fileActions,\n fileStore,\n extractEngagementItemIdFromWriteResponse,\n purgeEngagementCaches,\n purgeEngagementCachesAfterCrmWrite,\n toCachePurgeListQuery\n} from '../../../core/http/client-context'\nimport type { CachePurgeListQuery } from '../../../core/http/client-context'\n\nexport const engagementClient = {\n note: {\n list: (props: any = null) => {\n // Persist list query for later purgeEngagementCaches (note create/update).\n const { setListQueryParams } = noteActions\n setListQueryParams(props?.queryParams ?? {})\n\n // const portalId = getPortal()?.portalId;\n const params = {\n // hubId: config.hubId,\n // portalId: portalId,\n objectId: props?.params?.objectId,\n id: props?.params?.id\n }\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.NOTES, params, queryParams: props?.queryParams })\n return HttpClient.get(apiUrl)\n },\n create: async (props: any = null) => {\n const params = { hubspotObjectTypeId: props?.hubspotObjectTypeId, ...props.params }\n const queryParams = props.queryParams\n const payload = props.payload\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.NOTES_CREATE, params, queryParams })\n\n const listQuery = toCachePurgeListQuery(noteStore.getState().queryParams ?? {})\n const response = await HttpClient.post(apiUrl, payload)\n\n const recordId = props?.params?.id\n const objectTypeId = props?.params?.objectId\n if (recordId && objectTypeId) {\n const engagementItemId = extractEngagementItemIdFromWriteResponse(response)\n purgeEngagementCachesAfterCrmWrite({\n objectTypeId,\n recordIds: [String(recordId)],\n views: ['notes'],\n listQuery,\n engagementItemIds: engagementItemId ? [engagementItemId] : undefined\n })\n }\n\n return response\n },\n update: async (props: any = null) => {\n // const portalId = getPortal()?.portalId;\n const params = {\n // hubId: config.hubId,\n // portalId: portalId,\n objectId: props?.params?.objectId,\n id: props?.params?.id,\n note_id: props?.params?.note_id\n }\n\n const { paramsObject: queryParams } = getParamDetails()\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.NOTES_DETAILS_UPDATE, params, queryParams })\n\n const listQuery = toCachePurgeListQuery(noteStore.getState().queryParams ?? {})\n const response = await HttpClient.put(apiUrl, props.payload)\n\n const recordId = props?.params?.id\n const objectTypeId = props?.params?.objectId\n const noteId = props?.params?.note_id\n if (recordId && objectTypeId) {\n const engagementItemId =\n extractEngagementItemIdFromWriteResponse(response) ?? (noteId != null && String(noteId).length > 0 ? String(noteId) : undefined)\n purgeEngagementCachesAfterCrmWrite({\n objectTypeId,\n recordIds: [String(recordId)],\n views: ['notes'],\n listQuery,\n engagementItemIds: engagementItemId ? [engagementItemId] : undefined\n })\n }\n\n return response\n },\n image: (props: any = null) => {\n const params = { hubspotObjectTypeId: props?.hubspotObjectTypeId, ...props.params }\n const queryParams = props.queryParams\n const payload = props.payload\n const axiosConfig = props.config || {}\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.NOTES_IMAGE_UPLOAD, params, queryParams })\n return HttpClient.post(apiUrl, payload, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n ...axiosConfig\n })\n },\n attachment: (props: any = null) => {\n const params = { hubspotObjectTypeId: props?.hubspotObjectTypeId, ...props.params }\n const queryParams = props.queryParams\n const payload = props.payload\n const axiosConfig = props.config || {}\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.NOTES_ATTACHMENT_UPLOAD, params, queryParams })\n return HttpClient.post(apiUrl, payload, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n ...axiosConfig\n })\n }\n },\n email: {\n list: (props: any = null) => {\n // Persist list query for later purgeEngagementCaches (email create/update).\n const { setListQueryParams } = emailActions\n setListQueryParams(props?.queryParams ?? {})\n\n // const portalId = getPortal()?.portalId;\n const params = {\n // hubId: config.hubId,\n // portalId: portalId,\n objectId: props?.params?.objectId,\n id: props?.params?.id\n }\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.EMAILS, params, queryParams: props?.queryParams })\n return HttpClient.get(apiUrl)\n },\n create: async (props: any = null) => {\n const params = { hubspotObjectTypeId: props?.hubspotObjectTypeId, ...props.params }\n const queryParams = props.queryParams\n const payload = props.payload\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.EMAILS_CREATE, params, queryParams })\n\n const listQuery = toCachePurgeListQuery(emailStore.getState().queryParams ?? {})\n const response = await HttpClient.post(apiUrl, payload)\n\n const recordId = props?.params?.id\n const objectTypeId = props?.params?.objectId\n if (recordId && objectTypeId) {\n const engagementItemId = extractEngagementItemIdFromWriteResponse(response)\n purgeEngagementCachesAfterCrmWrite({\n objectTypeId,\n recordIds: [String(recordId)],\n views: ['emails'],\n listQuery,\n engagementItemIds: engagementItemId ? [engagementItemId] : undefined\n })\n }\n\n return response\n },\n update: async (props: any = null) => {\n // const portalId = getPortal()?.portalId;\n const params = {\n // hubId: config.hubId,\n // portalId: portalId,\n objectId: props?.params?.objectId,\n id: props?.params?.id,\n email_id: props?.params?.email_id ?? props?.params?.note_id\n }\n\n const { paramsObject: queryParams } = getParamDetails()\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.EMAILS_DETAILS_UPDATE, params, queryParams })\n\n const listQuery = toCachePurgeListQuery(emailStore.getState().queryParams ?? {})\n const response = await HttpClient.put(apiUrl, props.payload)\n\n const recordId = props?.params?.id\n const objectTypeId = props?.params?.objectId\n const emailId = props?.params?.email_id ?? props?.params?.note_id\n if (recordId && objectTypeId) {\n const engagementItemId =\n extractEngagementItemIdFromWriteResponse(response) ??\n (emailId != null && String(emailId).length > 0 ? String(emailId) : undefined)\n purgeEngagementCachesAfterCrmWrite({\n objectTypeId,\n recordIds: [String(recordId)],\n views: ['emails'],\n listQuery,\n engagementItemIds: engagementItemId ? [engagementItemId] : undefined\n })\n }\n\n return response\n },\n image: (props: any = null) => {\n const params = { hubspotObjectTypeId: props?.hubspotObjectTypeId, ...props.params }\n const queryParams = props.queryParams\n const payload = props.payload\n const axiosConfig = props.config || {}\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.EMAILS_IMAGE_UPLOAD, params, queryParams })\n return HttpClient.post(apiUrl, payload, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n ...axiosConfig\n })\n },\n attachment: (props: any = null) => {\n const params = { hubspotObjectTypeId: props?.hubspotObjectTypeId, ...props.params }\n const queryParams = props.queryParams\n const payload = props.payload\n const axiosConfig = props.config || {}\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.EMAILS_ATTACHMENT_UPLOAD, params, queryParams })\n return HttpClient.post(apiUrl, payload, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n ...axiosConfig\n })\n }\n },\n file: {\n list: (props: any = null) => {\n // Persist list query for later purgeEngagementCaches (file addFolder / addFile).\n const { setListQueryParams } = fileActions\n setListQueryParams(props?.queryParams ?? {})\n\n // const portalId = getPortal()?.portalId;\n const params = {\n // hubId: config.hubId,\n // portalId: portalId,\n objectId: props?.params?.objectId,\n id: props?.params?.id\n }\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.FILES, params, queryParams: props?.queryParams })\n return HttpClient.get(apiUrl)\n },\n details: (props: any = null) => {\n // const portalId = getPortal()?.portalId;\n const params = {\n // hubId: config.hubId,\n // portalId: portalId,\n objectId: props?.params?.objectId,\n id: props?.params?.id,\n rowId: props?.params?.rowId\n }\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.FILE, params, queryParams: props?.queryParams })\n return HttpClient.get(apiUrl)\n },\n download: (props: any = null) => {\n const params = {\n objectId: props?.params?.objectId,\n id: props?.params?.id,\n rowId: props?.params?.rowId\n }\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.FILE_DOWNLOAD, params, queryParams: props?.queryParams })\n return HttpClient.post(apiUrl, {})\n },\n addFolder: async (props: any = null) => {\n const params = { hubspotObjectTypeId: props?.hubspotObjectTypeId, ...props.params }\n const queryParams = props.queryParams\n const payload = props.payload\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.FILES_CREATE_FOLDER, params, queryParams })\n\n // Purge: files engagement tab for parent record (params.id / params.objectId).\n const listQuery: CachePurgeListQuery = fileStore.getState().queryParams ?? {}\n const response = await HttpClient.post(apiUrl, payload)\n\n const recordId = props?.params?.id\n const objectTypeId = props?.params?.objectId\n if (recordId && objectTypeId) {\n purgeEngagementCaches({\n objectTypeId,\n recordIds: [String(recordId)],\n views: ['files'],\n listQuery\n })\n }\n\n return response\n },\n addFile: async (props: any = null) => {\n const params = { hubspotObjectTypeId: props?.hubspotObjectTypeId, ...props.params }\n const queryParams = props.queryParams\n const payload = props.payload\n const axiosConfig = props.config || {}\n\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.FILES_UPLOAD, params, queryParams })\n\n // Purge: same as addFolder — files tab for parent record.\n const listQuery: CachePurgeListQuery = fileStore.getState().queryParams ?? {}\n const response = await HttpClient.post(apiUrl, payload, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n },\n ...axiosConfig\n })\n\n const recordId = props?.params?.id\n const objectTypeId = props?.params?.objectId\n if (recordId && objectTypeId) {\n purgeEngagementCaches({\n objectTypeId,\n recordIds: [String(recordId)],\n views: ['files'],\n listQuery\n })\n }\n\n return response\n }\n }\n}\n","import { generateApiUrl, API_ENDPOINTS, HttpClient } from '../../../core/http/client-context'\n\nexport const cacheClient = {\n purge: (body: Record<string, unknown>, headers?: Record<string, string>) => {\n const apiUrl = generateApiUrl({ route: API_ENDPOINTS.CACHE_PURGE })\n return HttpClient.post(apiUrl, body, headers ? { headers } : undefined)\n },\n purgeStatus: (purgeJobId: string) => {\n const apiUrl = generateApiUrl({\n route: API_ENDPOINTS.CACHE_PURGE_STATUS,\n params: { purgeJobId }\n })\n return HttpClient.get(apiUrl)\n }\n}\n","import { generateApiUrl } from '../../../core/utils/generateApiUrl'\nimport { API_ENDPOINTS } from '../../../core/http/api-endpoints'\nimport { HttpClient } from '../../../core/http/http-client'\nimport { mergeRequestOptions, portalIdQuery } from '../../../core/http/auth-headers'\nimport type {\n RevokeSecuritySessionPayload,\n SecurityLoginActivityQuery,\n SecurityOverviewQuery,\n SecuritySessionsQuery\n} from '../../../core/types/security'\n\nconst refreshTokenHeaders = (refreshToken?: string) => {\n if (!refreshToken) {\n return undefined\n }\n return { 'X-Refresh-Token': refreshToken }\n}\n\nexport const securityClient = {\n getOverview: (query?: SecurityOverviewQuery) =>\n HttpClient.get(\n generateApiUrl({\n route: API_ENDPOINTS.SECURITY_OVERVIEW,\n queryParams: portalIdQuery(query?.portalId)\n })\n ),\n\n getLoginActivity: (query?: SecurityLoginActivityQuery) =>\n HttpClient.get(\n generateApiUrl({\n route: API_ENDPOINTS.SECURITY_LOGIN_ACTIVITY,\n queryParams: query ?? {}\n })\n ),\n\n getSessions: (query?: SecuritySessionsQuery) =>\n HttpClient.get(\n generateApiUrl({\n route: API_ENDPOINTS.SECURITY_SESSIONS,\n queryParams: {\n page: query?.page,\n limit: query?.limit,\n sort: query?.sort,\n currentFamilyId: query?.currentFamilyId\n }\n }),\n undefined,\n mergeRequestOptions(undefined, refreshTokenHeaders(query?.refreshToken))\n ),\n\n revokeSession: (payload: RevokeSecuritySessionPayload) =>\n HttpClient.post(\n generateApiUrl({\n route: API_ENDPOINTS.SECURITY_SESSION_REVOKE,\n params: { familyId: payload.familyId }\n }),\n null,\n mergeRequestOptions(undefined, refreshTokenHeaders(payload.refreshToken))\n ),\n\n revokeOtherSessions: (refreshToken?: string) =>\n HttpClient.post(API_ENDPOINTS.SECURITY_SESSIONS_REVOKE_OTHERS, null, mergeRequestOptions(undefined, refreshTokenHeaders(refreshToken)))\n}\n","/**\n * Store + cache purge wiring (see matching comments at each call site):\n *\n * | Store | Saved on list | Read on write | Purge after write |\n * |------------------|----------------------------|----------------------------|--------------------------------------|\n * | tableStore | object.list, sideBarList | object.create/update | purgeCrmListCacheAfterCrmWrite / purgeCrmDetailAndListAfterCrmWrite |\n * | noteStore | note.list | note.create/update | purgeEngagementCachesAfterCrmWrite (notes) |\n * | emailStore | email.list | email.create/update | purgeEngagementCachesAfterCrmWrite (emails) |\n * | fileStore | file.list | file.addFolder / addFile | purgeEngagementCaches (view: files) |\n *\n * `queryParams` on each store is the last list GET query; it becomes `listQuery` on purge\n * so the API invalidates the same scoped cache key the UI last fetched.\n */\nimport { authenticationClient } from '../../features/auth/client/authentication-client'\nimport { crmClient } from '../../features/crm/client/crm-client'\nimport { engagementClient } from '../../features/crm/client/engagement-client'\nimport { cacheClient } from '../../features/crm/client/cache-client'\nimport { mfaClient } from '../../features/auth/client/mfa-client'\nimport { securityClient } from '../../features/auth/client/security-client'\n\nexport const Client = {\n ...authenticationClient,\n ...crmClient,\n ...engagementClient,\n cache: cacheClient,\n mfa: mfaClient,\n security: securityClient\n}\n","import { Client } from '../../http/client-assembler'\nimport type { CachePurgeRequest, CreateCachePurgeJobOptions, PurgeResult } from '../../types/cache-purge'\n\nfunction randomIdempotencyKey(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID()\n }\n return `purge-${Date.now()}-${Math.random().toString(36).slice(2)}`\n}\n\nfunction mapErrorCode(status?: number, message?: string): PurgeResult['errorCode'] {\n if (status === 400 || status === 422) {\n return 'VALIDATION'\n }\n if (status === 429) {\n return 'RATE_LIMITED'\n }\n if (message?.toLowerCase().includes('disabled')) {\n return 'PURGE_API_DISABLED'\n }\n return status ? 'UNKNOWN' : 'NETWORK'\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * POST cache-purge-jobs with optional job polling when warm=true.\n */\nexport async function createCachePurgeJob(request: CachePurgeRequest, options: CreateCachePurgeJobOptions = {}): Promise<PurgeResult> {\n const idempotencyKey = options.idempotencyKey ?? randomIdempotencyKey()\n try {\n const headers = { 'Idempotency-Key': idempotencyKey }\n const response = (await Client.cache.purge(request as Record<string, unknown>, headers)) as { data?: Record<string, unknown> }\n const data = response?.data as Record<string, unknown> | undefined\n const purgeJobId = data?.purgeJobId as string | undefined\n let status = data?.status as PurgeResult['status'] | undefined\n\n if (options.waitForWarm && purgeJobId && request.warm !== false) {\n const timeout = options.pollTimeoutMs ?? 30_000\n const interval = options.pollIntervalMs ?? 500\n const deadline = Date.now() + timeout\n while (Date.now() < deadline) {\n const statusRes = (await Client.cache.purgeStatus(purgeJobId)) as {\n data?: Record<string, unknown>\n }\n const job = statusRes?.data as Record<string, unknown> | undefined\n const jobStatus = job?.status as string | undefined\n if (jobStatus === 'completed') {\n status = 'completed'\n break\n }\n if (jobStatus === 'failed') {\n return {\n ok: false,\n purgeJobId,\n status: 'failed',\n errorCode: 'WARM_FAILED',\n message: 'Cache warm job failed'\n }\n }\n await sleep(interval)\n }\n if (status !== 'completed') {\n return {\n ok: false,\n purgeJobId,\n status: status ?? 'warming',\n errorCode: 'WARM_FAILED',\n message: 'Timed out waiting for cache warm job'\n }\n }\n }\n\n return {\n ok: true,\n purgeJobId,\n status,\n evicted: data?.evicted as Record<string, string[]> | undefined,\n warnings: data?.warnings as string[] | undefined\n }\n } catch (err: unknown) {\n const axiosErr = err as { response?: { status?: number; data?: { message?: string } } }\n const status = axiosErr.response?.status\n const message = axiosErr.response?.data?.message ?? (err instanceof Error ? err.message : 'Cache purge request failed')\n return {\n ok: false,\n errorCode: mapErrorCode(status, message),\n message\n }\n }\n}\n","import axios from 'axios'\nimport { resetAllStore } from '../../state/crm/use-sync'\nimport { logger } from '../logging/logger'\n\nexport { sanitizeAxiosErrorData, redactLogMeta } from './error-log-sanitize'\n\n/** Log API and runtime errors without leaking tokens or full response bodies. */\nexport function logError(context: string, error: unknown): void {\n if (axios.isAxiosError(error) && error.response?.status === 401) {\n resetAllStore()\n }\n\n logger.error(context, error)\n}\n","import { MutationOptions } from '../types'\nimport { logError } from '../utils/logError'\n\n/**\n * Shared mutation helper used across `api.*` factories.\n *\n * - **Concurrency:** overlapping `mutate()` calls keep loading true until all finish.\n * - **Errors:** `onError` runs for failures; the promise still rejects so callers can `try/catch`.\n */\nexport function createMutation<TPayload, TSuccess, TError = unknown>(\n mutationFn: (payload?: TPayload) => Promise<TSuccess>,\n options?: MutationOptions<TSuccess, TError>\n) {\n let inFlight = 0\n let lastReportedLoading: boolean | null = null\n\n const syncLoading = () => {\n const active = inFlight > 0\n if (lastReportedLoading === active) return\n lastReportedLoading = active\n options?.onLoadingChange?.(active)\n }\n\n const mutate = async (payload?: TPayload) => {\n inFlight += 1\n syncLoading()\n try {\n const response = await mutationFn(payload)\n await options?.onSuccess?.(response, payload)\n return response\n } catch (error) {\n options?.onError?.(error as TError, payload)\n logError('[mutation]', error)\n throw error\n } finally {\n inFlight -= 1\n syncLoading()\n }\n }\n\n return {\n mutate,\n isLoading: () => inFlight > 0\n }\n}\n"]}