index.ts — astro Source File
Architecture documentation for index.ts, a typescript file in the astro codebase. 4 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 0cdfa5ed_e670_4d58_42f0_ea23911d9d06["index.ts"] 844d479d_bd2c_31dd_1673_36b5e7e8016a["../settings.js"] 0cdfa5ed_e670_4d58_42f0_ea23911d9d06 --> 844d479d_bd2c_31dd_1673_36b5e7e8016a af6796b7_df62_9b1f_c5fc_dbdce9fa2c50["../../runtime/client/dev-toolbar/ui-library/icons.js"] 0cdfa5ed_e670_4d58_42f0_ea23911d9d06 --> af6796b7_df62_9b1f_c5fc_dbdce9fa2c50 ba0e3df7_ed92_c469_e89b_35273ed347eb["./a11y.js"] 0cdfa5ed_e670_4d58_42f0_ea23911d9d06 --> ba0e3df7_ed92_c469_e89b_35273ed347eb 5eca30d5_972c_4f36_68a1_d5b7386181f3["./perf.js"] 0cdfa5ed_e670_4d58_42f0_ea23911d9d06 --> 5eca30d5_972c_4f36_68a1_d5b7386181f3 style 0cdfa5ed_e670_4d58_42f0_ea23911d9d06 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { settings } from '../../../settings.js';
import type { DefinedIcon } from '../../../ui-library/icons.js';
import { a11y } from './a11y.js';
import { perf } from './perf.js';
type DynamicString = string | ((element: Element) => string);
export interface AuditRule {
code: string;
title: DynamicString;
message: DynamicString;
description?: DynamicString;
}
export interface ResolvedAuditRule {
code: string;
title: string;
message: string;
description?: string;
}
export interface AuditRuleWithSelector extends AuditRule {
selector: string;
match?: (
element: Element,
) =>
| boolean
| null
| undefined
| void
| Promise<boolean>
| Promise<void>
| Promise<null>
| Promise<undefined>;
}
interface RuleCategory {
code: string;
name: string;
icon: DefinedIcon;
rules: AuditRule[];
}
export const rulesCategories = [
{ code: 'a11y', name: 'Accessibility', icon: 'person-arms-spread', rules: a11y },
{ code: 'perf', name: 'Performance', icon: 'gauge', rules: perf },
] satisfies RuleCategory[];
const dynamicAuditRuleKeys: Array<keyof AuditRule> = ['title', 'message', 'description'];
export function resolveAuditRule(rule: AuditRule, element: Element): ResolvedAuditRule {
let resolved: ResolvedAuditRule = { ...rule } as any;
for (const key of dynamicAuditRuleKeys) {
const value = rule[key];
if (typeof value === 'string') continue;
try {
if (!value) {
resolved[key] = '';
continue;
}
resolved[key] = value(element);
} catch (err) {
settings.logger.error(`Error resolving dynamic audit rule ${rule.code}'s ${key}: ${err}`);
resolved[key] = 'Error resolving dynamic rule';
}
}
return resolved;
}
export function getAuditCategory(rule: AuditRule): 'perf' | 'a11y' {
return rule.code.split('-')[0] as 'perf' | 'a11y';
}
export const categoryLabel = {
perf: 'performance',
a11y: 'accessibility',
};
Domain
Subdomains
Dependencies
- ../../runtime/client/dev-toolbar/ui-library/icons.js
- ../settings.js
- ./a11y.js
- ./perf.js
Source
Frequently Asked Questions
What does index.ts do?
index.ts is a source file in the astro codebase, written in typescript. It belongs to the DevToolbar domain, ToolbarClient subdomain.
What functions are defined in index.ts?
index.ts defines 3 function(s): element, getAuditCategory, resolveAuditRule.
What does index.ts depend on?
index.ts imports 4 module(s): ../../runtime/client/dev-toolbar/ui-library/icons.js, ../settings.js, ./a11y.js, ./perf.js.
Where is index.ts in the architecture?
index.ts is located at packages/astro/src/runtime/client/dev-toolbar/apps/audit/rules/index.ts (domain: DevToolbar, subdomain: ToolbarClient, directory: packages/astro/src/runtime/client/dev-toolbar/apps/audit/rules).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free