@rapidload/page-optimizer
Version:
Helps you get better page speed scores by analyzing and providing optimal actions (for Wordpress)
385 lines (337 loc) • 7.99 kB
TypeScript
interface OptimizerResults {
performance: number
job_id?: string;
audits: Audit[]
metrics: Metric[],
settingsMode: PerformanceGear,
loadingExperience?: LoadingExperience
originLoadingExperience?: LoadingExperience
grouped: {
passed_audits: Audit[],
opportunities: Audit[],
diagnostics: Audit[],
attention_required: Audit[],
}
meta: {
controls: {
dropdown_options: {
type: string
options: string[]
}[]
}
}
}
interface LoadingExperience {
id: string
initial_url: string
overall_category: string,
timestamp: number,
metrics: {
[metricName: string]: {
percentile: number;
distributions: {
min: number;
max?: number;
proportion: number;
}[];
category: string;
};
}
}
type AuditTypes = keyof OptimizerResults['grouped'] | 'configurations' | 'optimizations' | 'insights'
interface AuditFileBase {
overallSavingsBytes: number;
type: 'list' | 'table' | 'opportunity' | 'criticalrequestchain';
headings?: AuditHeadings[];
sortedBy: string[];
overallSavingsMs?: number;
}
interface ListItems extends AuditFileBase {
type: 'list'
items: AuditListResource[]
}
interface TableItems extends AuditFileBase {
type: 'table' | 'opportunity'
items: AuditTableResource[];
grouped_items: GroupedAuditResource[];
}
interface CriticalRequestChainItems extends AuditFileBase {
type: 'criticalrequestchain'
chains: {
[key: string]: CriticalChainTreeNodeType
};
longestChain: {
transferSize: number
duration: number
length: number
}
grouped_items: GroupedAuditResource[];
items: any
}
interface GroupedAuditResource {
type: string;
items: AuditTableResource[]
}
type FileTypes = 'css' | 'js' | 'image' | 'font' | string
type AuditResource = AuditTableResource | AuditListResource
type AuditFiles = TableItems | ListItems | CriticalRequestChainItems
interface AuditTableResource {
wastedBytes?: number;
totalBytes?: number;
action?: {
value: string,
control_type: string
control_values: string[]
};
wastedPercent?: number;
url?: {
url: string,
file_type: {
label: string
value: string
}
} | string
pattern?: string
passed?: boolean
subItems?: AuditColumnSubItems
}
interface AuditListResource {
headings: AuditHeadings[]
items: AuditTableResource[]
type: 'table' | string
subItems?: AuditColumnSubItems
}
interface AuditColumnSubItems {
type: string
items: [{
[p: string]: string
}]
}
interface Audit {
id: string;
name: string;
description: string;
icon: string;
files: AuditFiles
type: string;
score: number;
scoreDisplayMode: string;
displayValue: string;
settings: AuditSetting[];
metrics: Metric[]
}
interface AuditHeadings {
key: string;
valueType?: string;
label?: string;
subItemsHeading?: {
key: string;
valueType: string;
};
control_type: string
control_values: string[],
granularity: number
}
interface AuditSetting {
name: string;
key: string,
category: string;
description: string;
inputs: AuditSettingInput[];
audits: Audit[];
status?: {
status: 'failed' | 'queued' | 'processing' | 'success' | 'Hit' | 'Miss' | 'waiting' | boolean
stats: []
warnings: []
error: any
message: string
meta?: {
mobile?: string
desktop?: string
}
}
}
interface AuditSettingInput {
control_type: ControlTypes;
control_values: ControlValue[] | string[];
control_payload: string;
control_label: string;
control_icon: string;
control_accordion_name: string;
control_description: string;
control_values_description?: ControlValuesDescription[];
control_values_suffix: string;
control_visibility?: {
key: string, value: string
}[]
value: any;
key: any;
action: string
inputs?: AuditSettingInput[]
actions?: AuditSettingInput[]
readonly?: boolean
placeholder?: string
control_props?: {
[key: string]: any;
};
}
interface ControlValue {
type: string;
name: string;
id: string;
isSelected: boolean;
exclusions: string[];
}
type ControlTypes = 'checkbox' | 'textarea' | 'tickbox' | string
type ControlValuesDescription = {
value: string;
description: string;
};
interface Metric {
id: string;
title: string;
description: string;
displayValue: string;
icon: string;
score: number;
color?: string,
refs: {
relevantAudits: string[]
acronym: string
weight: number
}
potentialGain: number
}
type ReportType = 'mobile' | 'desktop'
interface CSSJobStatus {
status: string;
error: {
code: number;
message: string;
};
}
interface CSSStatusResponse {
uucss: CSSJobStatus;
cpcss: CSSJobStatus;
}
interface OptimizeTable {
id: string
created_at: string;
first_data: { performance: number };
last_data: { performance: number };
job_id: string;
strategy: string
url: string;
}
interface Link {
title: string;
permalink: string;
}
interface posts {
post_type: string;
links: Link[];
}
interface cdnUsage {
additional_usage_gb: number;
allowed_gb: number;
used_gb: number;
used_gb_formatted: string;
cdn_url: string;
origin: string;
zone_id: string;
}
interface imageUsage {
additional_usage_gb: number;
allowed_gb: number;
used_gb: number;
used_gb_formatted: string;
host: string;
}
interface cacheSize {
folder_name: string;
size: string;
}
interface cacheUsage {
key: string;
label: string;
size: cacheSize;
action: {
label: string;
href: string;
}
}
interface TestMode {
status: boolean;
}
interface DiagnosticResults {
AnalysisSummary: any;
CriticalIssues: any;
timeStamp: number;
}
interface HomePerformance {
first_entry: number;
last_entry: number;
first_response_time: string;
last_response_time: string;
first_entry_metrics: Metric[];
last_entry_metrics: Metric[];
}
interface License {
email: string;
licensedDomain: string;
name: string;
plan: string;
next_billing: number;
siteUrl: string;
}
interface Revision {
created_at: string
id: number
job_id: number
strategy: ReportType
data: OptimizerResults
timestamp: number
}
type CriticalChainRequest = {
url: string;
startTime: number;
transferSize: number;
responseReceivedTime: number;
endTime: number;
};
// Define the tree node type
type CriticalChainTreeNodeType = {
request: CriticalChainRequest;
children?: {
[key: string]: CriticalChainTreeNodeType;
};
};
interface RapidLoadSetOptimizerEvent extends Event {
detail?: {
status: boolean;
};
}
type CssErrorKeys = 'Critical CSS' | 'Unused CSS';
type BasePerformanceGear = 'starter' | 'accelerate' | 'turboMax';
type PerformanceGear = BasePerformanceGear | 'custom';
interface uucssGlobal {
activation_url?: string;
on_board_complete?: string;
active_modules: {
general: {
options: GeneralSettings;
};
};
}
interface Solution {
step: string;
description: string;
type: "rapidload_fix" | "wordpress_fix" | "theme_fix" | "plugin_fix" | "code_fix" | "server_config_fix" | "server_upgrade_fix";
sub_type?: string[];
rapidload_setting_input?: { name: string; };
}
interface SolutionResponse {
solutions: Solution[];
status: 'success' | 'error';
message?: string;
}