Home / File/ css-analyze.js — svelte Source File

css-analyze.js — svelte Source File

Architecture documentation for css-analyze.js, a javascript file in the svelte codebase. 8 imports, 1 dependents.

File javascript Compiler Analyzer 8 imports 1 dependents 9 functions

Entity Profile

Dependency Diagram

graph LR
  ca006f7f_f554_f529_8a19_abaaa45dda8d["css-analyze.js"]
  495501a4_a342_6a4d_ac11_e3e2fee8b218["errors.js"]
  ca006f7f_f554_f529_8a19_abaaa45dda8d --> 495501a4_a342_6a4d_ac11_e3e2fee8b218
  a146f6ac_0088_8736_b6ce_318f9f115170["e"]
  ca006f7f_f554_f529_8a19_abaaa45dda8d --> a146f6ac_0088_8736_b6ce_318f9f115170
  2a0e126c_5670_329c_f4f4_86feb8413563["css.js"]
  ca006f7f_f554_f529_8a19_abaaa45dda8d --> 2a0e126c_5670_329c_f4f4_86feb8413563
  aee1cb4d_8fc3_fbc4_d431_00510040685f["is_keyframes_node"]
  ca006f7f_f554_f529_8a19_abaaa45dda8d --> aee1cb4d_8fc3_fbc4_d431_00510040685f
  ad593fd6_3727_04c3_f22e_c845647cea4d["utils.js"]
  ca006f7f_f554_f529_8a19_abaaa45dda8d --> ad593fd6_3727_04c3_f22e_c845647cea4d
  e9b067fe_6d2b_e8a5_4273_6c0120e67111["is_global"]
  ca006f7f_f554_f529_8a19_abaaa45dda8d --> e9b067fe_6d2b_e8a5_4273_6c0120e67111
  de2c7a90_dcc5_7509_ecb3_b33884f394c9["is_unscoped_pseudo_class"]
  ca006f7f_f554_f529_8a19_abaaa45dda8d --> de2c7a90_dcc5_7509_ecb3_b33884f394c9
  c49ac9f8_b355_57a2_8d10_b5fd945c6144["zimmerframe"]
  ca006f7f_f554_f529_8a19_abaaa45dda8d --> c49ac9f8_b355_57a2_8d10_b5fd945c6144
  4aa8a188_84d4_0274_ed83_cac0ab1d3572["index.js"]
  4aa8a188_84d4_0274_ed83_cac0ab1d3572 --> ca006f7f_f554_f529_8a19_abaaa45dda8d
  style ca006f7f_f554_f529_8a19_abaaa45dda8d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/** @import { ComponentAnalysis } from '../../types.js' */
/** @import { AST } from '#compiler' */
/** @import { Visitors } from 'zimmerframe' */
import { walk } from 'zimmerframe';
import * as e from '../../../errors.js';
import { is_keyframes_node } from '../../css.js';
import { is_global, is_unscoped_pseudo_class } from './utils.js';

/**
 * @typedef {{
 *   keyframes: string[];
 *   rule: AST.CSS.Rule | null;
 *   analysis: ComponentAnalysis;
 * }} CssState
 */

/**
 * @typedef {Visitors<AST.CSS.Node, CssState>} CssVisitors
 */

/**
 * True if is `:global`
 * @param {AST.CSS.SimpleSelector} simple_selector
 */
function is_global_block_selector(simple_selector) {
	return (
		simple_selector.type === 'PseudoClassSelector' &&
		simple_selector.name === 'global' &&
		simple_selector.args === null
	);
}

/**
 * @param {AST.SvelteNode[]} path
 */
function is_unscoped(path) {
	return path
		.filter((node) => node.type === 'Rule')
		.every((node) => node.metadata.has_global_selectors);
}

/**
 *
 * @param {Array<AST.CSS.Node>} path
 */
function is_in_global_block(path) {
	return path.some((node) => node.type === 'Rule' && node.metadata.is_global_block);
}

/** @type {CssVisitors} */
const css_visitors = {
	Atrule(node, context) {
		if (is_keyframes_node(node)) {
			if (!node.prelude.startsWith('-global-') && !is_in_global_block(context.path)) {
				context.state.keyframes.push(node.prelude);
			} else if (node.prelude.startsWith('-global-')) {
				// we don't check if the block.children.length because the keyframe is still added even if empty
				context.state.analysis.css.has_global ||= is_unscoped(context.path);
			}
		}
// ... (272 more lines)

Domain

Subdomains

Frequently Asked Questions

What does css-analyze.js do?
css-analyze.js is a source file in the svelte codebase, written in javascript. It belongs to the Compiler domain, Analyzer subdomain.
What functions are defined in css-analyze.js?
css-analyze.js defines 9 function(s): analyze_css, css_visitors.Atrule, css_visitors.ComplexSelector, css_visitors.NestingSelector, css_visitors.RelativeSelector, css_visitors.Rule, is_global_block_selector, is_in_global_block, is_unscoped.
What does css-analyze.js depend on?
css-analyze.js imports 8 module(s): css.js, e, errors.js, is_global, is_keyframes_node, is_unscoped_pseudo_class, utils.js, zimmerframe.
What files import css-analyze.js?
css-analyze.js is imported by 1 file(s): index.js.
Where is css-analyze.js in the architecture?
css-analyze.js is located at packages/svelte/src/compiler/phases/2-analyze/css/css-analyze.js (domain: Compiler, subdomain: Analyzer, directory: packages/svelte/src/compiler/phases/2-analyze/css).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free