css-analyze.js — svelte Source File
Architecture documentation for css-analyze.js, a javascript file in the svelte codebase. 8 imports, 1 dependents.
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
Functions
Dependencies
Source
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