import patterns from '@/frame/lib/patterns' import { deprecated } from '@/versions/lib/enterprise-server-releases' import type { ExtendedRequest } from '@/types' type IsArchivedInfo = { isArchived?: boolean requestedVersion?: string } export function isArchivedVersion(req: ExtendedRequest): IsArchivedInfo { // if this is an assets path, use the referrer // if this is a docs path, use the req.path const pathToCheck = patterns.assetPaths.test(req.path) ? req.get('referrer') : req.path return isArchivedVersionByPath(pathToCheck || '') } export function isArchivedVersionByPath(pathToCheck: string): IsArchivedInfo { // ignore paths that don't have an enterprise version number if ( !( patterns.getEnterpriseVersionNumber.test(pathToCheck) || patterns.getEnterpriseServerNumber.test(pathToCheck) ) ) { return {} } // extract enterprise version from path, e.g. 2.16 const requestedVersion = pathToCheck.includes('enterprise-server@') ? pathToCheck.match(patterns.getEnterpriseServerNumber)?.[1] : pathToCheck.match(patterns.getEnterpriseVersionNumber)?.[1] // bail if the request version is not deprecated if (!requestedVersion || !deprecated.includes(requestedVersion)) { return {} } return { isArchived: true, requestedVersion } }