Home / File/ index.js — svelte Source File

index.js — svelte Source File

Architecture documentation for index.js, a javascript file in the svelte codebase. 18 imports, 0 dependents.

File javascript Compiler Transformer 18 imports 7 functions

Entity Profile

Dependency Diagram

graph LR
  cc8de3ad_4bae_f883_44db_d90442053943["index.js"]
  21beed52_94ea_f810_11b8_87a2cf50432f["legacy.js"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 21beed52_94ea_f810_11b8_87a2cf50432f
  739544c3_ed59_a35e_6bea_b1b4d2b50e81["convert"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 739544c3_ed59_a35e_6bea_b1b4d2b50e81
  67d7170b_725b_33cc_868d_fad6ed435252["index.js"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 67d7170b_725b_33cc_868d_fad6ed435252
  6d2356f8_1610_44a9_5698_878d5092688f["parse"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 6d2356f8_1610_44a9_5698_878d5092688f
  042e583c_5e12_9bde_ddd8_8091d5ea0f7d["Parser"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 042e583c_5e12_9bde_ddd8_8091d5ea0f7d
  0e67864d_62c6_024e_3588_da959afe5b23["remove_typescript_nodes.js"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 0e67864d_62c6_024e_3588_da959afe5b23
  90ebea37_3939_87c9_ac10_18fc18796941["remove_typescript_nodes"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 90ebea37_3939_87c9_ac10_18fc18796941
  251e2338_f8b8_69b4_b2e5_29ee7decbfa6["style.js"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 251e2338_f8b8_69b4_b2e5_29ee7decbfa6
  17b060ee_9bdd_d2ea_9bd7_f190c36179db["parse_stylesheet"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 17b060ee_9bdd_d2ea_9bd7_f190c36179db
  4aa8a188_84d4_0274_ed83_cac0ab1d3572["index.js"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 4aa8a188_84d4_0274_ed83_cac0ab1d3572
  78a6ba9a_5003_f569_a638_76e4f1977809["analyze_component"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 78a6ba9a_5003_f569_a638_76e4f1977809
  05334dc2_42b5_e2cb_fe55_aa3f6a2de9df["analyze_module"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 05334dc2_42b5_e2cb_fe55_aa3f6a2de9df
  f1cb032f_d7a0_6877_cebc_2e5f4505e958["index.js"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> f1cb032f_d7a0_6877_cebc_2e5f4505e958
  0accce76_056a_b49e_69ca_069fe7e3e216["transform_component"]
  cc8de3ad_4bae_f883_44db_d90442053943 --> 0accce76_056a_b49e_69ca_069fe7e3e216
  style cc8de3ad_4bae_f883_44db_d90442053943 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/** @import { LegacyRoot } from './types/legacy-nodes.js' */
/** @import { CompileOptions, CompileResult, ValidatedCompileOptions, ModuleCompileOptions } from '#compiler' */
/** @import { AST } from './public.js' */
import { walk as zimmerframe_walk } from 'zimmerframe';
import { convert } from './legacy.js';
import { parse as _parse, Parser } from './phases/1-parse/index.js';
import { remove_typescript_nodes } from './phases/1-parse/remove_typescript_nodes.js';
import { parse_stylesheet } from './phases/1-parse/read/style.js';
import { analyze_component, analyze_module } from './phases/2-analyze/index.js';
import { transform_component, transform_module } from './phases/3-transform/index.js';
import { validate_component_options, validate_module_options } from './validate-options.js';
import * as state from './state.js';
export { default as preprocess } from './preprocess/index.js';
export { print } from './print/index.js';

/**
 * `compile` converts your `.svelte` source code into a JavaScript module that exports a component
 *
 * @param {string} source The component source code
 * @param {CompileOptions} options The compiler options
 * @returns {CompileResult}
 */
export function compile(source, options) {
	source = remove_bom(source);
	state.reset({ warning: options.warningFilter, filename: options.filename });
	const validated = validate_component_options(options, '');

	let parsed = _parse(source);

	const { customElement: customElementOptions, ...parsed_options } = parsed.options || {};

	/** @type {ValidatedCompileOptions} */
	const combined_options = {
		...validated,
		...parsed_options,
		customElementOptions
	};

	if (parsed.metadata.ts) {
		parsed = {
			...parsed,
			fragment: parsed.fragment && remove_typescript_nodes(parsed.fragment),
			instance: parsed.instance && remove_typescript_nodes(parsed.instance),
			module: parsed.module && remove_typescript_nodes(parsed.module)
		};
		if (combined_options.customElementOptions?.extend) {
			combined_options.customElementOptions.extend = remove_typescript_nodes(
				combined_options.customElementOptions?.extend
			);
		}
	}

	const analysis = analyze_component(parsed, source, combined_options);
	const result = transform_component(analysis, source, combined_options);
	result.ast = to_public_ast(source, parsed, options.modernAst);
	return result;
}

/**
 * `compileModule` takes your JavaScript source code containing runes, and turns it into a JavaScript module.
// ... (139 more lines)

Domain

Subdomains

Frequently Asked Questions

What does index.js do?
index.js is a source file in the svelte codebase, written in javascript. It belongs to the Compiler domain, Transformer subdomain.
What functions are defined in index.js?
index.js defines 7 function(s): compile, compileModule, parse, parseCss, remove_bom, to_public_ast, walk.
What does index.js depend on?
index.js imports 18 module(s): Parser, analyze_component, analyze_module, convert, index.js, index.js, index.js, legacy.js, and 10 more.
Where is index.js in the architecture?
index.js is located at packages/svelte/src/compiler/index.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler).

Analyze Your Own Codebase

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

Try Supermodel Free