Home / File/ index.ts — astro Source File

index.ts — astro Source File

Architecture documentation for index.ts, a typescript file in the astro codebase. 4 imports, 0 dependents.

File typescript DevToolbar ToolbarClient 4 imports 3 functions

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

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